diff --git a/src/DynamoCore/Models/DynamoModel.cs b/src/DynamoCore/Models/DynamoModel.cs index 909c553073a..52835ce2ab1 100644 --- a/src/DynamoCore/Models/DynamoModel.cs +++ b/src/DynamoCore/Models/DynamoModel.cs @@ -1242,7 +1242,7 @@ private void EngineController_TraceReconcliationComplete(TraceReconciliationEven { Debug.WriteLine("TRACE RECONCILIATION: {0} total serializables were orphaned.", obj.CallsiteToOrphanMap.SelectMany(kvp => kvp.Value).Count()); - // The orphans will come back here as a dictionary of lists of strings jeyed by their callsite id. + // The orphans will come back here as a dictionary of lists of strings keyed by their callsite id. // This dictionary gets redistributed into a dictionary keyed by the workspace id. var workspaceOrphanMap = new Dictionary>(); diff --git a/src/Engine/ProtoCore/Lang/CallSite.cs b/src/Engine/ProtoCore/Lang/CallSite.cs index dc7c4d8aa2f..25e016158ad 100644 --- a/src/Engine/ProtoCore/Lang/CallSite.cs +++ b/src/Engine/ProtoCore/Lang/CallSite.cs @@ -262,12 +262,12 @@ public CallSite(int classScope, string methodName, #region public methods /// - /// Load the serialised data provided into this callsite's trace cache + /// Load the serialized data provided into this callsite's trace cache /// /// The data to load public void LoadSerializedDataIntoTraceCache(string serializedTraceData) { - if (serializedTraceData == null) + if (serializedTraceData == null || CheckIfTraceDataIsLegacySOAPFormat(serializedTraceData)) { beforeFirstRunSerializables = new List(); return; @@ -277,8 +277,8 @@ public void LoadSerializedDataIntoTraceCache(string serializedTraceData) try { //Optional Compression / Decompression - serializedTraceData = DecompressSerializedTraceData(serializedTraceData); - newTraceData = JsonConvert.DeserializeObject>(serializedTraceData); + var decompressedTraceData = DecompressSerializedTraceData(serializedTraceData); + newTraceData = JsonConvert.DeserializeObject>(decompressedTraceData); } catch { @@ -453,7 +453,7 @@ public string GetTraceDataToSave() /// /// /// - public static string CompressSerializedTraceData(string json) + private static string CompressSerializedTraceData(string json) { byte[] dataToCompress = Encoding.UTF8.GetBytes(json); @@ -461,6 +461,8 @@ public static string CompressSerializedTraceData(string json) using (var gzipStream = new GZipStream(memoryStream, CompressionLevel.Optimal)) { gzipStream.Write(dataToCompress, 0, dataToCompress.Length); + //we ned to flush the gzip stream to force write to be done BEFORE we access the memory stream. + gzipStream.Close(); return Convert.ToBase64String(memoryStream.ToArray()); } } @@ -562,6 +564,21 @@ private void UpdateCallsiteExecutionState(Object callsiteData, RuntimeCore runti } }*/ } + //TODO write a unit test for this. + private static bool CheckIfTraceDataIsLegacySOAPFormat(string base64EncodedTraceData) + { + var data = Convert.FromBase64String(base64EncodedTraceData); + if (data.Length > 71) + { + var header = Encoding.UTF8.GetString(data, 0, 72); + if (header == @" GetAllSerializablesFromSingleRunTraceData( RawTraceData callSiteData) { - if (callSiteData.Data == null) + if (callSiteData.Data == null || CheckIfTraceDataIsLegacySOAPFormat(callSiteData.Data)) { return new List(); } @@ -1892,7 +1909,7 @@ public static IList GetAllSerializablesFromSingleRunTraceData( } catch { - //Do nothing. Old Format data. + //Do nothing. } if (traceData == null) diff --git a/src/Engine/ProtoCore/RuntimeData.cs b/src/Engine/ProtoCore/RuntimeData.cs index 39dc33b677e..df67c8a0555 100644 --- a/src/Engine/ProtoCore/RuntimeData.cs +++ b/src/Engine/ProtoCore/RuntimeData.cs @@ -348,7 +348,7 @@ private string GetAndRemoveTraceDataForNode(Guid nodeGuid, string callsiteID) } } - // For backword compatibility: old dyn file doesn't have CallSiteID + // For backward compatibility: old dyn file doesn't have CallSiteID // attribute, so the call site id will be empty string. if (callsiteTraceData == null && !string.IsNullOrEmpty(callsiteID)) { diff --git a/test/Engine/FFITarget/MinimalTraceTargets.cs b/test/Engine/FFITarget/MinimalTraceTargets.cs index fd06ad99e9e..581ecfb7c79 100644 --- a/test/Engine/FFITarget/MinimalTraceTargets.cs +++ b/test/Engine/FFITarget/MinimalTraceTargets.cs @@ -118,7 +118,6 @@ public void Dispose() } - [Serializable] internal class IDHolder { [JsonProperty] @@ -131,14 +130,8 @@ public IDHolder() } - [Serializable] internal class DummyDataHolder { - public void GetObjectData(SerializationInfo info, StreamingContext context) - { - throw new NotImplementedException(); - } - public DummyDataHolder() { } } diff --git a/test/core/callsite/element_binding.dyn b/test/core/callsite/element_binding.dyn index 1849d68caa0..023f35a4526 100644 --- a/test/core/callsite/element_binding.dyn +++ b/test/core/callsite/element_binding.dyn @@ -2,18 +2,37 @@ "Uuid": "ce4b7a61-2ef7-46ba-965c-e5a69dc6d6a1", "IsCustomNode": false, "Description": null, - "Name": "element_binding2", + "Name": "element_binding", "ElementResolver": { "ResolutionMap": {} }, "Inputs": [], "Outputs": [], "Nodes": [ + { + "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore", + "Id": "4efdba9e975c492989a3e7b3013d127d", + "NodeType": "CodeBlockNode", + "Inputs": [], + "Outputs": [ + { + "Id": "3696729e5bf748f1a33cd5a81e89ae65", + "Name": "", + "Description": "Value of expression at line 1", + "UsingDefaultValue": false, + "Level": 2, + "UseLevels": false, + "KeepListStructure": false + } + ], + "Replication": "Disabled", + "Description": "Allows for DesignScript code to be authored directly", + "Code": "23;" + }, { "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", - "NodeType": "FunctionNode", - "FunctionSignature": "FFITarget.WrapperObject.WrapperObject@int", "Id": "1e83cc257de64a7ca702600b79aa194d", + "NodeType": "FunctionNode", "Inputs": [ { "Id": "7b03c2a4ea60468c8c2ae9e29e0b839b", @@ -36,34 +55,14 @@ "KeepListStructure": false } ], + "FunctionSignature": "FFITarget.WrapperObject.WrapperObject@int", "Replication": "Auto", "Description": "WrapperObject.WrapperObject (x: int): WrapperObject" }, - { - "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore", - "NodeType": "CodeBlockNode", - "Code": "23;", - "Id": "4efdba9e975c492989a3e7b3013d127d", - "Inputs": [], - "Outputs": [ - { - "Id": "3696729e5bf748f1a33cd5a81e89ae65", - "Name": "", - "Description": "Value of expression at line 1", - "UsingDefaultValue": false, - "Level": 2, - "UseLevels": false, - "KeepListStructure": false - } - ], - "Replication": "Disabled", - "Description": "Allows for DesignScript code to be authored directly" - }, { "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", - "NodeType": "FunctionNode", - "FunctionSignature": "FFITarget.WrapperObject.ID", "Id": "c760af7e042c4722a8343445bf41f549", + "NodeType": "FunctionNode", "Inputs": [ { "Id": "ae116934834c481ab272c69c492400d3", @@ -86,19 +85,19 @@ "KeepListStructure": false } ], + "FunctionSignature": "FFITarget.WrapperObject.ID", "Replication": "Auto", "Description": "WrapperObject.ID: int" }, { "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "Id": "5f27752013aa4833aa82b17a822e6d8c", "NodeType": "FunctionNode", - "FunctionSignature": "FFITarget.WrapperObject.WrapperObject@int", - "Id": "c69c7becd54b4eadaea8a3f45bea9ab2", "Inputs": [ { - "Id": "4736f3ce1714480da3ba0a2b51493b55", - "Name": "x", - "Description": "int", + "Id": "71f705e66b4a4b34bf51d23f4e56a124", + "Name": "wrapperObject", + "Description": "FFITarget.WrapperObject", "UsingDefaultValue": false, "Level": 2, "UseLevels": false, @@ -107,28 +106,28 @@ ], "Outputs": [ { - "Id": "fc6fe66d178642f5aac68f45314f7956", - "Name": "WrapperObject", - "Description": "WrapperObject", + "Id": "1210e799ba384e5ab9a2c2da552da7b0", + "Name": "int", + "Description": "int", "UsingDefaultValue": false, "Level": 2, "UseLevels": false, "KeepListStructure": false } ], + "FunctionSignature": "FFITarget.WrapperObject.ID", "Replication": "Auto", - "Description": "WrapperObject.WrapperObject (x: int): WrapperObject" + "Description": "WrapperObject.ID: int" }, { "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore", + "Id": "a45112b48ffb491fa91f724874d33a87", "NodeType": "FunctionNode", - "FunctionSignature": "FFITarget.WrapperObject.ID", - "Id": "5f27752013aa4833aa82b17a822e6d8c", "Inputs": [ { - "Id": "71f705e66b4a4b34bf51d23f4e56a124", - "Name": "wrapperObject", - "Description": "FFITarget.WrapperObject", + "Id": "b44386085a404103a77de302904906cd", + "Name": "x", + "Description": "int", "UsingDefaultValue": false, "Level": 2, "UseLevels": false, @@ -137,53 +136,87 @@ ], "Outputs": [ { - "Id": "1210e799ba384e5ab9a2c2da552da7b0", - "Name": "int", - "Description": "int", + "Id": "16a78a3863e6433bbaaaa9b7ab88edab", + "Name": "WrapperObject", + "Description": "WrapperObject", "UsingDefaultValue": false, "Level": 2, "UseLevels": false, "KeepListStructure": false } ], + "FunctionSignature": "FFITarget.WrapperObject.WrapperObject@int", "Replication": "Auto", - "Description": "WrapperObject.ID: int" + "Description": "WrapperObject.WrapperObject (x: int): WrapperObject" } ], "Connectors": [ - { - "Start": "cd10e88b930443aab9d92d3c7590614c", - "End": "ae116934834c481ab272c69c492400d3", - "Id": "47a80448ed3645e4aeb321df46b81067" - }, { "Start": "3696729e5bf748f1a33cd5a81e89ae65", "End": "7b03c2a4ea60468c8c2ae9e29e0b839b", - "Id": "02041154dcf24660b748d1009b23364b" + "Id": "02041154dcf24660b748d1009b23364b", + "IsHidden": "False" }, { "Start": "3696729e5bf748f1a33cd5a81e89ae65", - "End": "4736f3ce1714480da3ba0a2b51493b55", - "Id": "9a6001c7db064ed89c491ae78014c62f" + "End": "b44386085a404103a77de302904906cd", + "Id": "3c17b211e32041a7ad4687ae2669cb8a", + "IsHidden": "False" }, { - "Start": "fc6fe66d178642f5aac68f45314f7956", + "Start": "cd10e88b930443aab9d92d3c7590614c", + "End": "ae116934834c481ab272c69c492400d3", + "Id": "47a80448ed3645e4aeb321df46b81067", + "IsHidden": "False" + }, + { + "Start": "16a78a3863e6433bbaaaa9b7ab88edab", "End": "71f705e66b4a4b34bf51d23f4e56a124", - "Id": "1f934f6ef06645abb18cd63af96de422" + "Id": "8c711505708747ef9e279a681816d780", + "IsHidden": "False" } ], "Dependencies": [], + "NodeLibraryDependencies": [ + { + "Name": "FFITarget.dll", + "ReferenceType": "ZeroTouch", + "Nodes": [ + "1e83cc257de64a7ca702600b79aa194d", + "c760af7e042c4722a8343445bf41f549", + "5f27752013aa4833aa82b17a822e6d8c", + "a45112b48ffb491fa91f724874d33a87" + ] + } + ], + "Thumbnail": "", + "GraphDocumentationURL": null, + "ExtensionWorkspaceData": [ + { + "ExtensionGuid": "28992e1d-abb9-417f-8b1b-05e053bee670", + "Name": "Properties", + "Version": "3.0", + "Data": {} + } + ], + "Author": "None provided", + "Linting": { + "activeLinter": "None", + "activeLinterId": "7b75fb44-43fd-4631-a878-29f4d5d8399a", + "warningCount": 0, + "errorCount": 0 + }, "Bindings": [ { "NodeId": "1e83cc25-7de6-4a7c-a702-600b79aa194d", "Binding": { - "WrapperObject_InClassDecl-1_InFunctionScope-1_Instance0_1e83cc25-7de6-4a7c-a702-600b79aa194d": "PFNPQVAtRU5WOkVudmVsb3BlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOlNPQVAtRU5DPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyIgeG1sbnM6U09BUC1FTlY9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIiB4bWxuczpjbHI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vc29hcC9lbmNvZGluZy9jbHIvMS4wIiBTT0FQLUVOVjplbmNvZGluZ1N0eWxlPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyI+DQo8U09BUC1FTlY6Qm9keT4NCjxhMTpDYWxsU2l0ZV94MDAyQl9UcmFjZVNlcmlhbGlzZXJIZWxwZXIgaWQ9InJlZi0xIiB4bWxuczphMT0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9jbHIvbnNhc3NlbS9Qcm90b0NvcmUvUHJvdG9Db3JlJTJDJTIwVmVyc2lvbiUzRDIuMi4wLjM5NjUlMkMlMjBDdWx0dXJlJTNEbmV1dHJhbCUyQyUyMFB1YmxpY0tleVRva2VuJTNEbnVsbCI+DQo8TnVtYmVyT2ZFbGVtZW50cz4xPC9OdW1iZXJPZkVsZW1lbnRzPg0KPEJhc2UtMF9IYXNEYXRhPnRydWU8L0Jhc2UtMF9IYXNEYXRhPg0KPEJhc2UtMF9EYXRhIGlkPSJyZWYtMyI+UEZOUFFWQXRSVTVXT2tWdWRtVnNiM0JsSUhodGJHNXpPbmh6YVQwaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNUzlZVFV4VFkyaGxiV0V0YVc1emRHRnVZMlVpSUhodGJHNXpPbmh6WkQwaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNUzlZVFV4VFkyaGxiV0VpSUhodGJHNXpPbE5QUVZBdFJVNURQU0pvZEhSd09pOHZjMk5vWlcxaGN5NTRiV3h6YjJGd0xtOXlaeTl6YjJGd0wyVnVZMjlrYVc1bkx5SWdlRzFzYm5NNlUwOUJVQzFGVGxZOUltaDBkSEE2THk5elkyaGxiV0Z6TG5odGJITnZZWEF1YjNKbkwzTnZZWEF2Wlc1MlpXeHZjR1V2SWlCNGJXeHVjenBqYkhJOUltaDBkSEE2THk5elkyaGxiV0Z6TG0xcFkzSnZjMjltZEM1amIyMHZjMjloY0M5bGJtTnZaR2x1Wnk5amJISXZNUzR3SWlCVFQwRlFMVVZPVmpwbGJtTnZaR2x1WjFOMGVXeGxQU0pvZEhSd09pOHZjMk5vWlcxaGN5NTRiV3h6YjJGd0xtOXlaeTl6YjJGd0wyVnVZMjlrYVc1bkx5SStEUW84VTA5QlVDMUZUbFk2UW05a2VUNE5DanhoTVRwSlJFaHZiR1JsY2lCcFpEMGljbVZtTFRFaUlIaHRiRzV6T21FeFBTSm9kSFJ3T2k4dmMyTm9aVzFoY3k1dGFXTnliM052Wm5RdVkyOXRMMk5zY2k5dWMyRnpjMlZ0TDBaR1NWUmhjbWRsZEM5R1JrbFVZWEpuWlhRbE1rTWxNakJXWlhKemFXOXVKVE5FTWk0eUxqQXVNemsyTlNVeVF5VXlNRU4xYkhSMWNtVWxNMFJ1WlhWMGNtRnNKVEpESlRJd1VIVmliR2xqUzJWNVZHOXJaVzRsTTBSdWRXeHNJajROQ2p4cGJuUkpSRDR5UEM5cGJuUkpSRDROQ2p3dllURTZTVVJJYjJ4a1pYSStEUW84TDFOUFFWQXRSVTVXT2tKdlpIaytEUW84TDFOUFFWQXRSVTVXT2tWdWRtVnNiM0JsUGcwSzwvQmFzZS0wX0RhdGE+DQo8QmFzZS0wX0hhc05lc3RlZERhdGE+ZmFsc2U8L0Jhc2UtMF9IYXNOZXN0ZWREYXRhPg0KPC9hMTpDYWxsU2l0ZV94MDAyQl9UcmFjZVNlcmlhbGlzZXJIZWxwZXI+DQo8L1NPQVAtRU5WOkJvZHk+DQo8L1NPQVAtRU5WOkVudmVsb3BlPg0K" + "WrapperObject_InClassDecl-1_InFunctionScope-1_Instance0_1e83cc25-7de6-4a7c-a702-600b79aa194d": "H4sIAAAAAAAACouuVkpJLElUslKqjlHydIlRsjKqVaqNBQD9KH22FwAAAA==" } }, { - "NodeId": "c69c7bec-d54b-4ead-aea8-a3f45bea9ab2", + "NodeId": "a45112b4-8ffb-491f-a91f-724874d33a87", "Binding": { - "WrapperObject_InClassDecl-1_InFunctionScope-1_Instance0_c69c7bec-d54b-4ead-aea8-a3f45bea9ab2": "PFNPQVAtRU5WOkVudmVsb3BlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOlNPQVAtRU5DPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyIgeG1sbnM6U09BUC1FTlY9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIiB4bWxuczpjbHI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vc29hcC9lbmNvZGluZy9jbHIvMS4wIiBTT0FQLUVOVjplbmNvZGluZ1N0eWxlPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VuY29kaW5nLyI+DQo8U09BUC1FTlY6Qm9keT4NCjxhMTpDYWxsU2l0ZV94MDAyQl9UcmFjZVNlcmlhbGlzZXJIZWxwZXIgaWQ9InJlZi0xIiB4bWxuczphMT0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9jbHIvbnNhc3NlbS9Qcm90b0NvcmUvUHJvdG9Db3JlJTJDJTIwVmVyc2lvbiUzRDIuMi4wLjM5NjUlMkMlMjBDdWx0dXJlJTNEbmV1dHJhbCUyQyUyMFB1YmxpY0tleVRva2VuJTNEbnVsbCI+DQo8TnVtYmVyT2ZFbGVtZW50cz4xPC9OdW1iZXJPZkVsZW1lbnRzPg0KPEJhc2UtMF9IYXNEYXRhPnRydWU8L0Jhc2UtMF9IYXNEYXRhPg0KPEJhc2UtMF9EYXRhIGlkPSJyZWYtMyI+UEZOUFFWQXRSVTVXT2tWdWRtVnNiM0JsSUhodGJHNXpPbmh6YVQwaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNUzlZVFV4VFkyaGxiV0V0YVc1emRHRnVZMlVpSUhodGJHNXpPbmh6WkQwaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNUzlZVFV4VFkyaGxiV0VpSUhodGJHNXpPbE5QUVZBdFJVNURQU0pvZEhSd09pOHZjMk5vWlcxaGN5NTRiV3h6YjJGd0xtOXlaeTl6YjJGd0wyVnVZMjlrYVc1bkx5SWdlRzFzYm5NNlUwOUJVQzFGVGxZOUltaDBkSEE2THk5elkyaGxiV0Z6TG5odGJITnZZWEF1YjNKbkwzTnZZWEF2Wlc1MlpXeHZjR1V2SWlCNGJXeHVjenBqYkhJOUltaDBkSEE2THk5elkyaGxiV0Z6TG0xcFkzSnZjMjltZEM1amIyMHZjMjloY0M5bGJtTnZaR2x1Wnk5amJISXZNUzR3SWlCVFQwRlFMVVZPVmpwbGJtTnZaR2x1WjFOMGVXeGxQU0pvZEhSd09pOHZjMk5vWlcxaGN5NTRiV3h6YjJGd0xtOXlaeTl6YjJGd0wyVnVZMjlrYVc1bkx5SStEUW84VTA5QlVDMUZUbFk2UW05a2VUNE5DanhoTVRwSlJFaHZiR1JsY2lCcFpEMGljbVZtTFRFaUlIaHRiRzV6T21FeFBTSm9kSFJ3T2k4dmMyTm9aVzFoY3k1dGFXTnliM052Wm5RdVkyOXRMMk5zY2k5dWMyRnpjMlZ0TDBaR1NWUmhjbWRsZEM5R1JrbFVZWEpuWlhRbE1rTWxNakJXWlhKemFXOXVKVE5FTWk0eUxqQXVNemsyTlNVeVF5VXlNRU4xYkhSMWNtVWxNMFJ1WlhWMGNtRnNKVEpESlRJd1VIVmliR2xqUzJWNVZHOXJaVzRsTTBSdWRXeHNJajROQ2p4cGJuUkpSRDR6UEM5cGJuUkpSRDROQ2p3dllURTZTVVJJYjJ4a1pYSStEUW84TDFOUFFWQXRSVTVXT2tKdlpIaytEUW84TDFOUFFWQXRSVTVXT2tWdWRtVnNiM0JsUGcwSzwvQmFzZS0wX0RhdGE+DQo8QmFzZS0wX0hhc05lc3RlZERhdGE+ZmFsc2U8L0Jhc2UtMF9IYXNOZXN0ZWREYXRhPg0KPC9hMTpDYWxsU2l0ZV94MDAyQl9UcmFjZVNlcmlhbGlzZXJIZWxwZXI+DQo8L1NPQVAtRU5WOkJvZHk+DQo8L1NPQVAtRU5WOkVudmVsb3BlPg0K" + "WrapperObject_InClassDecl-1_InFunctionScope-1_Instance0_a45112b4-8ffb-491f-a91f-724874d33a87": "H4sIAAAAAAAACouuVkpJLElUslKqjlHydIlRsjKuVaqNBQBNAR2LFwAAAA==" } } ], @@ -192,12 +225,12 @@ "ScaleFactor": 1.0, "HasRunWithoutCrash": true, "IsVisibleInDynamoLibrary": true, - "Version": "2.2.0.3965", + "Version": "3.0.0.5795", "RunType": "Automatic", "RunPeriod": "1000" }, "Camera": { - "Name": "Background Preview", + "Name": "_Background Preview", "EyeX": -17.0, "EyeY": 24.0, "EyeZ": 50.0, @@ -208,61 +241,62 @@ "UpY": 1.0, "UpZ": 0.0 }, + "ConnectorPins": [], "NodeViews": [ { - "Id": "1e83cc257de64a7ca702600b79aa194d", + "Id": "4efdba9e975c492989a3e7b3013d127d", + "Name": "Code Block", "IsSetAsInput": false, "IsSetAsOutput": false, - "Name": "WrapperObject.WrapperObject", - "ShowGeometry": true, "Excluded": false, - "X": 744.0, - "Y": 413.5 + "ShowGeometry": true, + "X": 534.0, + "Y": 420.0 }, { - "Id": "4efdba9e975c492989a3e7b3013d127d", + "Id": "1e83cc257de64a7ca702600b79aa194d", + "Name": "WrapperObject.WrapperObject", "IsSetAsInput": false, "IsSetAsOutput": false, - "Name": "Code Block", - "ShowGeometry": true, "Excluded": false, - "X": 534.0, - "Y": 420.0 + "ShowGeometry": true, + "X": 744.0, + "Y": 413.5 }, { "Id": "c760af7e042c4722a8343445bf41f549", + "Name": "WrapperObject.ID", "IsSetAsInput": false, "IsSetAsOutput": false, - "Name": "WrapperObject.ID", - "ShowGeometry": true, "Excluded": false, - "X": 1022.0, - "Y": 439.5 + "ShowGeometry": true, + "X": 1214.2848664688427, + "Y": 375.4050445103858 }, { - "Id": "c69c7becd54b4eadaea8a3f45bea9ab2", + "Id": "5f27752013aa4833aa82b17a822e6d8c", + "Name": "WrapperObject.ID", "IsSetAsInput": false, "IsSetAsOutput": false, - "Name": "WrapperObject.WrapperObject", - "ShowGeometry": true, "Excluded": false, - "X": 766.0, - "Y": 577.5 + "ShowGeometry": true, + "X": 1184.1750741839762, + "Y": 573.4020771513353 }, { - "Id": "5f27752013aa4833aa82b17a822e6d8c", + "Id": "a45112b48ffb491fa91f724874d33a87", + "Name": "WrapperObject.WrapperObject", "IsSetAsInput": false, "IsSetAsOutput": false, - "Name": "WrapperObject.ID", - "ShowGeometry": true, "Excluded": false, - "X": 1091.0, - "Y": 564.5 + "ShowGeometry": true, + "X": 755.6483679525222, + "Y": 633.3976261127596 } ], "Annotations": [], - "X": 0.0, - "Y": 0.0, - "Zoom": 1.0 + "X": -328.63375, + "Y": -181.6375, + "Zoom": 0.8425 } } \ No newline at end of file