Update core serialization data after changing CurrentCulture->InvariantCulture

--- src/System.Runtime.Serialization.Formatters/tests/BinaryFormatterTestData.cs
+++ src/System.Runtime.Serialization.Formatters/tests/BinaryFormatterTestData.cs
@@ -117,10 +117,10 @@
             yield return new object[] { new StringBuilder(), new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAABlTeXN0ZW0uVGV4dC5TdHJpbmdCdWlsZGVyBAAAAA1tX01heENhcGFjaXR5CENhcGFjaXR5DW1fU3RyaW5nVmFsdWUPbV9jdXJyZW50VGhyZWFkAAABAAgICP///38QAAAABgIAAAAAAAAAAAs=", "AAEAAAD/////AQAAAAAAAAAEAQAAABlTeXN0ZW0uVGV4dC5TdHJpbmdCdWlsZGVyBAAAAA1tX01heENhcGFjaXR5CENhcGFjaXR5DW1fU3RyaW5nVmFsdWUPbV9jdXJyZW50VGhyZWFkAAABAAgICP///38QAAAABgIAAAAAAAAAAAs=" } };
             yield return new object[] { new StringBuilder("starting", 0, 5, 10), new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAABlTeXN0ZW0uVGV4dC5TdHJpbmdCdWlsZGVyBAAAAA1tX01heENhcGFjaXR5CENhcGFjaXR5DW1fU3RyaW5nVmFsdWUPbV9jdXJyZW50VGhyZWFkAAABAAgICP///38KAAAABgIAAAAFc3RhcnQAAAAACw==", "AAEAAAD/////AQAAAAAAAAAEAQAAABlTeXN0ZW0uVGV4dC5TdHJpbmdCdWlsZGVyBAAAAA1tX01heENhcGFjaXR5CENhcGFjaXR5DW1fU3RyaW5nVmFsdWUPbV9jdXJyZW50VGhyZWFkAAABAAgICP///38KAAAABgIAAAAFc3RhcnQAAAAACw==" } };
             var cookie = new Cookie("host", "edge", "auth", "dot.net");
-            yield return new object[] { cookie, new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFhTeXN0ZW0uTmV0LlByaW1pdGl2ZXMsIFZlcnNpb249NC4xLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhDAMAAABVU3lzdGVtLlByaXZhdGUuVXJpLCBWZXJzaW9uPTQuMC41LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQUBAAAAEVN5c3RlbS5OZXQuQ29va2llFQAAAAltX2NvbW1lbnQMbV9jb21tZW50VXJpD21fY29va2llVmFyaWFudAltX2Rpc2NhcmQIbV9kb21haW4QbV9kb21haW5JbXBsaWNpdAltX2V4cGlyZXMGbV9uYW1lBm1fcGF0aA5tX3BhdGhJbXBsaWNpdAZtX3BvcnQObV9wb3J0SW1wbGljaXQKbV9wb3J0TGlzdAhtX3NlY3VyZQptX2h0dHBPbmx5C21fdGltZVN0YW1wB21fdmFsdWUJbV92ZXJzaW9uC21fZG9tYWluS2V5D0lzUXVvdGVkVmVyc2lvbg5Jc1F1b3RlZERvbWFpbgEEBAABAAABAQABAAcAAAABAAEAAApTeXN0ZW0uVXJpAwAAABhTeXN0ZW0uTmV0LkNvb2tpZVZhcmlhbnQCAAAAAQENAQEIAQENCAEBAgAAAAYEAAAAAAoF+////xhTeXN0ZW0uTmV0LkNvb2tpZVZhcmlhbnQBAAAAB3ZhbHVlX18ACAIAAAABAAAAAAYGAAAAB2RvdC5uZXQAAAAAAAAAAAAGBwAAAARob3N0BggAAAAEYXV0aAAJBAAAAAEKAABovEhfgKfUCAYKAAAABGVkZ2UAAAAACQQAAAAAAAs=", "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAARU3lzdGVtLk5ldC5Db29raWUVAAAACW1fY29tbWVudAxtX2NvbW1lbnRVcmkPbV9jb29raWVWYXJpYW50CW1fZGlzY2FyZAhtX2RvbWFpbhFtX2RvbWFpbl9pbXBsaWNpdAltX2V4cGlyZXMGbV9uYW1lBm1fcGF0aA9tX3BhdGhfaW1wbGljaXQGbV9wb3J0D21fcG9ydF9pbXBsaWNpdAttX3BvcnRfbGlzdAhtX3NlY3VyZQptX2h0dHBPbmx5C21fdGltZVN0YW1wB21fdmFsdWUJbV92ZXJzaW9uC21fZG9tYWluS2V5D0lzUXVvdGVkVmVyc2lvbg5Jc1F1b3RlZERvbWFpbgEEBAABAAABAQABAAcAAAABAAEAAApTeXN0ZW0uVXJpAgAAABhTeXN0ZW0uTmV0LkNvb2tpZVZhcmlhbnQCAAAAAQENAQEIAQENCAEBAgAAAAYDAAAAAAoF/P///xhTeXN0ZW0uTmV0LkNvb2tpZVZhcmlhbnQBAAAAB3ZhbHVlX18ACAIAAAABAAAAAAYFAAAAB2RvdC5uZXQAAAAAAAAAAAAGBgAAAARob3N0BgcAAAAEYXV0aAAJAwAAAAEKAAAsrl5tgKfUiAYJAAAABGVkZ2UAAAAACQMAAAAAAAs=" } };
+            yield return new object[] { cookie, new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFhTeXN0ZW0uTmV0LlByaW1pdGl2ZXMsIFZlcnNpb249NC4xLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhDAMAAABVU3lzdGVtLlByaXZhdGUuVXJpLCBWZXJzaW9uPTQuMC41LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQUBAAAAEVN5c3RlbS5OZXQuQ29va2llFQAAAAltX2NvbW1lbnQMbV9jb21tZW50VXJpD21fY29va2llVmFyaWFudAltX2Rpc2NhcmQIbV9kb21haW4QbV9kb21haW5JbXBsaWNpdAltX2V4cGlyZXMGbV9uYW1lBm1fcGF0aA5tX3BhdGhJbXBsaWNpdAZtX3BvcnQObV9wb3J0SW1wbGljaXQKbV9wb3J0TGlzdAhtX3NlY3VyZQptX2h0dHBPbmx5C21fdGltZVN0YW1wB21fdmFsdWUJbV92ZXJzaW9uC21fZG9tYWluS2V5D0lzUXVvdGVkVmVyc2lvbg5Jc1F1b3RlZERvbWFpbgEEBAABAAABAQABAAcAAAABAAEAAApTeXN0ZW0uVXJpAwAAABhTeXN0ZW0uTmV0LkNvb2tpZVZhcmlhbnQCAAAAAQENAQEIAQENCAEBAgAAAAYEAAAAAAoF+////xhTeXN0ZW0uTmV0LkNvb2tpZVZhcmlhbnQBAAAAB3ZhbHVlX18ACAIAAAABAAAAAAYGAAAAB2RvdC5uZXQAAAAAAAAAAAAGBwAAAARob3N0BggAAAAEYXV0aAAJBAAAAAEKAADbyDCBNKjUCAYKAAAABGVkZ2UAAAAACQQAAAAAAAs=", "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAARU3lzdGVtLk5ldC5Db29raWUVAAAACW1fY29tbWVudAxtX2NvbW1lbnRVcmkPbV9jb29raWVWYXJpYW50CW1fZGlzY2FyZAhtX2RvbWFpbhFtX2RvbWFpbl9pbXBsaWNpdAltX2V4cGlyZXMGbV9uYW1lBm1fcGF0aA9tX3BhdGhfaW1wbGljaXQGbV9wb3J0D21fcG9ydF9pbXBsaWNpdAttX3BvcnRfbGlzdAhtX3NlY3VyZQptX2h0dHBPbmx5C21fdGltZVN0YW1wB21fdmFsdWUJbV92ZXJzaW9uC21fZG9tYWluS2V5D0lzUXVvdGVkVmVyc2lvbg5Jc1F1b3RlZERvbWFpbgEEBAABAAABAQABAAcAAAABAAEAAApTeXN0ZW0uVXJpAgAAABhTeXN0ZW0uTmV0LkNvb2tpZVZhcmlhbnQCAAAAAQENAQEIAQENCAEBAgAAAAYDAAAAAAoF/P///xhTeXN0ZW0uTmV0LkNvb2tpZVZhcmlhbnQBAAAAB3ZhbHVlX18ACAIAAAABAAAAAAYFAAAAB2RvdC5uZXQAAAAAAAAAAAAGBgAAAARob3N0BgcAAAAEYXV0aAAJAwAAAAEKAAAsrl5tgKfUiAYJAAAABGVkZ2UAAAAACQMAAAAAAAs=" } };
             var cookieCollection = new CookieCollection();
             cookieCollection.Add(cookie);
-            yield return new object[] { cookieCollection, new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFhTeXN0ZW0uTmV0LlByaW1pdGl2ZXMsIFZlcnNpb249NC4xLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQEAAAAbU3lzdGVtLk5ldC5Db29raWVDb2xsZWN0aW9uAwAAAAZtX2xpc3QLbV90aW1lU3RhbXAUbV9oYXNfb3RoZXJfdmVyc2lvbnMDAACQAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLk5ldC5Db29raWUsIFN5c3RlbS5OZXQuUHJpbWl0aXZlcywgVmVyc2lvbj00LjEuMS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2FdXQ0BAgAAAAkDAAAAAAAAAAAAAAAABAMAAACQAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLk5ldC5Db29raWUsIFN5c3RlbS5OZXQuUHJpbWl0aXZlcywgVmVyc2lvbj00LjEuMS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2FdXQMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uBAAAE1N5c3RlbS5OZXQuQ29va2llW10CAAAACAgJBAAAAAEAAAABAAAABwQAAAAAAQAAAAQAAAAEEVN5c3RlbS5OZXQuQ29va2llAgAAAAkFAAAADQMMBgAAAFVTeXN0ZW0uUHJpdmF0ZS5VcmksIFZlcnNpb249NC4wLjUuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQUAAAARU3lzdGVtLk5ldC5Db29raWUVAAAACW1fY29tbWVudAxtX2NvbW1lbnRVcmkPbV9jb29raWVWYXJpYW50CW1fZGlzY2FyZAhtX2RvbWFpbhBtX2RvbWFpbkltcGxpY2l0CW1fZXhwaXJlcwZtX25hbWUGbV9wYXRoDm1fcGF0aEltcGxpY2l0Bm1fcG9ydA5tX3BvcnRJbXBsaWNpdAptX3BvcnRMaXN0CG1fc2VjdXJlCm1faHR0cE9ubHkLbV90aW1lU3RhbXAHbV92YWx1ZQltX3ZlcnNpb24LbV9kb21haW5LZXkPSXNRdW90ZWRWZXJzaW9uDklzUXVvdGVkRG9tYWluAQQEAAEAAAEBAAEABwAAAAEAAQAAClN5c3RlbS5VcmkGAAAAGFN5c3RlbS5OZXQuQ29va2llVmFyaWFudAIAAAABAQ0BAQgBAQ0IAQECAAAABgcAAAAACgX4////GFN5c3RlbS5OZXQuQ29va2llVmFyaWFudAEAAAAHdmFsdWVfXwAIAgAAAAEAAAAABgkAAAAHZG90Lm5ldAAAAAAAAAAAAAYKAAAABGhvc3QGCwAAAARhdXRoAAkHAAAAAQoAAGi8SF+Ap9QIBg0AAAAEZWRnZQAAAAAJBwAAAAAACw==", "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAbU3lzdGVtLk5ldC5Db29raWVDb2xsZWN0aW9uBQAAAAltX3ZlcnNpb24GbV9saXN0C21fVGltZVN0YW1wFG1faGFzX290aGVyX3ZlcnNpb25zDG1fSXNSZWFkT25seQADAAAACBxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0DQEBAgAAAAEAAAAJAwAAAAAAAAAAAAAAAAEEAwAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0AwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24FAAAICAkEAAAAAQAAAAEAAAAQBAAAAAQAAAAJBQAAAA0DBQUAAAARU3lzdGVtLk5ldC5Db29raWUVAAAACW1fY29tbWVudAxtX2NvbW1lbnRVcmkPbV9jb29raWVWYXJpYW50CW1fZGlzY2FyZAhtX2RvbWFpbhFtX2RvbWFpbl9pbXBsaWNpdAltX2V4cGlyZXMGbV9uYW1lBm1fcGF0aA9tX3BhdGhfaW1wbGljaXQGbV9wb3J0D21fcG9ydF9pbXBsaWNpdAttX3BvcnRfbGlzdAhtX3NlY3VyZQptX2h0dHBPbmx5C21fdGltZVN0YW1wB21fdmFsdWUJbV92ZXJzaW9uC21fZG9tYWluS2V5D0lzUXVvdGVkVmVyc2lvbg5Jc1F1b3RlZERvbWFpbgEEBAABAAABAQABAAcAAAABAAEAAApTeXN0ZW0uVXJpAgAAABhTeXN0ZW0uTmV0LkNvb2tpZVZhcmlhbnQCAAAAAQENAQEIAQENCAEBAgAAAAYGAAAAAAoF+f///xhTeXN0ZW0uTmV0LkNvb2tpZVZhcmlhbnQBAAAAB3ZhbHVlX18ACAIAAAABAAAAAAYIAAAAB2RvdC5uZXQAAAAAAAAAAAAGCQAAAARob3N0BgoAAAAEYXV0aAAJBgAAAAEKAAAsrl5tgKfUiAYMAAAABGVkZ2UAAAAACQYAAAAAAAs=" } };
+            yield return new object[] { cookieCollection, new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFhTeXN0ZW0uTmV0LlByaW1pdGl2ZXMsIFZlcnNpb249NC4xLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQEAAAAbU3lzdGVtLk5ldC5Db29raWVDb2xsZWN0aW9uAwAAAAZtX2xpc3QLbV90aW1lU3RhbXAUbV9oYXNfb3RoZXJfdmVyc2lvbnMDAACQAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLk5ldC5Db29raWUsIFN5c3RlbS5OZXQuUHJpbWl0aXZlcywgVmVyc2lvbj00LjEuMS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2FdXQ0BAgAAAAkDAAAAAAAAAAAAAAAABAMAAACQAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLk5ldC5Db29raWUsIFN5c3RlbS5OZXQuUHJpbWl0aXZlcywgVmVyc2lvbj00LjEuMS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2FdXQMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uBAAAE1N5c3RlbS5OZXQuQ29va2llW10CAAAACAgJBAAAAAEAAAABAAAABwQAAAAAAQAAAAQAAAAEEVN5c3RlbS5OZXQuQ29va2llAgAAAAkFAAAADQMMBgAAAFVTeXN0ZW0uUHJpdmF0ZS5VcmksIFZlcnNpb249NC4wLjUuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQUAAAARU3lzdGVtLk5ldC5Db29raWUVAAAACW1fY29tbWVudAxtX2NvbW1lbnRVcmkPbV9jb29raWVWYXJpYW50CW1fZGlzY2FyZAhtX2RvbWFpbhBtX2RvbWFpbkltcGxpY2l0CW1fZXhwaXJlcwZtX25hbWUGbV9wYXRoDm1fcGF0aEltcGxpY2l0Bm1fcG9ydA5tX3BvcnRJbXBsaWNpdAptX3BvcnRMaXN0CG1fc2VjdXJlCm1faHR0cE9ubHkLbV90aW1lU3RhbXAHbV92YWx1ZQltX3ZlcnNpb24LbV9kb21haW5LZXkPSXNRdW90ZWRWZXJzaW9uDklzUXVvdGVkRG9tYWluAQQEAAEAAAEBAAEABwAAAAEAAQAAClN5c3RlbS5VcmkGAAAAGFN5c3RlbS5OZXQuQ29va2llVmFyaWFudAIAAAABAQ0BAQgBAQ0IAQECAAAABgcAAAAACgX4////GFN5c3RlbS5OZXQuQ29va2llVmFyaWFudAEAAAAHdmFsdWVfXwAIAgAAAAEAAAAABgkAAAAHZG90Lm5ldAAAAAAAAAAAAAYKAAAABGhvc3QGCwAAAARhdXRoAAkHAAAAAQoAANvIMIE0qNQIBg0AAAAEZWRnZQAAAAAJBwAAAAAACw==", "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAbU3lzdGVtLk5ldC5Db29raWVDb2xsZWN0aW9uBQAAAAltX3ZlcnNpb24GbV9saXN0C21fVGltZVN0YW1wFG1faGFzX290aGVyX3ZlcnNpb25zDG1fSXNSZWFkT25seQADAAAACBxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0DQEBAgAAAAEAAAAJAwAAAAAAAAAAAAAAAAEEAwAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0AwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24FAAAICAkEAAAAAQAAAAEAAAAQBAAAAAQAAAAJBQAAAA0DBQUAAAARU3lzdGVtLk5ldC5Db29raWUVAAAACW1fY29tbWVudAxtX2NvbW1lbnRVcmkPbV9jb29raWVWYXJpYW50CW1fZGlzY2FyZAhtX2RvbWFpbhFtX2RvbWFpbl9pbXBsaWNpdAltX2V4cGlyZXMGbV9uYW1lBm1fcGF0aA9tX3BhdGhfaW1wbGljaXQGbV9wb3J0D21fcG9ydF9pbXBsaWNpdAttX3BvcnRfbGlzdAhtX3NlY3VyZQptX2h0dHBPbmx5C21fdGltZVN0YW1wB21fdmFsdWUJbV92ZXJzaW9uC21fZG9tYWluS2V5D0lzUXVvdGVkVmVyc2lvbg5Jc1F1b3RlZERvbWFpbgEEBAABAAABAQABAAcAAAABAAEAAApTeXN0ZW0uVXJpAgAAABhTeXN0ZW0uTmV0LkNvb2tpZVZhcmlhbnQCAAAAAQENAQEIAQENCAEBAgAAAAYGAAAAAAoF+f///xhTeXN0ZW0uTmV0LkNvb2tpZVZhcmlhbnQBAAAAB3ZhbHVlX18ACAIAAAABAAAAAAYIAAAAB2RvdC5uZXQAAAAAAAAAAAAGCQAAAARob3N0BgoAAAAEYXV0aAAJBgAAAAEKAAAsrl5tgKfUiAYMAAAABGVkZ2UAAAAACQYAAAAAAAs=" } };
             var cookieContainer = new CookieContainer(10, 5, 1024);
             cookieCollection.Add(cookie);
             yield return new object[] { cookieContainer, new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFhTeXN0ZW0uTmV0LlByaW1pdGl2ZXMsIFZlcnNpb249NC4xLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQEAAAAaU3lzdGVtLk5ldC5Db29raWVDb250YWluZXIGAAAADW1fZG9tYWluVGFibGUPbV9tYXhDb29raWVTaXplDG1fbWF4Q29va2llcxVtX21heENvb2tpZXNQZXJEb21haW4HbV9jb3VudA5tX2ZxZG5NeURvbWFpbgMAAAAAAYMCU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeWAyW1tTeXN0ZW0uU3RyaW5nLCBTeXN0ZW0uUHJpdmF0ZS5Db3JlTGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49N2NlYzg1ZDdiZWE3Nzk4ZV0sW1N5c3RlbS5OZXQuUGF0aExpc3QsIFN5c3RlbS5OZXQuUHJpbWl0aXZlcywgVmVyc2lvbj00LjEuMS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2FdXQgICAgCAAAACQMAAAAABAAACgAAAAUAAAAAAAAABgQAAAAbLnJlZG1vbmQuY29ycC5taWNyb3NvZnQuY29tBAMAAACDAlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkRpY3Rpb25hcnlgMltbU3lzdGVtLlN0cmluZywgU3lzdGVtLlByaXZhdGUuQ29yZUxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTdjZWM4NWQ3YmVhNzc5OGVdLFtTeXN0ZW0uTmV0LlBhdGhMaXN0LCBTeXN0ZW0uTmV0LlByaW1pdGl2ZXMsIFZlcnNpb249NC4xLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhXV0DAAAAB1ZlcnNpb24IQ29tcGFyZXIISGFzaFNpemUAAwAIPlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLk5vblJhbmRvbWl6ZWRTdHJpbmdFcXVhbGl0eUNvbXBhcmVyCAAAAAAJBQAAAAAAAAAEBQAAAD5TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5Ob25SYW5kb21pemVkU3RyaW5nRXF1YWxpdHlDb21wYXJlcgAAAAAL", "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAaU3lzdGVtLk5ldC5Db29raWVDb250YWluZXIGAAAADW1fZG9tYWluVGFibGUPbV9tYXhDb29raWVTaXplDG1fbWF4Q29va2llcxVtX21heENvb2tpZXNQZXJEb21haW4HbV9jb3VudA5tX2ZxZG5NeURvbWFpbgMAAAAAARxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlCAgICAIAAAAJAwAAAAAEAAAKAAAABQAAAAAAAAAGBAAAABsucmVkbW9uZC5jb3JwLm1pY3Jvc29mdC5jb20EAwAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tcGFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyJFN5c3RlbS5Db2xsZWN0aW9ucy5JSGFzaENvZGVQcm92aWRlcgjsUTg/AAAAAAoKAwAAAAkFAAAACQYAAAAQBQAAAAAAAAAQBgAAAAAAAAAL" } };
@@ -131,7 +131,7 @@
                 { "p1", "v1" },
                 { "px", "vx" }
             };
-            yield return new object[] { propertyCollection, new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFVTeXN0ZW0uRGF0YS5Db21tb24sIFZlcnNpb249NC4yLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhDAMAAABcU3lzdGVtLlJ1bnRpbWUuRXh0ZW5zaW9ucywgVmVyc2lvbj00LjIuMS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAAB5TeXN0ZW0uRGF0YS5Qcm9wZXJ0eUNvbGxlY3Rpb24HAAAACkxvYWRGYWN0b3IHVmVyc2lvbghDb21wYXJlchBIYXNoQ29kZVByb3ZpZGVyCEhhc2hTaXplBEtleXMGVmFsdWVzAAADBAAFBQsIHFN5c3RlbS5Db2xsZWN0aW9ucy5JQ29tcGFyZXIkU3lzdGVtLkNvbGxlY3Rpb25zLklIYXNoQ29kZVByb3ZpZGVyAwAAAAgCAAAA7FE4PwIAAAAKCgMAAAAJBAAAAAkFAAAAEAQAAAACAAAABgYAAAACcDEGBwAAAAJweBAFAAAAAgAAAAYIAAAAAnYxBgkAAAACdngL", "AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uRGF0YSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAAB5TeXN0ZW0uRGF0YS5Qcm9wZXJ0eUNvbGxlY3Rpb24HAAAACkxvYWRGYWN0b3IHVmVyc2lvbghDb21wYXJlchBIYXNoQ29kZVByb3ZpZGVyCEhhc2hTaXplBEtleXMGVmFsdWVzAAADAwAFBQsIHFN5c3RlbS5Db2xsZWN0aW9ucy5JQ29tcGFyZXIkU3lzdGVtLkNvbGxlY3Rpb25zLklIYXNoQ29kZVByb3ZpZGVyCAIAAADsUTg/AgAAAAoKAwAAAAkDAAAACQQAAAAQAwAAAAIAAAAGBQAAAAJweAYGAAAAAnAxEAQAAAACAAAABgcAAAACdngGCAAAAAJ2MQs=" } };
+            yield return new object[] { propertyCollection, new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFVTeXN0ZW0uRGF0YS5Db21tb24sIFZlcnNpb249NC4yLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhDAMAAABcU3lzdGVtLlJ1bnRpbWUuRXh0ZW5zaW9ucywgVmVyc2lvbj00LjIuMS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAAB5TeXN0ZW0uRGF0YS5Qcm9wZXJ0eUNvbGxlY3Rpb24HAAAACkxvYWRGYWN0b3IHVmVyc2lvbghDb21wYXJlchBIYXNoQ29kZVByb3ZpZGVyCEhhc2hTaXplBEtleXMGVmFsdWVzAAADBAAFBQsIHFN5c3RlbS5Db2xsZWN0aW9ucy5JQ29tcGFyZXIkU3lzdGVtLkNvbGxlY3Rpb25zLklIYXNoQ29kZVByb3ZpZGVyAwAAAAgCAAAA7FE4PwIAAAAKCgMAAAAJBAAAAAkFAAAAEAQAAAACAAAABgYAAAACcHgGBwAAAAJwMRAFAAAAAgAAAAYIAAAAAnZ4BgkAAAACdjEL", "AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uRGF0YSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAAB5TeXN0ZW0uRGF0YS5Qcm9wZXJ0eUNvbGxlY3Rpb24HAAAACkxvYWRGYWN0b3IHVmVyc2lvbghDb21wYXJlchBIYXNoQ29kZVByb3ZpZGVyCEhhc2hTaXplBEtleXMGVmFsdWVzAAADAwAFBQsIHFN5c3RlbS5Db2xsZWN0aW9ucy5JQ29tcGFyZXIkU3lzdGVtLkNvbGxlY3Rpb25zLklIYXNoQ29kZVByb3ZpZGVyCAIAAADsUTg/AgAAAAoKAwAAAAkDAAAACQQAAAAQAwAAAAIAAAAGBQAAAAJweAYGAAAAAnAxEAQAAAACAAAABgcAAAACdngGCAAAAAJ2MQs=" } };
             yield return new object[] { new SqlBoolean(true), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFVTeXN0ZW0uRGF0YS5Db21tb24sIFZlcnNpb249NC4yLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQEAAAAfU3lzdGVtLkRhdGEuU3FsVHlwZXMuU3FsQm9vbGVhbgEAAAAHbV92YWx1ZQACAgAAAAIL", "AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uRGF0YSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAAB9TeXN0ZW0uRGF0YS5TcWxUeXBlcy5TcWxCb29sZWFuAQAAAAdtX3ZhbHVlAAICAAAAAgs=" } };
             yield return new object[] { new SqlByte(255), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFVTeXN0ZW0uRGF0YS5Db21tb24sIFZlcnNpb249NC4yLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQEAAAAcU3lzdGVtLkRhdGEuU3FsVHlwZXMuU3FsQnl0ZQIAAAAKbV9mTm90TnVsbAdtX3ZhbHVlAAABAgIAAAAB/ws=", "AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uRGF0YSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAABxTeXN0ZW0uRGF0YS5TcWxUeXBlcy5TcWxCeXRlAgAAAAptX2ZOb3ROdWxsB21fdmFsdWUAAAECAgAAAAH/Cw==" } };
             yield return new object[] { new SqlDateTime(new DateTime(1990, 11, 23, 03, 30, 00, 00, DateTimeKind.Utc)), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFVTeXN0ZW0uRGF0YS5Db21tb24sIFZlcnNpb249NC4yLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQEAAAAgU3lzdGVtLkRhdGEuU3FsVHlwZXMuU3FsRGF0ZVRpbWUDAAAACm1fZk5vdE51bGwFbV9kYXkGbV90aW1lAAAAAQgIAgAAAAGugQAAoK05AAs=", "AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uRGF0YSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACBTeXN0ZW0uRGF0YS5TcWxUeXBlcy5TcWxEYXRlVGltZQMAAAAKbV9mTm90TnVsbAVtX2RheQZtX3RpbWUAAAABCAgCAAAAAa6BAACgrTkACw==" } };
@@ -139,7 +139,7 @@
             yield return new object[] { new SqlInt16(256), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFVTeXN0ZW0uRGF0YS5Db21tb24sIFZlcnNpb249NC4yLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQEAAAAdU3lzdGVtLkRhdGEuU3FsVHlwZXMuU3FsSW50MTYCAAAACm1fZk5vdE51bGwHbV92YWx1ZQAAAQcCAAAAAQABCw==", "AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uRGF0YSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAAB1TeXN0ZW0uRGF0YS5TcWxUeXBlcy5TcWxJbnQxNgIAAAAKbV9mTm90TnVsbAdtX3ZhbHVlAAABBwIAAAABAAEL" } };
             yield return new object[] { new SqlInt32(4096314), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFVTeXN0ZW0uRGF0YS5Db21tb24sIFZlcnNpb249NC4yLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQEAAAAdU3lzdGVtLkRhdGEuU3FsVHlwZXMuU3FsSW50MzICAAAACm1fZk5vdE51bGwHbV92YWx1ZQAAAQgCAAAAATqBPgAL", "AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uRGF0YSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAAB1TeXN0ZW0uRGF0YS5TcWxUeXBlcy5TcWxJbnQzMgIAAAAKbV9mTm90TnVsbAdtX3ZhbHVlAAABCAIAAAABOoE+AAs=" } };
             yield return new object[] { new SqlInt64(3492867384596), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFVTeXN0ZW0uRGF0YS5Db21tb24sIFZlcnNpb249NC4yLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQEAAAAdU3lzdGVtLkRhdGEuU3FsVHlwZXMuU3FsSW50NjQCAAAACm1fZk5vdE51bGwHbV92YWx1ZQAAAQkCAAAAARSlHj8tAwAACw==", "AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uRGF0YSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAAB1TeXN0ZW0uRGF0YS5TcWxUeXBlcy5TcWxJbnQ2NAIAAAAKbV9mTm90TnVsbAdtX3ZhbHVlAAABCQIAAAABFKUePy0DAAAL" } };
-            yield return new object[] { new SqlString("abc", CultureInfo.CurrentCulture.LCID, SqlCompareOptions.BinarySort), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFVTeXN0ZW0uRGF0YS5Db21tb24sIFZlcnNpb249NC4yLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQEAAAAeU3lzdGVtLkRhdGEuU3FsVHlwZXMuU3FsU3RyaW5nBQAAAAdtX3ZhbHVlCW1fY21wSW5mbwZtX2xjaWQGbV9mbGFnCm1fZk5vdE51bGwBAwAEACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwgmU3lzdGVtLkRhdGEuU3FsVHlwZXMuU3FsQ29tcGFyZU9wdGlvbnMCAAAAAQIAAAAGAwAAAANhYmMKCQQAAAX8////JlN5c3RlbS5EYXRhLlNxbFR5cGVzLlNxbENvbXBhcmVPcHRpb25zAQAAAAd2YWx1ZV9fAAgCAAAAAIAAAAEL", "AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uRGF0YSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAAB5TeXN0ZW0uRGF0YS5TcWxUeXBlcy5TcWxTdHJpbmcFAAAAB21fdmFsdWUJbV9jbXBJbmZvBm1fbGNpZAZtX2ZsYWcKbV9mTm90TnVsbAEDAAQAIFN5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVJbmZvCCZTeXN0ZW0uRGF0YS5TcWxUeXBlcy5TcWxDb21wYXJlT3B0aW9ucwIAAAABAgAAAAYDAAAAA2FiYwoJBAAABfz///8mU3lzdGVtLkRhdGEuU3FsVHlwZXMuU3FsQ29tcGFyZU9wdGlvbnMBAAAAB3ZhbHVlX18ACAIAAAAAgAAAAQs=" } };
+            yield return new object[] { new SqlString("abc", CultureInfo.InvariantCulture.LCID, SqlCompareOptions.BinarySort), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFVTeXN0ZW0uRGF0YS5Db21tb24sIFZlcnNpb249NC4yLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQEAAAAeU3lzdGVtLkRhdGEuU3FsVHlwZXMuU3FsU3RyaW5nBQAAAAdtX3ZhbHVlCW1fY21wSW5mbwZtX2xjaWQGbV9mbGFnCm1fZk5vdE51bGwBAwAEACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwgmU3lzdGVtLkRhdGEuU3FsVHlwZXMuU3FsQ29tcGFyZU9wdGlvbnMCAAAAAQIAAAAGAwAAAANhYmMKfwAAAAX8////JlN5c3RlbS5EYXRhLlNxbFR5cGVzLlNxbENvbXBhcmVPcHRpb25zAQAAAAd2YWx1ZV9fAAgCAAAAAIAAAAEL", "AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uRGF0YSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAAB5TeXN0ZW0uRGF0YS5TcWxUeXBlcy5TcWxTdHJpbmcFAAAAB21fdmFsdWUJbV9jbXBJbmZvBm1fbGNpZAZtX2ZsYWcKbV9mTm90TnVsbAEDAAQAIFN5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVJbmZvCCZTeXN0ZW0uRGF0YS5TcWxUeXBlcy5TcWxDb21wYXJlT3B0aW9ucwIAAAABAgAAAAYDAAAAA2FiYwoJBAAABfz///8mU3lzdGVtLkRhdGEuU3FsVHlwZXMuU3FsQ29tcGFyZU9wdGlvbnMBAAAAB3ZhbHVlX18ACAIAAAAAgAAAAQs=" } };

             yield return new object[] { new BigInteger(), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFpTeXN0ZW0uUnVudGltZS5OdW1lcmljcywgVmVyc2lvbj00LjEuMS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABpTeXN0ZW0uTnVtZXJpY3MuQmlnSW50ZWdlcgIAAAAFX3NpZ24FX2JpdHMABwgPAgAAAAAAAAAKCw==", "AAEAAAD/////AQAAAAAAAAAMAgAAAFJTeXN0ZW0uTnVtZXJpY3MsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAaU3lzdGVtLk51bWVyaWNzLkJpZ0ludGVnZXICAAAABV9zaWduBV9iaXRzAAcIDwIAAAAAAAAACgs=" } };
             yield return new object[] { new BigInteger(10324176), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFpTeXN0ZW0uUnVudGltZS5OdW1lcmljcywgVmVyc2lvbj00LjEuMS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABpTeXN0ZW0uTnVtZXJpY3MuQmlnSW50ZWdlcgIAAAAFX3NpZ24FX2JpdHMABwgPAgAAANCInQAKCw==", "AAEAAAD/////AQAAAAAAAAAMAgAAAFJTeXN0ZW0uTnVtZXJpY3MsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAaU3lzdGVtLk51bWVyaWNzLkJpZ0ludGVnZXICAAAABV9zaWduBV9iaXRzAAcIDwIAAADQiJ0ACgs=" } };
@@ -194,7 +194,7 @@
             yield return new object[] { arr, new string[] { "AAEAAAD/////AQAAAAAAAAAHAQAAAAUCAAAAAQAAAAIAAAADAAAABAAAAAEKBgIAAAAFaGVsbG8L", "AAEAAAD/////AQAAAAAAAAAHAQAAAAUCAAAAAQAAAAIAAAADAAAABAAAAAEKBgIAAAAFaGVsbG8L" } };

             // Globalization types
-            yield return new object[] { CultureInfo.CurrentCulture.CompareInfo, new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwIAAAAGbV9uYW1lDW1fc29ydFZlcnNpb24BAyBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Tb3J0VmVyc2lvbgYCAAAABWVuLVVTCgs=", "AAEAAAD/////AQAAAAAAAAAEAQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GAgAAAAVlbi1VUwAAAAAJBAAACgs=" } };
+            yield return new object[] { CultureInfo.InvariantCulture.CompareInfo, new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwIAAAAGbV9uYW1lDW1fc29ydFZlcnNpb24BAyBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Tb3J0VmVyc2lvbgYCAAAAAAoL", "AAEAAAD/////AQAAAAAAAAAEAQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GAgAAAAVlbi1VUwAAAAAJBAAACgs=" } };
             yield return new object[] { new SortVersion(12345, Guid.Parse("9fac6fbb-f683-42f5-a593-0d4a5e34b257")), new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Tb3J0VmVyc2lvbgIAAAAMbV9ObHNWZXJzaW9uCG1fU29ydElkAAMIC1N5c3RlbS5HdWlkOTAAAAT+////C1N5c3RlbS5HdWlkCwAAAAJfYQJfYgJfYwJfZAJfZQJfZgJfZwJfaAJfaQJfagJfawAAAAAAAAAAAAAACAcHAgICAgICAgK7b6yfg/b1QqWTDUpeNLJXCw==", "AAEAAAD/////AQAAAAAAAAAEAQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Tb3J0VmVyc2lvbgIAAAAMbV9ObHNWZXJzaW9uCG1fU29ydElkAAMIC1N5c3RlbS5HdWlkOTAAAAT+////C1N5c3RlbS5HdWlkCwAAAAJfYQJfYgJfYwJfZAJfZQJfZgJfZwJfaAJfaQJfagJfawAAAAAAAAAAAAAACAcHAgICAgICAgK7b6yfg/b1QqWTDUpeNLJXCw==" } };

             // Drawing types
@@ -238,7 +238,7 @@
             yield return new object[] { new System.Collections.BitArray(5, true), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFVTeXN0ZW0uQ29sbGVjdGlvbnMsIFZlcnNpb249NC4xLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQEAAAAbU3lzdGVtLkNvbGxlY3Rpb25zLkJpdEFycmF5AwAAAAdtX2FycmF5CG1fbGVuZ3RoCF92ZXJzaW9uBwAACAgIAgAAAAkDAAAABQAAAAAAAAAPAwAAAAEAAAAI/////ws=", "AAEAAAD/////AQAAAAAAAAAEAQAAABtTeXN0ZW0uQ29sbGVjdGlvbnMuQml0QXJyYXkDAAAAB21fYXJyYXkIbV9sZW5ndGgIX3ZlcnNpb24HAAAICAgJAgAAAAUAAAAAAAAADwIAAAABAAAACP////8L" } };
             yield return new object[] { new System.Collections.ArrayList(Enumerable.Range(1, 40).ToList()), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFxTeXN0ZW0uUnVudGltZS5FeHRlbnNpb25zLCBWZXJzaW9uPTQuMi4xLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQUBAAAAHFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QDAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgUAAAgIAgAAAAkDAAAAKAAAAAEAAAAQAwAAACgAAAAICAEAAAAICAIAAAAICAMAAAAICAQAAAAICAUAAAAICAYAAAAICAcAAAAICAgAAAAICAkAAAAICAoAAAAICAsAAAAICAwAAAAICA0AAAAICA4AAAAICA8AAAAICBAAAAAICBEAAAAICBIAAAAICBMAAAAICBQAAAAICBUAAAAICBYAAAAICBcAAAAICBgAAAAICBkAAAAICBoAAAAICBsAAAAICBwAAAAICB0AAAAICB4AAAAICB8AAAAICCAAAAAICCEAAAAICCIAAAAICCMAAAAICCQAAAAICCUAAAAICCYAAAAICCcAAAAICCgAAAAL", "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0AwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24FAAAICAkCAAAAKAAAAAEAAAAQAgAAACgAAAAICAEAAAAICAIAAAAICAMAAAAICAQAAAAICAUAAAAICAYAAAAICAcAAAAICAgAAAAICAkAAAAICAoAAAAICAsAAAAICAwAAAAICA0AAAAICA4AAAAICA8AAAAICBAAAAAICBEAAAAICBIAAAAICBMAAAAICBQAAAAICBUAAAAICBYAAAAICBcAAAAICBgAAAAICBkAAAAICBoAAAAICBsAAAAICBwAAAAICB0AAAAICB4AAAAICB8AAAAICCAAAAAICCEAAAAICCIAAAAICCMAAAAICCQAAAAICCUAAAAICCYAAAAICCcAAAAICCgAAAAL" } };
             yield return new object[] { new System.Collections.ArrayList(10), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFxTeXN0ZW0uUnVudGltZS5FeHRlbnNpb25zLCBWZXJzaW9uPTQuMi4xLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQUBAAAAHFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QDAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgUAAAgIAgAAAAkDAAAAAAAAAAAAAAAQAwAAAAoAAAANCgs=", "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0AwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24FAAAICAkCAAAAAAAAAAAAAAAQAgAAAAoAAAANCgs=" } };
-            yield return new object[] { new System.Collections.Comparer(CultureInfo.CurrentCulture), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFxTeXN0ZW0uUnVudGltZS5FeHRlbnNpb25zLCBWZXJzaW9uPTQuMi4xLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQUBAAAAG1N5c3RlbS5Db2xsZWN0aW9ucy5Db21wYXJlcgEAAAALQ29tcGFyZUluZm8DIFN5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVJbmZvAgAAAAkDAAAABAMAAAAgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8CAAAABm1fbmFtZQ1tX3NvcnRWZXJzaW9uAQMgU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GBAAAAAVlbi1VUwoL", "AAEAAAD/////AQAAAAAAAAAEAQAAABtTeXN0ZW0uQ29sbGVjdGlvbnMuQ29tcGFyZXIBAAAAC0NvbXBhcmVJbmZvAyBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwkCAAAABAIAAAAgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8EAAAABm1fbmFtZQl3aW4zMkxDSUQHY3VsdHVyZQ1tX1NvcnRWZXJzaW9uAQAAAwgIIFN5c3RlbS5HbG9iYWxpemF0aW9uLlNvcnRWZXJzaW9uBgMAAAAFZW4tVVMAAAAACQQAAAoL" } };
+            yield return new object[] { new System.Collections.Comparer(CultureInfo.InvariantCulture), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFxTeXN0ZW0uUnVudGltZS5FeHRlbnNpb25zLCBWZXJzaW9uPTQuMi4xLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQUBAAAAG1N5c3RlbS5Db2xsZWN0aW9ucy5Db21wYXJlcgEAAAALQ29tcGFyZUluZm8DIFN5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVJbmZvAgAAAAkDAAAABAMAAAAgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8CAAAABm1fbmFtZQ1tX3NvcnRWZXJzaW9uAQMgU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GBAAAAAAKCw==", "AAEAAAD/////AQAAAAAAAAAEAQAAABtTeXN0ZW0uQ29sbGVjdGlvbnMuQ29tcGFyZXIBAAAAC0NvbXBhcmVJbmZvAyBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwkCAAAABAIAAAAgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8EAAAABm1fbmFtZQl3aW4zMkxDSUQHY3VsdHVyZQ1tX1NvcnRWZXJzaW9uAQAAAwgIIFN5c3RlbS5HbG9iYWxpemF0aW9uLlNvcnRWZXJzaW9uBgMAAAAFZW4tVVMAAAAACQQAAAoL" } };
             yield return new object[] { new System.Collections.DictionaryEntry("key", 5), new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAACJTeXN0ZW0uQ29sbGVjdGlvbnMuRGljdGlvbmFyeUVudHJ5AgAAAARfa2V5Bl92YWx1ZQICBgIAAAADa2V5CAgFAAAACw==", "AAEAAAD/////AQAAAAAAAAAEAQAAACJTeXN0ZW0uQ29sbGVjdGlvbnMuRGljdGlvbmFyeUVudHJ5AgAAAARfa2V5Bl92YWx1ZQICBgIAAAADa2V5CAgFAAAACw==" } };
             yield return new object[] { Comparer<int>.Default, new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAAJcBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuR2VuZXJpY0NvbXBhcmVyYDFbW1N5c3RlbS5JbnQzMiwgU3lzdGVtLlByaXZhdGUuQ29yZUxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTdjZWM4NWQ3YmVhNzc5OGVdXQAAAAAL", "AAEAAAD/////AQAAAAAAAAAEAQAAAIkBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuR2VuZXJpY0NvbXBhcmVyYDFbW1N5c3RlbS5JbnQzMiwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0AAAAACw==" } };
             yield return new object[] { new HashSet<Point>(new[] { point }, new PointEqualityComparer()), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAFVTeXN0ZW0uQ29sbGVjdGlvbnMsIFZlcnNpb249NC4xLjEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhDAMAAABwU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYgUBAAAAzQFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5IYXNoU2V0YDFbW1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludCwgU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLCBWZXJzaW9uPTQuMC4zLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49OWQ3N2NjN2FkMzliNjhlYl1dBAAAAAdWZXJzaW9uCENvbXBhcmVyCENhcGFjaXR5CEVsZW1lbnRzAAQABAhDU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50RXF1YWxpdHlDb21wYXJlcgMAAAAINVN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludFtdAwAAAAIAAAABAAAACQQAAAADAAAACQUAAAAFBAAAAENTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnRFcXVhbGl0eUNvbXBhcmVyAAAAAAMAAAAHBQAAAAABAAAAAQAAAAQzU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50AwAAAAkGAAAABQYAAAAzU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50AgAAAAFYAVkAAAgIAwAAAAEAAAACAAAACw==", "AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uQ29yZSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAHBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViBQEAAADNAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkhhc2hTZXRgMVtbU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50LCBTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMsIFZlcnNpb249NC4wLjMuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj05ZDc3Y2M3YWQzOWI2OGViXV0EAAAAB1ZlcnNpb24IQ29tcGFyZXIIQ2FwYWNpdHkIRWxlbWVudHMABAAECENTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnRFcXVhbGl0eUNvbXBhcmVyAwAAAAg1U3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbi5Gb3JtYXR0ZXJzLlRlc3RzLlBvaW50W10DAAAAAgAAAAEAAAAJBAAAAAMAAAAJBQAAAAUEAAAAQ1N5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5UZXN0cy5Qb2ludEVxdWFsaXR5Q29tcGFyZXIAAAAAAwAAAAcFAAAAAAEAAAABAAAABDNTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQDAAAACQYAAAAFBgAAADNTeXN0ZW0uUnVudGltZS5TZXJpYWxpemF0aW9uLkZvcm1hdHRlcnMuVGVzdHMuUG9pbnQCAAAAAVgBWQAACAgDAAAAAQAAAAIAAAAL" } };
@@ -273,12 +273,12 @@
                 { "keyx", "s2" },
                 { 22, "sample" }
             }, new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAGFTeXN0ZW0uQ29sbGVjdGlvbnMuU3BlY2lhbGl6ZWQsIFZlcnNpb249NC4xLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQEAAAAwU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLk9yZGVyZWREaWN0aW9uYXJ5BAAAAAtLZXlDb21wYXJlcghSZWFkT25seQ9Jbml0aWFsQ2FwYWNpdHkJQXJyYXlMaXN0AwAABSRTeXN0ZW0uQ29sbGVjdGlvbnMuSUVxdWFsaXR5Q29tcGFyZXIBCAIAAAAKAAcAAAAJAwAAABADAAAAAwAAAAkEAAAACQUAAAAJBgAAAAQEAAAAIlN5c3RlbS5Db2xsZWN0aW9ucy5EaWN0aW9uYXJ5RW50cnkCAAAABF9rZXkGX3ZhbHVlAgIGBwAAAARrZXkxCAgiAAAAAQUAAAAEAAAABggAAAAEa2V5eAYJAAAAAnMyAQYAAAAEAAAACAgWAAAABgoAAAAGc2FtcGxlCw==", "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAwU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLk9yZGVyZWREaWN0aW9uYXJ5BAAAAAtLZXlDb21wYXJlcghSZWFkT25seQ9Jbml0aWFsQ2FwYWNpdHkJQXJyYXlMaXN0AwAABSRTeXN0ZW0uQ29sbGVjdGlvbnMuSUVxdWFsaXR5Q29tcGFyZXIBCAIAAAAKAAcAAAAJAwAAABADAAAAAwAAAAkEAAAACQUAAAAJBgAAAAQEAAAAIlN5c3RlbS5Db2xsZWN0aW9ucy5EaWN0aW9uYXJ5RW50cnkCAAAABF9rZXkGX3ZhbHVlAgIGBwAAAARrZXkxCAgiAAAAAQUAAAAEAAAABggAAAAEa2V5eAYJAAAAAnMyAQYAAAAEAAAACAgWAAAABgoAAAAGc2FtcGxlCw==" } };
-            yield return new object[] { new System.Collections.Specialized.NameValueCollection(10, StringComparer.Create(CultureInfo.CurrentCulture, true))
+            yield return new object[] { new System.Collections.Specialized.NameValueCollection(10, StringComparer.Create(CultureInfo.InvariantCulture, true))
             {
                 { "name1", "value1" },
                 { "name2", "value2" }
             }, new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAGFTeXN0ZW0uQ29sbGVjdGlvbnMuU3BlY2lhbGl6ZWQsIFZlcnNpb249NC4xLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhBQEAAAAyU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLk5hbWVWYWx1ZUNvbGxlY3Rpb24GAAAACFJlYWRPbmx5C0tleUNvbXBhcmVyBUNvdW50BEtleXMGVmFsdWVzB1ZlcnNpb24AAwAGBQABG1N5c3RlbS5DdWx0dXJlQXdhcmVDb21wYXJlcggIAgAAAAAJAwAAAAIAAAAJBAAAAAkFAAAABAAAAAQDAAAAG1N5c3RlbS5DdWx0dXJlQXdhcmVDb21wYXJlcgIAAAAMX2NvbXBhcmVJbmZvCF9vcHRpb25zAwMgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8jU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZU9wdGlvbnMJBgAAAAT5////I1N5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVPcHRpb25zAQAAAAd2YWx1ZV9fAAgBAAAAEQQAAAACAAAABggAAAAFbmFtZTEGCQAAAAVuYW1lMhAFAAAAAgAAAAkKAAAACQsAAAAEBgAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwIAAAAFX25hbWUMX3NvcnRWZXJzaW9uAQMgU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GDAAAAAVlbi1VUwkNAAAADA4AAABcU3lzdGVtLlJ1bnRpbWUuRXh0ZW5zaW9ucywgVmVyc2lvbj00LjIuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFCgAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0AwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24FAAAICA4AAAAJDwAAAAEAAAABAAAAAQsAAAAKAAAACRAAAAABAAAAAQAAAAQNAAAAIFN5c3RlbS5HbG9iYWxpemF0aW9uLlNvcnRWZXJzaW9uAgAAAAtfbmxzVmVyc2lvbgdfc29ydElkAAMIC1N5c3RlbS5HdWlkAAAAAATv////C1N5c3RlbS5HdWlkCwAAAAJfYQJfYgJfYwJfZAJfZQJfZgJfZwJfaAJfaQJfagJfawAAAAAAAAAAAAAACAcHAgICAgICAgIAAAAAAAAAAAAAAAAAAAQJEA8AAAABAAAABhIAAAAGdmFsdWUxEBAAAAABAAAABhMAAAAGdmFsdWUyCw==", "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAyU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLk5hbWVWYWx1ZUNvbGxlY3Rpb24GAAAACFJlYWRPbmx5C0tleUNvbXBhcmVyBUNvdW50BEtleXMGVmFsdWVzB1ZlcnNpb24AAwAGBQABG1N5c3RlbS5DdWx0dXJlQXdhcmVDb21wYXJlcggIAgAAAAAJAwAAAAIAAAAJBAAAAAkFAAAABAAAAAQDAAAAG1N5c3RlbS5DdWx0dXJlQXdhcmVDb21wYXJlcgIAAAAMX2NvbXBhcmVJbmZvC19pZ25vcmVDYXNlAwAgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8BCQYAAAABEQQAAAACAAAABgcAAAAFbmFtZTEGCAAAAAVuYW1lMhAFAAAAAgAAAAkJAAAACQoAAAAEBgAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GCwAAAAVlbi1VUwAAAAAJBAAACQwAAAAECQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0AwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24FAAAICAkNAAAAAQAAAAEAAAABCgAAAAkAAAAJDgAAAAEAAAABAAAABAwAAAAgU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24CAAAADG1fTmxzVmVyc2lvbghtX1NvcnRJZAADCAtTeXN0ZW0uR3VpZA4CBgAE8f///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2ICX2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICAQAAAO5XXB4AtNAAC7HhHhANAAAAAQAAAAYQAAAABnZhbHVlMRAOAAAAAQAAAAYRAAAABnZhbHVlMgs=" } };
-            yield return new object[] { new System.Collections.Specialized.ListDictionary(StringComparer.Create(CultureInfo.CurrentCulture, false))
+            yield return new object[] { new System.Collections.Specialized.ListDictionary(StringComparer.Create(CultureInfo.InvariantCulture, false))
             {
                 { "key1", "value1" },
                 { "keyx", "valuex" }


PublishEndpointSinkLocator

PublishEndpointSinkLocator

--- src/Transports/MassTransit.Transports.RabbitMq/PublishEndpointSinkLocator.cs
+++ src/Transports/MassTransit.Transports.RabbitMq/PublishEndpointSinkLocator.cs
@@ -32,8 +32,15 @@
 			_messageType = messageType;
 		}

+		/// <summary>
+		/// Gets whether the publish endpoint sink locator found a message sink
+		/// that matched the type passed in the c'tor.
+		/// </summary>
 		public bool Found { get; private set; }

+		/// <summary>
+		/// Called by the reflective visitor base.
+		/// </summary>
 		public bool Inspect<TMessage>(EndpointMessageSink<TMessage> sink)
 			where TMessage : class
 		{


Fixed issue with Int32 and Float types in the wrong place.

--- src/Wave.Extensions.Esri/ESRI/ArcGIS/Geodatabase/Extensions/RowExtensions.cs
+++ src/Wave.Extensions.Esri/ESRI/ArcGIS/Geodatabase/Extensions/RowExtensions.cs
@@ -321,10 +321,10 @@
                         return source.Update(index, TypeCast.Cast(value, default(long)), EqualityComparer<long>.Default);

                     case esriFieldType.esriFieldTypeSmallInteger:
+                        return source.Update(index, TypeCast.Cast(value, default(int)), EqualityComparer<int>.Default);
+
+                    case esriFieldType.esriFieldTypeSingle:
                         return source.Update(index, TypeCast.Cast(value, default(float)), EqualityComparer<float>.Default);
-
-                    case esriFieldType.esriFieldTypeSingle:
-                        return source.Update(index, TypeCast.Cast(value, default(int)), EqualityComparer<int>.Default);

                     case esriFieldType.esriFieldTypeDouble:
                         return source.Update(index, TypeCast.Cast(value, default(double)), EqualityComparer<double>.Default);


Fix slider tick colour not being applied properly

--- osu.Game.Rulesets.Osu/Skinning/Argon/ArgonSliderScorePoint.cs
+++ osu.Game.Rulesets.Osu/Skinning/Argon/ArgonSliderScorePoint.cs
@@ -34,7 +34,7 @@
             };

             accentColour = hitObject.AccentColour.GetBoundCopy();
-            accentColour.BindValueChanged(accent => BorderColour = accent.NewValue);
+            accentColour.BindValueChanged(accent => BorderColour = accent.NewValue, true);
         }
     }
 }


Use `Direction` enum instead of `int`

Use `Direction` enum instead of `int`

The property is named `scrollingAxis` to distinguish from `direction`, which is of `ScrollingDirection` type (unfortunate name crash).

--- osu.Game/Rulesets/UI/Scrolling/ScrollingHitObjectContainer.cs
+++ osu.Game/Rulesets/UI/Scrolling/ScrollingHitObjectContainer.cs
@@ -20,9 +20,9 @@
         private readonly IBindable<ScrollingDirection> direction = new Bindable<ScrollingDirection>();

         /// <summary>
-        /// 0 for horizontal scroll, 1 for vertical scroll.
-        /// </summary>
-        private int scrollingAxis => direction.Value == ScrollingDirection.Left || direction.Value == ScrollingDirection.Right ? 0 : 1;
+        /// Whether the scrolling direction is horizontal or vertical.
+        /// </summary>
+        private Direction scrollingAxis => direction.Value == ScrollingDirection.Left || direction.Value == ScrollingDirection.Right ? Direction.Horizontal : Direction.Vertical;

         /// <summary>
         /// A set of top-level <see cref="DrawableHitObject"/>s which have an up-to-date layout.
@@ -68,8 +68,8 @@
         /// </summary>
         public double TimeAtScreenSpacePosition(Vector2 screenSpacePosition)
         {
-            Vector2 localPosition = ToLocalSpace(screenSpacePosition);
-            return TimeAtPosition(localPosition[scrollingAxis], Time.Current);
+            Vector2 position = ToLocalSpace(screenSpacePosition);
+            return TimeAtPosition(scrollingAxis == Direction.Horizontal ? position.X : position.Y, Time.Current);
         }

         /// <summary>
@@ -77,9 +77,9 @@
         /// </summary>
         public float PositionAtTime(double time, double currentTime)
         {
-            float pos = scrollingInfo.Algorithm.PositionAt(time, currentTime, timeRange.Value, scrollLength);
-            flipPositionIfRequired(ref pos);
-            return pos;
+            float position = scrollingInfo.Algorithm.PositionAt(time, currentTime, timeRange.Value, scrollLength);
+            flipPositionIfRequired(ref position);
+            return position;
         }

         /// <summary>
@@ -94,7 +94,7 @@
         public Vector2 ScreenSpacePositionAtTime(double time)
         {
             float position = PositionAtTime(time, Time.Current);
-            return scrollingAxis == 0
+            return scrollingAxis == Direction.Horizontal
                 ? ToScreenSpace(new Vector2(position, DrawHeight / 2))
                 : ToScreenSpace(new Vector2(DrawWidth / 2, position));
         }
@@ -107,7 +107,7 @@
             return scrollingInfo.Algorithm.GetLength(startTime, endTime, timeRange.Value, scrollLength);
         }

-        private float scrollLength => DrawSize[scrollingAxis];
+        private float scrollLength => scrollingAxis == Direction.Horizontal ? DrawWidth : DrawHeight;

         private void flipPositionIfRequired(ref float position)
         {
@@ -223,7 +223,7 @@
             if (hitObject.HitObject is IHasDuration e)
             {
                 float length = LengthAtTime(hitObject.HitObject.StartTime, e.EndTime);
-                if (scrollingAxis == 0)
+                if (scrollingAxis == Direction.Horizontal)
                     hitObject.Width = length;
                 else
                     hitObject.Height = length;
@@ -242,7 +242,7 @@
         {
             float position = PositionAtTime(hitObject.HitObject.StartTime, currentTime);

-            if (scrollingAxis == 0)
+            if (scrollingAxis == Direction.Horizontal)
                 hitObject.X = position;
             else
                 hitObject.Y = position;


Update GetAbsoluteURL test

Update GetAbsoluteURL test

--- NetSparkleUnitTests/UtilitiesTests.cs
+++ NetSparkleUnitTests/UtilitiesTests.cs
@@ -34,6 +34,8 @@
             Assert.AreEqual("https://example.com/program.exe", abosluteURL.ToString());
             abosluteURL = NetSparkle.Utilities.GetAbsoluteURL("program.exe", "https://example.com/appcast.xml");
             Assert.AreEqual("https://example.com/program.exe", abosluteURL.ToString());
+            abosluteURL = NetSparkle.Utilities.GetAbsoluteURL("program.exe", "https://example.com/subfolder/appcast.xml");
+            Assert.AreEqual("https://example.com/subfolder/program.exe", abosluteURL.ToString());
             abosluteURL = NetSparkle.Utilities.GetAbsoluteURL("../program.exe", "https://example.com/subfolder/appcast.xml");
             Assert.AreEqual("https://example.com/program.exe", abosluteURL.ToString());
             abosluteURL = NetSparkle.Utilities.GetAbsoluteURL("./program.exe", "https://example.com/subfolder/appcast.xml");


Add constant values defined by NSPanel. Fixes #3938.

--- src/AppKit/Enums.cs
+++ src/AppKit/Enums.cs
@@ -607,15 +607,19 @@
 #region NSWindow
 	[Flags]
 	public enum NSWindowStyle {
-		Borderless = 0,
-		Titled = 1,
-		Closable = 2,
-		Miniaturizable = 4,
-		Resizable = 8,
-		TexturedBackground = 1 << 8,
-		Unscaled = 1 << 11,
+		Borderless	       = 0,
+		Titled		       = 1 << 0,
+		Closable	       = 1 << 1,
+		Miniaturizable	       = 1 << 2,
+		Resizable	       = 1 << 3,
+		Utility		       = 1 << 4,
+		DocModal	       = 1 << 6,
+		NonactivatingPanel     = 1 << 7
+		TexturedBackground     = 1 << 8,
+		Unscaled	       = 1 << 11,
 		UnifiedTitleAndToolbar = 1 << 12,
-		FullScreenWindow = 1 << 14
+		Hud		       = 1 << 13
+		FullScreenWindow       = 1 << 14
 	}

 	public enum NSWindowSharingType {


up version

up version

--- src/AssemblyInfo.cs
+++ src/AssemblyInfo.cs
@@ -1,4 +1,4 @@
 using System.Reflection;

-[assembly: AssemblyVersion("0.4.0.1")]
-[assembly: AssemblyFileVersion("0.4.0.1")]+[assembly: AssemblyVersion("0.4.0.2")]
+[assembly: AssemblyFileVersion("0.4.0.2")]


Fix CSS class on course content

Fix CSS class on course content

--- Sibelius.Web/Views/Courses/Show.cshtml
+++ Sibelius.Web/Views/Courses/Show.cshtml
@@ -47,7 +47,7 @@

-

+

Contenido


http://trazador.signumsoftware.com/ver/Tarea/1215

fihceros

--- Signum.Utilities/DateTimeExtensions.cs
+++ Signum.Utilities/DateTimeExtensions.cs
@@ -12,6 +12,19 @@
 {
     public static class DateTimeExtensions
     {
+
+
+        public static DateTime FirstDayOfMonth(this DateTime date)
+        {
+            return new DateTime(date.Year, date.Month, 1);
+        }
+
+        public static DateTime LastDayOfMonth(this DateTime date)
+        {
+            return date.FirstDayOfMonth().AddMonths(1);
+        }
+
+
         /// <summary>
         /// Checks if the date is inside a C interval defined by the two given dates
         /// </summary>


Deprecate AddDataEntity<TSource, TView>.

--- Silk.Data.SQL.ORM/DataDomainBuilder.cs
+++ Silk.Data.SQL.ORM/DataDomainBuilder.cs
@@ -47,6 +47,7 @@
 				));
 		}

+		[Obsolete("Doesn't support full API and will be removed when consumer code has been updated to use AddDataEntity<TSource> only.")]
 		public void AddDataEntity<TSource, TView>(Action<EntityModel<TSource, TView>> builtDelegate = null)
 			where TSource : new()
 			where TView : new()


Comments

Comments

--- src/AvaTaxClient.cs
+++ src/AvaTaxClient.cs
@@ -593,7 +593,7 @@
             // Convert the name-value pairs into a byte array
             wr.Method = verb;

-
+            //Upload file.
             if (content != null && content is FileResult) {
                 wr.KeepAlive = true;
                 var fr = (FileResult)content;


Removed reliance on deprecated API.

Removed reliance on deprecated API.

--- Src/AutoFixtureUnitTest/FixtureTest.cs
+++ Src/AutoFixtureUnitTest/FixtureTest.cs
@@ -4007,7 +4007,7 @@
         {
             // Fixture setup
             var sut = new Fixture();
-            sut.Customizations.Add(new FilteringSpecimenBuilder(new Postprocessor(new MethodInvoker(new ModestConstructorQuery()), DictionaryFiller.AddMany), new DictionarySpecification()));
+            sut.Customizations.Add(new FilteringSpecimenBuilder(new Postprocessor(new MethodInvoker(new ModestConstructorQuery()), new DictionaryFiller()), new DictionarySpecification()));
             // Exercise system
             var result = sut.CreateAnonymous<Dictionary<int, string>>();
             // Verify outcome
@@ -4020,7 +4020,7 @@
         {
             // Fixture setup
             var sut = new Fixture();
-            sut.Customizations.Add(new FilteringSpecimenBuilder(new Postprocessor(new MethodInvoker(new ModestConstructorQuery()), DictionaryFiller.AddMany), new DictionarySpecification()));
+            sut.Customizations.Add(new FilteringSpecimenBuilder(new Postprocessor(new MethodInvoker(new ModestConstructorQuery()), new DictionaryFiller()), new DictionarySpecification()));
             sut.ResidueCollectors.Add(new DictionaryRelay());
             // Exercise system
             var result = sut.CreateAnonymous<IDictionary<TimeSpan, Version>>();


initialized allowed food list

initialized allowed food list

--- Tamagochi/Models/Models/Animals/Cat.cs
+++ Tamagochi/Models/Models/Animals/Cat.cs
@@ -10,7 +10,12 @@
     public class Cat : Mammal, ICarnivorous, ISoundable
     {
         private const string catSoundPath = @"..\..\Resourses\Sound\CatSound.wav";
-        private string[] pictures;
+        private const string InitialCatPicture = @"..\..\..\Models\Resourses\Pictures\Cat\initial.png";
+        private const string EatCatPicture = @"..\..\..\Models\Resourses\Pictures\Cat\eat.png";
+        private const string SadCatPicture = @"..\..\..\Models\\Resourses\Pictures\Cat\sad.png";
+        private const string PlayCatPicture = @"..\..\..\Models\\Resourses\Pictures\Cat\play.png";
+        private List<Meat> InitialAllowedFoods = new List<Meat> { new Drumstick(), new FishMeat(), new Steak(), new Pizza() };
+
         [XmlIgnore]
         private List<Meat> food;

@@ -18,19 +23,19 @@
         public Cat()
             : base()
         {
-            this.food = new List<Meat>() { new Pizza(), new Steak() };
+            this.food = InitialAllowedFoods;
         }

         public Cat(Gender sex, string name)
             : base(sex, name)
         {
-            this.food = new List<Meat>() { new Pizza(), new Steak() };
+            this.food = InitialAllowedFoods;
             this.Pictures = new string[]
             {
-                @"..\..\..\Models\Resourses\Pictures\Cat\initial.png",
-                @"..\..\..\Models\Resourses\Pictures\Cat\eat.png",
-                @"..\..\..\Models\\Resourses\Pictures\Cat\sad.png",
-                @"..\..\..\Models\\Resourses\Pictures\Cat\play.png"
+                Cat.InitialCatPicture,
+                Cat.EatCatPicture,
+                Cat.SadCatPicture,
+                Cat.PlayCatPicture
             };
         }


Fixed description label cutoff in timer (win)

--- src/ui/windows/TogglDesktop/TogglDesktop/TimerEditViewController.Designer.cs
+++ src/ui/windows/TogglDesktop/TogglDesktop/TimerEditViewController.Designer.cs
@@ -97,9 +97,9 @@
             | System.Windows.Forms.AnchorStyles.Right)));
             this.linkLabelProject.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(186)));
             this.linkLabelProject.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(99)))), ((int)(((byte)(99)))), ((int)(((byte)(99)))));
-            this.linkLabelProject.Location = new System.Drawing.Point(15, 32);
+            this.linkLabelProject.Location = new System.Drawing.Point(15, 35);
             this.linkLabelProject.Name = "linkLabelProject";
-            this.linkLabelProject.Size = new System.Drawing.Size(145, 23);
+            this.linkLabelProject.Size = new System.Drawing.Size(145, 20);
             this.linkLabelProject.TabIndex = 7;
             this.linkLabelProject.Text = "NEW - TOGGL";
             this.linkLabelProject.Visible = false;


Only remove consecutive empty lines and trailing whitespace for .cs files.

--- TextAndWhitespace/TextAndWhitespace.cs
+++ TextAndWhitespace/TextAndWhitespace.cs
@@ -33,8 +33,12 @@
             }

             newText = EnsureCrLf(newText);
-            newText = RemoveConsecutiveEmptyLines(newText);
-            newText = TrimTrailingWhitespaceFromEveryLine(newText);
+
+            if (".cs".Equals(Path.GetExtension(file), StringComparison.OrdinalIgnoreCase))
+            {
+                newText = RemoveConsecutiveEmptyLines(newText);
+                newText = TrimTrailingWhitespaceFromEveryLine(newText);
+            }

             if (newText != text)
             {


LIBOMV-550 Allow LLSD serialization of prims that don't have name/description properties

git-svn-id: e915c4f8b2ea2a6e63cbe989b51c0994a698cc26@2795 52acb1d6-8a22-11de-b505-999d5b087335

--- OpenMetaverse/Primitives/Primitive.cs
+++ OpenMetaverse/Primitives/Primitive.cs
@@ -1315,8 +1315,16 @@
             volume["profile"] = profile;

             OSDMap prim = new OSDMap(9);
-            prim["name"] = OSD.FromString(Properties.Name);
-            prim["description"] = OSD.FromString(Properties.Description);
+            if (Properties != null)
+            {
+                prim["name"] = OSD.FromString(Properties.Name);
+                prim["description"] = OSD.FromString(Properties.Description);
+            }
+            else
+            {
+                prim["name"] = OSD.FromString("Object");
+                prim["description"] = OSD.FromString(String.Empty);
+            }
             prim["phantom"] = OSD.FromBoolean(((Flags & PrimFlags.Phantom) != 0));
             prim["physical"] = OSD.FromBoolean(((Flags & PrimFlags.Physics) != 0));
             prim["position"] = OSD.FromVector3(Position);


AI stuff fixed

AI stuff fixed

--- TicTacToe/TicTacToe/MainWindow.xaml.cs
+++ TicTacToe/TicTacToe/MainWindow.xaml.cs
@@ -33,14 +33,6 @@
             Button senderButton = sender as Button;
             PlayToSquare(senderButton);
             PlayForAI();
-            Button aiSelectedButton = null;
-
-            do
-            {
-                aiSelectedButton = squareButtons[random.Next(0, 8)];
-            } while (aiSelectedButton.Content != "");
-
-            PlayToSquare(aiSelectedButton);
         }

         private void PlayToSquare(Button button)
@@ -146,6 +138,14 @@
                 BottomMiddleButton,
                 BottomRightButton,
             };
+            Button aiSelectedButton = null;
+
+            do
+            {
+                aiSelectedButton = squareButtons[random.Next(0, 8)];
+            } while (aiSelectedButton.Content != "");
+
+            PlayToSquare(aiSelectedButton);
         }

         private void Restart()


Minor -- deregister an event handler in Groups V2

--- OpenSim/Addons/Groups/GroupsModule.cs
+++ OpenSim/Addons/Groups/GroupsModule.cs
@@ -194,6 +194,7 @@
             scene.EventManager.OnMakeRootAgent -= OnMakeRoot;
             scene.EventManager.OnMakeChildAgent -= OnMakeChild;
             scene.EventManager.OnIncomingInstantMessage -= OnGridInstantMessage;
+            scene.EventManager.OnClientClosed -= OnClientClosed;

             lock (m_sceneList)
             {


Fix sentry file creation on Linux (#44

Fix sentry file creation on Linux (#44

Full fix #3

--- Titan/Account/Impl/ProtectedAccount.cs
+++ Titan/Account/Impl/ProtectedAccount.cs
@@ -238,7 +238,7 @@
                             UIType.TwoFactorAuthentification,
                             new TwoFactorAuthForm(Titan.Instance.UIManager, this, null)));

-                        while(_2FactorCode == null)
+                        while(string.IsNullOrEmpty(_2FactorCode))
                         {
                             /* Wait until the Form inputted the 2FA code from the Steam Guard App */
                         }
@@ -253,7 +253,7 @@
                     Application.Instance.Invoke(() => Titan.Instance.UIManager.ShowForm(UIType.TwoFactorAuthentification,
                         new TwoFactorAuthForm(Titan.Instance.UIManager, this, callback.EmailDomain)));

-                    while(_authCode == null)
+                    while(string.IsNullOrEmpty(_authCode))
                     {
                         /* Wait until the Form inputted the Auth code from the Email Steam sent */
                     }
@@ -445,4 +445,4 @@
         }

     }
-}+}


calculate avatar size on tps

calculate avatar size on tps

--- OpenSim/Framework/AvatarAppearance.cs
+++ OpenSim/Framework/AvatarAppearance.cs
@@ -678,8 +678,8 @@
         {
             if ((data != null) && (data["serial"] != null))
                 m_serial = data["serial"].AsInteger();
-            if ((data != null) && (data["height"] != null))
-                m_avatarHeight = (float)data["height"].AsReal();
+//            if ((data != null) && (data["height"] != null))
+//                m_avatarHeight = (float)data["height"].AsReal();

             try
             {
@@ -741,6 +741,7 @@
 //                            att.ItemID, att.AssetID, att.AttachPoint);
                     }
                 }
+                SetHeight();
             }
             catch (Exception e)
             {


fix error in twig logic

fix error in twig logic

--- TractorMod/Framework/BaseAttachment.cs
+++ TractorMod/Framework/BaseAttachment.cs
@@ -88,7 +88,7 @@
         /// <param name="obj">The world object.</param>
         protected bool IsTwig(SObject obj)
         {
-            return obj.ParentSheetIndex == 294 || obj.ParentSheetIndex == 295;
+            return obj?.ParentSheetIndex == 294 || obj?.ParentSheetIndex == 295;
         }

         /// <summary>Get whether a given object is a weed.</summary>


Add support to run integration tests against GitHub Enterprise If environment variable "OCTOKIT_GITHUBENTERPRISEURL" is set, this is used on the configured clients, otherwise the default GitHub URL is used

--- Octokit.Tests.Integration/Helper.cs
+++ Octokit.Tests.Integration/Helper.cs
@@ -48,7 +48,17 @@
                 return null;

             return new Credentials(githubUsername, githubPassword);
-        });
+        });
+
+        static readonly Lazy<Uri> _gitHubEnterpriseUrl = new Lazy<Uri>(() =>
+        {
+            string uri = Environment.GetEnvironmentVariable("OCTOKIT_GITHUBENTERPRISEURL");
+
+            if (uri != null)
+                return new Uri(uri);
+
+            return null;
+        });

         static Helper()
         {
@@ -66,6 +76,8 @@
         public static Credentials ApplicationCredentials { get { return _oauthApplicationCredentials.Value; } }

         public static Credentials BasicAuthCredentials { get { return _basicAuthCredentials.Value; } }
+
+        public static Uri GitHubEnterpriseUrl {  get { return _gitHubEnterpriseUrl.Value; } }

         public static bool IsUsingToken
         {
@@ -128,7 +140,7 @@

         public static IGitHubClient GetAuthenticatedClient()
         {
-            return new GitHubClient(new ProductHeaderValue("OctokitTests"))
+            return new GitHubClient(new ProductHeaderValue("OctokitTests"), GitHubEnterpriseUrl ?? GitHubClient.GitHubApiUrl)
             {
                 Credentials = Credentials
             };
@@ -136,7 +148,7 @@

         public static IGitHubClient GetBasicAuthClient()
         {
-            return new GitHubClient(new ProductHeaderValue("OctokitTests"))
+            return new GitHubClient(new ProductHeaderValue("OctokitTests"), GitHubEnterpriseUrl ?? GitHubClient.GitHubApiUrl)
             {
                 Credentials = BasicAuthCredentials
             };
@@ -144,7 +156,7 @@

         public static GitHubClient GetAuthenticatedApplicationClient()
         {
-            return new GitHubClient(new ProductHeaderValue("OctokitTests"))
+            return new GitHubClient(new ProductHeaderValue("OctokitTests"), GitHubEnterpriseUrl ?? GitHubClient.GitHubApiUrl)
             {
                 Credentials = ApplicationCredentials
             };
@@ -152,12 +164,12 @@

         public static IGitHubClient GetAnonymousClient()
         {
-            return new GitHubClient(new ProductHeaderValue("OctokitTests"));
+            return new GitHubClient(new ProductHeaderValue("OctokitTests"), GitHubEnterpriseUrl ?? GitHubClient.GitHubApiUrl);
         }

         public static IGitHubClient GetBadCredentialsClient()
         {
-            return new GitHubClient(new ProductHeaderValue("OctokitTests"))
+            return new GitHubClient(new ProductHeaderValue("OctokitTests"), GitHubEnterpriseUrl ?? GitHubClient.GitHubApiUrl)
             {
                 Credentials = new Credentials(Credentials.Login, "bad-password")
             };


* Stop console misleadingly reporting an error if it cannot find a startup commands file

--- OpenSim/Region/Application/OpenSim.cs
+++ OpenSim/Region/Application/OpenSim.cs
@@ -170,14 +170,15 @@
         }

         /// <summary>
-        ///
+        /// Run an optional startup list of commands
         /// </summary>
         /// <param name="fileName"></param>
         private void RunCommandScript(string fileName)
-        {
-            m_log.Info("[COMMANDFILE]: Running " + fileName);
+        {
             if (File.Exists(fileName))
             {
+                m_log.Info("[COMMANDFILE]: Running " + fileName);
+
                 StreamReader readFile = File.OpenText(fileName);
                 string currentCommand;
                 while ((currentCommand = readFile.ReadLine()) != null)
@@ -188,10 +189,6 @@
                         m_console.RunCommand(currentCommand);
                     }
                 }
-            }
-            else
-            {
-                m_log.Error("[COMMANDFILE]: Command script missing. Can not run commands");
             }
         }


Cleaned up code a little.

Cleaned up code a little.

--- Twiterizer.Framework/TwitterRequest.cs
+++ Twiterizer.Framework/TwitterRequest.cs
@@ -112,39 +112,11 @@
             }
             catch (WebException wex)
             {
-                // If this was a 'real' exception (connection error, etc) throw the exception.
-                if (wex.Status != WebExceptionStatus.ProtocolError || wex.Response.ContentLength == 0)
-                    throw new TwitterizerException(wex.Message, Data, wex);
-
-                Response = (HttpWebResponse)wex.Response;
-
-                // Determine what the protocol error was and throw the exception accordingly.
-                switch (Response.StatusCode)
-                {
-                    case HttpStatusCode.NotModified:
-                    case HttpStatusCode.NotFound:
-                        // There was no data to return
-                        return Data;
-
-                    case HttpStatusCode.BadRequest:
-                    case HttpStatusCode.Forbidden:
-                        // There is an error message returned as the response. We should get it and return it in the exception.
-                        readStream = new StreamReader(wex.Response.GetResponseStream(), Encoding.UTF8);
-                        throw new TwitterizerException(TwitterizerException.ParseErrorMessage(readStream.ReadToEnd()), Data, wex);
-
-                    case HttpStatusCode.Unauthorized:
-                        throw new TwitterizerException("Authorization Failed", Data);
-
-                    case HttpStatusCode.BadGateway:
-                    case HttpStatusCode.InternalServerError:
-                        throw new TwitterizerException("Twitter is currently unavailable.", Data);
-
-                    case HttpStatusCode.ServiceUnavailable:
-                        throw new TwitterizerException("Twitter is overloaded or you are being rate limited.", Data);
-
-                    default:
-                        throw new TwitterizerException(wex.Message, Data, wex);
-                }
+                HandleWebException(Data, wex);
+
+                // If it gets this far without throwing an exception,
+                // we should return the Data object as it is.
+                return Data;
             }
             catch (Exception ex)
             {
@@ -167,6 +139,49 @@

 			return Data;
 		}
+
+        /// <summary>
+        /// Handles a web exception.
+        /// </summary>
+        /// <param name="Data">The RequestData object.</param>
+        /// <param name="wex">The WebException.</param>
+        /// <returns></returns>
+        private static void HandleWebException(TwitterRequestData Data, WebException wex)
+        {
+            // If this was a 'real' exception (connection error, etc) throw the exception.
+            if (wex.Status != WebExceptionStatus.ProtocolError || wex.Response.ContentLength == 0)
+                throw new TwitterizerException(wex.Message, Data, wex);
+
+            HttpWebResponse ErrorResponse = (HttpWebResponse)wex.Response;
+
+            // Determine what the protocol error was and throw the exception accordingly.
+            switch (ErrorResponse.StatusCode)
+            {
+                case HttpStatusCode.NotModified:
+                case HttpStatusCode.NotFound:
+                    // There was no data to return
+                    break;
+
+                case HttpStatusCode.BadRequest:
+                case HttpStatusCode.Forbidden:
+                    // There is an error message returned as the response. We should get it and return it in the exception.
+                    StreamReader readStream = new StreamReader(ErrorResponse.GetResponseStream(), Encoding.UTF8);
+                    throw new TwitterizerException(TwitterizerException.ParseErrorMessage(readStream.ReadToEnd()), Data, wex);
+
+                case HttpStatusCode.Unauthorized:
+                    throw new TwitterizerException("Authorization Failed", Data);
+
+                case HttpStatusCode.BadGateway:
+                case HttpStatusCode.InternalServerError:
+                    throw new TwitterizerException("Twitter is currently unavailable.", Data);
+
+                case HttpStatusCode.ServiceUnavailable:
+                    throw new TwitterizerException("Twitter is overloaded or you are being rate limited.", Data);
+
+                default:
+                    throw new TwitterizerException(wex.Message, Data, wex);
+            }
+        }

         /// <summary>
         /// Parses the response data.


help restart message corrected

help restart message corrected

The "restart" console command restarts the currently selected region or
all regions in this instance if root is selected. Changed the message
accordingly.

--- OpenSim/Region/Application/OpenSim.cs
+++ OpenSim/Region/Application/OpenSim.cs
@@ -385,7 +385,7 @@

             m_console.Commands.AddCommand("Regions", false, "restart",
                                           "restart",
-                                          "Restart all sims in this instance",
+                                          "Restart the currently selected region(s) in this instance",
                                           RunCommand);

             m_console.Commands.AddCommand("General", false, "command-script",


Implements sending shutdown more strictly.

--- test/MsgPack.Rpc.TestUtilities/Rpc/Client/Protocols/InProcClientTransport.cs
+++ test/MsgPack.Rpc.TestUtilities/Rpc/Client/Protocols/InProcClientTransport.cs
@@ -75,6 +75,8 @@
 			}
 		}

+		private int _canSend;
+
 		/// <summary>
 		///		Occurs when response received.
 		/// </summary>
@@ -93,6 +95,7 @@
 			this._manager = manager;
 			this._inboundQueue = new BlockingCollection<byte[]>();
 			this._pendingPackets = new ConcurrentQueue<InProcPacket>();
+			Interlocked.Exchange( ref this._canSend, 1 );
 		}

 		protected override void Dispose( bool disposing )
@@ -142,6 +145,7 @@

 		protected sealed override void ShutdownSending()
 		{
+			Interlocked.Exchange( ref this._canSend, 0 );
 			this._destination.FeedData( new byte[ 0 ] );

 			base.ShutdownSending();
@@ -158,8 +162,16 @@
 			var data = context.BufferList.SelectMany( segment => segment.Array.Skip( segment.Offset ).Take( segment.Count ) ).ToArray();
 			var dataEventArgs = new InProcDataSendingEventArgs() { Data = data };
 			this.OnDataSending( dataEventArgs );
-			destination.FeedData( dataEventArgs.Data );
-			this.OnMessageSent( new InProcMessageSentEventArgs( context ) );
+
+			if ( Interlocked.CompareExchange( ref this._canSend, 0, 0 ) != 0 )
+			{
+				destination.FeedData( dataEventArgs.Data );
+				this.OnMessageSent( new InProcMessageSentEventArgs( context ) );
+			}
+			else
+			{
+				context.SocketError = SocketError.OperationAborted;
+			}

 			using ( var dummySocket = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp ) )
 			{


优化内存池

优化内存池

--- OpenMcdf/Unzippers/ByteArrayPool.cs
+++ OpenMcdf/Unzippers/ByteArrayPool.cs
@@ -4,12 +4,13 @@
     {
         public byte[] Rent(int minimumLength)
         {
-            if (_buffer != null)
+            for (var i = 0; i < _bufferList.Length; i++)
             {
-                if (_buffer.Length >= minimumLength)
+                var buffer = _bufferList[i];
+
+                if (buffer != null && buffer.Length >= minimumLength)
                 {
-                    var buffer = _buffer;
-                    _buffer = null;
+                    _bufferList[i] = null;
                     return buffer;
                 }
             }
@@ -24,13 +25,18 @@
                 return;
             }

-            if (_buffer is null || byteList.Length > _buffer.Length)
+            for (var i = 0; i < _bufferList.Length; i++)
             {
-                _buffer = byteList;
+                var buffer = _bufferList[i];
+                if (buffer is null || byteList.Length > buffer.Length)
+                {
+                    buffer = byteList;
+                    _bufferList[i] = buffer;
+                }
             }
         }

-        private byte[] _buffer;
+        private readonly byte[][] _bufferList = new byte[4][];
         private const int MaxBufferLength = 8 * 1024;
     }
 }


refactor(configurationproject): Implement tests for the EventAggregatorExtensions class.

--- test/Zuehlke.Eacm.Web.Backend.Tests/CQRS/EventAggregatorExtensionsFixture.cs
+++ test/Zuehlke.Eacm.Web.Backend.Tests/CQRS/EventAggregatorExtensionsFixture.cs
@@ -1,19 +1,49 @@
 using System;
 using Xunit;
 using Zuehlke.Eacm.Web.Backend.CQRS;
+using Zuehlke.Eacm.Web.Backend.Utils.PubSubEvents;

 namespace Zuehlke.Eacm.Web.Backend.Tests.DomainModel
 {
     public class EventAggregatorExtensionsFixture
     {
         [Fact]
-        public void PublishEvent_()
+        public void PublishEvent_EventAggregatorIsNull_ThrowsException()
         {
-            // arrange
+            // arrange
+            IEventAggregator eventAggegator = null;
+            IEvent e = new TestEvent();

             // act
+            Assert.ThrowsAny<ArgumentNullException>(() => CQRS.EventAggregatorExtensions.PublishEvent(eventAggegator, e));
+        }

-            // assert
+        [Fact]
+        public void PublishEvent_EventIsNull_ThrowsException()
+        {
+            // arrange
+            IEventAggregator eventAggegator = new EventAggregator();
+            IEvent e = null;
+
+            // act
+            Assert.ThrowsAny<ArgumentNullException>(() => CQRS.EventAggregatorExtensions.PublishEvent(eventAggegator, e));
+        }
+
+        [Fact]
+        public void PublishEvent_WithEventSubscription_HandlerGetsCalleds()
+        {
+            // arrange
+            IEventAggregator eventAggegator = new EventAggregator();
+            IEvent e = new TestEvent();
+
+            bool executed = false;
+
+            eventAggegator.Subscribe<TestEvent>(ev => executed = true);
+
+            // act
+            CQRS.EventAggregatorExtensions.PublishEvent(eventAggegator, e);
+
+            Assert.True(executed);
         }

         private class TestEvent : IEvent


allow for different casing on Boo.Lang.Compiler.dll

--- src/Boo.Lang.Compiler/Steps/Parsing.cs
+++ src/Boo.Lang.Compiler/Steps/Parsing.cs
@@ -60,9 +60,9 @@
 			var thisLocation = Permissions.WithDiscoveryPermission(() => ThisAssembly().Location) ?? "";
 			if (string.IsNullOrEmpty(thisLocation))
 				return LoadParserAssemblyByName();
-			var parserLocation = thisLocation.EndsWith("Boo.Lang.Compiler.dll")
-			                     	? thisLocation.Substring(0, thisLocation.Length - "Boo.Lang.Compiler.dll".Length) + "Boo.Lang.Parser.dll"
-			                     	: "";
+			var parserLocation = thisLocation.EndsWith("Boo.Lang.Compiler.dll", StringComparison.OrdinalIgnoreCase)
+				? thisLocation.Substring(0, thisLocation.Length - "Boo.Lang.Compiler.dll".Length) + "Boo.Lang.Parser.dll"
+				: "";
 			return File.Exists(parserLocation) ? Assembly.LoadFrom(parserLocation) : LoadParserAssemblyByName();
 		}


Uncommented line

Uncommented line

--- OpenSim.RegionServer/world/World.cs
+++ OpenSim.RegionServer/world/World.cs
@@ -236,7 +236,7 @@
 		{
 			lock (OpenSimRoot.Instance.LocalWorld.Entities)
 			{
-				//OpenSimRoot.Instance.LocalWorld.Entities.Remove(uuid);
+				OpenSimRoot.Instance.LocalWorld.Entities.Remove(uuid);
 			}
 		}


Changed logging for game start.

Changed logging for game start.

--- src/GameLauncher.cs
+++ src/GameLauncher.cs
@@ -50,6 +50,9 @@
             game.StartInfo.FileName = gameArgs.AppExe;
             game.StartInfo.Arguments = GetLaunchArguments(gameArgs);
             game.StartInfo.Verb = "runas";
+
+            logger.AddEntry(new LogEntry(Environment.UserName, String.Format("Trying to launch game with: WDir: {0}; File: {1} {2}", gameArgs.AppPath, game.StartInfo.FileName, game.StartInfo.Arguments), LogEntryType.Information));
+
             game.Start();

             logger.AddEntry(new LogEntry(Environment.UserName, String.Format("Succesfully launched game with: WDir: {0}; File: {1} {2}", gameArgs.AppPath, game.StartInfo.FileName, game.StartInfo.Arguments), LogEntryType.Information));


fixed a bug about handling rest parameter

--- ProtoBase/DefaultPipelineProcessor.cs
+++ ProtoBase/DefaultPipelineProcessor.cs
@@ -57,49 +57,60 @@
         /// </returns>
         public virtual ProcessResult Process(ArraySegment<byte> segment, IBufferState state)
         {
-            m_ReceiveCache.Add(segment, state);
+            var receiveCache = m_ReceiveCache;
+
+            receiveCache.Add(segment, state);

             var rest = 0;

+            var currentReceiveFilter = m_ReceiveFilter;
+
             while (true)
             {
-                var packageInfo = m_ReceiveFilter.Filter(m_ReceiveCache, out rest);
+                var packageInfo = currentReceiveFilter.Filter(receiveCache, out rest);

-                if (m_ReceiveFilter.State == FilterState.Error)
+                if (currentReceiveFilter.State == FilterState.Error)
                 {
-                    m_BufferRecycler.Return(m_ReceiveCache.GetAllCachedItems(), 0, m_ReceiveCache.Count);
+                    m_BufferRecycler.Return(receiveCache.GetAllCachedItems(), 0, receiveCache.Count);
                     return ProcessResult.Create(ProcessState.Error);
                 }

                 if (m_MaxPackageLength > 0)
                 {
-                    var length = m_ReceiveCache.Total;
+                    var length = receiveCache.Total;

                     if (length > m_MaxPackageLength)
                     {
-                        m_BufferRecycler.Return(m_ReceiveCache.GetAllCachedItems(), 0, m_ReceiveCache.Count);
+                        m_BufferRecycler.Return(receiveCache.GetAllCachedItems(), 0, receiveCache.Count);
                         return ProcessResult.Create(ProcessState.Error, string.Format("Max package length: {0}, current processed length: {1}", m_MaxPackageLength, length));
                     }
                 }
+
+                var nextReceiveFilter = currentReceiveFilter.NextReceiveFilter;
+                currentReceiveFilter.Reset();
+
+                if (nextReceiveFilter != null)
+                {
+                    currentReceiveFilter = nextReceiveFilter;
+                    m_ReceiveFilter = currentReceiveFilter;
+                }

                 //Receive continue
                 if (packageInfo == null)
                 {
                     if (rest > 0)
                     {
-                        PushResetData(segment, rest, state);
+                        if(rest != segment.Count)
+                        {
+                            ReturnOtherThanLastBuffer();
+                            PushResetData(segment, rest, state);
+                        }
+
                         continue;
                     }

                     return ProcessResult.Create(ProcessState.Cached);
                 }
-
-                m_ReceiveFilter.Reset();
-
-                var nextReceiveFilter = m_ReceiveFilter.NextReceiveFilter;
-
-                if (nextReceiveFilter != null)
-                    m_ReceiveFilter = nextReceiveFilter;

                 m_PackageHandler.Handle(packageInfo);

@@ -107,7 +118,7 @@
                         && (packageInfo as IBufferedPackageInfo).Data is BufferList) // and it uses receive buffer directly
                 {
                     // so we need to create a new receive buffer container to use
-                    m_ReceiveCache = new BufferList();
+                    m_ReceiveCache = receiveCache = new BufferList();

                     if (rest <= 0)
                     {


Add test

Add test

--- Python/Tests/Analysis/AnalysisTest.cs
+++ Python/Tests/Analysis/AnalysisTest.cs
@@ -6968,6 +6968,28 @@
             AssertUtil.ContainsAtLeast(entry.GetMemberNames("P"), "abspath", "dirname");
         }

+        [TestMethod, Priority(0)]
+        public void UnassignedClassMembers() {
+            var code = @"
+from typing import NamedTuple
+
+class Employee(NamedTuple):
+    name: str
+    id: int = 3
+
+e = Employee('Guido')
+";
+            var version = PythonPaths.Versions.LastOrDefault(v => v.IsCPython && File.Exists(v.InterpreterPath));
+            version.AssertInstalled();
+            var entry = CreateAnalyzer(new Microsoft.PythonTools.Interpreter.Ast.AstPythonInterpreterFactory(
+                version.Configuration,
+                new InterpreterFactoryCreationOptions { DatabasePath = TestData.GetTempPath(), WatchFileSystem = false }
+            ));
+            entry.AddModule("test-module", code);
+            entry.WaitForAnalysis();
+            AssertUtil.ContainsAtLeast(entry.GetMemberNames("e"), "name", "id");
+        }
+
         #endregion

         #region Helpers


Allow a margin of error when concatenating routes.

--- OsmSharp.Routing/RouteExtensions.cs
+++ OsmSharp.Routing/RouteExtensions.cs
@@ -210,8 +210,8 @@
             var start = route2.Segments[0];

             // only do all this if the routes are 'concatenable'.
-            if (end.Latitude == start.Latitude &&
-                end.Longitude == start.Longitude)
+            if (System.Math.Abs(end.Latitude - start.Latitude) < 0.001 &&
+                System.Math.Abs(end.Longitude - start.Longitude) < 0.001)
             {
                 // construct the new route.
                 var route = new Route();


add debug text to form

add debug text to form

--- PS4Macro/Forms/MainForm.Designer.cs
+++ PS4Macro/Forms/MainForm.Designer.cs
@@ -432,7 +432,7 @@
             this.MaximizeBox = false;
             this.Name = "MainForm";
             this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
-            this.Text = "PS4 Macro - v0.5.2 (BETA)";
+            this.Text = "[DEBUG] PS4 Macro - v0.5.2 (BETA)";
             this.Load += new System.EventHandler(this.MainForm_Load);
             this.statusStrip.ResumeLayout(false);
             this.statusStrip.PerformLayout();


ParsecExceptionのコンストラクタを公開

ParsecExceptionのコンストラクタを公開

--- ParsecSharp/Core/ParsecException.cs
+++ ParsecSharp/Core/ParsecException.cs
@@ -6,12 +6,12 @@
     {
         public IParsecState<T> State { get; }

-        internal ParsecException(string message, IParsecState<T> state) : base(message)
+        public ParsecException(string message, IParsecState<T> state) : base(message)
         {
             this.State = state;
         }

-        internal ParsecException(string message, Exception exception, IParsecState<T> state) : base(message, exception)
+        public ParsecException(string message, Exception exception, IParsecState<T> state) : base(message, exception)
         {
             this.State = state;
         }


Fix a bad merge

Fix a bad merge

--- Assets/MixedRealityToolkit/Utilities/Editor/Setup/MixedRealityToolkitFiles.cs
+++ Assets/MixedRealityToolkit/Utilities/Editor/Setup/MixedRealityToolkitFiles.cs
@@ -285,6 +285,7 @@
         /// <summary>
         /// Overload of MapRelativeFilePathToAbsolutePath which provides the ability to specify the module that the
         /// file belongs to.
+        /// </summary>
         /// <remarks>
         /// When searching for a resource that lives in the MixedRealityToolkit.SDK folder, this could be invoked
         /// in this way:
@@ -301,6 +302,11 @@
         public static string MapRelativeFolderPathToAbsolutePath(MixedRealityToolkitModuleType module, string mrtkPathToFolder)
         {
             return MapRelativePathToAbsolutePath(SearchType.Folder, module, mrtkPathToFolder);
+        }
+
+        public static string MapModulePath(MixedRealityToolkitModuleType module)
+        {
+            return GetAssetDatabasePath(MapRelativeFolderPathToAbsolutePath(module, ""));
         }

         /// <summary>


Convert in UriAttribute use invariant culture


add raw block storage

add raw block storage


Refined testcases for RussiaPaymentOrder

--- QRCoderTests/PayloadGeneratorTests.cs
+++ QRCoderTests/PayloadGeneratorTests.cs
@@ -3058,21 +3058,6 @@

         [Fact]
         [Category("PayloadGenerator/RussiaPaymentOrder")]
-        public void russiapayment_generator_can_generate_payload_minimal()
-        {
-            var account = "40702810138250123017";
-            var bic = "044525225";
-            var bankName = "=ОАО \"БАНК\"";
-            var name = "ООО «Три кита»";
-            var generator = new PayloadGenerator.RussiaPaymentOrder(PayloadGenerator.RussiaPaymentOrder.CharacterSets.utf_8, name, account, bankName, bic);
-
-            generator
-                .ToString()
-                .ShouldBe($"ST00012|Name={name}|PersonalAcc={account}|BankName={bankName}|BIC={bic}|CorrespAcc=0");
-        }
-
-        [Fact]
-        [Category("PayloadGenerator/RussiaPaymentOrder")]
         public void russiapayment_generator_can_generate_payload_mandatory_fields()
         {
             var account = "40702810138250123017";
@@ -3096,15 +3081,42 @@
             var bankName = "=ОАО \"БАНК\"";
             var name = "ООО «Три кита»";
             var correspAcc = "30101810400000000225";
-            var firstName = "Raffael";
-            var lastName = "Herrmann";
-            var sum = 999.95d;
-
-            var generator = new PayloadGenerator.RussiaPaymentOrder(PayloadGenerator.RussiaPaymentOrder.CharacterSets.utf_8, name, account, bankName, bic, correspAcc, LastName: lastName, FirstName: firstName, Sum: sum);
-
-            generator
-                .ToString()
-                .ShouldBe($"ST00012|Name={name}|PersonalAcc={account}|BankName={bankName}|BIC={bic}|CorrespAcc={correspAcc}|FirstName={firstName}|LastName={lastName}|Sum={sum}");
+            var optionalFields = new PayloadGenerator.RussiaPaymentOrder.OptionalFields()
+            {
+                FirstName = "Raffael",
+                LastName = "Herrmann",
+                Sum = "125000"
+            };
+
+            var generator = new PayloadGenerator.RussiaPaymentOrder(PayloadGenerator.RussiaPaymentOrder.CharacterSets.utf_8, name, account, bankName, bic, correspAcc, optionalFields: optionalFields);
+
+            generator
+                .ToString()
+                .ShouldBe($"ST00012|Name={name}|PersonalAcc={account}|BankName={bankName}|BIC={bic}|CorrespAcc=0|Sum={optionalFields.Sum}|LastName={optionalFields.LastName}|FirstName={optionalFields.FirstName}");
+        }
+
+        [Fact]
+        [Category("PayloadGenerator/RussiaPaymentOrder")]
+        public void russiapayment_generator_can_generate_payload_all_additional_fields()
+        {
+            var account = "40702810138250123017";
+            var bic = "044525225";
+            var bankName = "=ОАО \"БАНК\"";
+            var name = "ООО «Три кита»";
+            var correspAcc = "30101810400000000225";
+            var optionalFields = new PayloadGenerator.RussiaPaymentOrder.OptionalFields()
+            {
+                Sum = "50000",
+                Purpose = "Your loan",
+                PayeeINN = "9909373824",
+                PayerINN = "1832090230"
+            };
+
+            var generator = new PayloadGenerator.RussiaPaymentOrder(PayloadGenerator.RussiaPaymentOrder.CharacterSets.utf_8, name, account, bankName, bic, correspAcc, optionalFields: optionalFields);
+
+            generator
+                .ToString()
+                .ShouldBe($"ST00012|Name={name}|PersonalAcc={account}|BankName={bankName}|BIC={bic}|CorrespAcc=0|Sum={optionalFields.Sum}|LastName={optionalFields.LastName}|FirstName={optionalFields.FirstName}");
         }
     }
 }


Added CT1005 to identify when non-generic collection types are used in externally-accessible members.

--- CodeTiger.CodeAnalysis/Analyzers/Design/NonGenericCollectionDesignAnalyzer.cs
+++ CodeTiger.CodeAnalysis/Analyzers/Design/NonGenericCollectionDesignAnalyzer.cs
@@ -1,5 +1,7 @@
-using System.Collections.Immutable;
+using System.Collections.Generic;
+using System.Collections.Immutable;
 using System.Linq;
+using CodeTiger.CodeAnalysis.CSharp;
 using Microsoft.CodeAnalysis;
 using Microsoft.CodeAnalysis.CSharp;
 using Microsoft.CodeAnalysis.CSharp.Syntax;
@@ -13,9 +15,13 @@
     [DiagnosticAnalyzer(LanguageNames.CSharp)]
     public class NonGenericCollectionDesignAnalyzer : DiagnosticAnalyzer
     {
-        internal static readonly DiagnosticDescriptor NonGenericdCollectionsShouldNotBeHeldAsStateDescriptor
+        internal static readonly DiagnosticDescriptor NonGenericCollectionsShouldNotBeHeldAsStateDescriptor
             = new DiagnosticDescriptor("CT1004", "Non-generic collections should not be held as state.",
                 "Non-generic collections should not be held as state.", "CodeTiger.Design",
+                DiagnosticSeverity.Warning, true);
+        internal static readonly DiagnosticDescriptor NonGenericCollectionsShouldNotBeExposedDescriptor
+            = new DiagnosticDescriptor("CT1005", "Non-generic collections should not be exposed.",
+                "Non-generic collections should not be exposed.", "CodeTiger.Design",
                 DiagnosticSeverity.Warning, true);

         private static readonly string[] _nonGenericCollectionMetadataNames = new string[]
@@ -43,7 +49,8 @@
         {
             get
             {
-                return ImmutableArray.Create(NonGenericdCollectionsShouldNotBeHeldAsStateDescriptor);
+                return ImmutableArray.Create(NonGenericCollectionsShouldNotBeHeldAsStateDescriptor,
+                    NonGenericCollectionsShouldNotBeExposedDescriptor);
             }
         }

@@ -58,6 +65,14 @@

             context.RegisterSyntaxNodeAction(AnalyzeTypeForNonGenericCollectionState, SyntaxKind.ClassDeclaration,
                 SyntaxKind.StructDeclaration);
+            context.RegisterSyntaxNodeAction(AnalyzePropertyForNonGenericCollectionExposure,
+                SyntaxKind.PropertyDeclaration);
+            context.RegisterSyntaxNodeAction(AnalyzeMethodForNonGenericCollectionExposure,
+                SyntaxKind.MethodDeclaration);
+            context.RegisterSyntaxNodeAction(AnalyzeConstructorForNonGenericCollectionExposure,
+                SyntaxKind.ConstructorDeclaration);
+            context.RegisterSyntaxNodeAction(AnalyzeFieldForNonGenericCollectionExposure,
+                SyntaxKind.FieldDeclaration);
         }

         private static void AnalyzeTypeForNonGenericCollectionState(SyntaxNodeAnalysisContext context)
@@ -76,24 +91,107 @@
                     return;
             }

-            foreach (var nonGenericCollectionMember in members.Where(x => IsNonGenericCollection(context, x)))
-            {
-                context.ReportDiagnostic(Diagnostic.Create(NonGenericdCollectionsShouldNotBeHeldAsStateDescriptor,
+            foreach (var nonGenericCollectionMember in members
+                .Where(x => IsOrIncludesNonGenericCollection(context, x)))
+            {
+                context.ReportDiagnostic(Diagnostic.Create(NonGenericCollectionsShouldNotBeHeldAsStateDescriptor,
                     GetIdentifierLocation(nonGenericCollectionMember)));
             }
         }

-        private static bool IsNonGenericCollection(SyntaxNodeAnalysisContext context,
+        private static void AnalyzePropertyForNonGenericCollectionExposure(SyntaxNodeAnalysisContext context)
+        {
+            var propertyDeclaration = (PropertyDeclarationSyntax)context.Node;
+            var propertySymbol = context.SemanticModel
+                .GetDeclaredSymbol(propertyDeclaration, context.CancellationToken);
+
+            if (!propertySymbol.IsExternallyAccessible())
+            {
+                return;
+            }
+
+            if (IsOrIncludesNonGenericCollection(context, propertyDeclaration.Type))
+
+            context.ReportDiagnostic(Diagnostic.Create(NonGenericCollectionsShouldNotBeExposedDescriptor,
+                propertyDeclaration.Type.GetLocation()));
+        }
+
+        private static void AnalyzeMethodForNonGenericCollectionExposure(SyntaxNodeAnalysisContext context)
+        {
+            var methodDeclaration = (MethodDeclarationSyntax)context.Node;
+            var methodSymbol = context.SemanticModel
+                .GetDeclaredSymbol(methodDeclaration, context.CancellationToken);
+
+            if (!methodSymbol.IsExternallyAccessible())
+            {
+                return;
+            }
+
+            if (IsOrIncludesNonGenericCollection(context, methodDeclaration.ReturnType))
+            {
+                context.ReportDiagnostic(Diagnostic.Create(NonGenericCollectionsShouldNotBeExposedDescriptor,
+                    methodDeclaration.ReturnType.GetLocation()));
+            }
+
+            foreach (var parameter in methodDeclaration.ParameterList.Parameters)
+            {
+                if (IsOrIncludesNonGenericCollection(context, parameter.Type))
+                {
+                    context.ReportDiagnostic(Diagnostic.Create(NonGenericCollectionsShouldNotBeExposedDescriptor,
+                        parameter.Type.GetLocation()));
+                }
+            }
+        }
+
+        private static void AnalyzeConstructorForNonGenericCollectionExposure(SyntaxNodeAnalysisContext context)
+        {
+            var constructorDeclaration = (ConstructorDeclarationSyntax)context.Node;
+            var constructorSymbol = context.SemanticModel
+                .GetDeclaredSymbol(constructorDeclaration, context.CancellationToken);
+
+            if (!constructorSymbol.IsExternallyAccessible())
+            {
+                return;
+            }
+
+            foreach (var parameter in constructorDeclaration.ParameterList.Parameters)
+            {
+                if (IsOrIncludesNonGenericCollection(context, parameter.Type))
+                {
+                    context.ReportDiagnostic(Diagnostic.Create(NonGenericCollectionsShouldNotBeExposedDescriptor,
+                        parameter.Type.GetLocation()));
+                }
+            }
+        }
+
+        private static void AnalyzeFieldForNonGenericCollectionExposure(SyntaxNodeAnalysisContext context)
+        {
+            var fieldDeclaration = (FieldDeclarationSyntax)context.Node;
+            var variableDeclarator = fieldDeclaration.Declaration.Variables.Single();
+            var fieldSymbol = context.SemanticModel
+                .GetDeclaredSymbol(variableDeclarator, context.CancellationToken);
+
+            if (!fieldSymbol.IsExternallyAccessible())
+            {
+                return;
+            }
+
+            if (IsOrIncludesNonGenericCollection(context, fieldDeclaration.Declaration.Type))
+            {
+                context.ReportDiagnostic(Diagnostic.Create(NonGenericCollectionsShouldNotBeExposedDescriptor,
+                    fieldDeclaration.Declaration.Type.GetLocation()));
+            }
+        }
+
+        private static bool IsOrIncludesNonGenericCollection(SyntaxNodeAnalysisContext context,
             MemberDeclarationSyntax member)
         {
-            ITypeSymbol memberType;
+            TypeSyntax memberTypeSyntax;

             switch (member.Kind())
             {
                 case SyntaxKind.FieldDeclaration:
-                    memberType = context.SemanticModel
-                        .GetTypeInfo(((FieldDeclarationSyntax)member).Declaration.Type, context.CancellationToken)
-                        .Type;
+                    memberTypeSyntax = ((FieldDeclarationSyntax)member).Declaration.Type;
                     break;
                 case SyntaxKind.PropertyDeclaration:
                     {
@@ -103,19 +201,40 @@
                             return false;
                         }

-                        memberType = context.SemanticModel
-                            .GetTypeInfo(propertyNode.Type, context.CancellationToken).Type;
+                        memberTypeSyntax = propertyNode.Type;
                     }
                     break;
                 default:
                     return false;
             }

+            return IsOrIncludesNonGenericCollection(context, memberTypeSyntax);
+        }
+
+        private static bool IsOrIncludesNonGenericCollection(SyntaxNodeAnalysisContext context,
+            TypeSyntax typeSyntax)
+        {
+            if (typeSyntax.Kind() == SyntaxKind.ArrayType)
+            {
+                return IsOrIncludesNonGenericCollection(context, ((ArrayTypeSyntax)typeSyntax).ElementType);
+            }
+
+            var genericArguments = typeSyntax.DescendantNodes().OfType<GenericNameSyntax>().FirstOrDefault();
+            if (genericArguments != null)
+            {
+                return genericArguments.TypeArgumentList.Arguments
+                    .Any(x => IsOrIncludesNonGenericCollection(context, x));
+            }
+
+            var typeSymbol = context.SemanticModel
+                .GetTypeInfo(typeSyntax, context.CancellationToken)
+                .Type;
+
             foreach (string nonGenericCollectionName in _nonGenericCollectionMetadataNames)
             {
                 var nonGenericSymbol = context.SemanticModel.Compilation
                     .GetTypeByMetadataName(nonGenericCollectionName);
-                if (nonGenericSymbol != null && nonGenericSymbol.Equals(memberType))
+                if (nonGenericSymbol != null && nonGenericSymbol.Equals(typeSymbol))
                 {
                     return true;
                 }


Also stream serialized json

Also stream serialized json

--- Refit/RequestBuilderImplementation.cs
+++ Refit/RequestBuilderImplementation.cs
@@ -114,7 +114,12 @@
                                     ret.Content = new FormUrlEncodedContent(new FormValueDictionary(paramList[i]));
                                     break;
                                 case BodySerializationMethod.Json:
-                                    ret.Content = new StringContent(JsonConvert.SerializeObject(paramList[i], settings.JsonSerializerSettings), Encoding.UTF8, "application/json");
+                                    var stream = new MemoryStream();
+                                    var jsonWriter = new JsonTextWriter(new StreamWriter(stream));
+                                    serializer.Serialize(jsonWriter, paramList[i]);
+                                    jsonWriter.Flush();
+                                    stream.Seek(0, SeekOrigin.Begin);
+                                    ret.Content = new StreamContent(stream);
                                     break;
                             }
                         }
@@ -378,7 +383,7 @@
                 if (restMethod.SerializedReturnType == typeof(HttpContent)) {
                     return (T)(object)resp.Content;
                 }
-
+
                 using (var stream = await resp.Content.ReadAsStreamAsync().ConfigureAwait(false))
                 using (var reader = new StreamReader(stream)) {
                     if (restMethod.SerializedReturnType == typeof(string)) {


fix RIDER-35227 Failed to create Unity meta file /usr/share/dotnet/sdk/3.0.100/Microsoft.Common.CurrentVersion.targets.meta (#1404)

and
    RIDER-35197 Opening json file from Library folder creates bogus meta file

--- resharper/resharper-unity/src/ProjectModel/MetaFileTracker.cs
+++ resharper/resharper-unity/src/ProjectModel/MetaFileTracker.cs
@@ -76,13 +76,13 @@
             // Note that this method is called recursively, for projects, folders and files
             public override void VisitItemDelta(ProjectItemChange change)
             {
-                if (change.ProjectModelElement is IProject)
-                    VisitProjectDelta(change);
+                if (change.ProjectModelElement is IProject project)
+                    VisitProjectDelta(change, project);
                 else
                     VisitFileOrFolderDelta(change);
             }

-            private void VisitProjectDelta(ProjectItemChange projectChange)
+            private void VisitProjectDelta(ProjectItemChange projectChange, IProject project)
             {
                 // When a project is reloaded, we get a removal notification for it and all of its
                 // files, followed by a load of addition notifications. If we don't handle this
@@ -90,6 +90,12 @@
                 // So ignore any project removal messages. We can safely ignore them, as a) Unity will
                 // never do this, and b) you can't delete a project from Visual Studio/Rider, only remove it
                 if (projectChange.IsRemoved)
+                    return;
+
+                // Don't recurse if this project isn't a Unity project. Note that we don't do this
+                // for the IsRemoved case above, as the project doesn't have a solution at that point,
+                // and IsUnityProject will throw
+                if (!project.IsUnityProject())
                     return;

                 base.VisitItemDelta(projectChange);


Minor inject module update for .NET Core to better support WebJobs

--- Framework/Ninject/Azure/Cqrs.Ninject.Azure.Wcf/Configuration/WebHostModule.cs
+++ Framework/Ninject/Azure/Cqrs.Ninject.Azure.Wcf/Configuration/WebHostModule.cs
@@ -24,6 +24,7 @@
 #if NET472
 using Ninject.Web.Common;
 using System.Web;
+using Ninject;
 #endif
 #if NETSTANDARD2_0
 using Microsoft.Extensions.Configuration;


accomodated camera to 16:9

accomodated camera to 16:9

--- badasher/Assets/Code/_Gamemanager/CameraScript.cs
+++ badasher/Assets/Code/_Gamemanager/CameraScript.cs
@@ -12,7 +12,7 @@

 	void Start () {
 		player = GameObject.FindGameObjectWithTag ("Player").GetComponent <Player> ();
-		offset = new Vector3 (8.5f, 1.0f, -10);
+		offset = new Vector3 (11.5f, 1.0f, -10);
 		camHorizontalExtent = this.GetComponent<Camera> ().orthographicSize;
 		this.GetComponent<AudioSource> ().Play ();


retour du notification helper

retour du notification helper

--- GestAssoc/GestAssoc.Modules.GestionInfosClub/ViewModels/InfosClubViewModel.cs
+++ GestAssoc/GestAssoc.Modules.GestionInfosClub/ViewModels/InfosClubViewModel.cs
@@ -46,7 +46,7 @@
 			}

 			// trace
-			this.RaiseNotification(GlblRes.Log_AffichageVue + ViewNames.ConsultationInfosClub.ToString());
+			NotificationHelper.WriteNotification(GlblRes.Log_AffichageVue + ViewNames.ConsultationInfosClub.ToString());
 		}
 	}
 }


Oh boy

Oh boy

--- JB.Common.VisualStudio.TeamFoundation/TeamExplorer/TeamExplorerSectionBase.cs
+++ JB.Common.VisualStudio.TeamFoundation/TeamExplorer/TeamExplorerSectionBase.cs
@@ -8,6 +8,7 @@

 using System.ComponentModel.Composition;
 using System.Diagnostics;
+using System.Windows.Controls;
 using Microsoft.TeamFoundation.Controls;

 namespace JB.VisualStudio.TeamFoundation.TeamExplorer