Skip to content
This repository was archived by the owner on Mar 26, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 6 additions & 85 deletions StoreLib/Models/FE3.cs
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using System.IO;
using System.Text;
using System.Xml.XPath;

namespace StoreLib.Models
{
Expand All@@ -9,95 +11,14 @@ public class PackageInstance
public string PackageMoniker;
public Uri PackageUri;
public PackageType PackageType;
public ApplicabilityBlob ApplicabilityBlob;
public String UpdateId;

public PackageInstance(string PackageMoniker, Uri PackageUri, PackageType PackageType, ApplicabilityBlob ApplicabilityBlob, String UpdateId)
public PackageInstance(string PackageMoniker, Uri PackageUri, PackageType packageType)
{
this.PackageMoniker = PackageMoniker;
this.PackageUri = PackageUri;
this.PackageType = PackageType;
this.ApplicabilityBlob = ApplicabilityBlob;
this.UpdateId = UpdateId;
this.PackageType = packageType;
}
}

// Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse);
public class ContentTargetPlatform
{
[JsonProperty("platform.maxVersionTested")]
public long PlatformMaxVersionTested{get; set}

[JsonProperty("platform.minVersion")]
public long PlatformMinVersion{get; set}

[JsonProperty("platform.target")]
public int PlatformTarget{get; set}
}

public class Policy
{
[JsonProperty("category.first")]
public string CategoryFirst{get; set}

[JsonProperty("category.second")]
public string CategorySecond{get; set}

[JsonProperty("category.third")]
public string CategoryThird{get; set}

[JsonProperty("optOut.backupRestore")]
public bool OptOutBackupRestore{get; set}

[JsonProperty("optOut.removeableMedia")]
public bool OptOutRemoveableMedia{get; set}
}

public class ThirdPartyAppRating
{
[JsonProperty("level")]
public int Level{get; set}

[JsonProperty("systemId")]
public int SystemId{get; set}
}

public class Policy2
{
[JsonProperty("ageRating")]
public int AgeRating{get; set}

[JsonProperty("optOut.DVR")]
public bool OptOutDVR{get; set}

[JsonProperty("thirdPartyAppRatings")]
public List<ThirdPartyAppRating> ThirdPartyAppRatings{get; set}
}

public class ApplicabilityBlob
{
[JsonProperty("blob.version")]
public long BlobVersion{get; set}

[JsonProperty("content.isMain")]
public bool ContentIsMain{get; set}

[JsonProperty("content.packageId")]
public string ContentPackageId{get; set}

[JsonProperty("content.productId")]
public string ContentProductId{get; set}

[JsonProperty("content.targetPlatforms")]
public List<ContentTargetPlatform> ContentTargetPlatforms{get; set}

[JsonProperty("content.type")]
public int ContentType{get; set}

[JsonProperty("policy")]
public Policy Policy{get; set}

[JsonProperty("policy2")]
public Policy2 Policy2{get; set}

}
}
12 changes: 5 additions & 7 deletions StoreLib/Services/DisplayCatalogHandler.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -43,20 +43,18 @@ public static DisplayCatalogHandler ProductionConfig()
/// Returns an IList of Uris containing the direct download links for the product's apps and dependacies. (if it has any).
/// </summary>
/// <returns>IList of Direct File URLs</returns>
public async Task<IList<PackageInstance>> GetPackagesForProductAsync(string MSAToken = null)
public async Task<IList<PackageInstance>> GetPackagesForProductAsync()
{
string xml = await FE3Handler.SyncUpdatesAsync(ProductListing.Product.DisplaySkuAvailabilities[0].Sku.Properties.FulfillmentData.WuCategoryId, MSAToken);
string xml = await FE3Handler.SyncUpdatesAsync(ProductListing.Product.DisplaySkuAvailabilities[0].Sku.Properties.FulfillmentData.WuCategoryId);
IList<string> RevisionIDs;
IList<string> PackageNames;
IList<string> UpdateIDs;
FE3Handler.ProcessUpdateIDs(xml, out RevisionIDs, out PackageNames, out UpdateIDs);
IList<PackageInstance> PackageInstances = await FE3Handler.GetPackageInstancesAsync(xml);
IList<Uri> Files = await FE3Handler.GetFileUrlsAsync(UpdateIDs, RevisionIDs, MSAToken);
IList<PackageInstance> PackageInstances = await FE3Handler.GetPackageInstancesAsync(ProductListing.Product.DisplaySkuAvailabilities[0].Sku.Properties.FulfillmentData.WuCategoryId);
IList<Uri> Files = await FE3Handler.GetFileUrlsAsync(UpdateIDs, RevisionIDs);
foreach(PackageInstance package in PackageInstances)
{
int id = PackageInstances.IndexOf(package);
package.PackageUri = Files[id];
package.UpdateId = UpdateIDs[id];
package.PackageUri = Files[PackageInstances.IndexOf(package)];
}
return PackageInstances;
}
Expand Down
25 changes: 10 additions & 15 deletions StoreLib/Services/FE3Handler.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,24 +10,22 @@
using System.Threading.Tasks;
using System.Web;
using System.Xml;
using Newtonsoft.Json;


