internal static object DeserializeXmlDocument(InternalDeserializer deserializer)
 {
     object obj2;
     string xmlContents = deserializer.ReadDecodedElementString("XD");
     try
     {
         int? maxCharactersInDocument = null;
         if (deserializer._context.MaximumAllowedMemory.HasValue)
         {
             maxCharactersInDocument = new int?(deserializer._context.MaximumAllowedMemory.Value / 2);
         }
         XmlDocument document = LoadUnsafeXmlDocument(xmlContents, true, maxCharactersInDocument);
         deserializer._context.LogExtraMemoryUsage((xmlContents.Length - document.OuterXml.Length) * 2);
         obj2 = document;
     }
     catch (XmlException exception)
     {
         throw deserializer.NewXmlException(Serialization.InvalidPrimitiveType, exception, new object[] { typeof(XmlDocument).FullName });
     }
     return obj2;
 }
 internal static object DeserializeUri(InternalDeserializer deserializer)
 {
     object obj2;
     try
     {
         obj2 = new Uri(deserializer.ReadDecodedElementString("URI"), UriKind.RelativeOrAbsolute);
     }
     catch (UriFormatException exception)
     {
         throw deserializer.NewXmlException(Serialization.InvalidPrimitiveType, exception, new object[] { typeof(Uri).FullName });
     }
     return obj2;
 }
 internal static object DeserializeScriptBlock(InternalDeserializer deserializer)
 {
     string script = deserializer.ReadDecodedElementString("SBK");
     if (DeserializationOptions.DeserializeScriptBlocks == (deserializer._context.options & DeserializationOptions.DeserializeScriptBlocks))
     {
         return ScriptBlock.Create(script);
     }
     return script;
 }
 internal static object DeserializeString(InternalDeserializer deserializer)
 {
     return deserializer.ReadDecodedElementString("S");
 }
 internal static object DeserializeProgressRecord(InternalDeserializer deserializer)
 {
     ProgressRecordType type;
     object obj3;
     deserializer.ReadStartElement("PR");
     string activity = null;
     string str2 = null;
     string str3 = null;
     string statusDescription = null;
     int activityId = 0;
     int num2 = 0;
     int num3 = 0;
     int num4 = 0;
     Exception innerException = null;
     try
     {
         activity = deserializer.ReadDecodedElementString("AV");
         activityId = int.Parse(deserializer.ReadDecodedElementString("AI"), CultureInfo.InvariantCulture);
         object obj2 = deserializer.ReadOneObject();
         str2 = (obj2 == null) ? null : obj2.ToString();
         num2 = int.Parse(deserializer.ReadDecodedElementString("PI"), CultureInfo.InvariantCulture);
         num3 = int.Parse(deserializer.ReadDecodedElementString("PC"), CultureInfo.InvariantCulture);
         str3 = deserializer.ReadDecodedElementString("T");
         num4 = int.Parse(deserializer.ReadDecodedElementString("SR"), CultureInfo.InvariantCulture);
         statusDescription = deserializer.ReadDecodedElementString("SD");
     }
     catch (FormatException exception2)
     {
         innerException = exception2;
     }
     catch (OverflowException exception3)
     {
         innerException = exception3;
     }
     if (innerException != null)
     {
         throw deserializer.NewXmlException(Serialization.InvalidPrimitiveType, innerException, new object[] { typeof(ulong).FullName });
     }
     deserializer.ReadEndElement();
     try
     {
         type = (ProgressRecordType) Enum.Parse(typeof(ProgressRecordType), str3, true);
     }
     catch (ArgumentException exception4)
     {
         throw deserializer.NewXmlException(Serialization.InvalidPrimitiveType, exception4, new object[] { typeof(ProgressRecord).FullName });
     }
     try
     {
         ProgressRecord record = new ProgressRecord(activityId, activity, statusDescription);
         if (!string.IsNullOrEmpty(str2))
         {
             record.CurrentOperation = str2;
         }
         record.ParentActivityId = num2;
         record.PercentComplete = num3;
         record.RecordType = type;
         record.SecondsRemaining = num4;
         obj3 = record;
     }
     catch (ArgumentException exception5)
     {
         throw deserializer.NewXmlException(Serialization.InvalidPrimitiveType, exception5, new object[] { typeof(ProgressRecord).FullName });
     }
     return obj3;
 }