From a7bc964b5cd6d4880a7e1e1e93c1d5356bc552d3 Mon Sep 17 00:00:00 2001 From: ChiKyun Kim Date: Wed, 6 Aug 2025 10:05:22 +0900 Subject: [PATCH] =?UTF-8?q?qrmode=20=EC=97=90=EC=84=9C=20wms=20rcv=20?= =?UTF-8?q?=ED=83=9C=EA=B7=B8=20=EC=9D=B8=EC=8B=9D=EB=90=98=EA=B2=8C=20?= =?UTF-8?q?=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Handler/CLAUDE.md | 109 +++++++++++ Handler/STDLabelAttach(ATV).sln | 334 ++++++++++++++++++++++++++++++++ 2 files changed, 443 insertions(+) create mode 100644 Handler/CLAUDE.md create mode 100644 Handler/STDLabelAttach(ATV).sln diff --git a/Handler/CLAUDE.md b/Handler/CLAUDE.md new file mode 100644 index 0000000..d2c95ec --- /dev/null +++ b/Handler/CLAUDE.md @@ -0,0 +1,109 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +This is an industrial automation system for ATV (Automatic Test Vehicle) reel label attachment, modification, and transfer operations. The system is built in C# (.NET Framework 4.8) using Windows Forms and integrates with various hardware components including motion controllers, barcode readers, printers, and PLCs. + +## Build Commands + +```bash +# Build the main solution +msbuild "STDLabelAttach(ATV).sln" /p:Configuration=Debug /p:Platform="Any CPU" + +# Build for release +msbuild "STDLabelAttach(ATV).sln" /p:Configuration=Release /p:Platform="Any CPU" + +# Build specific project (example) +msbuild "Project\STDLabelAttach(ATV).csproj" /p:Configuration=Debug + +# Build for x86 platform (common configuration) +msbuild "STDLabelAttach(ATV).sln" /p:Configuration=Debug /p:Platform=x86 +``` + +## Architecture Overview + +### Core Components + +- **Project/**: Main application with UI and business logic + - Contains the primary Windows Forms application (`fMain.cs`) + - Implements state machine logic in `RunCode/StateMachine/` and `RunCode/Step/` + - Device interfaces in `Device/` folder (KeyenceBarcode, SATOPrinter, TowerLamp, etc.) + - Dialog forms for user interactions + +- **Project_form2/**: Secondary receiver application for data handling + - Handles SID (Serial ID) conversion and processing + - Customer information management + - Import/export functionality + +- **Sub/**: Shared libraries and utilities + - `arCtl/`: Custom UI controls and components + - `arAzinAxt/`: Motion controller interface (AzinAxt hardware) + - `arRS232/`: Serial communication library + - `AmkorRestfulService/`: RESTful API service for external integration + - `CommSM/`: State machine communication library + - `CommUtil/`: Common utilities and dialogs + +### Key Technologies + +- **Hardware Integration**: Motion controllers (AzinAxt), barcode readers (Keyence), SATO printers +- **Database**: Entity Framework 6.2.0 with SQL Server +- **Communication**: Serial (RS232), RESTful APIs, WebSocket +- **Vision**: EmguCV for image processing +- **Protocols**: Custom state machine implementation for equipment control + +### State Machine Architecture + +The application uses a comprehensive state machine pattern: +- `RunCode/Step/`: Main operational steps (INIT, IDLE, RUN, HOME, FINISH) +- `RunCode/StateMachine/`: Core state machine logic and event handling +- `RunCode/RunSequence/`: Specific operation sequences (barcode reading, printing, picking) + +### Device Management + +- Motion control through `arAzinAxt` library with position validation +- Barcode reading with Keyence scanner integration +- Label printing via SATO printer API +- PLC communication for safety and I/O control + +## Development Patterns + +### Configuration Management +- Settings stored in `Setting/` classes with UI forms for modification +- System parameters in `System_Setting.cs` and `System_MotParameter.cs` +- User-specific settings in `UserSetting.cs` + +### Data Management +- Entity Framework models in `Model1.edmx` +- Database managers in `Manager/` folder for different data types +- Component classes for reel information, results, and SID conversion + +### UI Patterns +- Custom controls in `UIControl/` folder +- Consistent dialog patterns in `Dialog/` folder +- Resource management with embedded images and icons + +## Important Notes + +- The system requires specific hardware drivers (AzinAxt motion controller, Keyence SDK, SATO printer drivers) +- Database connection strings are configured in `app.config` +- Motion parameters are stored in `.swpp` and `.usrs` files in `MotParam/` +- The application supports both Debug and Release configurations with different output paths +- Platform target is typically x64 for hardware compatibility + +## Testing + +No formal unit test projects are present. Testing is typically done through: +- Manual operation using the main application +- Hardware-in-the-loop testing with actual equipment +- Debug dialogs and monitoring forms in the application + +## Dependencies + +Key external dependencies include: +- Entity Framework 6.2.0 +- Newtonsoft.Json 13.0.3 +- EmguCV 4.5.1 +- Microsoft OWIN stack for web services +- Various hardware-specific SDKs and drivers \ No newline at end of file diff --git a/Handler/STDLabelAttach(ATV).sln b/Handler/STDLabelAttach(ATV).sln new file mode 100644 index 0000000..adaa5ea --- /dev/null +++ b/Handler/STDLabelAttach(ATV).sln @@ -0,0 +1,334 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.6.33801.468 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "STDLabelAttach(Conv+swPLC)", "Project\STDLabelAttach(Conv+swPLC).csproj", "{65F3E762-800C-499E-862F-A535642EC59F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arControl", "Sub\arCtl\arControl.csproj", "{F31C242C-1B15-4518-9733-48558499FE4B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Import", "Import", "{C423C39A-44E7-4F09-B2F7-7943975FF948}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResultView", "ResultView\ResultView.csproj", "{4ED6F01A-0081-43E3-8EE5-7446BE0F2366}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arFrameControl", "Sub\arFrameControl\arFrameControl.csproj", "{A16C9667-5241-4313-888E-548375F85D29}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UIControl", "CapCleaningControl\UIControl.csproj", "{9264CD2E-7CF8-4237-A69F-DCDA984E0613}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test_IOPanel", "Test\Test_IOPanel\Test_IOPanel.csproj", "{0029978E-035A-42D4-8489-CC8600BCB2F6}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test", "Test", "{02CC42D0-2221-4855-9C3A-E2E35D651B17}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test_AzinMotion", "Test\Test_AzinMotion\Test_AzinMotion.csproj", "{5709C3EC-EB33-4FD7-A933-E0CE173DE61F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arRS232", "Sub\arRS232\arRS232.csproj", "{802DF40D-660E-4D72-B982-2FE5E6A7DF1A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arImageViewer.Emgu", "Sub\arImageViewer_Emgu\arImageViewer.Emgu.csproj", "{ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StdLabelPrint", "Sub\StdLabelPrint\StdLabelPrint.csproj", "{B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AmkorRestfulService", "Sub\AmkorRestfulService\AmkorRestfulService.csproj", "{58CFC90C-5068-46A2-A8DE-0E92EE9E0990}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arAzinAxt", "Sub\arAzinAxt\arAzinAxt.csproj", "{4F457E76-BF83-4B98-8565-AE87D7D16744}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Setting", "Sub\Setting\Setting.csproj", "{48654765-548D-42ED-9238-D65EB3BC99AD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arCommUtil", "Sub\CommUtil\arCommUtil.csproj", "{14E8C9A5-013E-49BA-B435-FFFFFF7DD623}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arCommSM", "Sub\CommSM\arCommSM.csproj", "{D54444F7-1D85-4D5D-B1D1-10D040141A91}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommData", "Sub\CommData\CommData.csproj", "{14E8C9A5-013E-49BA-B435-EFEFC77DD623}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MemoryMapCore", "Sub\arMCFrame\MemoryMapCore\MemoryMapCore.csproj", "{140AF52A-5986-4413-BF02-8EA55A61891B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {65F3E762-800C-499E-862F-A535642EC59F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {65F3E762-800C-499E-862F-A535642EC59F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {65F3E762-800C-499E-862F-A535642EC59F}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {65F3E762-800C-499E-862F-A535642EC59F}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {65F3E762-800C-499E-862F-A535642EC59F}.Debug|x64.ActiveCfg = Debug|Any CPU + {65F3E762-800C-499E-862F-A535642EC59F}.Debug|x86.ActiveCfg = Debug|x86 + {65F3E762-800C-499E-862F-A535642EC59F}.Debug|x86.Build.0 = Debug|x86 + {65F3E762-800C-499E-862F-A535642EC59F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {65F3E762-800C-499E-862F-A535642EC59F}.Release|Any CPU.Build.0 = Release|Any CPU + {65F3E762-800C-499E-862F-A535642EC59F}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {65F3E762-800C-499E-862F-A535642EC59F}.Release|Mixed Platforms.Build.0 = Release|x86 + {65F3E762-800C-499E-862F-A535642EC59F}.Release|x64.ActiveCfg = Release|Any CPU + {65F3E762-800C-499E-862F-A535642EC59F}.Release|x86.ActiveCfg = Release|x86 + {65F3E762-800C-499E-862F-A535642EC59F}.Release|x86.Build.0 = Release|x86 + {F31C242C-1B15-4518-9733-48558499FE4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F31C242C-1B15-4518-9733-48558499FE4B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F31C242C-1B15-4518-9733-48558499FE4B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F31C242C-1B15-4518-9733-48558499FE4B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {F31C242C-1B15-4518-9733-48558499FE4B}.Debug|x64.ActiveCfg = Debug|Any CPU + {F31C242C-1B15-4518-9733-48558499FE4B}.Debug|x86.ActiveCfg = Debug|Any CPU + {F31C242C-1B15-4518-9733-48558499FE4B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F31C242C-1B15-4518-9733-48558499FE4B}.Release|Any CPU.Build.0 = Release|Any CPU + {F31C242C-1B15-4518-9733-48558499FE4B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {F31C242C-1B15-4518-9733-48558499FE4B}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {F31C242C-1B15-4518-9733-48558499FE4B}.Release|x64.ActiveCfg = Release|Any CPU + {F31C242C-1B15-4518-9733-48558499FE4B}.Release|x86.ActiveCfg = Release|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Debug|x64.ActiveCfg = Debug|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Debug|x86.ActiveCfg = Debug|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Release|Any CPU.Build.0 = Release|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Release|x64.ActiveCfg = Release|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Release|x86.ActiveCfg = Release|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Debug|x64.ActiveCfg = Debug|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Debug|x86.ActiveCfg = Debug|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Release|Any CPU.Build.0 = Release|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Release|x64.ActiveCfg = Release|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Release|x86.ActiveCfg = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|x64.ActiveCfg = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|x64.Build.0 = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|x86.ActiveCfg = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|x86.Build.0 = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|Any CPU.Build.0 = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|x64.ActiveCfg = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|x64.Build.0 = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|x86.ActiveCfg = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|x86.Build.0 = Release|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Debug|x64.ActiveCfg = Debug|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Debug|x64.Build.0 = Debug|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Debug|x86.ActiveCfg = Debug|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Debug|x86.Build.0 = Debug|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Release|Any CPU.Build.0 = Release|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Release|x64.ActiveCfg = Release|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Release|x64.Build.0 = Release|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Release|x86.ActiveCfg = Release|Any CPU + {0029978E-035A-42D4-8489-CC8600BCB2F6}.Release|x86.Build.0 = Release|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Debug|x64.ActiveCfg = Debug|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Debug|x64.Build.0 = Debug|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Debug|x86.ActiveCfg = Debug|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Debug|x86.Build.0 = Debug|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Release|Any CPU.Build.0 = Release|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Release|x64.ActiveCfg = Release|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Release|x64.Build.0 = Release|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Release|x86.ActiveCfg = Release|Any CPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F}.Release|x86.Build.0 = Release|Any CPU + {802DF40D-660E-4D72-B982-2FE5E6A7DF1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {802DF40D-660E-4D72-B982-2FE5E6A7DF1A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {802DF40D-660E-4D72-B982-2FE5E6A7DF1A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {802DF40D-660E-4D72-B982-2FE5E6A7DF1A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {802DF40D-660E-4D72-B982-2FE5E6A7DF1A}.Debug|x64.ActiveCfg = Debug|Any CPU + {802DF40D-660E-4D72-B982-2FE5E6A7DF1A}.Debug|x86.ActiveCfg = Debug|Any CPU + {802DF40D-660E-4D72-B982-2FE5E6A7DF1A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {802DF40D-660E-4D72-B982-2FE5E6A7DF1A}.Release|Any CPU.Build.0 = Release|Any CPU + {802DF40D-660E-4D72-B982-2FE5E6A7DF1A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {802DF40D-660E-4D72-B982-2FE5E6A7DF1A}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {802DF40D-660E-4D72-B982-2FE5E6A7DF1A}.Release|x64.ActiveCfg = Release|Any CPU + {802DF40D-660E-4D72-B982-2FE5E6A7DF1A}.Release|x86.ActiveCfg = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|x64.ActiveCfg = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|x64.Build.0 = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|x86.ActiveCfg = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|x86.Build.0 = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|Any CPU.Build.0 = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|x64.ActiveCfg = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|x64.Build.0 = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|x86.ActiveCfg = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|x86.Build.0 = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|x64.ActiveCfg = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|x64.Build.0 = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|x86.ActiveCfg = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|x86.Build.0 = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|Any CPU.Build.0 = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|x64.ActiveCfg = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|x64.Build.0 = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|x86.ActiveCfg = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|x86.Build.0 = Release|Any CPU + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Debug|Any CPU.Build.0 = Debug|Any CPU + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Debug|x64.ActiveCfg = Debug|Any CPU + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Debug|x64.Build.0 = Debug|Any CPU + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Debug|x86.ActiveCfg = Debug|x86 + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Debug|x86.Build.0 = Debug|x86 + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Release|Any CPU.ActiveCfg = Release|Any CPU + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Release|Any CPU.Build.0 = Release|Any CPU + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Release|Mixed Platforms.Build.0 = Release|x86 + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Release|x64.ActiveCfg = Release|Any CPU + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Release|x64.Build.0 = Release|Any CPU + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Release|x86.ActiveCfg = Release|x86 + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990}.Release|x86.Build.0 = Release|x86 + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Debug|x64.ActiveCfg = Debug|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Debug|x64.Build.0 = Debug|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Debug|x86.ActiveCfg = Debug|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Debug|x86.Build.0 = Debug|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Release|Any CPU.Build.0 = Release|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Release|x64.ActiveCfg = Release|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Release|x64.Build.0 = Release|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Release|x86.ActiveCfg = Release|Any CPU + {4F457E76-BF83-4B98-8565-AE87D7D16744}.Release|x86.Build.0 = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|x64.ActiveCfg = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|x64.Build.0 = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|x86.ActiveCfg = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|x86.Build.0 = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|Any CPU.Build.0 = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|x64.ActiveCfg = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|x64.Build.0 = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|x86.ActiveCfg = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|x86.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|Any CPU.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|x64.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|x64.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|x86.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|x86.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|Any CPU.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|Any CPU.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|x64.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|x64.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|x86.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|x86.Build.0 = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|x64.ActiveCfg = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|x64.Build.0 = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|x86.ActiveCfg = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|x86.Build.0 = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|Any CPU.Build.0 = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|x64.ActiveCfg = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|x64.Build.0 = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|x86.ActiveCfg = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|x86.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|Any CPU.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|x64.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|x64.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|x86.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|x86.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|Any CPU.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|Any CPU.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|x64.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|x64.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|x86.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|x86.Build.0 = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|x64.ActiveCfg = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|x64.Build.0 = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|x86.ActiveCfg = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|x86.Build.0 = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|Any CPU.Build.0 = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|x64.ActiveCfg = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|x64.Build.0 = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|x86.ActiveCfg = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {F31C242C-1B15-4518-9733-48558499FE4B} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {A16C9667-5241-4313-888E-548375F85D29} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {9264CD2E-7CF8-4237-A69F-DCDA984E0613} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {0029978E-035A-42D4-8489-CC8600BCB2F6} = {02CC42D0-2221-4855-9C3A-E2E35D651B17} + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F} = {02CC42D0-2221-4855-9C3A-E2E35D651B17} + {802DF40D-660E-4D72-B982-2FE5E6A7DF1A} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {58CFC90C-5068-46A2-A8DE-0E92EE9E0990} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {4F457E76-BF83-4B98-8565-AE87D7D16744} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {48654765-548D-42ED-9238-D65EB3BC99AD} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {D54444F7-1D85-4D5D-B1D1-10D040141A91} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {14E8C9A5-013E-49BA-B435-EFEFC77DD623} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {140AF52A-5986-4413-BF02-8EA55A61891B} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B5B1FD72-356F-4840-83E8-B070AC21C8D9} + EndGlobalSection +EndGlobal