using System; using System.Collections; using System.IO; using System.Text; namespace System.Resources { // Token: 0x02000289 RID: 649 internal class Win32VersionResource : Win32Resource { // Token: 0x060020B4 RID: 8372 RVA: 0x00077CDC File Offset: 0x00075EDC public Win32VersionResource(int id, int language, bool compilercontext) : base(Win32ResourceType.RT_VERSION, id, language) { this.signature = (long)((ulong)(-17890115)); this.struct_version = 65536; this.file_flags_mask = 63; this.file_flags = 0; this.file_os = 4; this.file_type = 2; this.file_subtype = 0; this.file_date = 0L; this.file_lang = ((!compilercontext) ? 127 : 0); this.file_codepage = 1200; this.properties = new Hashtable(); string text = ((!compilercontext) ? " " : string.Empty); foreach (string text2 in this.WellKnownProperties) { this.properties[text2] = text; } this.LegalCopyright = " "; this.FileDescription = " "; } // Token: 0x1700061C RID: 1564 // (get) Token: 0x060020B5 RID: 8373 RVA: 0x00077E04 File Offset: 0x00076004 // (set) Token: 0x060020B6 RID: 8374 RVA: 0x00077E94 File Offset: 0x00076094 public string Version { get { return string.Concat(new object[] { string.Empty, this.file_version >> 48, ".", (this.file_version >> 32) & 65535L, ".", (this.file_version >> 16) & 65535L, ".", this.file_version & 65535L }); } set { long[] array = new long[4]; if (value != null) { string[] array2 = value.Split(new char[] { '.' }); try { for (int i = 0; i < array2.Length; i++) { if (i < array.Length) { array[i] = (long)int.Parse(array2[i]); } } } catch (FormatException) { } } this.file_version = (array[0] << 48) | (array[1] << 32) | ((array[2] << 16) + array[3]); this.properties["FileVersion"] = this.Version; } } // Token: 0x1700061D RID: 1565 public virtual string this[string key] { set { this.properties[key] = value; } } // Token: 0x1700061E RID: 1566 // (get) Token: 0x060020B8 RID: 8376 RVA: 0x00077F54 File Offset: 0x00076154 // (set) Token: 0x060020B9 RID: 8377 RVA: 0x00077F6C File Offset: 0x0007616C public virtual string Comments { get { return (string)this.properties["Comments"]; } set { this.properties["Comments"] = ((!(value == string.Empty)) ? value : " "); } } // Token: 0x1700061F RID: 1567 // (get) Token: 0x060020BA RID: 8378 RVA: 0x00077F9C File Offset: 0x0007619C // (set) Token: 0x060020BB RID: 8379 RVA: 0x00077FB4 File Offset: 0x000761B4 public virtual string CompanyName { get { return (string)this.properties["CompanyName"]; } set { this.properties["CompanyName"] = ((!(value == string.Empty)) ? value : " "); } } // Token: 0x17000620 RID: 1568 // (get) Token: 0x060020BC RID: 8380 RVA: 0x00077FE4 File Offset: 0x000761E4 // (set) Token: 0x060020BD RID: 8381 RVA: 0x00077FFC File Offset: 0x000761FC public virtual string LegalCopyright { get { return (string)this.properties["LegalCopyright"]; } set { this.properties["LegalCopyright"] = ((!(value == string.Empty)) ? value : " "); } } // Token: 0x17000621 RID: 1569 // (get) Token: 0x060020BE RID: 8382 RVA: 0x0007802C File Offset: 0x0007622C // (set) Token: 0x060020BF RID: 8383 RVA: 0x00078044 File Offset: 0x00076244 public virtual string LegalTrademarks { get { return (string)this.properties["LegalTrademarks"]; } set { this.properties["LegalTrademarks"] = ((!(value == string.Empty)) ? value : " "); } } // Token: 0x17000622 RID: 1570 // (get) Token: 0x060020C0 RID: 8384 RVA: 0x00078074 File Offset: 0x00076274 // (set) Token: 0x060020C1 RID: 8385 RVA: 0x0007808C File Offset: 0x0007628C public virtual string OriginalFilename { get { return (string)this.properties["OriginalFilename"]; } set { this.properties["OriginalFilename"] = ((!(value == string.Empty)) ? value : " "); } } // Token: 0x17000623 RID: 1571 // (get) Token: 0x060020C2 RID: 8386 RVA: 0x000780BC File Offset: 0x000762BC // (set) Token: 0x060020C3 RID: 8387 RVA: 0x000780D4 File Offset: 0x000762D4 public virtual string ProductName { get { return (string)this.properties["ProductName"]; } set { this.properties["ProductName"] = ((!(value == string.Empty)) ? value : " "); } } // Token: 0x17000624 RID: 1572 // (get) Token: 0x060020C4 RID: 8388 RVA: 0x00078104 File Offset: 0x00076304 // (set) Token: 0x060020C5 RID: 8389 RVA: 0x0007811C File Offset: 0x0007631C public virtual string ProductVersion { get { return (string)this.properties["ProductVersion"]; } set { if (value == null || value.Length == 0) { value = " "; } long[] array = new long[4]; string[] array2 = value.Split(new char[] { '.' }); try { for (int i = 0; i < array2.Length; i++) { if (i < array.Length) { array[i] = (long)int.Parse(array2[i]); } } } catch (FormatException) { } this.properties["ProductVersion"] = value; this.product_version = (array[0] << 48) | (array[1] << 32) | ((array[2] << 16) + array[3]); } } // Token: 0x17000625 RID: 1573 // (get) Token: 0x060020C6 RID: 8390 RVA: 0x000781DC File Offset: 0x000763DC // (set) Token: 0x060020C7 RID: 8391 RVA: 0x000781F4 File Offset: 0x000763F4 public virtual string InternalName { get { return (string)this.properties["InternalName"]; } set { this.properties["InternalName"] = ((!(value == string.Empty)) ? value : " "); } } // Token: 0x17000626 RID: 1574 // (get) Token: 0x060020C8 RID: 8392 RVA: 0x00078224 File Offset: 0x00076424 // (set) Token: 0x060020C9 RID: 8393 RVA: 0x0007823C File Offset: 0x0007643C public virtual string FileDescription { get { return (string)this.properties["FileDescription"]; } set { this.properties["FileDescription"] = ((!(value == string.Empty)) ? value : " "); } } // Token: 0x17000627 RID: 1575 // (get) Token: 0x060020CA RID: 8394 RVA: 0x0007826C File Offset: 0x0007646C // (set) Token: 0x060020CB RID: 8395 RVA: 0x00078274 File Offset: 0x00076474 public virtual int FileLanguage { get { return this.file_lang; } set { this.file_lang = value; } } // Token: 0x17000628 RID: 1576 // (get) Token: 0x060020CC RID: 8396 RVA: 0x00078280 File Offset: 0x00076480 // (set) Token: 0x060020CD RID: 8397 RVA: 0x00078298 File Offset: 0x00076498 public virtual string FileVersion { get { return (string)this.properties["FileVersion"]; } set { if (value == null || value.Length == 0) { value = " "; } long[] array = new long[4]; string[] array2 = value.Split(new char[] { '.' }); try { for (int i = 0; i < array2.Length; i++) { if (i < array.Length) { array[i] = (long)int.Parse(array2[i]); } } } catch (FormatException) { } this.properties["FileVersion"] = value; this.file_version = (array[0] << 48) | (array[1] << 32) | ((array[2] << 16) + array[3]); } } // Token: 0x060020CE RID: 8398 RVA: 0x00078358 File Offset: 0x00076558 private void emit_padding(BinaryWriter w) { Stream baseStream = w.BaseStream; if (baseStream.Position % 4L != 0L) { w.Write(0); } } // Token: 0x060020CF RID: 8399 RVA: 0x00078384 File Offset: 0x00076584 private void patch_length(BinaryWriter w, long len_pos) { Stream baseStream = w.BaseStream; long position = baseStream.Position; baseStream.Position = len_pos; w.Write((short)(position - len_pos)); baseStream.Position = position; } // Token: 0x060020D0 RID: 8400 RVA: 0x000783B8 File Offset: 0x000765B8 public override void WriteTo(Stream ms) { using (BinaryWriter binaryWriter = new BinaryWriter(ms, Encoding.Unicode)) { binaryWriter.Write(0); binaryWriter.Write(52); binaryWriter.Write(0); binaryWriter.Write("VS_VERSION_INFO".ToCharArray()); binaryWriter.Write(0); this.emit_padding(binaryWriter); binaryWriter.Write((uint)this.signature); binaryWriter.Write(this.struct_version); binaryWriter.Write((int)(this.file_version >> 32)); binaryWriter.Write((int)(this.file_version & (long)((ulong)(-1)))); binaryWriter.Write((int)(this.product_version >> 32)); binaryWriter.Write((int)(this.product_version & (long)((ulong)(-1)))); binaryWriter.Write(this.file_flags_mask); binaryWriter.Write(this.file_flags); binaryWriter.Write(this.file_os); binaryWriter.Write(this.file_type); binaryWriter.Write(this.file_subtype); binaryWriter.Write((int)(this.file_date >> 32)); binaryWriter.Write((int)(this.file_date & (long)((ulong)(-1)))); this.emit_padding(binaryWriter); long position = ms.Position; binaryWriter.Write(0); binaryWriter.Write(0); binaryWriter.Write(1); binaryWriter.Write("VarFileInfo".ToCharArray()); binaryWriter.Write(0); if (ms.Position % 4L != 0L) { binaryWriter.Write(0); } long position2 = ms.Position; binaryWriter.Write(0); binaryWriter.Write(4); binaryWriter.Write(0); binaryWriter.Write("Translation".ToCharArray()); binaryWriter.Write(0); if (ms.Position % 4L != 0L) { binaryWriter.Write(0); } binaryWriter.Write((short)this.file_lang); binaryWriter.Write((short)this.file_codepage); this.patch_length(binaryWriter, position2); this.patch_length(binaryWriter, position); long position3 = ms.Position; binaryWriter.Write(0); binaryWriter.Write(0); binaryWriter.Write(1); binaryWriter.Write("StringFileInfo".ToCharArray()); this.emit_padding(binaryWriter); long position4 = ms.Position; binaryWriter.Write(0); binaryWriter.Write(0); binaryWriter.Write(1); binaryWriter.Write(string.Format("{0:x4}{1:x4}", this.file_lang, this.file_codepage).ToCharArray()); this.emit_padding(binaryWriter); foreach (object obj in this.properties.Keys) { string text = (string)obj; string text2 = (string)this.properties[text]; long position5 = ms.Position; binaryWriter.Write(0); binaryWriter.Write((short)(text2.ToCharArray().Length + 1)); binaryWriter.Write(1); binaryWriter.Write(text.ToCharArray()); binaryWriter.Write(0); this.emit_padding(binaryWriter); binaryWriter.Write(text2.ToCharArray()); binaryWriter.Write(0); this.emit_padding(binaryWriter); this.patch_length(binaryWriter, position5); } this.patch_length(binaryWriter, position4); this.patch_length(binaryWriter, position3); this.patch_length(binaryWriter, 0L); } } // Token: 0x04000BA8 RID: 2984 public string[] WellKnownProperties = new string[] { "Comments", "CompanyName", "FileVersion", "InternalName", "LegalTrademarks", "OriginalFilename", "ProductName", "ProductVersion" }; // Token: 0x04000BA9 RID: 2985 private long signature; // Token: 0x04000BAA RID: 2986 private int struct_version; // Token: 0x04000BAB RID: 2987 private long file_version; // Token: 0x04000BAC RID: 2988 private long product_version; // Token: 0x04000BAD RID: 2989 private int file_flags_mask; // Token: 0x04000BAE RID: 2990 private int file_flags; // Token: 0x04000BAF RID: 2991 private int file_os; // Token: 0x04000BB0 RID: 2992 private int file_type; // Token: 0x04000BB1 RID: 2993 private int file_subtype; // Token: 0x04000BB2 RID: 2994 private long file_date; // Token: 0x04000BB3 RID: 2995 private int file_lang; // Token: 0x04000BB4 RID: 2996 private int file_codepage; // Token: 0x04000BB5 RID: 2997 private Hashtable properties; } }