-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Internet Identity using FIDO2 in C# (#19)
* Target .net standard * Setup plastic ignore * plasticscm ignore syntax * DelegationIdentity json format as used by @dfinity/agent-js & @dfinity/internet-identity * Load session JSON data from file. Note that the file contents will allow a bearer to act on behalf of the the user! Keep it out of the repo... * Instructions for building & installing ClientGenerator tool locally * For debugging: accept existing command line args if they are present * corrected .net version (Standard doesn't work for applications) * Strip comment lines from .did file * Fix for parsing uncommon Candid interface file syntax; and add some better errors * File renamed (Visual Studio doesn't save the .csproj file as often as it should!) * Add InternetIdentity project to solution * Add generated Internet Identity client interface * Fix errors in generated code; and document the problem * Blockout of Login flow - get the real user identity, use it to sign a delegation chain * More fixes in generated code * Make Plastic XLink * Checking native fido2 binaries (for win64) * Refactor: make TypeSourceGenerator into non-static class; and corresponding methods related to type generation into non-static methods * Try to handle type aliases to user-defined candid types correctly * Distinguish declaration vs. usage cases: type usage always refers to the proper type alias * Regenerate from candid (using alias-to-alias fixes) * First pass implementation of WebAuthnIdentity * Bug fixes: the delegation identity public key is the key FROM which we delegate; and the delegation public key raw bytes should be DER encoded (not the keytype-dependant representation!) * Support changing identity being used in IIConnection * Various small fixes to get DelegationChain to behave correctly. - Fix CBOR serialization. - Make correct format string (escaping {} characters). - Use DER encoded Pubkey as the WebauthnSignIdentity pubkey. - Remove Fido2 options which sometimes give 'unsupported operation'? * Remove GetOID and GetRawBytes from IPublicKey. There is no sensible interpretation of public keys in general the IC spec which operates on the "raw bytes", i.e. the keytype-defendant representation. In order to work with the raw bytes, you must know the concrete key type, so each concrete key type class can provide these methods if it so desires. * Implement prepare_delegation & get_delegation portion of II auth flow * Update example to perform full login flow * Naming conventions * Make SignIdentityBase into async function * Start Fido2 assert as a long running Task, otherwise it blocks a thread for a potentially very long time * Better handling of FidoDevice.Close - we must call this even if Assert throws an error * Bug fix: Candid recursive type reference always refers to the enclosing type being defined. In particular, note that a single recursive type may refer to itself in multiple different positions. * Save/restore identity between runs * Refactor * Micro-optimization: don't need spaces in the client data json. * Experiments with serialization formats * Validate IC timestamps on delegation chain * Don't need so many type ids * Script for easy publishing * Move project from pointless subdirectory up one level * Misc fixes * Update Fido2Net * Cleanup * Fixing merge conflicts * More * Fixing public keys * Fixing tests * Removing COSE * Adding submodule checkout * Adding internet identity to the build * Update DerEncodedPublicKey.cs * Update dotnet.yml Co-authored-by: yuriy.toporovskyy@apocalypse333.com <yuriy.toporovskyy@apocalypse333.com>
- Loading branch information
Showing
87 changed files
with
3,441 additions
and
768 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
{ | ||
"version": 1, | ||
"isRoot": true, | ||
"tools": { | ||
"edjcase.icp.clientgenerator": { | ||
"version": "9.44.22-pre", | ||
"commands": [ | ||
"candid-client-generator" | ||
] | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
[submodule "Fido2Net"] | ||
path = Fido2Net | ||
url = http://github.com/yuriy0/Fido2Net.git |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,97 +1,109 @@ | ||
|
||
Microsoft Visual Studio Solution File, Format Version 12.00 | ||
# Visual Studio Version 17 | ||
VisualStudioVersion = 17.1.32113.165 | ||
MinimumVisualStudioVersion = 10.0.40219.1 | ||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{9A64FA9E-AC6C-4C1F-B648-E9E64F172EA8}" | ||
ProjectSection(SolutionItems) = preProject | ||
.editorconfig = .editorconfig | ||
README.md = README.md | ||
EndProjectSection | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EdjCase.ICP.Agent", "src\Agent\EdjCase.ICP.Agent.csproj", "{773B18A6-5864-4FAE-B6B0-A863FE8F151C}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EdjCase.ICP.Candid", "src\Candid\EdjCase.ICP.Candid.csproj", "{8EF917C9-479A-4DE1-9FE1-EB0066BA601A}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.CLI", "samples\Sample.CLI\Sample.CLI.csproj", "{99A0577B-3900-4A2D-905A-777FD86C60F8}" | ||
EndProject | ||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{F71B8320-C279-4A79-A8D4-4039DB39D522}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Candid.Tests", "test\Common.Tests\Candid.Tests.csproj", "{7F367130-1A9C-4E87-AA50-620767F10EF7}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.BlazorWebAssembly.Server", "samples\Sample.BlazorWebAssembly\Server\Sample.BlazorWebAssembly.Server.csproj", "{BF698A87-5C8D-4C60-B704-9F1045156639}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.BlazorWebAssembly.Client", "samples\Sample.BlazorWebAssembly\Client\Sample.BlazorWebAssembly.Client.csproj", "{0C78536E-AD2B-47CF-A784-3EBF49DD0A47}" | ||
EndProject | ||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{7FADA9D9-5FDA-4CFB-8A53-A578A61FBBA9}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.Shared", "samples\Sample.Shared\Sample.Shared.csproj", "{DDCE02AF-6DEE-485B-AA69-C69F0973E00B}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.RestAPI", "samples\Sample.RestAPI\Sample.RestAPI.csproj", "{F76CA92C-211B-46A7-8B21-A808291B268E}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EdjCase.ICP.ClientGenerator", "src\ClientGenerator\EdjCase.ICP.ClientGenerator.csproj", "{1C184ECB-7653-4DC1-B453-E529656897CB}" | ||
EndProject | ||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EdjCase.Cryptography.BLS", "src\EdjCase.Cryptography.BLS\EdjCase.Cryptography.BLS.csproj", "{DE71EFA5-C09A-4A04-9C27-DE2D360A3D10}" | ||
EndProject | ||
Global | ||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||
Debug|Any CPU = Debug|Any CPU | ||
Release|Any CPU = Release|Any CPU | ||
EndGlobalSection | ||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||
{773B18A6-5864-4FAE-B6B0-A863FE8F151C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{773B18A6-5864-4FAE-B6B0-A863FE8F151C}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{773B18A6-5864-4FAE-B6B0-A863FE8F151C}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{773B18A6-5864-4FAE-B6B0-A863FE8F151C}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{8EF917C9-479A-4DE1-9FE1-EB0066BA601A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{8EF917C9-479A-4DE1-9FE1-EB0066BA601A}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{8EF917C9-479A-4DE1-9FE1-EB0066BA601A}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{8EF917C9-479A-4DE1-9FE1-EB0066BA601A}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{99A0577B-3900-4A2D-905A-777FD86C60F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{99A0577B-3900-4A2D-905A-777FD86C60F8}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{99A0577B-3900-4A2D-905A-777FD86C60F8}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{99A0577B-3900-4A2D-905A-777FD86C60F8}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{7F367130-1A9C-4E87-AA50-620767F10EF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{7F367130-1A9C-4E87-AA50-620767F10EF7}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{7F367130-1A9C-4E87-AA50-620767F10EF7}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{7F367130-1A9C-4E87-AA50-620767F10EF7}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{BF698A87-5C8D-4C60-B704-9F1045156639}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{BF698A87-5C8D-4C60-B704-9F1045156639}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{BF698A87-5C8D-4C60-B704-9F1045156639}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{BF698A87-5C8D-4C60-B704-9F1045156639}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{0C78536E-AD2B-47CF-A784-3EBF49DD0A47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{0C78536E-AD2B-47CF-A784-3EBF49DD0A47}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{0C78536E-AD2B-47CF-A784-3EBF49DD0A47}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{0C78536E-AD2B-47CF-A784-3EBF49DD0A47}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{DDCE02AF-6DEE-485B-AA69-C69F0973E00B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{DDCE02AF-6DEE-485B-AA69-C69F0973E00B}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{DDCE02AF-6DEE-485B-AA69-C69F0973E00B}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{DDCE02AF-6DEE-485B-AA69-C69F0973E00B}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{F76CA92C-211B-46A7-8B21-A808291B268E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{F76CA92C-211B-46A7-8B21-A808291B268E}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{F76CA92C-211B-46A7-8B21-A808291B268E}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{F76CA92C-211B-46A7-8B21-A808291B268E}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{1C184ECB-7653-4DC1-B453-E529656897CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{1C184ECB-7653-4DC1-B453-E529656897CB}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{1C184ECB-7653-4DC1-B453-E529656897CB}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{1C184ECB-7653-4DC1-B453-E529656897CB}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{DE71EFA5-C09A-4A04-9C27-DE2D360A3D10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{DE71EFA5-C09A-4A04-9C27-DE2D360A3D10}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{DE71EFA5-C09A-4A04-9C27-DE2D360A3D10}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{DE71EFA5-C09A-4A04-9C27-DE2D360A3D10}.Release|Any CPU.Build.0 = Release|Any CPU | ||
EndGlobalSection | ||
GlobalSection(SolutionProperties) = preSolution | ||
HideSolutionNode = FALSE | ||
EndGlobalSection | ||
GlobalSection(NestedProjects) = preSolution | ||
{99A0577B-3900-4A2D-905A-777FD86C60F8} = {7FADA9D9-5FDA-4CFB-8A53-A578A61FBBA9} | ||
{7F367130-1A9C-4E87-AA50-620767F10EF7} = {F71B8320-C279-4A79-A8D4-4039DB39D522} | ||
{BF698A87-5C8D-4C60-B704-9F1045156639} = {7FADA9D9-5FDA-4CFB-8A53-A578A61FBBA9} | ||
{0C78536E-AD2B-47CF-A784-3EBF49DD0A47} = {7FADA9D9-5FDA-4CFB-8A53-A578A61FBBA9} | ||
{DDCE02AF-6DEE-485B-AA69-C69F0973E00B} = {7FADA9D9-5FDA-4CFB-8A53-A578A61FBBA9} | ||
{F76CA92C-211B-46A7-8B21-A808291B268E} = {7FADA9D9-5FDA-4CFB-8A53-A578A61FBBA9} | ||
EndGlobalSection | ||
GlobalSection(ExtensibilityGlobals) = postSolution | ||
SolutionGuid = {3103E11A-E792-49EE-98C5-B2F3709DB088} | ||
EndGlobalSection | ||
EndGlobal | ||
|
||
Microsoft Visual Studio Solution File, Format Version 12.00 | ||
# Visual Studio Version 17 | ||
VisualStudioVersion = 17.1.32113.165 | ||
MinimumVisualStudioVersion = 10.0.40219.1 | ||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{9A64FA9E-AC6C-4C1F-B648-E9E64F172EA8}" | ||
ProjectSection(SolutionItems) = preProject | ||
.editorconfig = .editorconfig | ||
README.md = README.md | ||
EndProjectSection | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EdjCase.ICP.Agent", "src\Agent\EdjCase.ICP.Agent.csproj", "{773B18A6-5864-4FAE-B6B0-A863FE8F151C}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EdjCase.ICP.Candid", "src\Candid\EdjCase.ICP.Candid.csproj", "{8EF917C9-479A-4DE1-9FE1-EB0066BA601A}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.CLI", "samples\Sample.CLI\Sample.CLI.csproj", "{99A0577B-3900-4A2D-905A-777FD86C60F8}" | ||
EndProject | ||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{F71B8320-C279-4A79-A8D4-4039DB39D522}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Candid.Tests", "test\Common.Tests\Candid.Tests.csproj", "{7F367130-1A9C-4E87-AA50-620767F10EF7}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.BlazorWebAssembly.Server", "samples\Sample.BlazorWebAssembly\Server\Sample.BlazorWebAssembly.Server.csproj", "{BF698A87-5C8D-4C60-B704-9F1045156639}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.BlazorWebAssembly.Client", "samples\Sample.BlazorWebAssembly\Client\Sample.BlazorWebAssembly.Client.csproj", "{0C78536E-AD2B-47CF-A784-3EBF49DD0A47}" | ||
EndProject | ||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{7FADA9D9-5FDA-4CFB-8A53-A578A61FBBA9}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.Shared", "samples\Sample.Shared\Sample.Shared.csproj", "{DDCE02AF-6DEE-485B-AA69-C69F0973E00B}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.RestAPI", "samples\Sample.RestAPI\Sample.RestAPI.csproj", "{F76CA92C-211B-46A7-8B21-A808291B268E}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EdjCase.ICP.ClientGenerator", "src\ClientGenerator\EdjCase.ICP.ClientGenerator.csproj", "{1C184ECB-7653-4DC1-B453-E529656897CB}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EdjCase.ICP.InternetIdentity", "src\InternetIdentity\EdjCase.ICP.InternetIdentity.csproj", "{6030010B-7BA2-4305-B999-F92995478E02}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Fido2Net", "Fido2Net\Fido2Net\Fido2Net.csproj", "{9539D54D-1FBA-43D2-A813-E9EDB7976765}" | ||
EndProject | ||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EdjCase.Cryptography.BLS", "src\EdjCase.Cryptography.BLS\EdjCase.Cryptography.BLS.csproj", "{DE71EFA5-C09A-4A04-9C27-DE2D360A3D10}" | ||
EndProject | ||
Global | ||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||
Debug|Any CPU = Debug|Any CPU | ||
Release|Any CPU = Release|Any CPU | ||
EndGlobalSection | ||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||
{773B18A6-5864-4FAE-B6B0-A863FE8F151C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{773B18A6-5864-4FAE-B6B0-A863FE8F151C}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{773B18A6-5864-4FAE-B6B0-A863FE8F151C}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{773B18A6-5864-4FAE-B6B0-A863FE8F151C}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{8EF917C9-479A-4DE1-9FE1-EB0066BA601A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{8EF917C9-479A-4DE1-9FE1-EB0066BA601A}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{8EF917C9-479A-4DE1-9FE1-EB0066BA601A}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{8EF917C9-479A-4DE1-9FE1-EB0066BA601A}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{99A0577B-3900-4A2D-905A-777FD86C60F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{99A0577B-3900-4A2D-905A-777FD86C60F8}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{99A0577B-3900-4A2D-905A-777FD86C60F8}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{99A0577B-3900-4A2D-905A-777FD86C60F8}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{7F367130-1A9C-4E87-AA50-620767F10EF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{7F367130-1A9C-4E87-AA50-620767F10EF7}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{7F367130-1A9C-4E87-AA50-620767F10EF7}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{7F367130-1A9C-4E87-AA50-620767F10EF7}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{BF698A87-5C8D-4C60-B704-9F1045156639}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{BF698A87-5C8D-4C60-B704-9F1045156639}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{BF698A87-5C8D-4C60-B704-9F1045156639}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{BF698A87-5C8D-4C60-B704-9F1045156639}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{0C78536E-AD2B-47CF-A784-3EBF49DD0A47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{0C78536E-AD2B-47CF-A784-3EBF49DD0A47}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{0C78536E-AD2B-47CF-A784-3EBF49DD0A47}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{0C78536E-AD2B-47CF-A784-3EBF49DD0A47}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{DDCE02AF-6DEE-485B-AA69-C69F0973E00B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{DDCE02AF-6DEE-485B-AA69-C69F0973E00B}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{DDCE02AF-6DEE-485B-AA69-C69F0973E00B}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{DDCE02AF-6DEE-485B-AA69-C69F0973E00B}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{F76CA92C-211B-46A7-8B21-A808291B268E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{F76CA92C-211B-46A7-8B21-A808291B268E}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{F76CA92C-211B-46A7-8B21-A808291B268E}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{F76CA92C-211B-46A7-8B21-A808291B268E}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{1C184ECB-7653-4DC1-B453-E529656897CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{1C184ECB-7653-4DC1-B453-E529656897CB}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{1C184ECB-7653-4DC1-B453-E529656897CB}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{1C184ECB-7653-4DC1-B453-E529656897CB}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{6030010B-7BA2-4305-B999-F92995478E02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{6030010B-7BA2-4305-B999-F92995478E02}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{6030010B-7BA2-4305-B999-F92995478E02}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{6030010B-7BA2-4305-B999-F92995478E02}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{9539D54D-1FBA-43D2-A813-E9EDB7976765}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{9539D54D-1FBA-43D2-A813-E9EDB7976765}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{9539D54D-1FBA-43D2-A813-E9EDB7976765}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{9539D54D-1FBA-43D2-A813-E9EDB7976765}.Release|Any CPU.Build.0 = Release|Any CPU | ||
{DE71EFA5-C09A-4A04-9C27-DE2D360A3D10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{DE71EFA5-C09A-4A04-9C27-DE2D360A3D10}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{DE71EFA5-C09A-4A04-9C27-DE2D360A3D10}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{DE71EFA5-C09A-4A04-9C27-DE2D360A3D10}.Release|Any CPU.Build.0 = Release|Any CPU | ||
EndGlobalSection | ||
GlobalSection(SolutionProperties) = preSolution | ||
HideSolutionNode = FALSE | ||
EndGlobalSection | ||
GlobalSection(NestedProjects) = preSolution | ||
{99A0577B-3900-4A2D-905A-777FD86C60F8} = {7FADA9D9-5FDA-4CFB-8A53-A578A61FBBA9} | ||
{7F367130-1A9C-4E87-AA50-620767F10EF7} = {F71B8320-C279-4A79-A8D4-4039DB39D522} | ||
{BF698A87-5C8D-4C60-B704-9F1045156639} = {7FADA9D9-5FDA-4CFB-8A53-A578A61FBBA9} | ||
{0C78536E-AD2B-47CF-A784-3EBF49DD0A47} = {7FADA9D9-5FDA-4CFB-8A53-A578A61FBBA9} | ||
{DDCE02AF-6DEE-485B-AA69-C69F0973E00B} = {7FADA9D9-5FDA-4CFB-8A53-A578A61FBBA9} | ||
{F76CA92C-211B-46A7-8B21-A808291B268E} = {7FADA9D9-5FDA-4CFB-8A53-A578A61FBBA9} | ||
EndGlobalSection | ||
GlobalSection(ExtensibilityGlobals) = postSolution | ||
SolutionGuid = {3103E11A-E792-49EE-98C5-B2F3709DB088} | ||
EndGlobalSection | ||
EndGlobal |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.