namespace StoreLib.Services
{
public static class FE3Handler
{
private static readonly MSHttpClient _httpClient = new MSHttpClient();
private static readonly String _msaToken = "<Device>dAA9AEUAdwBBAHcAQQBzAE4AMwBCAEEAQQBVADEAYgB5AHMAZQBtAGIAZQBEAFYAQwArADMAZgBtADcAbwBXAHkASAA3AGIAbgBnAEcAWQBtAEEAQQBMAGoAbQBqAFYAVQB2AFEAYwA0AEsAVwBFAC8AYwBDAEwANQBYAGUANABnAHYAWABkAGkAegBHAGwAZABjADEAZAAvAFcAeQAvAHgASgBQAG4AVwBRAGUAYwBtAHYAbwBjAGkAZwA5AGoAZABwAE4AawBIAG0AYQBzAHAAVABKAEwARAArAFAAYwBBAFgAbQAvAFQAcAA3AEgAagBzAEYANAA0AEgAdABsAC8AMQBtAHUAcgAwAFMAdQBtAG8AMABZAGEAdgBqAFIANwArADQAcABoAC8AcwA4ADEANgBFAFkANQBNAFIAbQBnAFIAQwA2ADMAQwBSAEoAQQBVAHYAZgBzADQAaQB2AHgAYwB5AEwAbAA2AHoAOABlAHgAMABrAFgAOQBPAHcAYQB0ADEAdQBwAFMAOAAxAEgANgA4AEEASABzAEoAegBnAFQAQQBMAG8AbgBBADIAWQBBAEEAQQBpAGcANQBJADMAUQAvAFYASABLAHcANABBAEIAcQA5AFMAcQBhADEAQgA4AGsAVQAxAGEAbwBLAEEAdQA0AHYAbABWAG4AdwBWADMAUQB6AHMATgBtAEQAaQBqAGgANQBkAEcAcgBpADgAQQBlAEUARQBWAEcAbQBXAGgASQBCAE0AUAAyAEQAVwA0ADMAZABWAGkARABUAHoAVQB0AHQARQBMAEgAaABSAGYAcgBhAGIAWgBsAHQAQQBUAEUATABmAHMARQBGAFUAYQBRAFMASgB4ADUAeQBRADgAagBaAEUAZQAyAHgANABCADMAMQB2AEIAMgBqAC8AUgBLAGEAWQAvAHEAeQB0AHoANwBUAHYAdAB3AHQAagBzADYAUQBYAEIAZQA4AHMAZwBJAG8AOQBiADUAQQBCADcAOAAxAHMANgAvAGQAUwBFAHgATgBEAEQAYQBRAHoAQQBYAFAAWABCAFkAdQBYAFEARQBzAE8AegA4AHQAcgBpAGUATQBiAEIAZQBUAFkAOQBiAG8AQgBOAE8AaQBVADcATgBSAEYAOQAzAG8AVgArAFYAQQBiAGgAcAAwAHAAUgBQAFMAZQBmAEcARwBPAHEAdwBTAGcANwA3AHMAaAA5AEoASABNAHAARABNAFMAbgBrAHEAcgAyAGYARgBpAEMAUABrAHcAVgBvAHgANgBuAG4AeABGAEQAbwBXAC8AYQAxAHQAYQBaAHcAegB5AGwATABMADEAMgB3AHUAYgBtADUAdQBtAHAAcQB5AFcAYwBLAFIAagB5AGgAMgBKAFQARgBKAFcANQBnAFgARQBJADUAcAA4ADAARwB1ADIAbgB4AEwAUgBOAHcAaQB3AHIANwBXAE0AUgBBAFYASwBGAFcATQBlAFIAegBsADkAVQBxAGcALwBwAFgALwB2AGUATAB3AFMAawAyAFMAUwBIAGYAYQBLADYAagBhAG8AWQB1AG4AUgBHAHIAOABtAGIARQBvAEgAbABGADYASgBDAGEAYQBUAEIAWABCAGMAdgB1AGUAQwBKAG8AOQA4AGgAUgBBAHIARwB3ADQAKwBQAEgAZQBUAGIATgBTAEUAWABYAHoAdgBaADYAdQBXADUARQBBAGYAZABaAG0AUwA4ADgAVgBKAGMAWgBhAEYASwA3AHgAeABnADAAdwBvAG4ANwBoADAAeABDADYAWgBCADAAYwBZAGoATAByAC8ARwBlAE8AegA5AEcANABRAFUASAA5AEUAawB5ADAAZAB5AEYALwByAGUAVQAxAEkAeQBpAGEAcABwAGgATwBQADgAUwAyAHQANABCAHIAUABaAFgAVAB2AEMAMABQADcAegBPACsAZgBHAGsAeABWAG0AKwBVAGYAWgBiAFEANQA1AHMAdwBFAD0AJgBwAD0A</Device>"

/// <summary>
/// Returns raw xml containing various (Revision, Update, Package) IDs and info.
/// </summary>
/// <param name="WuCategoryID"></param>
/// <returns></returns>
public static async Task<string> SyncUpdatesAsync(string WuCategoryID, string MSAToken)
public static async Task<string> SyncUpdatesAsync(string WuCategoryID)
{
HttpContent httpContent = new StringContent(String.Format(GetResourceTextFile("WUIDRequest.xml"), await GetCookieAsync(), WuCategoryID, MSAToken ?? _msaToken), Encoding.UTF8, "application/soap+xml"); //Load in the Xml for this FE3 request and format it a cookie and the provided WuCategoryID.
HttpContent httpContent = new StringContent(String.Format(GetResourceTextFile("WUIDRequest.xml"), await GetCookieAsync(), WuCategoryID), Encoding.UTF8, "application/soap+xml"); //Load in the Xml for this FE3 request and format it a cookie and the provided WuCategoryID.
HttpRequestMessage httpRequest = new HttpRequestMessage();
httpRequest.RequestUri = Endpoints.FE3Delivery;
httpRequest.Content = httpContent;
Expand All@@ -38,32 +36,29 @@ public static async Task<string> SyncUpdatesAsync(string WuCategoryID, string MS
return content;
}

public static async Task<IList<PackageInstance>> GetPackageInstancesAsync(string WuCategoryID, string MSAToken)
public static async Task<IList<PackageInstance>> GetPackageInstancesAsync(string WuCategoryID)
{
HttpContent httpContent = new StringContent(String.Format(GetResourceTextFile("WUIDRequest.xml"), await GetCookieAsync(), WuCategoryID, MSAToken ?? _msaToken), Encoding.UTF8, "application/soap+xml"); //Load in the Xml for this FE3 request and format it a cookie and the provided WuCategoryID.
IList<PackageInstance> PackageInstances = new List<PackageInstance>();
HttpContent httpContent = new StringContent(String.Format(GetResourceTextFile("WUIDRequest.xml"), await GetCookieAsync(), WuCategoryID), Encoding.UTF8, "application/soap+xml"); //Load in the Xml for this FE3 request and format it a cookie and the provided WuCategoryID.
HttpRequestMessage httpRequest = new HttpRequestMessage();
httpRequest.RequestUri = Endpoints.FE3Delivery;
httpRequest.Content = httpContent;
httpRequest.Method = HttpMethod.Post;
HttpResponseMessage httpResponse = await _httpClient.SendAsync(httpRequest, new System.Threading.CancellationToken());
string content = await httpResponse.Content.ReadAsStringAsync();
content = HttpUtility.HtmlDecode(content);
return await GetPackageInstancesAsync(content);
}

public static async Task<IList<PackageInstance>> GetPackageInstancesAsync(string content)
{
IList<PackageInstance> PackageInstances = new List<PackageInstance>();
XmlDocument doc = new XmlDocument();
doc.LoadXml(content);
XmlNodeList nodes = doc.GetElementsByTagName("AppxMetadata");
foreach(XmlNode node in nodes)
{
if(node.Attributes.Count >= 3)
{
PackageInstance package = new PackageInstance(node.Attributes.GetNamedItem("PackageMoniker").Value, new Uri("http://test.com"), Utilities.TypeHelpers.StringToPackageType(node.Attributes.GetNamedItem("PackageType").Value), JsonConvert.DeserializeObject<ApplicabilityBlob>(node.FirstChild.InnerText), "");
PackageInstance package = new PackageInstance(node.Attributes.GetNamedItem("PackageMoniker").Value, new Uri("http://test.com"), Utilities.TypeHelpers.StringToPackageType(node.Attributes.GetNamedItem("PackageType").Value));
PackageInstances.Add(package);
}


}
return PackageInstances;

Expand DownExpand Up@@ -116,13 +111,13 @@ public static void ProcessUpdateIDs(string Xml, out IList<string> RevisionIDs, o
/// <param name="UpdateIDs"></param>
/// <param name="RevisionIDs"></param>
/// <returns>IList of App Package Download Uris</returns>
public static async Task<IList<Uri>> GetFileUrlsAsync(IList<string> UpdateIDs, IList<string> RevisionIDs, string MSAToken)
public static async Task<IList<Uri>> GetFileUrlsAsync(IList<string> UpdateIDs, IList<string> RevisionIDs)
{
XmlDocument doc = new XmlDocument();
IList<Uri> uris = new List<Uri>();
foreach (string ID in UpdateIDs)
{
HttpContent httpContent = new StringContent(String.Format(GetResourceTextFile("FE3FileUrl.xml"), ID, RevisionIDs[UpdateIDs.IndexOf(ID)], MSAToken ?? _msaToken), Encoding.UTF8, "application/soap+xml");//Loading the request xml from a file to keep things nice and tidy.
HttpContent httpContent = new StringContent(String.Format(GetResourceTextFile("FE3FileUrl.xml"), ID, RevisionIDs[UpdateIDs.IndexOf(ID)]), Encoding.UTF8, "application/soap+xml");//Loading the request xml from a file to keep things nice and tidy.
HttpRequestMessage httpRequest = new HttpRequestMessage();
httpRequest.RequestUri = Endpoints.FE3DeliverySecured;
httpRequest.Content = httpContent;
Expand Down
2 changes: 1 addition & 1 deletion StoreLib/Xml/FE3FileUrl.xml
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wuws="http://schemas.microsoft.com/msus/2014/10/WindowsUpdateAuthorization">
<TicketType Name="MSA" Version="1.0" Policy="MBI_SSL">
{2}
<Device>dAA9AEUAdwBBAHcAQQBzAE4AMwBCAEEAQQBVADEAYgB5AHMAZQBtAGIAZQBEAFYAQwArADMAZgBtADcAbwBXAHkASAA3AGIAbgBnAEcAWQBtAEEAQQBQAHoANQBoAFoAaQBtAGYAYwA1AE0AbgBVADMAYwAvADQARgAyAEwAawBFAFkAKwAwADkAMABhAEwAUgBOAEYAUwBTAE0AeQB3AGsAZAAyAC8ARQBZADMAWQB1AFUAeQBzACsAWABDAFIARQBoAEUAUwA3AGcAeQBBAGgAawByAGUAZQBHAHUAOABSAG4AYwBWAEYAVgBiAFUAUgBYAE0AWgBMAEMATQBWAEcARABTAFYANgB2ADMAeQBJAE0AYwBXAEwARgBUAC8ATgBuAE4ATgBRAE0ARgArAHAAWgBuAHYAZABaADAAcwBOAGwAMABwAEEARAA4AHMAMgBDAGgAcgBiAE0AZQBoAGsATwB2AEEATgA0AHUATwAyAFUAVgAwAFcAagBLAG8ARABPAEsAagBJAHkAMABXAE4AMQBnAGUASABwAC8AVwBhAEwANABTAFkAVwBBADIAWQBBAEEAQQBqAFEAZwA5AGwAUQAwAFoATwA3AEMAWQBBAEIAagAyAHgAZwB0AFQATQBuAFUAdgBkAHQAYQBOAE0AbwBxAG4AYwB3AFUATABEAHIAQQBhAG0ATQA0ADMAKwBwAGEAMwA3AG4ANgBTAEsARwBBAHYAdwB1AEwAaQAzAEQAZAB4AEcAVAAvAFEAaQAzAEYAZQBTAEUAcgA3AGkANwBiAG8ANwBoAFUAKwB2AGkASQBtAHEAVABRAG4AKwA2AEQAMgB0AEUAZgBHAGMAZQBaADgAUgB1AGoAdAAzAFIAVQBkAHIAQwB5AC8ASgBOAFIAZwBRAGcATABWAHcANABGAEwAOQB6AEsAMwBMAE8AKwBTAHoARgA0AFQAQgBuADYAbwB6AEIAcABJAHQAYgBZAHAARwAxAE8ASwBtAEoAdwBDAHIANwBqAGEAUAA2AGoASwBlAGYAbQA3AFQASQBlAEQAegBOADIAcQBMAHUAMwB5AFIAOABIAE4ANABPAFMAeABWAGsATQA4AGIANgBkAEwAVgB6AHQANwBhAEYAdABsADIANABEAFcAUwB2AG0AVwBMAG8AKwArADMAbwA0ACsASQBGAHcAagBlAHYATABuADgAYgBjAGoARwBTAEEARgBlAFAAYQBtADUAcAA0ADQANQBlAEcAegBQAFAANABiAFMASAB2AEsAbwBQAFEASwBFAG4AUQBwAEoATQBKAFIAZAA4AEcAZgBNAG4AOQA1ADgAZgBtADYALwBzADcANgBYAHEAMgBSAGUAQQBIAGUAcwBvAHoAWQBOAHYAVABlADYAQQAvAHAATgBnAFoAWQAzAGkAYgAzAEcAaABuAFYAWgBUAGcAdAA1AG4AOQBWAGoAbABwAEMAawBZAHMAOAA1AGEAbQBSADcAdQAwAGgAZAByADkALwBYAEsANgBxAGkATQBFAC8ASwAwAEQAWgBnAEEASQBSAEYAUgBuAE4AQQAxAEUAZgB4AGcARABNAEIAWgBoAFUAbgBqAHgAMABwAHcANgBPAHgAYgB3AHgAMQA5AEgAcABIAE4AOAB0ACsAQgBoAC8AVABvAE0AVABKAHoANQAvAG8AcgBzAFcATwBDAGQARgB1AHIARAAzAHUAbABWAHQAMAB1AGkAegBHAE4AVABQAEkARABsAGkAcgBkAFUAbQBFAGkAbQA4AFMAdQAyAEMANQBuAHoAbwB1AGMARQBpAGIAZgBmAGYAWAA2AFIATwBMAHcATABsAFIAYwBoAFIAMABhAFkAWQA2AEIANgB2AEEAVgB4AHYAbgA5ADMATQBNAEwAawBaAEcAYQBQACsAdQBHACsAWgA1AEoALwBqAFAANwBWAC8ASwB1AFgAOQB4ADkAUABvADUAVABmAEkATwAxAHMAdwBFAD0AJgBwAD0A</Device>
</TicketType>
</wuws:WindowsUpdateTicketsToken>
</o:Security>
Expand Down
4 changes: 1 addition & 3 deletions StoreLib/Xml/WUIDRequest.xml
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wuws="http://schemas.microsoft.com/msus/2014/10/WindowsUpdateAuthorization">
<TicketType Name="MSA" Version="1.0" Policy="MBI_SSL">
{2}
<Device>dAA9AEUAdwBBAHcAQQBzAE4AMwBCAEEAQQBVADEAYgB5AHMAZQBtAGIAZQBEAFYAQwArADMAZgBtADcAbwBXAHkASAA3AGIAbgBnAEcAWQBtAEEAQQBMAGoAbQBqAFYAVQB2AFEAYwA0AEsAVwBFAC8AYwBDAEwANQBYAGUANABnAHYAWABkAGkAegBHAGwAZABjADEAZAAvAFcAeQAvAHgASgBQAG4AVwBRAGUAYwBtAHYAbwBjAGkAZwA5AGoAZABwAE4AawBIAG0AYQBzAHAAVABKAEwARAArAFAAYwBBAFgAbQAvAFQAcAA3AEgAagBzAEYANAA0AEgAdABsAC8AMQBtAHUAcgAwAFMAdQBtAG8AMABZAGEAdgBqAFIANwArADQAcABoAC8AcwA4ADEANgBFAFkANQBNAFIAbQBnAFIAQwA2ADMAQwBSAEoAQQBVAHYAZgBzADQAaQB2AHgAYwB5AEwAbAA2AHoAOABlAHgAMABrAFgAOQBPAHcAYQB0ADEAdQBwAFMAOAAxAEgANgA4AEEASABzAEoAegBnAFQAQQBMAG8AbgBBADIAWQBBAEEAQQBpAGcANQBJADMAUQAvAFYASABLAHcANABBAEIAcQA5AFMAcQBhADEAQgA4AGsAVQAxAGEAbwBLAEEAdQA0AHYAbABWAG4AdwBWADMAUQB6AHMATgBtAEQAaQBqAGgANQBkAEcAcgBpADgAQQBlAEUARQBWAEcAbQBXAGgASQBCAE0AUAAyAEQAVwA0ADMAZABWAGkARABUAHoAVQB0AHQARQBMAEgAaABSAGYAcgBhAGIAWgBsAHQAQQBUAEUATABmAHMARQBGAFUAYQBRAFMASgB4ADUAeQBRADgAagBaAEUAZQAyAHgANABCADMAMQB2AEIAMgBqAC8AUgBLAGEAWQAvAHEAeQB0AHoANwBUAHYAdAB3AHQAagBzADYAUQBYAEIAZQA4AHMAZwBJAG8AOQBiADUAQQBCADcAOAAxAHMANgAvAGQAUwBFAHgATgBEAEQAYQBRAHoAQQBYAFAAWABCAFkAdQBYAFEARQBzAE8AegA4AHQAcgBpAGUATQBiAEIAZQBUAFkAOQBiAG8AQgBOAE8AaQBVADcATgBSAEYAOQAzAG8AVgArAFYAQQBiAGgAcAAwAHAAUgBQAFMAZQBmAEcARwBPAHEAdwBTAGcANwA3AHMAaAA5AEoASABNAHAARABNAFMAbgBrAHEAcgAyAGYARgBpAEMAUABrAHcAVgBvAHgANgBuAG4AeABGAEQAbwBXAC8AYQAxAHQAYQBaAHcAegB5AGwATABMADEAMgB3AHUAYgBtADUAdQBtAHAAcQB5AFcAYwBLAFIAagB5AGgAMgBKAFQARgBKAFcANQBnAFgARQBJADUAcAA4ADAARwB1ADIAbgB4AEwAUgBOAHcAaQB3AHIANwBXAE0AUgBBAFYASwBGAFcATQBlAFIAegBsADkAVQBxAGcALwBwAFgALwB2AGUATAB3AFMAawAyAFMAUwBIAGYAYQBLADYAagBhAG8AWQB1AG4AUgBHAHIAOABtAGIARQBvAEgAbABGADYASgBDAGEAYQBUAEIAWABCAGMAdgB1AGUAQwBKAG8AOQA4AGgAUgBBAHIARwB3ADQAKwBQAEgAZQBUAGIATgBTAEUAWABYAHoAdgBaADYAdQBXADUARQBBAGYAZABaAG0AUwA4ADgAVgBKAGMAWgBhAEYASwA3AHgAeABnADAAdwBvAG4ANwBoADAAeABDADYAWgBCADAAYwBZAGoATAByAC8ARwBlAE8AegA5AEcANABRAFUASAA5AEUAawB5ADAAZAB5AEYALwByAGUAVQAxAEkAeQBpAGEAcABwAGgATwBQADgAUwAyAHQANABCAHIAUABaAFgAVAB2AEMAMABQADcAegBPACsAZgBHAGsAeABWAG0AKwBVAGYAWgBiAFEANQA1AHMAdwBFAD0AJgBwAD0A</Device>
</TicketType>
</wuws:WindowsUpdateTicketsToken>
</o:Security>
Expand All@@ -39,7 +39,6 @@
<int>544</int>
<int>549</int>
<int>2359974</int>
<int>2359977</int>
<int>5169044</int>
<int>8788830</int>
<int>23110993</int>
Expand DownExpand Up@@ -70,7 +69,6 @@
<int>130040031</int>
<int>132387090</int>
<int>132393049</int>
<int>133399034</int>
<int>138537048</int>
<int>140377312</int>
<int>143747671</int>
Expand Down