// Token: 0x06000D02 RID: 3330 RVA: 0x00036364 File Offset: 0x00034564
        private FileSetItem GetNewestItem(Folder folder, string fileSetId)
        {
            List <FileSetItem> allItems    = this.GetAllItems(folder, fileSetId);
            FileSetItem        fileSetItem = null;

            foreach (FileSetItem fileSetItem2 in allItems)
            {
                if (fileSetItem == null || fileSetItem2.Time > fileSetItem.Time)
                {
                    fileSetItem = fileSetItem2;
                }
            }
            if (fileSetItem != null)
            {
                this.tracer.TraceDebug((long)this.GetHashCode(), "Found {0} items for fileSetId='{1}'in folder '{2}'. Most recent item is {3} from {4}", new object[]
                {
                    allItems.Count,
                    fileSetId,
                    this.folderName,
                    fileSetItem.Id,
                    fileSetItem.Time
                });
            }
            return(fileSetItem);
        }
        // Token: 0x06000CFE RID: 3326 RVA: 0x00035F6C File Offset: 0x0003416C
        public Stream GetSingleFile(FileSetItem fileSetItem, string fileName, MailboxSession mailboxSession)
        {
            MemoryStream memoryStream = null;

            try
            {
                using (Item item = Item.Bind(mailboxSession, fileSetItem.Id))
                {
                    foreach (AttachmentHandle handle in item.IAttachmentCollection)
                    {
                        using (IAttachment attachment = item.IAttachmentCollection.OpenIAttachment(handle))
                        {
                            if (string.Equals(fileName, attachment[AttachmentSchema.AttachLongFileName] as string, StringComparison.OrdinalIgnoreCase))
                            {
                                IStreamAttachment attachment2 = attachment as IStreamAttachment;
                                memoryStream = new MemoryStream();
                                this.ReadAttachmentIntoStreamAndValidateHash(attachment2, new NoCloseStream(memoryStream), new Action(MailboxFileStore.NeverAbort));
                                memoryStream.Seek(0L, SeekOrigin.Begin);
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
                if (memoryStream != null)
                {
                    memoryStream.Dispose();
                    memoryStream = null;
                }
                throw;
            }
            return(memoryStream);
        }
        // Token: 0x06000CFB RID: 3323 RVA: 0x00035C68 File Offset: 0x00033E68
        public List <string> Download(FileSetItem fileSetItem, MailboxSession mailboxSession, string tempFolderPath, bool ignoreDuplicateFiles, Action abortFileOperation)
        {
            bool   flag = false;
            string text = Path.Combine(tempFolderPath, this.folderName + Path.GetRandomFileName());

            Directory.CreateDirectory(text);
            List <string> list = new List <string>(100);
            List <string> result;

            try
            {
                this.tracer.TraceDebug <string, string, string>((long)this.GetHashCode(), "Downloading files for fileSetId='{0}' from mailbox folder '{1}' in filesystem folder {2}", fileSetItem.Name, this.folderName, text);
                Stopwatch stopwatch = Stopwatch.StartNew();
                using (Item item = Item.Bind(mailboxSession, fileSetItem.Id))
                {
                    foreach (AttachmentHandle attachmentHandle in item.IAttachmentCollection)
                    {
                        this.tracer.TraceDebug <int>((long)this.GetHashCode(), "Handling attachment id:'{0}'", attachmentHandle.AttachNumber);
                        using (IAttachment attachment = item.IAttachmentCollection.OpenIAttachment(attachmentHandle))
                        {
                            IStreamAttachment streamAttachment = attachment as IStreamAttachment;
                            if (streamAttachment != null)
                            {
                                string text2 = this.DownloadSingleFile(streamAttachment, text, ignoreDuplicateFiles, abortFileOperation);
                                if (text2 != null)
                                {
                                    this.tracer.TraceDebug <int, string>((long)this.GetHashCode(), "Successfully downloaded attachment '{0}' into file {1}", attachmentHandle.AttachNumber, text2);
                                    list.Add(text2);
                                }
                                else
                                {
                                    this.tracer.TraceError <int>((long)this.GetHashCode(), "Ignoring attachment '{0}' because could not download its content", attachmentHandle.AttachNumber);
                                }
                            }
                            else
                            {
                                this.tracer.TraceError <int>((long)this.GetHashCode(), "Ignoring attachment '{0}' because it is not stream attachment", attachmentHandle.AttachNumber);
                            }
                        }
                    }
                }
                stopwatch.Stop();
                this.tracer.TraceDebug <int, long>((long)this.GetHashCode(), "Downloaded '{0}' files. Downloaded elapsed time: {1}ms", list.Count, stopwatch.ElapsedMilliseconds);
                flag   = true;
                result = list;
            }
            finally
            {
                if (!flag || list == null || list.Count == 0)
                {
                    this.tracer.TraceDebug <string>((long)this.GetHashCode(), "Download failed and temporary folder '{0}' needs to be removed", text);
                    this.DeleteFolder(text);
                }
            }
            return(result);
        }
 // Token: 0x06000CFA RID: 3322 RVA: 0x00035C4C File Offset: 0x00033E4C
 public List <string> Download(FileSetItem fileSetItem, MailboxSession mailboxSession)
 {
     return(this.Download(fileSetItem, mailboxSession, Path.GetTempPath(), false, new Action(MailboxFileStore.NeverAbort)));
 }