public void ReadRegionPageTotalInfo(PageTotalInfo pageTotalInfo)
 {
     if (this.m_regionPageTotalInfoOffset > 0)
     {
         this.BinaryReader.BaseStream.Seek(this.m_regionPageTotalInfoOffset, SeekOrigin.Begin);
         if (this.BinaryReader.ReadBoolean())
         {
             bool isCalculationDone = this.BinaryReader.ReadBoolean();
             bool isCounting        = this.BinaryReader.ReadBoolean();
             int  num = this.BinaryReader.ReadInt32();
             List <KeyValuePair <int, string> > list = new List <KeyValuePair <int, string> >(num);
             for (int i = 0; i < num; i++)
             {
                 int    key   = this.BinaryReader.ReadInt32();
                 string value = this.BinaryReader.ReadString();
                 list.Add(new KeyValuePair <int, string>(key, value));
             }
             num = this.BinaryReader.ReadInt32();
             List <KeyValuePair <int, int> > list2 = new List <KeyValuePair <int, int> >(num);
             for (int j = 0; j < num; j++)
             {
                 int key2   = this.BinaryReader.ReadInt32();
                 int value2 = this.BinaryReader.ReadInt32();
                 list2.Add(new KeyValuePair <int, int>(key2, value2));
             }
             pageTotalInfo.SetupPageTotalInfo(isCalculationDone, isCounting, list2, list);
         }
     }
 }
 public void SavePaginationMetadata(bool reportDone, PageTotalInfo pageTotalInfo)
 {
     if (this.m_stream != null && !this.m_reportDone && this.m_newPagesMetadata)
     {
         this.m_reportDone = reportDone;
         this.BinaryWriter.BaseStream.Seek(this.m_offsetLastPage, SeekOrigin.Begin);
         this.BinaryWriter.Write(this.m_reportDone);
         this.BinaryWriter.Write(this.m_metadataPages.Count);
         for (int i = 0; i < this.m_metadataPages.Count; i++)
         {
             this.BinaryWriter.Write(this.m_metadataPages[i]);
         }
         this.m_regionPageTotalInfoOffset = this.BinaryWriter.BaseStream.Position;
         if (pageTotalInfo == null)
         {
             this.BinaryWriter.Write(false);
         }
         else
         {
             this.BinaryWriter.Write(true);
             this.BinaryWriter.Write(pageTotalInfo.CalculationDone);
             this.BinaryWriter.Write(pageTotalInfo.IsCounting);
             List <KeyValuePair <int, string> > pageNameList = pageTotalInfo.GetPageNameList();
             this.BinaryWriter.Write(pageNameList.Count);
             foreach (KeyValuePair <int, string> item in pageNameList)
             {
                 this.BinaryWriter.Write(item.Key);
                 this.BinaryWriter.Write(item.Value);
             }
             List <KeyValuePair <int, int> > pageNumberList = pageTotalInfo.GetPageNumberList();
             this.BinaryWriter.Write(pageNumberList.Count);
             foreach (KeyValuePair <int, int> item2 in pageNumberList)
             {
                 this.BinaryWriter.Write(item2.Key);
                 this.BinaryWriter.Write(item2.Value);
             }
         }
         this.BinaryWriter.Write(this.m_regionPageTotalInfoOffset);
         this.BinaryWriter.Flush();
         this.m_newPagesMetadata = false;
     }
 }