diff --git a/FModel/Parser/AccessCode.cs b/FModel/Parser/AccessCode.cs
new file mode 100644
index 00000000..beb9d7e3
--- /dev/null
+++ b/FModel/Parser/AccessCode.cs
@@ -0,0 +1,52 @@
+//
+//
+// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
+//
+// using Parser;
+//
+// var accessCode = AccessCode.FromJson(jsonString);
+
+namespace FModel.Parser.Access.Code
+{
+ using System;
+ using System.Collections.Generic;
+
+ using System.Globalization;
+ using Newtonsoft.Json;
+ using Newtonsoft.Json.Converters;
+
+ public partial class AccessCode
+ {
+ [JsonProperty("expiresInSeconds", NullValueHandling = NullValueHandling.Ignore)]
+ public long? ExpiresInSeconds { get; set; }
+
+ [JsonProperty("code", NullValueHandling = NullValueHandling.Ignore)]
+ public string Code { get; set; }
+
+ [JsonProperty("creatingClientId", NullValueHandling = NullValueHandling.Ignore)]
+ public string CreatingClientId { get; set; }
+ }
+
+ public partial class AccessCode
+ {
+ public static AccessCode FromJson(string json) => JsonConvert.DeserializeObject(json, FModel.Parser.Access.Code.Converter.Settings);
+ }
+
+ public static class Serialize
+ {
+ public static string ToJson(this AccessCode self) => JsonConvert.SerializeObject(self, FModel.Parser.Access.Code.Converter.Settings);
+ }
+
+ internal static class Converter
+ {
+ public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
+ {
+ MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
+ DateParseHandling = DateParseHandling.None,
+ Converters =
+ {
+ new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
+ },
+ };
+ }
+}
diff --git a/FModel/Parser/AccessToken.cs b/FModel/Parser/AccessToken.cs
new file mode 100644
index 00000000..35a5b641
--- /dev/null
+++ b/FModel/Parser/AccessToken.cs
@@ -0,0 +1,97 @@
+//
+//
+// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
+//
+// using Parser;
+//
+// var accessToken = AccessToken.FromJson(jsonString);
+
+namespace FModel.Parser.Access
+{
+ using System;
+ using System.Collections.Generic;
+
+ using System.Globalization;
+ using Newtonsoft.Json;
+ using Newtonsoft.Json.Converters;
+
+ public partial class AccessToken
+ {
+ [JsonProperty("access_token", NullValueHandling = NullValueHandling.Ignore)]
+ public string AccessTokenAccessToken { get; set; }
+
+ [JsonProperty("expires_in", NullValueHandling = NullValueHandling.Ignore)]
+ public long? ExpiresIn { get; set; }
+
+ [JsonProperty("expires_at", NullValueHandling = NullValueHandling.Ignore)]
+ public DateTimeOffset? ExpiresAt { get; set; }
+
+ [JsonProperty("token_type", NullValueHandling = NullValueHandling.Ignore)]
+ public string TokenType { get; set; }
+
+ [JsonProperty("refresh_token", NullValueHandling = NullValueHandling.Ignore)]
+ public string RefreshToken { get; set; }
+
+ [JsonProperty("refresh_expires", NullValueHandling = NullValueHandling.Ignore)]
+ public long? RefreshExpires { get; set; }
+
+ [JsonProperty("refresh_expires_at", NullValueHandling = NullValueHandling.Ignore)]
+ public DateTimeOffset? RefreshExpiresAt { get; set; }
+
+ [JsonProperty("account_id", NullValueHandling = NullValueHandling.Ignore)]
+ public string AccountId { get; set; }
+
+ [JsonProperty("client_id", NullValueHandling = NullValueHandling.Ignore)]
+ public string ClientId { get; set; }
+
+ [JsonProperty("internal_client", NullValueHandling = NullValueHandling.Ignore)]
+ public bool? InternalClient { get; set; }
+
+ [JsonProperty("client_service", NullValueHandling = NullValueHandling.Ignore)]
+ public string ClientService { get; set; }
+
+ [JsonProperty("lastPasswordValidation", NullValueHandling = NullValueHandling.Ignore)]
+ public DateTimeOffset? LastPasswordValidation { get; set; }
+
+ [JsonProperty("perms", NullValueHandling = NullValueHandling.Ignore)]
+ public Perm[] Perms { get; set; }
+
+ [JsonProperty("app", NullValueHandling = NullValueHandling.Ignore)]
+ public string App { get; set; }
+
+ [JsonProperty("in_app_id", NullValueHandling = NullValueHandling.Ignore)]
+ public string InAppId { get; set; }
+ }
+
+ public partial class Perm
+ {
+ [JsonProperty("resource", NullValueHandling = NullValueHandling.Ignore)]
+ public string Resource { get; set; }
+
+ [JsonProperty("action", NullValueHandling = NullValueHandling.Ignore)]
+ public long? Action { get; set; }
+ }
+
+ public partial class AccessToken
+ {
+ public static AccessToken FromJson(string json) => JsonConvert.DeserializeObject(json, FModel.Parser.Access.Converter.Settings);
+ }
+
+ public static class Serialize
+ {
+ public static string ToJson(this AccessToken self) => JsonConvert.SerializeObject(self, FModel.Parser.Access.Converter.Settings);
+ }
+
+ internal static class Converter
+ {
+ public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
+ {
+ MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
+ DateParseHandling = DateParseHandling.None,
+ Converters =
+ {
+ new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
+ },
+ };
+ }
+}
diff --git a/FModel/Parser/ExchangeToken.cs b/FModel/Parser/ExchangeToken.cs
new file mode 100644
index 00000000..edfe3f77
--- /dev/null
+++ b/FModel/Parser/ExchangeToken.cs
@@ -0,0 +1,94 @@
+//
+//
+// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
+//
+// using Parser3;
+//
+// var exchangeToken = ExchangeToken.FromJson(jsonString);
+
+namespace FModel.Parser.Exchange
+{
+ using System;
+ using System.Collections.Generic;
+
+ using System.Globalization;
+ using Newtonsoft.Json;
+ using Newtonsoft.Json.Converters;
+
+ public partial class ExchangeToken
+ {
+ [JsonProperty("access_token", NullValueHandling = NullValueHandling.Ignore)]
+ public string AccessToken { get; set; }
+
+ [JsonProperty("expires_in", NullValueHandling = NullValueHandling.Ignore)]
+ public long? ExpiresIn { get; set; }
+
+ [JsonProperty("expires_at", NullValueHandling = NullValueHandling.Ignore)]
+ public DateTimeOffset? ExpiresAt { get; set; }
+
+ [JsonProperty("token_type", NullValueHandling = NullValueHandling.Ignore)]
+ public string TokenType { get; set; }
+
+ [JsonProperty("refresh_token", NullValueHandling = NullValueHandling.Ignore)]
+ public string RefreshToken { get; set; }
+
+ [JsonProperty("refresh_expires", NullValueHandling = NullValueHandling.Ignore)]
+ public long? RefreshExpires { get; set; }
+
+ [JsonProperty("refresh_expires_at", NullValueHandling = NullValueHandling.Ignore)]
+ public DateTimeOffset? RefreshExpiresAt { get; set; }
+
+ [JsonProperty("account_id", NullValueHandling = NullValueHandling.Ignore)]
+ public string AccountId { get; set; }
+
+ [JsonProperty("client_id", NullValueHandling = NullValueHandling.Ignore)]
+ public string ClientId { get; set; }
+
+ [JsonProperty("internal_client", NullValueHandling = NullValueHandling.Ignore)]
+ public bool? InternalClient { get; set; }
+
+ [JsonProperty("client_service", NullValueHandling = NullValueHandling.Ignore)]
+ public string ClientService { get; set; }
+
+ [JsonProperty("perms", NullValueHandling = NullValueHandling.Ignore)]
+ public Perm[] Perms { get; set; }
+
+ [JsonProperty("app", NullValueHandling = NullValueHandling.Ignore)]
+ public string App { get; set; }
+
+ [JsonProperty("in_app_id", NullValueHandling = NullValueHandling.Ignore)]
+ public string InAppId { get; set; }
+ }
+
+ public partial class Perm
+ {
+ [JsonProperty("resource", NullValueHandling = NullValueHandling.Ignore)]
+ public string Resource { get; set; }
+
+ [JsonProperty("action", NullValueHandling = NullValueHandling.Ignore)]
+ public long? Action { get; set; }
+ }
+
+ public partial class ExchangeToken
+ {
+ public static ExchangeToken FromJson(string json) => JsonConvert.DeserializeObject(json, FModel.Parser.Exchange.Converter.Settings);
+ }
+
+ public static class Serialize
+ {
+ public static string ToJson(this ExchangeToken self) => JsonConvert.SerializeObject(self, FModel.Parser.Exchange.Converter.Settings);
+ }
+
+ internal static class Converter
+ {
+ public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
+ {
+ MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
+ DateParseHandling = DateParseHandling.None,
+ Converters =
+ {
+ new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
+ },
+ };
+ }
+}
diff --git a/FModel/Parser/ShopParser.cs b/FModel/Parser/ShopParser.cs
new file mode 100644
index 00000000..f6316261
--- /dev/null
+++ b/FModel/Parser/ShopParser.cs
@@ -0,0 +1,542 @@
+//
+//
+// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
+//
+// using FModel.Shop;
+//
+// var shopParser = ShopParser.FromJson(jsonString);
+
+namespace FModel.Shop
+{
+ using System;
+ using System.Collections.Generic;
+
+ using System.Globalization;
+ using Newtonsoft.Json;
+ using Newtonsoft.Json.Converters;
+
+ public partial class ShopParser
+ {
+ [JsonProperty("refreshIntervalHrs")]
+ public long RefreshIntervalHrs { get; set; }
+
+ [JsonProperty("dailyPurchaseHrs")]
+ public long DailyPurchaseHrs { get; set; }
+
+ [JsonProperty("expiration")]
+ public DateTimeOffset Expiration { get; set; }
+
+ [JsonProperty("storefronts")]
+ public Storefront[] Storefronts { get; set; }
+ }
+
+ public partial class Storefront
+ {
+ [JsonProperty("name")]
+ public string Name { get; set; }
+
+ [JsonProperty("catalogEntries")]
+ public CatalogEntry[] CatalogEntries { get; set; }
+ }
+
+ public partial class CatalogEntry
+ {
+ [JsonProperty("offerId")]
+ public string OfferId { get; set; }
+
+ [JsonProperty("devName")]
+ public string DevName { get; set; }
+
+ [JsonProperty("offerType")]
+ public OfferType OfferType { get; set; }
+
+ [JsonProperty("prices")]
+ public Price[] Prices { get; set; }
+
+ [JsonProperty("categories")]
+ public string[] Categories { get; set; }
+
+ [JsonProperty("dailyLimit")]
+ public long DailyLimit { get; set; }
+
+ [JsonProperty("weeklyLimit")]
+ public long WeeklyLimit { get; set; }
+
+ [JsonProperty("monthlyLimit")]
+ public long MonthlyLimit { get; set; }
+
+ [JsonProperty("appStoreId")]
+ public string[] AppStoreId { get; set; }
+
+ [JsonProperty("requirements")]
+ public Requirement[] Requirements { get; set; }
+
+ [JsonProperty("metaInfo", NullValueHandling = NullValueHandling.Ignore)]
+ public MetaInfo[] MetaInfo { get; set; }
+
+ [JsonProperty("catalogGroup", NullValueHandling = NullValueHandling.Ignore)]
+ public CatalogGroup? CatalogGroup { get; set; }
+
+ [JsonProperty("catalogGroupPriority")]
+ public long CatalogGroupPriority { get; set; }
+
+ [JsonProperty("sortPriority")]
+ public long SortPriority { get; set; }
+
+ [JsonProperty("title", NullValueHandling = NullValueHandling.Ignore)]
+ public string Title { get; set; }
+
+ [JsonProperty("shortDescription", NullValueHandling = NullValueHandling.Ignore)]
+ public string ShortDescription { get; set; }
+
+ [JsonProperty("description", NullValueHandling = NullValueHandling.Ignore)]
+ public string Description { get; set; }
+
+ [JsonProperty("displayAssetPath", NullValueHandling = NullValueHandling.Ignore)]
+ public string DisplayAssetPath { get; set; }
+
+ [JsonProperty("itemGrants")]
+ public ItemGrant[] ItemGrants { get; set; }
+
+ [JsonProperty("metaAssetInfo", NullValueHandling = NullValueHandling.Ignore)]
+ public MetaAssetInfo MetaAssetInfo { get; set; }
+
+ [JsonProperty("fulfillmentIds", NullValueHandling = NullValueHandling.Ignore)]
+ public object[] FulfillmentIds { get; set; }
+
+ [JsonProperty("matchFilter", NullValueHandling = NullValueHandling.Ignore)]
+ public string MatchFilter { get; set; }
+
+ [JsonProperty("filterWeight", NullValueHandling = NullValueHandling.Ignore)]
+ public long? FilterWeight { get; set; }
+
+ [JsonProperty("giftInfo", NullValueHandling = NullValueHandling.Ignore)]
+ public GiftInfo GiftInfo { get; set; }
+
+ [JsonProperty("refundable", NullValueHandling = NullValueHandling.Ignore)]
+ public bool? Refundable { get; set; }
+ }
+
+ public partial class GiftInfo
+ {
+ [JsonProperty("bIsEnabled")]
+ public bool BIsEnabled { get; set; }
+
+ [JsonProperty("forcedGiftBoxTemplateId")]
+ public string ForcedGiftBoxTemplateId { get; set; }
+
+ [JsonProperty("purchaseRequirements")]
+ public object[] PurchaseRequirements { get; set; }
+
+ [JsonProperty("giftRecordIds")]
+ public object[] GiftRecordIds { get; set; }
+ }
+
+ public partial class ItemGrant
+ {
+ [JsonProperty("templateId")]
+ public string TemplateId { get; set; }
+
+ [JsonProperty("quantity")]
+ public long Quantity { get; set; }
+
+ [JsonProperty("attributes", NullValueHandling = NullValueHandling.Ignore)]
+ public Attributes Attributes { get; set; }
+ }
+
+ public partial class Attributes
+ {
+ [JsonProperty("Alteration")]
+ public Alteration Alteration { get; set; }
+ }
+
+ public partial class Alteration
+ {
+ [JsonProperty("LootTierGroup")]
+ public string LootTierGroup { get; set; }
+
+ [JsonProperty("Tier")]
+ public long Tier { get; set; }
+ }
+
+ public partial class MetaAssetInfo
+ {
+ [JsonProperty("structName")]
+ public StructName StructName { get; set; }
+
+ [JsonProperty("payload")]
+ public Payload Payload { get; set; }
+ }
+
+ public partial class Payload
+ {
+ [JsonProperty("chaseItems")]
+ public string[] ChaseItems { get; set; }
+
+ [JsonProperty("packDefinition")]
+ public string PackDefinition { get; set; }
+ }
+
+ public partial class MetaInfo
+ {
+ [JsonProperty("key")]
+ public string Key { get; set; }
+
+ [JsonProperty("value")]
+ public string Value { get; set; }
+ }
+
+ public partial class Price
+ {
+ [JsonProperty("currencyType")]
+ public CurrencyType CurrencyType { get; set; }
+
+ [JsonProperty("currencySubType")]
+ public CurrencySubType CurrencySubType { get; set; }
+
+ [JsonProperty("regularPrice")]
+ public long RegularPrice { get; set; }
+
+ [JsonProperty("finalPrice")]
+ public long FinalPrice { get; set; }
+
+ [JsonProperty("saleExpiration")]
+ public DateTimeOffset SaleExpiration { get; set; }
+
+ [JsonProperty("basePrice")]
+ public long BasePrice { get; set; }
+
+ [JsonProperty("saleType", NullValueHandling = NullValueHandling.Ignore)]
+ public string SaleType { get; set; }
+ }
+
+ public partial class Requirement
+ {
+ [JsonProperty("requirementType")]
+ public RequirementType RequirementType { get; set; }
+
+ [JsonProperty("requiredId")]
+ public string RequiredId { get; set; }
+
+ [JsonProperty("minQuantity")]
+ public long MinQuantity { get; set; }
+ }
+
+ public enum CatalogGroup { Empty, Shared, Upgrade };
+
+ public enum StructName { FortCatalogMeta };
+
+ public enum OfferType { StaticPrice };
+
+ public enum CurrencySubType { AccountResourceEventcurrencyScaling, AccountResourceEventcurrencySpring, AccountResourceVoucherBasicpack, AccountResourceVoucherCardpackBronze, AccountResourceVoucherCardpackJackpot, AccountResourceVoucherCustomFirecrackerR, Empty };
+
+ public enum CurrencyType { GameItem, MtxCurrency, RealMoney };
+
+ public enum RequirementType { DenyOnFulfillment, DenyOnItemOwnership, RequireFulfillment, RequireItemOwnership };
+
+ public partial class ShopParser
+ {
+ public static ShopParser FromJson(string json) => JsonConvert.DeserializeObject(json, FModel.Shop.Converter.Settings);
+ }
+
+ public static class Serialize
+ {
+ public static string ToJson(this ShopParser self) => JsonConvert.SerializeObject(self, FModel.Shop.Converter.Settings);
+ }
+
+ internal static class Converter
+ {
+ public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
+ {
+ MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
+ DateParseHandling = DateParseHandling.None,
+ Converters =
+ {
+ CatalogGroupConverter.Singleton,
+ StructNameConverter.Singleton,
+ OfferTypeConverter.Singleton,
+ CurrencySubTypeConverter.Singleton,
+ CurrencyTypeConverter.Singleton,
+ RequirementTypeConverter.Singleton,
+ new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
+ },
+ };
+ }
+
+ internal class CatalogGroupConverter : JsonConverter
+ {
+ public override bool CanConvert(Type t) => t == typeof(CatalogGroup) || t == typeof(CatalogGroup?);
+
+ public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+ {
+ if (reader.TokenType == JsonToken.Null) return null;
+ var value = serializer.Deserialize(reader);
+ switch (value)
+ {
+ case "":
+ return CatalogGroup.Empty;
+ case "Shared":
+ return CatalogGroup.Shared;
+ case "Upgrade":
+ return CatalogGroup.Upgrade;
+ }
+ throw new Exception("Cannot unmarshal type CatalogGroup");
+ }
+
+ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+ {
+ if (untypedValue == null)
+ {
+ serializer.Serialize(writer, null);
+ return;
+ }
+ var value = (CatalogGroup)untypedValue;
+ switch (value)
+ {
+ case CatalogGroup.Empty:
+ serializer.Serialize(writer, "");
+ return;
+ case CatalogGroup.Shared:
+ serializer.Serialize(writer, "Shared");
+ return;
+ case CatalogGroup.Upgrade:
+ serializer.Serialize(writer, "Upgrade");
+ return;
+ }
+ throw new Exception("Cannot marshal type CatalogGroup");
+ }
+
+ public static readonly CatalogGroupConverter Singleton = new CatalogGroupConverter();
+ }
+
+ internal class StructNameConverter : JsonConverter
+ {
+ public override bool CanConvert(Type t) => t == typeof(StructName) || t == typeof(StructName?);
+
+ public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+ {
+ if (reader.TokenType == JsonToken.Null) return null;
+ var value = serializer.Deserialize(reader);
+ if (value == "FortCatalogMeta")
+ {
+ return StructName.FortCatalogMeta;
+ }
+ throw new Exception("Cannot unmarshal type StructName");
+ }
+
+ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+ {
+ if (untypedValue == null)
+ {
+ serializer.Serialize(writer, null);
+ return;
+ }
+ var value = (StructName)untypedValue;
+ if (value == StructName.FortCatalogMeta)
+ {
+ serializer.Serialize(writer, "FortCatalogMeta");
+ return;
+ }
+ throw new Exception("Cannot marshal type StructName");
+ }
+
+ public static readonly StructNameConverter Singleton = new StructNameConverter();
+ }
+
+ internal class OfferTypeConverter : JsonConverter
+ {
+ public override bool CanConvert(Type t) => t == typeof(OfferType) || t == typeof(OfferType?);
+
+ public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+ {
+ if (reader.TokenType == JsonToken.Null) return null;
+ var value = serializer.Deserialize(reader);
+ if (value == "StaticPrice")
+ {
+ return OfferType.StaticPrice;
+ }
+ throw new Exception("Cannot unmarshal type OfferType");
+ }
+
+ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+ {
+ if (untypedValue == null)
+ {
+ serializer.Serialize(writer, null);
+ return;
+ }
+ var value = (OfferType)untypedValue;
+ if (value == OfferType.StaticPrice)
+ {
+ serializer.Serialize(writer, "StaticPrice");
+ return;
+ }
+ throw new Exception("Cannot marshal type OfferType");
+ }
+
+ public static readonly OfferTypeConverter Singleton = new OfferTypeConverter();
+ }
+
+ internal class CurrencySubTypeConverter : JsonConverter
+ {
+ public override bool CanConvert(Type t) => t == typeof(CurrencySubType) || t == typeof(CurrencySubType?);
+
+ public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+ {
+ if (reader.TokenType == JsonToken.Null) return null;
+ var value = serializer.Deserialize(reader);
+ switch (value)
+ {
+ case "":
+ return CurrencySubType.Empty;
+ case "AccountResource:eventcurrency_scaling":
+ return CurrencySubType.AccountResourceEventcurrencyScaling;
+ case "AccountResource:eventcurrency_spring":
+ return CurrencySubType.AccountResourceEventcurrencySpring;
+ case "AccountResource:voucher_basicpack":
+ return CurrencySubType.AccountResourceVoucherBasicpack;
+ case "AccountResource:voucher_cardpack_bronze":
+ return CurrencySubType.AccountResourceVoucherCardpackBronze;
+ case "AccountResource:voucher_cardpack_jackpot":
+ return CurrencySubType.AccountResourceVoucherCardpackJackpot;
+ case "AccountResource:voucher_custom_firecracker_r":
+ return CurrencySubType.AccountResourceVoucherCustomFirecrackerR;
+ }
+ throw new Exception("Cannot unmarshal type CurrencySubType");
+ }
+
+ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+ {
+ if (untypedValue == null)
+ {
+ serializer.Serialize(writer, null);
+ return;
+ }
+ var value = (CurrencySubType)untypedValue;
+ switch (value)
+ {
+ case CurrencySubType.Empty:
+ serializer.Serialize(writer, "");
+ return;
+ case CurrencySubType.AccountResourceEventcurrencyScaling:
+ serializer.Serialize(writer, "AccountResource:eventcurrency_scaling");
+ return;
+ case CurrencySubType.AccountResourceEventcurrencySpring:
+ serializer.Serialize(writer, "AccountResource:eventcurrency_spring");
+ return;
+ case CurrencySubType.AccountResourceVoucherBasicpack:
+ serializer.Serialize(writer, "AccountResource:voucher_basicpack");
+ return;
+ case CurrencySubType.AccountResourceVoucherCardpackBronze:
+ serializer.Serialize(writer, "AccountResource:voucher_cardpack_bronze");
+ return;
+ case CurrencySubType.AccountResourceVoucherCardpackJackpot:
+ serializer.Serialize(writer, "AccountResource:voucher_cardpack_jackpot");
+ return;
+ case CurrencySubType.AccountResourceVoucherCustomFirecrackerR:
+ serializer.Serialize(writer, "AccountResource:voucher_custom_firecracker_r");
+ return;
+ }
+ throw new Exception("Cannot marshal type CurrencySubType");
+ }
+
+ public static readonly CurrencySubTypeConverter Singleton = new CurrencySubTypeConverter();
+ }
+
+ internal class CurrencyTypeConverter : JsonConverter
+ {
+ public override bool CanConvert(Type t) => t == typeof(CurrencyType) || t == typeof(CurrencyType?);
+
+ public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+ {
+ if (reader.TokenType == JsonToken.Null) return null;
+ var value = serializer.Deserialize(reader);
+ switch (value)
+ {
+ case "GameItem":
+ return CurrencyType.GameItem;
+ case "MtxCurrency":
+ return CurrencyType.MtxCurrency;
+ case "RealMoney":
+ return CurrencyType.RealMoney;
+ }
+ throw new Exception("Cannot unmarshal type CurrencyType");
+ }
+
+ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+ {
+ if (untypedValue == null)
+ {
+ serializer.Serialize(writer, null);
+ return;
+ }
+ var value = (CurrencyType)untypedValue;
+ switch (value)
+ {
+ case CurrencyType.GameItem:
+ serializer.Serialize(writer, "GameItem");
+ return;
+ case CurrencyType.MtxCurrency:
+ serializer.Serialize(writer, "MtxCurrency");
+ return;
+ case CurrencyType.RealMoney:
+ serializer.Serialize(writer, "RealMoney");
+ return;
+ }
+ throw new Exception("Cannot marshal type CurrencyType");
+ }
+
+ public static readonly CurrencyTypeConverter Singleton = new CurrencyTypeConverter();
+ }
+
+ internal class RequirementTypeConverter : JsonConverter
+ {
+ public override bool CanConvert(Type t) => t == typeof(RequirementType) || t == typeof(RequirementType?);
+
+ public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
+ {
+ if (reader.TokenType == JsonToken.Null) return null;
+ var value = serializer.Deserialize(reader);
+ switch (value)
+ {
+ case "DenyOnFulfillment":
+ return RequirementType.DenyOnFulfillment;
+ case "DenyOnItemOwnership":
+ return RequirementType.DenyOnItemOwnership;
+ case "RequireFulfillment":
+ return RequirementType.RequireFulfillment;
+ case "RequireItemOwnership":
+ return RequirementType.RequireItemOwnership;
+ }
+ throw new Exception("Cannot unmarshal type RequirementType");
+ }
+
+ public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
+ {
+ if (untypedValue == null)
+ {
+ serializer.Serialize(writer, null);
+ return;
+ }
+ var value = (RequirementType)untypedValue;
+ switch (value)
+ {
+ case RequirementType.DenyOnFulfillment:
+ serializer.Serialize(writer, "DenyOnFulfillment");
+ return;
+ case RequirementType.DenyOnItemOwnership:
+ serializer.Serialize(writer, "DenyOnItemOwnership");
+ return;
+ case RequirementType.RequireFulfillment:
+ serializer.Serialize(writer, "RequireFulfillment");
+ return;
+ case RequirementType.RequireItemOwnership:
+ serializer.Serialize(writer, "RequireItemOwnership");
+ return;
+ }
+ throw new Exception("Cannot marshal type RequirementType");
+ }
+
+ public static readonly RequirementTypeConverter Singleton = new RequirementTypeConverter();
+ }
+}
diff --git a/FModel/ShopConfig.Designer.cs b/FModel/ShopConfig.Designer.cs
new file mode 100644
index 00000000..545ffd8d
--- /dev/null
+++ b/FModel/ShopConfig.Designer.cs
@@ -0,0 +1,139 @@
+namespace FModel
+{
+ partial class ShopConfig
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ShopConfig));
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.textBox2 = new System.Windows.Forms.TextBox();
+ this.button1 = new System.Windows.Forms.Button();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(12, 15);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(35, 13);
+ this.label1.TabIndex = 0;
+ this.label1.Text = "Email:";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(12, 41);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(59, 13);
+ this.label2.TabIndex = 1;
+ this.label2.Text = "Password: ";
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(77, 12);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(381, 20);
+ this.textBox1.TabIndex = 2;
+ this.textBox1.UseSystemPasswordChar = true;
+ //
+ // textBox2
+ //
+ this.textBox2.Location = new System.Drawing.Point(77, 38);
+ this.textBox2.Name = "textBox2";
+ this.textBox2.Size = new System.Drawing.Size(381, 20);
+ this.textBox2.TabIndex = 3;
+ this.textBox2.UseSystemPasswordChar = true;
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(407, 64);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(51, 23);
+ this.button1.TabIndex = 4;
+ this.button1.Text = "Ok";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(74, 69);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(44, 13);
+ this.label3.TabIndex = 5;
+ this.label3.Text = "Authed:";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label4.ForeColor = System.Drawing.Color.Red;
+ this.label4.Location = new System.Drawing.Point(114, 69);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(32, 13);
+ this.label4.TabIndex = 6;
+ this.label4.Text = "False";
+ //
+ // ShopConfig
+ //
+ this.AcceptButton = this.button1;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(470, 97);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.textBox2);
+ this.Controls.Add(this.textBox1);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MaximizeBox = false;
+ this.Name = "ShopConfig";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Shop Config";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.TextBox textBox1;
+ private System.Windows.Forms.TextBox textBox2;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label4;
+ }
+}
\ No newline at end of file
diff --git a/FModel/ShopConfig.cs b/FModel/ShopConfig.cs
new file mode 100644
index 00000000..ee86ba5a
--- /dev/null
+++ b/FModel/ShopConfig.cs
@@ -0,0 +1,131 @@
+using RestSharp;
+using System;
+using FModel.Parser;
+using System.Windows.Forms;
+using System.IO;
+using Newtonsoft.Json.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+
+namespace FModel
+{
+ public partial class ShopConfig : Form
+ {
+ private static string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).ToString() + "\\FModel";
+
+ public ShopConfig()
+ {
+ InitializeComponent();
+
+ textBox1.Text = Properties.Settings.Default.email;
+ textBox2.Text = Properties.Settings.Default.password;
+ label3.Visible = false;
+ label4.Visible = false;
+ }
+
+ private static string repo;
+ public static string getAccessToken(string username, string password)
+ {
+ try
+ {
+ var getAccessToken = new RestClient("https://account-public-service-prod03.ol.epicgames.com/account/api/oauth/token");
+ var gat = new RestRequest(Method.POST);
+
+ gat.AddParameter("grant_type", "password");
+ gat.AddParameter("username", username);
+ gat.AddParameter("password", password);
+ gat.AddParameter("includePerms", "true");
+
+ gat.AddHeader("Authorization", "basic MzQ0NmNkNzI2OTRjNGE0NDg1ZDgxYjc3YWRiYjIxNDE6OTIwOWQ0YTVlMjVhNDU3ZmI5YjA3NDg5ZDMxM2I0MWE");
+ gat.AddHeader("Content-Type", "application/x-www-form-urlencoded");
+
+ repo = getAccessToken.Execute(gat).Content;
+ }
+ catch (Exception ex)
+ {
+ Console.ForegroundColor = ConsoleColor.Red;
+ Console.Write("[ERROR] ");
+ Console.ForegroundColor = ConsoleColor.White;
+ Console.WriteLine(ex.Message);
+ }
+ return FModel.Parser.Access.AccessToken.FromJson(repo).AccessTokenAccessToken;
+ }
+
+ private static string accessCode;
+ public static string getAccessCode(string accessToken)
+ {
+ try
+ {
+ var client = new RestClient("https://account-public-service-prod03.ol.epicgames.com/account/api/oauth/exchange");
+ var req = new RestRequest(Method.GET);
+
+ req.AddHeader("Authorization", "bearer " + accessToken);
+
+ accessCode = client.Execute(req).Content;
+ }
+ catch (Exception ex)
+ {
+ Console.ForegroundColor = ConsoleColor.Red;
+ Console.Write("[ERROR] ");
+ Console.ForegroundColor = ConsoleColor.White;
+ Console.WriteLine(ex.Message);
+ }
+ return FModel.Parser.Access.Code.AccessCode.FromJson(accessCode).Code;
+ }
+
+ private static string ExchangeToken;
+ public string getExchangeToken(string accessCode)
+ {
+ try
+ {
+ var client = new RestClient("https://account-public-service-prod03.ol.epicgames.com/account/api/oauth/token");
+ var req = new RestRequest(Method.POST);
+
+ req.AddHeader("Authorization", "basic ZWM2ODRiOGM2ODdmNDc5ZmFkZWEzY2IyYWQ4M2Y1YzY6ZTFmMzFjMjExZjI4NDEzMTg2MjYyZDM3YTEzZmM4NGQ");
+ req.AddHeader("Content-Type", "application/x-www-form-urlencoded");
+ req.AddParameter("grant_type", "exchange_code");
+ req.AddParameter("exchange_code", accessCode);
+ req.AddParameter("includePerms", true);
+ req.AddParameter("token_type", "eg1");
+
+ ExchangeToken = Parser.Exchange.ExchangeToken.FromJson(client.Execute(req).Content).AccessToken;
+ }
+ catch (Exception ex)
+ {
+ Console.ForegroundColor = ConsoleColor.Red;
+ Console.Write("[ERROR] ");
+ Console.ForegroundColor = ConsoleColor.White;
+ Console.WriteLine(ex.Message);
+ }
+ return ExchangeToken;
+ }
+
+ private async void button1_Click(object sender, EventArgs e)
+ {
+ Properties.Settings.Default.email = textBox1.Text;
+ Properties.Settings.Default.password = textBox2.Text;
+ Properties.Settings.Default.Save();
+
+ string accessToken = null;
+ string accessCode = null;
+ string exchangeToken = null;
+ await Task.Run(() =>
+ {
+ accessToken = getAccessToken(Properties.Settings.Default.email, Properties.Settings.Default.password);
+ accessCode = getAccessCode(accessToken);
+ exchangeToken = getExchangeToken(accessCode);
+ });
+ if (!string.IsNullOrEmpty(accessToken) && !string.IsNullOrEmpty(accessCode) && !string.IsNullOrEmpty(exchangeToken))
+ {
+ this.Close();
+ var shopForm = new ShopWindow(exchangeToken);
+ shopForm.Show();
+ }
+ else
+ {
+ label3.Visible = true;
+ label4.Visible = true;
+ }
+ }
+ }
+}
diff --git a/FModel/ShopConfig.resx b/FModel/ShopConfig.resx
new file mode 100644
index 00000000..668416be
--- /dev/null
+++ b/FModel/ShopConfig.resx
@@ -0,0 +1,878 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ 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
+ Jv81Jif/NCcn/zMoKP8yKCj/MSgo/jAoKFwwKCgAMikpADEoKF0zKCj+NCgo/zQnJ/81Jib/NiYm/zYl
+ Jv89LC3/yMTE////////////4N3d/009Pv82JCX/NyYm/zclJv82JSb/NSYm/zQnJ/80KCj/Migo/jEo
+ KFwyKCgAMigoADEnJ10yKCj+NCgo/zUmJ/81JSb/NiUm/zcmJv8+LS3/yMPD////////////5ePj/08/
+ QP82JCT/NyUm/zgmJ/83Jif/NiUm/zUmJ/8zJyj/Migo/jIoKFwyKCgAMigoADInJ10zKCj+NSgo/zYm
+ J/83Jib/NyYm/zglJv8/LS3/yMPD////////////5OLi/1A+P/84JCX/OSYm/zgmJv84Jif/NyYm/zYm
+ J/80Jyj/Mygo/jMoKFwzKCgAMicnADInKF0zKCj+NScn/zYmJv83JSb/NyUm/zglJv8/LC3/yMPD////
+ ////////5OHi/1E+Pv85JCX/OSUm/zkmJ/83JSb/NiUm/zYmJv81Jyf/Mygo/jIoKFwyKCgAMygoADMo
+ KF00KCj+NSYn/zYlJv83JSb/OCUm/zsnJ/9ALC3/yMPD////////////4+Hh/1A9Pv85JCT/OiUm/zwn
+ KP84Jif/NiUm/zYmJv81Jif/Mycn/jInJ1wyJycAMycnADInJ100Jyj+NSYn/zcmJv83Jib/OCUm/zom
+ J/9ALC3/ycPD////////////4+Hh/1NAQP89Jyj/Oycn/zsmJ/84Jib/NyUm/zYmJv81Jif/Mycn/jMo
+ KFwzKCgAMicnADInJ100KCj+NSYn/zYmJv83Jib/OCUm/zklJv9ALC3/ycPE////////////9vX1/8bA
+ wP++t7f/bF1e/zcjJP84Jib/OCYn/zYlJv82Jif/NCcn/jMoKFwzKCgAMicnADInJ10zJyf+NSYm/zYl
+ Jv83Jif/NyUm/zglJv8/LC3/yMPD////////////////////////////hXl6/zUiIv84JSb/NyYm/zYl
+ Jv81Jif/Mycn/jInJ1wyJycAMygoADIoKF00KCj+NScn/zYlJv83Jif/NyUm/zglJv8/LC3/yMPE////
+ ////////////////////////iX9//zUiI/84Jib/NyYm/zYlJv81Jyf/Mygo/jInJ1wyJycAMykpADMo
+ KF00KCj+NSgo/zUmJv82Jib/NyYm/zclJv8+LC3/yMPD////////////+vr6/9fT0//Qzc3/e3Bw/zUj
+ JP83JSb/NiUm/zUmJv81KCj/NCgo/jIoKFwzKCgAMigoADIoKF0yKCj+NCgo/zUmJ/81JSb/NiUm/zcl
+ Jv8+LS3/yMPD////////////6ejo/1tLTP8/LS7/PCor/zcmJv83Jif/NiUm/zUmJ/80KCj/Migo/jIo
+ KFwyKCgAMSgoADAnJ10yKCj+Mygo/zQoKP81Jif/NiYn/zclJv8+LS3/yMPD////////////5+Xl/04+
+ P/8zICH/NSMk/zcmJv83Jif/NSYn/zQnKP8zKCj/Migo/jEoKFwyKCgAMCcnADAnJ10wKCj+Migo/zMo
+ KP80Jyf/NSYm/zUlJv88LC3/x8PD////////////7evr/3xxcf9nWlv/XE9P/zkpKf81Jib/NCcn/zMn
+ KP8yKCj/MSgo/jAoKFwwKCgALygoAC8oKF0wKCj+MCcn/zInJ/8zJyf/NCcn/zYnKP88LC3/x8PD////
+ /////////v7+//j4+P/4+Pj/1tPU/0g6O/8zJib/Mycn/zIoKP8xKCj/Lycn/i8nJ1wvJycALycoAC8o
+ KF0vKCj+MCcn/zEoKP8yKCj/Mycn/zUoKP86Li7/x8TE////////////////////////////6+rq/1RK
+ Sv8xJib/Micn/zEnKP8wJyj/Lycn/i8oKFwvKCgALicnAC4nJ14vKCj+Lygo/zAoKP8wKCj/MScn/zEn
+ J/85Li7/x8XF////////////////////////////9fX1/2JbW/8vJSX/MSgo/y8nJ/8wKCj/Lygo/i8o
+ KFwvKCgALigoAC4oKFkuJyj9Licn/y8nJ/8wKCj/MCcn/zAnJ/80Kyv/gHp6/6Cbm/+empr/npqa/56a
+ mv+fmpr/m5eX/1BJSf8uJib/MCgo/y8nJ/8uJyf/Licn/S4oKFcuKCgAMCoqADErKyouKCnXLicn/y4n
+ J/8wKCj/Lycn/y8nJ/8wKCj/LyYm/y4lJf8uJSX/LiUl/y4lJf8vJib/LSUl/y8nJ/8vKCj/Lygo/y4n
+ J/8uKCj/Ligo1jArKykvKioA/wD/APwAPwDgAAcAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAA
+ AQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAKAAAACAA
+ AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAABQSUkAMSgoADgwMAo1LCxEMyoqpjEoKPUwKCj0MikppTQsLEM5MDEKMSgoAFNO
+ TgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAABMQEAAc2RjADowMBc0KipaMikpsTIoKO0xJyf/LyUl/y8lJf8wJib/Migo7TIp
+ KbA0KipZOS8vFnVnZwBNQUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wA4Li8AOjIyBDYsLCw2Kyt9NSoqzzInJ/ovJSX/MSYm/0E3N/5kXFz9XlZW/T0z
+ M/4xJib/MCUl/zEnJ/o0KirPNiwsfDYsLCw8NDQEOTAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAFBKSgAWDQ0AODAwDjQrK0gzKSmgMigo5jIoKP4zKCj/PDIy/mBXV/2YkpL8z83N/fHx
+ 8f7u7u7+ycfH/ZOOjvxeVVX9PDEx/jMoKP8yKCj+Migo5TMpKZ80KytHNi8vDh4VFQBMRkYAAAAAAAAA
+ AAAAAAAAAAAAADs0NABDPj4BNCwsHjIqKmoyKSnAMigo9DIoKP8yJyf/Mycn/zUpKf5KQED7bWRk/Hty
+ c/18c3T9e3Jy/Xtxcv19c3T9e3Jy/WtiY/xKQED7NSkp/jMnJ/8zKCj/Mygo/zIoKPQxKCi/MioqaTQt
+ LR1FP0ABOzQ0AAAAAAA/OjoAKR8fADMrK1AwKCjWMCcn/TEnJ/8xJyf/Mycn/zMnJ/80Jyf/NCYn/zQl
+ Jv8xISL/MSAh/zIhIv8yIiP/MiIj/zIiI/8yIiP/MyMk/zQlJv80Jif/Mycn/zMnJ/8zJyf/Micn/zEn
+ J/8wKCj8MCgo1TIqK04qICAAQDo7ADIrKwAzLCwHMCgotTAnJ/8xJyf/MScn/zMoKP81KCn/NCcn/zUm
+ Jv81JSb/Nyco/1FDRP9NPj//PCwt/zUkJf8zIiP/NSQl/zcmJ/83Jyf/NiYm/zUlJv81Jib/NSco/zQo
+ KP8yJyf/Micn/zEnJ/8wJyf/MCgoszMsLAYyKysALycnAC8nJwoxKCi/Migo/zIoKP8zJyj/Mycn/zQn
+ J/81Jib/NSUm/zYlJv85KCn/sqys/+Ti4v/Ev7//oZma/3xxcv9IOTr/NiQl/zcmJv83JSb/NiUm/zUl
+ Jv81Jib/NCcn/zMnJ/8zKCj/Mygo/zEoKP8wKCi+LycnCS8nJwAvJycALycnCjIoKL8zKCj/Mygo/zQo
+ KP8zJyf/NiYn/zYmJ/82JSb/NiUm/zkoKf+7trb/////////////////+vr6/3pub/80IiP/OCYm/zgm
+ J/83JSb/NiUm/zUlJv81Jib/NCcn/zQoKP8zKCj/Mygo/zEoKL0uJycJLycnADAnJwAwJycKMigovzIo
+ KP80KCj/NCco/zUmJv81JSb/NiUm/zclJv83Jib/Oikp/7u2tv/////////////////9/f3/fHFx/zQh
+ Iv83JSb/NyUm/zclJv83Jif/NyYm/zUlJv81Jib/NCgo/zMoKP8yKCj/MigovS8nJwkwJycAMScnADEn
+ JwoxJye/Micn/zMnJ/81Jyf/NSUm/zYlJv83Jib/NyYm/zknJ/88KSr/u7a2//////////////////z8
+ /P98cHD/NiIj/zkmJv84Jib/OCUm/zknJ/84Jif/NiYm/zYmJv80Jyf/Mycn/zInJ/8yKCi9MigoCTIo
+ KAAxJycAMCYmCjIoKL80KCj/NSgo/zYnJ/82Jib/NyYm/zcmJ/83JSb/OCYm/zwpKf+8trb/////////
+ /////////Pz8/3xvcP83IiP/OiYm/zomJ/84JSb/OCYn/zgmJ/83Jib/NiYm/zYmJ/80KCj/NCgo/zMo
+ Kb0zKCgJMygoADInJwAxJycKMicnvzMnJ/80Jyf/NiYm/zYlJv83JSb/NyUm/zglJv85JSb/PCgp/7y2
+ tv/////////////////8/Pz/fG5v/zgiI/86JSb/OSUm/zklJv84Jib/NyUm/zYlJv82JSb/NSUm/zQn
+ J/8zKCj/MigovTEoKAkyKCgAMygoADIoKAozKCi/NCgo/zQmJ/81JSb/NiYm/zclJv83JSb/OSYn/zsm
+ J/88KCn/vLa2//////////////////z8/P97bW7/OSIj/zolJv85JSb/OyYn/zomJ/84Jib/NiUm/zcm
+ Jv82Jib/NScn/zMnJ/8yJye9MSgoCTIoKAAzKCgAMigoCjMoKL80KCj/NSYn/zYlJv83Jib/NyUm/zcl
+ Jv87Jyj/PSco/zwoKf+8trb/////////////////+/v7/3psbf85IiP/OyUm/zolJv88Jyj/PCgo/zgm
+ Jv82JSb/NiYm/zYmJv81Jif/Mycn/zMnJ70xKCgJMicnADInJwAxJycKMycnvzQnKP81Jib/NiYm/zcm
+ Jv83Jib/NyUm/zomJ/86Jib/PSgp/7y2tv/////////////////7+/v/emtr/zgiIv87JSb/OiUm/zsm
+ J/85Jif/OCYm/zclJv83Jib/NiUm/zUmJ/8zJyf/MygovTEoKAkyKCgAMScnADAnJwoyJye/NSgo/zUm
+ J/82Jib/NyYm/zcmJv84JSb/OSYm/zklJv89KSn/vba2//////////////////7+/v/Jw8P/raWl/6+n
+ p/9xZGT/OCQl/zglJv84Jif/OCYn/zcmJv81JSb/Nicn/zQnJ/8zKCi9MSgoCTIoKAAxJycAMCcnCjIn
+ J780Jyf/NSYm/zUlJv82JSb/NyUm/zclJv84JSb/OSUm/zwoKf+8trb/////////////////////////
+ /////////////5mQkP83IyP/OCUm/zclJv83Jib/NyYm/zUlJv81Jif/Mycn/zInJ70wJycJMScnADEn
+ JwAwJycKMicnvzMnJ/81Jif/NSUm/zcmJv84Jif/OCYm/zclJv85JSb/PSkp/7y2tv//////////////
+ ////////////////////////m5KS/zYjI/84JSb/OCYn/zcmJv82JSb/NiUm/zUmJ/8zJyf/MicnvTAn
+ JwkxJycAMScnADAnJwozKCi/NCgo/zQnJ/81JSb/NiUm/zcmJ/83JSb/NyUm/zglJv88KCn/vLa2////
+ //////////////////////////////////+hmJn/NiMk/zglJv83JSb/NyYm/zYlJv82Jib/NScn/zMo
+ KP8yJye9MCcnCTEnJwAxJycAMScnCjMoKL80KCj/NSgo/zYmJ/81JSb/NyYn/zcmJ/83JSb/OCUm/zso
+ Kf+8trb///////////////////////b19f/v7e7/8fHx/6CYmf83JSX/NyUm/zYlJv82JSb/NSUm/zYm
+ J/81KCj/NCgo/zMoKL0xJycJMScnADEnJwAxJycKMigovzMoKP80KCj/NScn/zUlJv82JSb/NiUm/zcm
+ Jv84Jib/Oigp/7u2tv/////////////////+////m5KS/1lKS/9cTU7/TT4+/zgmJv83Jif/NyYm/zYl
+ Jv81JSb/NScn/zQoKP8zKCj/MigovTEnJwkxJycAMCcnAC8nJwoxJye/Micn/zMnJ/80Jyf/NSYm/zUl
+ Jv82JSb/NyUm/zgmJ/87KSr/u7a2//////////////////7+/v+AdXb/Mh8g/zUjJP82JCX/NyUm/zgn
+ J/83Jif/NiUm/zUmJ/80Jyf/Mycn/zInJ/8yKCi9MCgoCTEoKAAvJycALSYmCjEoKL8yKCj/Mygo/zUo
+ KP80Jyf/NiYn/zYmJ/82JSb/NyYn/zopKf+7trb//////////////////f39/4B0df8zISH/NyUl/zcl
+ Jv82JSb/NyYn/zYmJ/82Jif/NSco/zQoKP8zKCj/Migo/zIoKL0wKCgJMSgoAC8nJwAvJycKLycnvzEn
+ J/8yKCj/Mygo/zQnJ/80Jyf/NSUm/zUlJv82JSb/OSgp/7u2tv/////////////////9/f3/i4GC/0Y2
+ N/9IODn/RTY3/zkpKv81JSb/NSYm/zQnJ/8zJyf/Micn/zInJ/8xKCj/MSgovTAoKAkwKCgAMCgoADEo
+ KAowKCi/MCgo/zEnJ/8xJyf/Mycn/zMnJ/80Jyf/Nicn/zYmJ/84KCn/u7a2////////////////////
+ ///q6en/3dvb/93a2v/T0ND/XlJS/zQkJf80Jyf/Mycn/zMoKP8yKCj/Migo/zAnJ/8vJye9MCgoCTAo
+ KAAvKCgALygoCi8oKL8wKCj/MCcn/zEnJ/8yKCj/Micn/zMnJ/82KSn/Nygp/zgpKf+6trb/////////
+ //////////////////////////////z8/P95cHD/MyYm/zQoKP8yJyf/Mico/zEoKP8wKCj/Lycn/y8n
+ J70vJycJLycnAC8oKAAvKCgKLycovy8nJ/8vJyf/MCgo/zIoKP8yKCj/Micn/zQoKP81KCj/Nioq/7q2
+ tv///////////////////////////////////////////4yFhf8xJSX/Migo/zEnJ/8xJyf/MCcn/zAn
+ J/8vJyf/LygovS8oKAkvJygALicnAC0nJwouJye/MCgo/y8oKP8wKCj/MCgo/zEoKP8xJyf/Micn/zIn
+ J/82Kyv/ure3////////////////////////////////////////////oZyd/zAmJv8yKCj/Migo/zAo
+ KP8vJyf/MCgo/y8oKP8vKCi9LigoCS4oKAAtJycALScnCi0nJ78uKCj/Licn/y8nJ/8vJyf/MCcn/zAn
+ J/8xJyf/MScn/zQqKv+sqKj/7e3t/+rq6v/q6ur/6urq/+rq6v/q6en/6urp/+3t7f+no6P/Mikp/zAn
+ J/8wKCj/MCgo/y8nJ/8vKCj/Licn/y4nJ74uKCgJLigoADMtLQA1LzAFLykprS4nJ/8uJyf/Licn/y8o
+ KP8wKCj/MCcn/y8nJ/8wJyf/MSgo/0Y+Pv9RSUn/UUhI/1FISf9RSEn/UEhI/1FJSf9RSUn/UElJ/0U+
+ Pv8wKCj/MCgo/y8oKP8vJyf/Licn/y4nJ/8tJyf/LigoqzQvLwQyLC0AQTw9ACslJQAxKytRLygp5S4n
+ J/8uJyf/Lygo/zAoKP8vKCj/Lycn/zAnJ/8wKCj/LyYm/y0lJf8uJSX/LiUl/y4lJf8tJSX/LiUl/y8m
+ Jv8tJSX/LiYm/y8nJ/8vKCj/Lygo/y4nJ/8uKCj/Ligo/y4oKOQwKytPKyQkAEM/PwD/8A///8AD//4A
+ AH/4AAAfwAAAA8AAAAOAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
+ AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAAygA
+ AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFP0AAAAAAADsz
+ MxQ1LS1bMioqwDAoKPwwKCj8MSkpvzMsLFk4MTIUAAAAAEQ/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPzc3AEQ8
+ PAM4Li4kNCsrcDQqKsQyKSn1Migo/zIoKP8xKCj/MCcn/zEoKPUzKirDNCsrbjcuLyNDPDwCPjY2AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd29vAC4j
+ IwBDODgKNy0tPzQqKpMyKCjeMScn/TIoKP8yJyf/MScn/zEnJ/8xJyf/MScn/zEnJ/8xJyf/Migo/TIo
+ KN00KiqRNy0tPUE3NwoqICEAioODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEU9
+ PgBUT08BOjExGTkuL144LS21Mykp8DInJ/8xJyf/MScn/zEnJ/8wJSX/Mygo/kE3N/08MzP9MCYm/zAl
+ Jf8xJyf/Migo/zEnJ/8xJyf/Mykp7zcsLLM6Ly9cOjExGF1XWAFHP0AAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMPf
+ 3wA4Ly8AQDo6BTcuLi80KiqANCkp0TMpKfozKSn/Mygo/zEnJ/8wJSX/Micn/kI3N/1oYGD8oJub/NHP
+ z/3Ixsb8lI6O/GFYWPw/NDT9Micn/zAlJf8xJib/Migo/zMoKf80KSn6NCoq0DQrK343Li8uPDY2BTcw
+ MAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AABMRkYAAAAAADozMw81LS1LMyoqojIoKOcxJyf+MScn/zIoKP8yJyf/NCkp/kE2Nv1kXFz8mpaW+9DP
+ z/zz8/P+/////////////////v7+/+/v7/7KyMj8lpGR+2JaWvxANTX9NCkp/jMoKP8yJyf/MScn/zIo
+ KP4yKCjmNCoqoDQsLEk5MjIPEAUFAE1ISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAPzg4AEY/PwI2Ly8iNCwsbDIqKsEyKCj1Migo/zInJ/8yJyf/Mygo/zMoKP8zJyf/PTMz+mJb
+ W/mGgID7lpCQ+5eRkfyWj5D8lo+P/JaPj/yWj4/8lo+P/JeQkPyYkZL8lY+P+4R/f/thWlr5PzU1+jQo
+ KP4zJyf/Micn/zMpKf8zKCj/Mygo/zEoKPQxKSnANCwsazkwMSFHQkECQDk5AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAD03OABPTE4BNS0uLTIqKo0wKCjbMCcn/DEnJ/8yJyf/Micn/zInJ/8yJyf/Mycn/zMn
+ J/80KCj/NCcn/zUnJ/80JSb/NCQl/zMjJP8zIyT/MyMk/zMjJP8zIyT/MyMk/zMjJP8zIyT/MyQk/zQl
+ Jf80Jyf/NCgo/zMnJ/80KCj/Mycn/zMoKP8zKCj/Migo/zInJ/8wJyf/MCgo/DEpKdoyKiqMNS4uLFZV
+ VAE+ODgAAAAAAAAAAAAAAAAAQj09ADEpKQA1LS09MSkp2zAnJ/8wJyf/MCcn/zEnJ/8xJyf/Micn/zMo
+ KP8zJyf/Mycn/zQnJ/80Jif/NSUm/zUlJv81JSb/NSUm/zYlJv82JSb/NiUm/zYlJv82JSb/NSUm/zUl
+ Jv81JSb/NSUm/zYmJv81JSb/NSYm/zQmJ/8zJyf/Mycn/zMnJ/8zJyf/Micn/zIoKP8xJyf/MScn/y8n
+ J/8wJyf/MSkp2TQtLTowKSkARUBAAAAAAAAAAAAAODExAJ2oqAAxKSmXMCcn/zAnJ/8xJyf/Micn/zEn
+ J/8yJyj/NSkp/zUpKf80KCj/NCYn/zUlJv81JSb/NiUm/zcmJ/85Kir/Nycn/zQiI/80IiP/NSQl/zYl
+ Jv82JSb/NiUm/zYlJv82Jib/OCcn/zcnJ/82Jif/NSUm/zUlJv81Jib/NCcn/zUoKP80KCj/Mygo/zIn
+ J/8xJyf/Micn/zEnJ/8wJyf/MCcn/zEpKZMAAAAAODExAAAAAAAAAAAALycnAC4mJgMwKCirMCgo/zAn
+ J/8xJyf/MScn/zInJ/8zJyf/NSgo/zQoKP81Jyf/NSUm/zUlJv82Jib/NiUm/zYlJv+BeHj/raen/4d+
+ f/9nWlv/Tj9A/z0tLv81JCX/NCIj/zYlJv83Jib/OCYn/zcmJ/83Jib/NSUm/zUlJv82Jib/NSUm/zUn
+ J/80KCj/Mycn/zMnJ/8yJyf/Migo/zEnJ/8wJyf/Lycn/y8nJ6kvJycDLycnAAAAAAAAAAAALycnACwl
+ JQMxKCirMikp/zIoKP8zKCj/Mygo/zMoKP8zJyf/Mycn/zUmJ/81Jib/NSUm/zUlJv82Jib/NiUm/zUk
+ Jf+hm5v///////39/f/z8vL/397e/8O/v/+hmpv/dmxs/z4tLv82JCX/NiUm/zcmJv83JSb/NiUm/zYl
+ Jv82Jib/NSUm/zUlJv81Jyf/NCcn/zMnJ/80KCj/NCkp/zMoKP8yKCj/MSgo/zAoKKgsJSUDLycnAAAA
+ AAAAAAAALycnACwlJQMxKCirMigp/zMoKP8zKCj/NCgo/zQoKP8zJyf/NCYn/zcnJ/82Jif/NiYm/zYl
+ Jv83Jib/NiUm/zUkJf+gmpr/////////////////////////////////4N7e/09AQP81IyT/NyUm/zgn
+ J/84Jif/NyYm/zYlJv83Jib/NSUm/zUlJv81JSb/NCYn/zMnJ/80KCj/NCgp/zMoKP8zKCj/Migo/zAo
+ KKgqJCQDLycnAAAAAAAAAAAALycnAColJQMyKCirMygp/zMoKP8zKCj/NSgo/zQoKP80Jif/NSUm/zUl
+ Jv82Jib/NiYm/zcmJv83Jib/NyUm/zYkJf+hmpr/////////////////////////////////4uDh/09A
+ Qf81IyT/NyUm/zclJv84Jib/NyYm/zcmJv83Jib/NiUm/zYlJv82Jib/NSUm/zQmJ/80KCj/NSgo/zMo
+ KP8zKCj/Mygo/zEoKKgpJCQDLycnAAAAAAAAAAAAMCcnAC0mJgMyKCirMigo/zIoKP80KCj/NCgo/zQn
+ J/81JSb/NSUm/zUlJv82JSb/NiUm/zclJv84Jif/OSYn/zckJf+gmZr/////////////////////////
+ ////////4uDg/08/QP82IyT/NyUm/zclJv83JSb/NyUm/zclJv83Jif/OCYn/zcmJv81JSb/NiUm/zUl
+ Jv80Jyf/NCgo/zMoKP8yKCj/Migo/zEoKKgtJiYDMCcnAAAAAAAAAAAAMScnADEnJwMxJyerMScn/zIn
+ J/8zJyf/NCcn/zUmJ/82JSb/NSUm/zYlJv83Jib/NiUm/zcmJv85Jyf/Oicn/zglJf+hmZr/////////
+ ////////////////////////4d/f/1A/QP84JCX/OCUm/zglJv84Jib/NyUm/zgmJv85Jyf/OCcn/zgm
+ J/82JSb/NSUm/zUlJv80Jib/Mycn/zMnJ/8yJyf/Micn/zIoKKgyKCgDMigoAAAAAAAAAAAAMScnADAm
+ JgMxJyerMykp/zMoKP80Jyj/NSgo/zYmJ/82Jib/NSUm/zgmJ/85Jyf/NyUm/zgmJv86Jyf/Oicn/zgl
+ Jf+hmZr/////////////////////////////////4d/f/1A/P/84JCX/OSUm/zsmJ/87Jyf/NyUm/zgm
+ Jv85Jyf/OCcn/zgmJ/83Jif/NyYn/zcnJ/81Jib/NSgo/zQoKP8zKCj/Mygo/zMoKKgyJycDMigoAAAA
+ AAAAAAAAMScnADAmJgMxJyerMygo/zQoKP80KCj/Nigo/zcmJ/82Jib/NiUm/zcmJv83Jib/NyUm/zgl
+ Jv84Jib/OSYm/zklJf+hmZr/////////////////////////////////4N7e/1A/P/85JCX/OSUm/zom
+ Jv86Jib/OCUm/zglJv84Jib/OCYm/zcmJ/82JSb/NiUm/zUlJv81JSb/Nigo/zQoKP80KCj/NCkp/zMo
+ KKgzKSkDMykpAAAAAAAAAAAAMScnADEnJwMxJyerMicn/zMnJ/80Jyf/Nicn/zYmJv82JSb/NyUm/zYl
+ Jv82JSb/NyUm/zclJv84JSb/OSUm/zgkJf+impr/////////////////////////////////4N3d/1A+
+ Pv85JCX/OiUm/zklJv85JSb/OSUm/zglJv84JSb/NyUm/zclJv83JSb/NiUm/zYlJv81JSb/NSYm/zMn
+ J/80Jyj/Mygo/zIoKKgxJycDMigoAAAAAAAAAAAAMygoADQpKQMzKCirMygo/zQoKP80Jyf/NSUm/zUl
+ Jv82JSb/NyYm/zcmJv83JSb/OCUm/zkmJ/86Jif/OiYn/zgkJf+impr/////////////////////////
+ ////////393d/1A9Pf86JCX/OyYm/zomJv85JSb/OiUm/zomJ/85Jif/OCYn/zclJv82JSb/NiUm/zcm
+ J/82Jif/NiYn/zUoKP80Jyf/Micn/zEnJ6gzKCgDMigoAAAAAAAAAAAAMigoADMpKQMyJyerMycn/zQo
+ KP80Jyf/NSUm/zUlJv83Jib/NyYm/zYlJv83JSb/OCYm/zomJ/87Jif/OyYn/zgkJf+imZr/////////
+ ////////////////////////3tzc/088Pf87JCX/PCYm/zolJv85JSb/OiYm/zsmJ/85Jif/OSYn/zgl
+ Jv82JSb/NiUm/zcmJ/82Jib/NSUm/zUnJ/8zJyf/Mycn/zInJ6g0KSkDMygoAAAAAAAAAAAAMygoADIp
+ KQMyKCirNCgo/zQoKP80Jif/NSUm/zUlJv82JSb/NyYm/zYlJv83JSb/OCYm/z0oKP8/KSn/OyYn/zgk
+ Jf+imZr/////////////////////////////////3tvc/088PP86JCX/PCYm/zslJv85JSb/OiYm/z4o
+ KP8+KSn/OSYn/zglJv83JSb/NiUm/zcmJv82Jib/NiYm/zUnJ/8zJyf/Mycn/zInJ6gvJycDMScnAAAA
+ AAAAAAAAMygoADIoKQMzKCirNCgo/zQoKP81Jif/NSUm/zYmJ/84Jif/OCYn/zclJv83JSb/OCYn/zsn
+ J/89Jyj/OyYn/zkkJf+impr/////////////////////////////////3tvb/088PP87JSX/PCYn/zsl
+ Jv86JSb/OiYm/zwnJ/88Jyj/OSYn/zglJv83JSb/NiUm/zcmJv82Jib/NiYn/zUmJ/8zJyf/Myco/zMo
+ KKgvKCcDMigoAAAAAAAAAAAAMScnAC8nJwMyJyerMycn/zQnJ/81Jib/NSUm/zYmJv82JSb/NyYm/zcl
+ Jv83JSb/OCUm/zomJ/86Jib/OiYm/zkkJf+impr/////////////////////////////////3dra/0w4
+ OP83ISL/OSMj/zkiI/84IyT/OiUm/zomJ/85Jib/OCYm/zglJv83JSb/NyYm/zcmJv81JSb/NSUm/zUm
+ J/8zJyf/Mygo/zMoKKgsJSUDMScnAAAAAAAAAAAAMScnAC8nJwMyJyerNCgo/zYpKf81Jif/NSUm/zYm
+ J/83Jib/NyYn/zclJv84JSb/OCYm/zkmJv85JSb/OSUm/zslJf+jmpr/////////////////////////
+ ////////7Ovr/5mOj/+MgIH/jYGC/46Cg/9yZWX/PCgp/zolJv84JSb/NyUm/zkmJ/84Jif/OCYn/zYl
+ Jv81JSb/NiYn/zcoKP80KCj/Mygo/zMoKKguJiYDMicnAAAAAAAAAAAAMScnAC8nJwMyJyerNCgo/zQo
+ KP81Jif/NSUm/zYmJ/83Jib/NyYn/zclJv83JSb/OCUm/zklJv86Jib/OSUm/zolJf+jmpr/////////
+ ///////////////////////////////////+//7//v////////+/urr/Pisr/zklJv85Jib/NyUm/zkm
+ J/84Jif/OCYn/zYlJv81JSb/NiYm/zUnJ/8zJyf/Mycn/zMoKKguJycDMicoAAAAAAAAAAAAMScnADAn
+ JwMyJyerMycn/zMnJ/80Jif/NSUm/zUlJv82JSb/NiUm/zclJv83JSb/OCUm/zglJv85JSb/OSUm/zgk
+ Jf+imZr////////////////////////////////////////////////////////////Au7v/Piss/zkl
+ Jv84JSb/NyUm/zclJv83JSb/NiUm/zclJv81JSb/NSUm/zQmJ/8zJyf/Mycn/zEnJ6gvJycDMScnAAAA
+ AAAAAAAAMScnADAnJwMyJyerMycn/zQoJ/80Jyf/NiUm/zUlJv82JSb/OCYn/zgmJ/84Jib/NyUm/zcl
+ Jv85JSb/OSUm/zklJf+impr/////////////////////////////////////////////////////////
+ ///Cvb7/Piss/zglJv83JSb/OCUm/zgmJ/83Jib/NiUm/zYlJv81JSb/NiYm/zQnJ/80KCj/Mycn/zEn
+ J6gwJycDMScnAAAAAAAAAAAAMScnAC8mJgMyJyerMygo/zMnJ/80Jyf/NSUm/zUlJv82Jib/OCcn/zgn
+ J/84Jif/NyUm/zclJv85Jib/OiUm/zolJf+impr/////////////////////////////////////////
+ ///////////////////GwsL/QC0u/zglJv84Jib/OCUm/zkmJ/83Jif/NyYm/zYlJv81JSb/NiYm/zQn
+ J/8zJyf/Micn/zEnJ6gxJycDMScnAAAAAAAAAAAAMScnAC4lJQMyKCirNCkp/zQoKP80KCj/NSYn/zUl
+ Jv81JSb/NiUm/zYlJv83JSb/NyUm/zclJv84Jib/OSUm/zgkJf+impr/////////////////////////
+ ///////////////////////////////////MyMj/Qi8w/zclJf84Jib/NyUm/zclJv83JSb/NiUm/zYl
+ Jv82Jib/Nicn/zQoKP80KCj/Mygo/zIoKKgvJiYDMScnAAAAAAAAAAAAMScnAC4lJQMzKCirNCkp/zUo
+ KP81KCj/Nico/zYmJv81JSb/NiUm/zgmJ/83Jif/OCYm/zclJv84Jib/OCUm/zgkJf+impr/////////
+ ///////////////////////////////////////////////////V0tL/RjU1/zckJf84Jib/NyUm/zYl
+ Jv83JSb/NiUm/zUlJv82Jib/Nigo/zUoKP80KCj/Mygo/zIoKKguJSUDMScnAAAAAAAAAAAAMScnAC4l
+ JQMzKCirMygo/zQoKP80KCj/NSgo/zYmJ/81JSb/NSUm/zcmJv83Jif/NyYm/zglJv84Jib/NyUm/zck
+ Jf+hmpr/////////////////////////////////+Pf3/8G8vP+yrK3/s62t/7Surv+dlpb/QzMz/zcl
+ Jf84Jib/NyUm/zclJv82JSb/NSUm/zUlJv82Jif/NSgo/zUoKP80KCj/Mygo/zIoKKgtJCQDMScnAAAA
+ AAAAAAAAMScnAC8mJQMyKCirMigo/zMoKP80KCj/NCgo/zUmJ/81JSb/NSUm/zYlJv82JSb/NiUm/zcm
+ Jv84Jib/OCYn/zYkJf+hmZr/////////////////////////////////6ejo/1lJSv84JSb/OSco/zkn
+ KP85Jyj/OCYm/zglJv84Jif/NyYn/zcmJv82JSb/NSUm/zUlJv81Jyf/NCgo/zQoKP8zKCj/Migo/zIo
+ KKgvJSUDMScnAAAAAAAAAAAAMCcnAC8nJwMxJyerMScn/zEnJ/8zJyf/Mycn/zQnJ/81Jib/NSUm/zUl
+ Jv82JSb/NiUm/zcmJv84Jyf/OScn/zclJf+gmZr/////////////////////////////////5+bm/1VG
+ R/82IyT/NyUm/zclJv83JSb/NyUm/zcmJv84Jif/OCcn/zcmJ/81JSb/NSUm/zUmJv8zJyf/Mycn/zMn
+ J/8xJyf/MScn/zEoKKgvKCcDMSgoAAAAAAAAAAAALycnAC0nJgMwJyerMigo/zInJ/8yJyf/NCgo/zQo
+ KP80Jyf/NSUm/zYmJ/83Jyf/NiUm/zcmJv84Jyf/OScn/zclJf+gmZr/////////////////////////
+ ////////5uXl/1RFRv82IyT/NyUm/zkmJ/85Jyf/NyUm/zcmJv84Jyf/OCcn/zcmJ/82Jif/NiYn/zUo
+ KP8zJyf/NCgo/zInJ/8xJyf/Migo/zEoKKguKCgDMCgoAAAAAAAAAAAALycnAC0mJgMvJyerMykp/zIo
+ KP8yKCj/NCkp/zUoKP80KCj/NCYn/zYmJ/83Jyf/NSUm/zYmJv83Jif/NyYm/zYlJf+gmZr/////////
+ ////////////////////////5eTk/1RERf82JCX/NyUm/zgmJ/84Jyf/NiUm/zcmJv83Jif/NiYm/zYm
+ J/81Jib/NScn/zQoKP80Jyf/NSkp/zIoKP8yKCj/Mykp/zEoKKgwKCgDMSgoAAAAAAAAAAAALycnAC8n
+ JwMvJyerMCcn/zEnJ/8yKCj/Mygp/zQoKP80KCj/Mycn/zQmJ/81JSb/NSUm/zUlJv82JSb/NyUm/zUk
+ Jf+gmZr/////////////////////////////////5OLi/09AQf8yISH/NCIj/zMiI/8zIiP/NCMk/zYl
+ Jv81JSb/NSUm/zUmJv80Jif/Mycn/zMnJ/8zJyf/Micn/zEnJ/8yKCj/MSgo/zEoKKgwKCgDMSgoAAAA
+ AAAAAAAAMCgoADEoKAMwKCirMCgo/zEoKP8xJyf/MScn/zInJ/8zJyf/NCgo/zQnJ/80Jif/NSUm/zYm
+ J/82Jif/NiUm/zUkJf+gmpr/////////////////////////////////8O/v/5uTlP+If3//h35//4V8
+ ff+Ee3z/aV5f/zgoKf82Jif/NSUm/zQmJ/80Jyf/Mycn/zQoKP8yKCj/Migo/zIoKP8wJyf/Lycn/y8n
+ J6gvJycDLycnAAAAAAAAAAAAMCgpADIpKgMwKCirMCgo/zEoKP8xKCj/MScn/zInJ/8yKCj/Mycn/zMn
+ J/8zJyf/NScn/zYnJ/82Jif/NiYn/zQkJf+gmZr/////////////////////////////////////////
+ ///+/v7//v7+//3+/v//////yMXF/z8wMf81Jib/NSgo/zQnJ/8zJyf/Mycn/zMoKP8yKCj/Migo/zIo
+ KP8wJyf/Lycn/y8nJ6gzKioDMSgpAAAAAAAAAAAALygoAC8oKAMvJyerLycn/zAnJ/8vJyf/MCcn/zEn
+ J/8xJyf/Micn/zInJ/8zJyf/NCgo/zcpKf84KSn/NiYn/zQkJf+gmZr/////////////////////////
+ ////////////////////////////////////////2tjY/0k8Pf82KSn/NCgo/zQnJ/8zJyf/Micn/zIo
+ KP8yJyf/MCcn/zAoKP8vJyf/Lycn/y4nJ6guJycDLicnAAAAAAAAAAAAMCgpADEpKgMwKCirMCgo/zAo
+ KP8vJyf/MCcn/zEoKP8yKCj/Mygo/zInJ/8yJyf/NCgo/zYpKv83Kir/NSgo/zMlJf+gmpr/////////
+ ////////////////////////////////////////////////////////6Ofn/1VLS/81KCj/NCgo/zMn
+ J/8xJyf/MScn/zInKP8yKCj/MSgo/zAoKP8vJyf/Lycn/y8oKKguJycDLygoAAAAAAAAAAAALicnAC4n
+ JwMuJyerLicn/y8nJ/8vJyf/MCcn/zAoKP8xKCj/Migo/zInJ/8xJyf/Mygo/zQoKP80KCj/NCgo/zIm
+ Jv+fmpr/////////////////////////////////////////////////////////////////8vLy/2Na
+ Wv8xJSX/Mygo/zEnJ/8yJyf/Micn/zEoKP8vJyf/Lycn/y8nJ/8uJyf/Lygo/y8oKKgtJiYDLycnAAAA
+ AAAAAAAALicnAC0nJwMuJyerLygo/zApKf8vKCj/MCcn/zAoKP8wJyf/MSgo/zEnJ/8xJyf/Micn/zIo
+ KP8yJyf/Mycn/zMnJ/+fmpr/////////////////////////////////////////////////////////
+ ////////+vr6/3Rubv8uJCT/MScn/zIoKP8yKCj/MSgo/zAnJ/8vJyf/MCgo/zApKf8vKCj/Lygo/y8o
+ KKgsJiYDLicnAAAAAAAAAAAALScnAC0nJwMtJyerLygo/zApKf8vKCj/Lycn/zAoKP8wKCj/MCgo/zAn
+ J/8xJyf/Micn/zInJ/8yJyf/MScn/zInJ/+gm5v/////////////////////////////////////////
+ /////////////////////////////4mEhP8vJCT/MScn/zIoKf8yKSn/MSgo/zAnJ/8vJyf/Lygo/zAp
+ Kf8vKCj/Lico/y8oKKgsJycDLigoAAAAAAAAAAAALScnAC0nJwQtJyerLScn/y4nJ/8uJyf/Licn/y4n
+ J/8vJyf/Lycn/zAnJ/8vJyf/MCcn/zEnJ/8xJyf/MScn/zAmJv+UkJD/7e3t/+zr6//r6+v/6+vr/+vr
+ 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7e3t/5KOjv8wJib/Lycn/y8nJ/8wKCj/MCgo/y8o
+ KP8uJyf/Licn/y4nJ/8uJyf/LScn/y0nJ6ktJycDLScnAAAAAAAAAAAANC8vAEM/PwEvKSmgLigo/y4n
+ J/8uJyf/Lycn/y4nJ/8uJyf/Lygo/zAoKP8wJyf/Lycn/y8nJ/8vJyf/MCcn/zEnJ/9EPDz/Vk5O/1ZN
+ Tf9VTU3/Vk1N/1VNTf9WTU3/Vk1N/1VNTf9VTU3/Vk5O/1ZOTv9VTU3/VE1N/0Q9Pf8vJyf/Lycn/zAn
+ J/8vJyf/Lycn/y8oKP8uJyf/Lygo/y4nJ/8uJyf/LScn/y4oKJ1PTU0BMy4uAAAAAAAAAAAAWlhZACsk
+ JAAyLCxfLigo+C0nJ/8uJyf/Licn/y4nJ/8vKCj/MCkp/zApKf8wKCj/Lycn/y8nJ/8wJyf/MCgo/zEo
+ KP8wJyf/LiUl/y4lJf8uJSX/LyUl/y8lJf8vJSX/LiUl/y4lJf8vJSX/MCYn/zAmJv8uJib/LSUl/y4m
+ Jv8wJyf/MCgo/zAoKP8vKCj/Lygo/y4nJ/8uJyf/Lico/y0nJ/8tJyf/Ligo9zErLFwrJSUAWVdYAAAA
+ AAAAAAAAAAAAADYxMQA5NDQOMSssiy8pKe0uKCj/LScn/y4nJ/8uJyf/Lygo/y8oKP8vKCj/Licn/y8n
+ J/8wKCj/Lycn/zAoKP8wKCj/Lycn/zAnJ/8wJyf/MCgo/zAoKP8wJyf/MCcn/y8nJ/8wJyf/MCgo/zAo
+ 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
+ AElFTkSuQmCC
+
+
+
\ No newline at end of file
diff --git a/FModel/ShopWindow.Designer.cs b/FModel/ShopWindow.Designer.cs
new file mode 100644
index 00000000..bb506112
--- /dev/null
+++ b/FModel/ShopWindow.Designer.cs
@@ -0,0 +1,91 @@
+namespace FModel
+{
+ partial class ShopWindow
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ShopWindow));
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
+ this.richTextBox1 = new System.Windows.Forms.RichTextBox();
+ this.button1 = new System.Windows.Forms.Button();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // pictureBox1
+ //
+ this.pictureBox1.Location = new System.Drawing.Point(12, 12);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(938, 323);
+ this.pictureBox1.TabIndex = 0;
+ this.pictureBox1.TabStop = false;
+ //
+ // richTextBox1
+ //
+ this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.richTextBox1.Location = new System.Drawing.Point(12, 341);
+ this.richTextBox1.Name = "richTextBox1";
+ this.richTextBox1.ReadOnly = true;
+ this.richTextBox1.Size = new System.Drawing.Size(938, 228);
+ this.richTextBox1.TabIndex = 1;
+ this.richTextBox1.Text = "";
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(875, 575);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 23);
+ this.button1.TabIndex = 2;
+ this.button1.Text = "Export";
+ this.button1.UseVisualStyleBackColor = true;
+ //
+ // ShopWindow
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(962, 608);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.richTextBox1);
+ this.Controls.Add(this.pictureBox1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MaximizeBox = false;
+ this.Name = "ShopWindow";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Shop";
+ this.Load += new System.EventHandler(this.ShopWindow_Load);
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.PictureBox pictureBox1;
+ private System.Windows.Forms.RichTextBox richTextBox1;
+ private System.Windows.Forms.Button button1;
+ }
+}
\ No newline at end of file
diff --git a/FModel/ShopWindow.cs b/FModel/ShopWindow.cs
new file mode 100644
index 00000000..0e1f2b07
--- /dev/null
+++ b/FModel/ShopWindow.cs
@@ -0,0 +1,692 @@
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using RestSharp;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Diagnostics;
+using System.Drawing;
+using System.Drawing.Text;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace FModel
+{
+ public partial class ShopWindow : Form
+ {
+ private static string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).ToString() + "\\FModel";
+ private static string exchangeToken;
+ private static List EncryptedItemsID;
+ private static List ItemsID;
+ private static string ItemName;
+
+ PrivateFontCollection pfc = new PrivateFontCollection();
+ StringFormat centeredString = new StringFormat();
+ StringFormat rightString = new StringFormat();
+ StringFormat centeredStringLine = new StringFormat();
+ private int fontLength;
+ private byte[] fontdata;
+
+ private static void jwpmProcess(string args)
+ {
+ using (Process p = new Process())
+ {
+ p.StartInfo.FileName = docPath + "/john-wick-parse-modded.exe";
+ p.StartInfo.Arguments = args;
+ p.StartInfo.CreateNoWindow = true;
+ p.StartInfo.UseShellExecute = false;
+ p.Start();
+ p.WaitForExit();
+ }
+ }
+ private void AppendText(string text, Color color, bool addNewLine = false, HorizontalAlignment align = HorizontalAlignment.Left)
+ {
+ richTextBox1.SuspendLayout();
+ richTextBox1.SelectionColor = color;
+ richTextBox1.SelectionAlignment = align;
+ richTextBox1.AppendText(addNewLine
+ ? $"{text}{Environment.NewLine}"
+ : text);
+ richTextBox1.ScrollToCaret();
+ richTextBox1.ResumeLayout();
+ }
+ private void getItemRarity(FModel.Items.ItemsIdParser parser, Graphics toDrawOn, int x, int y)
+ {
+ if (parser.Rarity == "EFortRarity::Legendary")
+ {
+ Image RarityBG = Properties.Resources.I512;
+ toDrawOn.DrawImage(RarityBG, new Point(x, y));
+ AppendText("Item Rarity: ", Color.Black);
+ AppendText("IMPOSSIBLE (T9)", Color.DarkOrange, true);
+ }
+ if (parser.Rarity == "EFortRarity::Masterwork")
+ {
+ Image RarityBG = Properties.Resources.T512;
+ toDrawOn.DrawImage(RarityBG, new Point(x, y));
+ AppendText("Item Rarity: ", Color.Black);
+ AppendText("TRANSCENDENT", Color.OrangeRed, true);
+ }
+ if (parser.Rarity == "EFortRarity::Elegant")
+ {
+ Image RarityBG = Properties.Resources.M512;
+ toDrawOn.DrawImage(RarityBG, new Point(x, y));
+ AppendText("Item Rarity: ", Color.Black);
+ AppendText("MYTHIC", Color.Yellow, true);
+ }
+ if (parser.Rarity == "EFortRarity::Fine")
+ {
+ Image RarityBG = Properties.Resources.L512;
+ toDrawOn.DrawImage(RarityBG, new Point(x, y));
+ AppendText("Item Rarity: ", Color.Black);
+ AppendText("LEGENDARY", Color.Orange, true);
+ }
+ if (parser.Rarity == "EFortRarity::Quality")
+ {
+ Image RarityBG = Properties.Resources.E512;
+ toDrawOn.DrawImage(RarityBG, new Point(x, y));
+ AppendText("Item Rarity: ", Color.Black);
+ AppendText("EPIC", Color.Purple, true);
+ }
+ if (parser.Rarity == "EFortRarity::Sturdy")
+ {
+ Image RarityBG = Properties.Resources.R512;
+ toDrawOn.DrawImage(RarityBG, new Point(x, y));
+ AppendText("Item Rarity: ", Color.Black);
+ AppendText("RARE", Color.Blue, true);
+ }
+ if (parser.Rarity == "EFortRarity::Handmade")
+ {
+ Image RarityBG = Properties.Resources.C512;
+ toDrawOn.DrawImage(RarityBG, new Point(x, y));
+ AppendText("Item Rarity: ", Color.Black);
+ AppendText("COMMON", Color.DarkGray, true);
+ }
+ if (parser.Rarity == null)
+ {
+ Image RarityBG = Properties.Resources.U512;
+ toDrawOn.DrawImage(RarityBG, new Point(x, y));
+ AppendText("Item Rarity: ", Color.Black);
+ AppendText("UNCOMMON", Color.Green, true);
+ }
+ }
+
+ public ShopWindow(string exToken)
+ {
+ InitializeComponent();
+ exchangeToken = exToken;
+ }
+
+ private async void ShopWindow_Load(object sender, EventArgs e)
+ {
+ fontLength = Properties.Resources.BurbankBigCondensed_Bold.Length;
+ fontdata = Properties.Resources.BurbankBigCondensed_Bold;
+ System.IntPtr weirdData = Marshal.AllocCoTaskMem(fontLength);
+ Marshal.Copy(fontdata, 0, weirdData, fontLength);
+ pfc.AddMemoryFont(weirdData, fontLength);
+
+ EncryptedItemsID = new List();
+ ItemsID = new List();
+
+ FModel.Shop.ShopParser shop = new Shop.ShopParser();
+ await Task.Run(() =>
+ {
+ var client = new RestClient("https://fortnite-public-service-prod11.ol.epicgames.com/fortnite/api/storefront/v2/catalog");
+ var req = new RestRequest(Method.GET);
+ req.AddHeader("X-EpicGames-Language", "en");
+ req.AddHeader("Authorization", "bearer " + exchangeToken);
+ var response = client.Execute(req).Content;
+ shop = FModel.Shop.ShopParser.FromJson(response);
+ //File.WriteAllText(docPath + "\\shop.json", JToken.Parse(content).ToString(Newtonsoft.Json.Formatting.Indented));
+ });
+
+ for (int i = 0; i < shop.Storefronts.Length; i++)
+ {
+ if (shop.Storefronts[i].Name == "BRDailyStorefront")
+ {
+ for (int i2 = 0; i2 < shop.Storefronts[i].CatalogEntries.Length; i2++)
+ {
+ for (int i3 = 0; i3 < shop.Storefronts[i].CatalogEntries[i2].ItemGrants.Length; i3++)
+ {
+ var parts = shop.Storefronts[i].CatalogEntries[i2].ItemGrants[i3].TemplateId.Split(':');
+ ItemsID.Add(parts[1]);
+ }
+ }
+ }
+ if (shop.Storefronts[i].Name == "BRWeeklyStorefront")
+ {
+ for (int i2 = 0; i2 < shop.Storefronts[i].CatalogEntries.Length; i2++)
+ {
+ if (shop.Storefronts[i].CatalogEntries[i2].MetaInfo != null)
+ {
+ for (int ii = 0; ii < shop.Storefronts[i].CatalogEntries[i2].MetaInfo.Length; ii++)
+ {
+ if (shop.Storefronts[i].CatalogEntries[i2].MetaInfo[ii].Key == "EncryptionKey")
+ {
+ for (int i3 = 0; i3 < shop.Storefronts[i].CatalogEntries[i2].ItemGrants.Length; i3++)
+ {
+ var parts = shop.Storefronts[i].CatalogEntries[i2].ItemGrants[i3].TemplateId.Split(':');
+ EncryptedItemsID.Add(parts[1]);
+ }
+ }
+ }
+ }
+ else
+ {
+ for (int i3 = 0; i3 < shop.Storefronts[i].CatalogEntries[i2].ItemGrants.Length; i3++)
+ {
+ var parts = shop.Storefronts[i].CatalogEntries[i2].ItemGrants[i3].TemplateId.Split(':');
+ ItemsID.Add(parts[1]);
+ }
+ }
+ }
+ }
+ }
+
+ Bitmap bmp = new Bitmap(ItemsID.Count * 522 + (ItemsID.Count - 1) * 10, (522 * 2) + 10);
+ int xPoint = 0;
+ int yPoint = 532;
+ for (int i = 0; i < ItemsID.Count; i++)
+ {
+ var files = Directory.GetFiles(docPath + "\\Extracted", ItemsID[i] + ".*", SearchOption.AllDirectories).Where(x => !x.EndsWith(".png")).FirstOrDefault();
+ if (!File.Exists(files))
+ {
+ await Task.Run(() =>
+ {
+ jwpmProcess("extract \"" + Properties.Settings.Default.FortnitePAKs + "\\pakchunk0_s1-WindowsClient.pak\" \"" + ItemsID[i] + "\" \"" + docPath + "\"");
+ });
+ files = Directory.GetFiles(docPath + "\\Extracted", ItemsID[i] + ".*", SearchOption.AllDirectories).Where(x => !x.EndsWith(".png")).FirstOrDefault();
+ }
+ if (files != null)
+ {
+ AppendText("", Color.Black, true);
+ AppendText("✔ ", Color.Green);
+ AppendText(ItemsID[i], Color.DarkRed);
+ AppendText(" successfully extracted to ", Color.Black);
+ AppendText(files.Substring(0, files.LastIndexOf('.')), Color.SteelBlue, true);
+
+ if (files.Contains(".uasset") || files.Contains(".uexp") || files.Contains(".ubulk"))
+ {
+ AppendText("✔ ", Color.Green);
+ AppendText(ItemsID[i], Color.DarkRed);
+ AppendText(" is an ", Color.Black);
+ AppendText("asset", Color.SteelBlue, true);
+ await Task.Run(() =>
+ {
+ jwpmProcess("serialize \"" + files.Substring(0, files.LastIndexOf('.')) + "\"");
+ });
+ }
+ try
+ {
+ var filesJSON = Directory.GetFiles(docPath, ItemsID[i] + ".json", SearchOption.AllDirectories).FirstOrDefault();
+ if (filesJSON != null)
+ {
+ var json = JToken.Parse(File.ReadAllText(filesJSON)).ToString();
+ File.Delete(filesJSON);
+ AppendText("✔ ", Color.Green);
+ AppendText(ItemsID[i], Color.DarkRed);
+ AppendText(" successfully serialized", Color.Black, true);
+
+ var IDParser = FModel.Items.ItemsIdParser.FromJson(json);
+
+ if (filesJSON.Contains("Athena\\Items\\") && (filesJSON.Contains("Cosmetics"))) //ASSET IS AN ID => CREATE ICON
+ {
+ AppendText("Parsing...", Color.Black, true);
+ for (int iii = 0; iii < IDParser.Length; iii++)
+ {
+ if (IDParser[iii].ExportType.Contains("Athena") && IDParser[iii].ExportType.Contains("Item") && IDParser[iii].ExportType.Contains("Definition"))
+ {
+ AppendText("✔ ", Color.Green);
+ AppendText(ItemsID[i], Color.DarkRed);
+ AppendText(" is a ", Color.Black);
+ AppendText("Cosmetic ID", Color.SteelBlue);
+ AppendText(" file", Color.Black, true);
+
+ ItemName = IDParser[iii].DisplayName;
+ Graphics g = Graphics.FromImage(bmp);
+ g.TextRenderingHint = TextRenderingHint.AntiAlias;
+
+ getItemRarity(IDParser[iii], g, xPoint, yPoint);
+
+ string itemIconPath = string.Empty;
+
+ if (IDParser[iii].HeroDefinition != null)
+ {
+ var filesPath = Directory.GetFiles(docPath + "\\Extracted", IDParser[iii].HeroDefinition + ".*", SearchOption.AllDirectories).FirstOrDefault();
+ if (!File.Exists(filesPath))
+ {
+ AppendText("✔ ", Color.Green);
+ AppendText("Extracting ", Color.Black);
+ AppendText(IDParser[iii].HeroDefinition, Color.DarkRed, true);
+
+ await Task.Run(() =>
+ {
+ jwpmProcess("extract \"" + Properties.Settings.Default.FortnitePAKs + "\\pakchunk0_s1-WindowsClient.pak\" \"" + IDParser[iii].HeroDefinition + "\" \"" + docPath + "\"");
+ });
+ filesPath = Directory.GetFiles(docPath + "\\Extracted", IDParser[iii].HeroDefinition + ".*", SearchOption.AllDirectories).FirstOrDefault();
+ }
+ try
+ {
+ if (filesPath != null)
+ {
+ AppendText("✔ ", Color.Green);
+ AppendText(IDParser[iii].HeroDefinition, Color.DarkRed);
+ AppendText(" successfully extracted to ", Color.Black);
+ AppendText(filesPath.Substring(0, filesPath.LastIndexOf('.')), Color.SteelBlue, true);
+ try
+ {
+ await Task.Run(() =>
+ {
+ jwpmProcess("serialize \"" + filesPath.Substring(0, filesPath.LastIndexOf('.')) + "\"");
+ });
+ var filesJSON2 = Directory.GetFiles(docPath, IDParser[iii].HeroDefinition + ".json", SearchOption.AllDirectories).FirstOrDefault();
+ var json2 = JToken.Parse(File.ReadAllText(filesJSON2)).ToString();
+ File.Delete(filesJSON2);
+ AppendText("✔ ", Color.Green);
+ AppendText(IDParser[iii].HeroDefinition, Color.DarkRed);
+ AppendText(" successfully serialized", Color.Black, true);
+
+ var IDParser2 = FModel.Items.ItemsIdParser.FromJson(json2);
+ for (int i1 = 0; i1 < IDParser2.Length; i1++)
+ {
+ if (IDParser2[i1].LargePreviewImage != null)
+ {
+ string textureFile = Path.GetFileName(IDParser2[i1].LargePreviewImage.AssetPathName).Substring(0, Path.GetFileName(IDParser2[i1].LargePreviewImage.AssetPathName).LastIndexOf('.'));
+ AppendText("✔ ", Color.Green);
+ AppendText(textureFile, Color.DarkRed);
+ AppendText(" detected as a ", Color.Black);
+ AppendText("Texture2D file", Color.SteelBlue, true);
+
+ var filesPath2 = Directory.GetFiles(docPath + "\\Extracted", textureFile + ".*", SearchOption.AllDirectories).FirstOrDefault();
+ if (!File.Exists(filesPath2))
+ {
+ await Task.Run(() =>
+ {
+ jwpmProcess("extract \"" + Properties.Settings.Default.FortnitePAKs + "\\pakchunk0_s7-WindowsClient.pak" + "\" \"" + textureFile + "\" \"" + docPath + "\"");
+ });
+ filesPath2 = Directory.GetFiles(docPath + "\\Extracted", textureFile + ".*", SearchOption.AllDirectories).FirstOrDefault();
+ }
+ try
+ {
+ if (filesPath2 != null)
+ {
+ AppendText("✔ ", Color.Green);
+ AppendText(textureFile, Color.DarkRed);
+ AppendText(" successfully extracted to ", Color.Black);
+ AppendText(filesPath2.Substring(0, filesPath2.LastIndexOf('.')), Color.SteelBlue, true);
+
+ itemIconPath = filesPath2.Substring(0, filesPath2.LastIndexOf('.')) + ".png";
+ if (!File.Exists(itemIconPath))
+ {
+ await Task.Run(() =>
+ {
+ jwpmProcess("texture \"" + filesPath2.Substring(0, filesPath2.LastIndexOf('.')) + "\"");
+ });
+ itemIconPath = filesPath2.Substring(0, filesPath2.LastIndexOf('.')) + ".png";
+ }
+
+ AppendText("✔ ", Color.Green);
+ AppendText(textureFile, Color.DarkRed);
+ AppendText(" successfully converted to a PNG image with path ", Color.Black);
+ AppendText(itemIconPath, Color.SteelBlue, true);
+ }
+ }
+ catch (IndexOutOfRangeException)
+ {
+ AppendText("[IndexOutOfRangeException] ", Color.Red);
+ AppendText("Can't extract ", Color.Black);
+ AppendText(textureFile, Color.SteelBlue);
+ AppendText(" in ", Color.Black);
+ AppendText("pakchunk0_s7-WindowsClient.pak", Color.DarkRed, true);
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex.Message);
+ }
+ }
+ }
+ catch (IndexOutOfRangeException)
+ {
+ AppendText("[IndexOutOfRangeException] ", Color.Red);
+ AppendText("Can't extract ", Color.Black);
+ AppendText(IDParser[iii].HeroDefinition, Color.SteelBlue);
+ AppendText(" in ", Color.Black);
+ AppendText("pakchunk0_s1-WindowsClient.pak", Color.DarkRed, true);
+ }
+ }
+ else if (IDParser[iii].WeaponDefinition != null)
+ {
+ var filesPath = Directory.GetFiles(docPath + "\\Extracted", IDParser[iii].WeaponDefinition + ".*", SearchOption.AllDirectories).FirstOrDefault();
+ if (!File.Exists(filesPath))
+ {
+ AppendText("✔ ", Color.Green);
+ AppendText("Extracting ", Color.Black);
+ AppendText(IDParser[iii].WeaponDefinition, Color.DarkRed, true);
+
+ await Task.Run(() =>
+ {
+ jwpmProcess("extract \"" + Properties.Settings.Default.FortnitePAKs + "\\pakchunk0_s1-WindowsClient.pak\" \"" + IDParser[iii].WeaponDefinition + "\" \"" + docPath + "\"");
+ });
+ filesPath = Directory.GetFiles(docPath + "\\Extracted", IDParser[iii].WeaponDefinition + ".*", SearchOption.AllDirectories).FirstOrDefault();
+ }
+ try
+ {
+ if (filesPath != null)
+ {
+ AppendText("✔ ", Color.Green);
+ AppendText(IDParser[iii].WeaponDefinition, Color.DarkRed);
+ AppendText(" successfully extracted to ", Color.Black);
+ AppendText(filesPath.Substring(0, filesPath.LastIndexOf('.')), Color.SteelBlue, true);
+ try
+ {
+ await Task.Run(() =>
+ {
+ jwpmProcess("serialize \"" + filesPath.Substring(0, filesPath.LastIndexOf('.')) + "\"");
+ });
+ var filesJSON2 = Directory.GetFiles(docPath, IDParser[iii].WeaponDefinition + ".json", SearchOption.AllDirectories).FirstOrDefault();
+ var json2 = JToken.Parse(File.ReadAllText(filesJSON2)).ToString();
+ File.Delete(filesJSON2);
+ AppendText("✔ ", Color.Green);
+ AppendText(IDParser[iii].WeaponDefinition, Color.DarkRed);
+ AppendText(" successfully serialized", Color.Black, true);
+
+ var IDParser2 = FModel.Items.ItemsIdParser.FromJson(json2);
+ for (int i2 = 0; i2 < IDParser2.Length; i2++)
+ {
+ if (IDParser2[i2].LargePreviewImage != null)
+ {
+ string textureFile = Path.GetFileName(IDParser2[i2].LargePreviewImage.AssetPathName).Substring(0, Path.GetFileName(IDParser2[i2].LargePreviewImage.AssetPathName).LastIndexOf('.'));
+ AppendText("✔ ", Color.Green);
+ AppendText(textureFile, Color.DarkRed);
+ AppendText(" detected as a ", Color.Black);
+ AppendText("Texture2D file", Color.SteelBlue, true);
+
+ var filesPath2 = Directory.GetFiles(docPath + "\\Extracted", textureFile + ".*", SearchOption.AllDirectories).FirstOrDefault();
+ if (!File.Exists(filesPath2))
+ {
+ await Task.Run(() =>
+ {
+ jwpmProcess("extract \"" + Properties.Settings.Default.FortnitePAKs + "\\pakchunk0_s7-WindowsClient.pak" + "\" \"" + textureFile + "\" \"" + docPath + "\"");
+ });
+ filesPath2 = Directory.GetFiles(docPath + "\\Extracted", textureFile + ".*", SearchOption.AllDirectories).FirstOrDefault();
+ }
+ try
+ {
+ if (filesPath2 != null)
+ {
+ AppendText("✔ ", Color.Green);
+ AppendText(textureFile, Color.DarkRed);
+ AppendText(" successfully extracted to ", Color.Black);
+ AppendText(filesPath2.Substring(0, filesPath2.LastIndexOf('.')), Color.SteelBlue, true);
+
+ itemIconPath = filesPath2.Substring(0, filesPath2.LastIndexOf('.')) + ".png";
+ if (!File.Exists(itemIconPath))
+ {
+ await Task.Run(() =>
+ {
+ jwpmProcess("texture \"" + filesPath2.Substring(0, filesPath2.LastIndexOf('.')) + "\"");
+ });
+ itemIconPath = filesPath2.Substring(0, filesPath2.LastIndexOf('.')) + ".png";
+ }
+
+ AppendText("✔ ", Color.Green);
+ AppendText(textureFile, Color.DarkRed);
+ AppendText(" successfully converted to a PNG image with path ", Color.Black);
+ AppendText(itemIconPath, Color.SteelBlue, true);
+ }
+ }
+ catch (IndexOutOfRangeException)
+ {
+ AppendText("[IndexOutOfRangeException] ", Color.Red);
+ AppendText("Can't extract ", Color.Black);
+ AppendText(textureFile, Color.SteelBlue);
+ AppendText(" in ", Color.Black);
+ AppendText("pakchunk0_s7-WindowsClient.pak", Color.DarkRed, true);
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex.Message);
+ }
+ }
+ }
+ catch (IndexOutOfRangeException)
+ {
+ AppendText("[IndexOutOfRangeException] ", Color.Red);
+ AppendText("Can't extract ", Color.Black);
+ AppendText(IDParser[iii].WeaponDefinition, Color.SteelBlue);
+ AppendText(" in ", Color.Black);
+ AppendText("pakchunk0_s1-WindowsClient.pak", Color.DarkRed, true);
+ }
+ }
+ else if (IDParser[iii].LargePreviewImage != null)
+ {
+ string textureFile = Path.GetFileName(IDParser[iii].LargePreviewImage.AssetPathName).Substring(0, Path.GetFileName(IDParser[iii].LargePreviewImage.AssetPathName).LastIndexOf('.'));
+ AppendText("✔ ", Color.Green);
+ AppendText(textureFile, Color.DarkRed);
+ AppendText(" detected as a ", Color.Black);
+ AppendText("Texture2D file", Color.SteelBlue, true);
+
+ var filesPath = Directory.GetFiles(docPath + "\\Extracted", textureFile + ".*", SearchOption.AllDirectories).FirstOrDefault();
+ if (!File.Exists(filesPath))
+ {
+ await Task.Run(() =>
+ {
+ if (IDParser[iii].LargePreviewImage.AssetPathName.Contains("/Game/2dAssets/"))
+ {
+ jwpmProcess("extract \"" + Properties.Settings.Default.FortnitePAKs + "\\pakchunk0-WindowsClient.pak" + "\" \"" + textureFile + "\" \"" + docPath + "\"");
+ }
+ else if (IDParser[iii].LargePreviewImage.AssetPathName.Contains("/Game/Athena/TestAssets/") || IDParser[iii].LargePreviewImage.AssetPathName.Contains("/Game/Athena/Prototype/") || IDParser[iii].LargePreviewImage.AssetPathName.Contains("/Game/Athena/Items/"))
+ {
+ jwpmProcess("extract \"" + Properties.Settings.Default.FortnitePAKs + "\\pakchunk0_s1-WindowsClient.pak\" \"" + textureFile + "\" \"" + docPath + "\"");
+ }
+ else
+ {
+ jwpmProcess("extract \"" + Properties.Settings.Default.FortnitePAKs + "\\pakchunk0_s7-WindowsClient.pak" + "\" \"" + textureFile + "\" \"" + docPath + "\"");
+ }
+ });
+ filesPath = Directory.GetFiles(docPath + "\\Extracted", textureFile + ".*", SearchOption.AllDirectories).FirstOrDefault();
+ }
+ try
+ {
+ if (filesPath != null)
+ {
+ AppendText("✔ ", Color.Green);
+ AppendText(textureFile, Color.DarkRed);
+ AppendText(" successfully extracted to ", Color.Black);
+ AppendText(filesPath.Substring(0, filesPath.LastIndexOf('.')), Color.SteelBlue, true);
+
+ itemIconPath = filesPath.Substring(0, filesPath.LastIndexOf('.')) + ".png";
+ if (!File.Exists(itemIconPath))
+ {
+ await Task.Run(() =>
+ {
+ jwpmProcess("texture \"" + filesPath.Substring(0, filesPath.LastIndexOf('.')) + "\"");
+ });
+ itemIconPath = filesPath.Substring(0, filesPath.LastIndexOf('.')) + ".png";
+ }
+
+ AppendText("✔ ", Color.Green);
+ AppendText(textureFile, Color.DarkRed);
+ AppendText(" successfully converted to a PNG image with path ", Color.Black);
+ AppendText(itemIconPath, Color.SteelBlue, true);
+ }
+ }
+ catch (IndexOutOfRangeException)
+ {
+ AppendText("[IndexOutOfRangeException] ", Color.Red);
+ AppendText("Can't extract ", Color.Black);
+ AppendText(textureFile, Color.SteelBlue);
+ AppendText(" in ", Color.Black);
+ AppendText("pakchunk0_s7-WindowsClient.pak", Color.DarkRed, true);
+ }
+ }
+ else if (IDParser[iii].SmallPreviewImage != null)
+ {
+ string textureFile = Path.GetFileName(IDParser[iii].SmallPreviewImage.AssetPathName).Substring(0, Path.GetFileName(IDParser[iii].SmallPreviewImage.AssetPathName).LastIndexOf('.'));
+ AppendText("✔ ", Color.Green);
+ AppendText(textureFile, Color.DarkRed);
+ AppendText(" detected as a ", Color.Black);
+ AppendText("Texture2D file", Color.SteelBlue, true);
+
+ var filesPath = Directory.GetFiles(docPath + "\\Extracted", textureFile + ".*", SearchOption.AllDirectories).FirstOrDefault();
+ if (!File.Exists(filesPath))
+ {
+ await Task.Run(() =>
+ {
+ if (IDParser[iii].SmallPreviewImage.AssetPathName.Contains("/Game/2dAssets/"))
+ {
+ jwpmProcess("extract \"" + Properties.Settings.Default.FortnitePAKs + "\\pakchunk0-WindowsClient.pak" + "\" \"" + textureFile + "\" \"" + docPath + "\"");
+ }
+ else if (IDParser[iii].SmallPreviewImage.AssetPathName.Contains("/Game/Athena/TestAssets/") || IDParser[iii].SmallPreviewImage.AssetPathName.Contains("/Game/Athena/Prototype/") || IDParser[iii].LargePreviewImage.AssetPathName.Contains("/Game/Athena/Items/"))
+ {
+ jwpmProcess("extract \"" + Properties.Settings.Default.FortnitePAKs + "\\pakchunk0_s1-WindowsClient.pak\" \"" + textureFile + "\" \"" + docPath + "\"");
+ }
+ else
+ {
+ jwpmProcess("extract \"" + Properties.Settings.Default.FortnitePAKs + "\\pakchunk0_s7-WindowsClient.pak" + "\" \"" + textureFile + "\" \"" + docPath + "\"");
+ }
+ });
+ filesPath = Directory.GetFiles(docPath + "\\Extracted", textureFile + ".*", SearchOption.AllDirectories).FirstOrDefault();
+ }
+ try
+ {
+ if (filesPath != null)
+ {
+ AppendText("✔ ", Color.Green);
+ AppendText(textureFile, Color.DarkRed);
+ AppendText(" successfully extracted to ", Color.Black);
+ AppendText(filesPath.Substring(0, filesPath.LastIndexOf('.')), Color.SteelBlue, true);
+
+ itemIconPath = filesPath.Substring(0, filesPath.LastIndexOf('.')) + ".png";
+ if (!File.Exists(itemIconPath))
+ {
+ await Task.Run(() =>
+ {
+ jwpmProcess("texture \"" + filesPath.Substring(0, filesPath.LastIndexOf('.')) + "\"");
+ });
+ itemIconPath = filesPath.Substring(0, filesPath.LastIndexOf('.')) + ".png";
+ }
+
+ AppendText("✔ ", Color.Green);
+ AppendText(textureFile, Color.DarkRed);
+ AppendText(" successfully converted to a PNG image with path ", Color.Black);
+ AppendText(itemIconPath, Color.SteelBlue, true);
+ }
+ }
+ catch (IndexOutOfRangeException)
+ {
+ AppendText("[IndexOutOfRangeException] ", Color.Red);
+ AppendText("Can't extract ", Color.Black);
+ AppendText(textureFile, Color.SteelBlue);
+ AppendText(" in ", Color.Black);
+ AppendText("pakchunk0_s7-WindowsClient.pak", Color.DarkRed, true);
+ }
+ }
+
+ if (File.Exists(itemIconPath))
+ {
+ Image ItemIcon = Image.FromFile(itemIconPath);
+ g.DrawImage(ItemIcon, new Point(xPoint + 5, yPoint + 5));
+ }
+ else
+ {
+ Image ItemIcon = Properties.Resources.unknown512;
+ g.DrawImage(ItemIcon, new Point(xPoint, yPoint));
+ }
+
+ Image bg512 = Properties.Resources.BG512;
+ g.DrawImage(bg512, new Point(xPoint + 5, yPoint + 383));
+
+ try
+ {
+ g.DrawString(ItemName, new Font(pfc.Families[0], 35), new SolidBrush(Color.White), new Point(xPoint + (522 / 2), yPoint + 395), centeredString);
+ }
+ catch (NullReferenceException)
+ {
+ AppendText("[NullReferenceException] ", Color.Red);
+ AppendText("No ", Color.Black);
+ AppendText("DisplayName ", Color.SteelBlue);
+ AppendText("found", Color.Black, true);
+ } //NAME
+ try
+ {
+ g.DrawString(IDParser[iii].Description, new Font("Arial", 10), new SolidBrush(Color.White), new Point(xPoint + (522 / 2), yPoint + 465), centeredStringLine);
+ }
+ catch (NullReferenceException)
+ {
+ AppendText("[NullReferenceException] ", Color.Red);
+ AppendText("No ", Color.Black);
+ AppendText("Description ", Color.SteelBlue);
+ AppendText("found", Color.Black, true);
+ } //DESCRIPTION
+ try
+ {
+ g.DrawString(IDParser[iii].ShortDescription, new Font(pfc.Families[0], 13), new SolidBrush(Color.White), new Point(xPoint + 5, yPoint + 500));
+ }
+ catch (NullReferenceException)
+ {
+ AppendText("[NullReferenceException] ", Color.Red);
+ AppendText("No ", Color.Black);
+ AppendText("ShortDescription ", Color.SteelBlue);
+ AppendText("found", Color.Black, true);
+ } //TYPE
+ try
+ {
+ g.DrawString(IDParser[iii].GameplayTags.GameplayTagsGameplayTags[Array.FindIndex(IDParser[iii].GameplayTags.GameplayTagsGameplayTags, x => x.StartsWith("Cosmetics.Source."))].Substring(17), new Font(pfc.Families[0], 13), new SolidBrush(Color.White), new Point(xPoint + (522 - 5), yPoint + 500), rightString);
+ }
+ catch (NullReferenceException)
+ {
+ AppendText("[NullReferenceException] ", Color.Red);
+ AppendText("No ", Color.Black);
+ AppendText("GameplayTags ", Color.SteelBlue);
+ AppendText("found", Color.Black, true);
+ }
+ catch (IndexOutOfRangeException)
+ {
+ AppendText("[IndexOutOfRangeException] ", Color.Red);
+ AppendText("No ", Color.Black);
+ AppendText("GameplayTags ", Color.SteelBlue);
+ AppendText("as ", Color.Black);
+ AppendText("Cosmetics.Source ", Color.SteelBlue);
+ AppendText("found", Color.Black, true);
+ } //COSMETIC SOURCE
+ } //Cosmetics
+ }
+ }
+ }
+ else
+ {
+ AppendText("✗ ", Color.Red);
+ AppendText("No serialized file found", Color.Black, true);
+ }
+ }
+ catch (JsonSerializationException)
+ {
+ AppendText("", Color.Black, true);
+ AppendText("✗ ", Color.Red);
+ AppendText("Error, json file too large to be fully displayed", Color.Black, true);
+ }
+ }
+ else
+ {
+ AppendText("", Color.Black, true);
+ AppendText("✗ ", Color.Red);
+ AppendText("Error while extracting ", Color.Black);
+ AppendText(ItemsID[i], Color.SteelBlue, true);
+ }
+ xPoint += 522;
+ }
+ pictureBox1.Image = bmp;
+ }
+ }
+}
diff --git a/FModel/ShopWindow.resx b/FModel/ShopWindow.resx
new file mode 100644
index 00000000..668416be
--- /dev/null
+++ b/FModel/ShopWindow.resx
@@ -0,0 +1,878 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ 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
+ Jv81Jif/NCcn/zMoKP8yKCj/MSgo/jAoKFwwKCgAMikpADEoKF0zKCj+NCgo/zQnJ/81Jib/NiYm/zYl
+ Jv89LC3/yMTE////////////4N3d/009Pv82JCX/NyYm/zclJv82JSb/NSYm/zQnJ/80KCj/Migo/jEo
+ KFwyKCgAMigoADEnJ10yKCj+NCgo/zUmJ/81JSb/NiUm/zcmJv8+LS3/yMPD////////////5ePj/08/
+ QP82JCT/NyUm/zgmJ/83Jif/NiUm/zUmJ/8zJyj/Migo/jIoKFwyKCgAMigoADInJ10zKCj+NSgo/zYm
+ J/83Jib/NyYm/zglJv8/LS3/yMPD////////////5OLi/1A+P/84JCX/OSYm/zgmJv84Jif/NyYm/zYm
+ J/80Jyj/Mygo/jMoKFwzKCgAMicnADInKF0zKCj+NScn/zYmJv83JSb/NyUm/zglJv8/LC3/yMPD////
+ ////////5OHi/1E+Pv85JCX/OSUm/zkmJ/83JSb/NiUm/zYmJv81Jyf/Mygo/jIoKFwyKCgAMygoADMo
+ KF00KCj+NSYn/zYlJv83JSb/OCUm/zsnJ/9ALC3/yMPD////////////4+Hh/1A9Pv85JCT/OiUm/zwn
+ KP84Jif/NiUm/zYmJv81Jif/Mycn/jInJ1wyJycAMycnADInJ100Jyj+NSYn/zcmJv83Jib/OCUm/zom
+ J/9ALC3/ycPD////////////4+Hh/1NAQP89Jyj/Oycn/zsmJ/84Jib/NyUm/zYmJv81Jif/Mycn/jMo
+ KFwzKCgAMicnADInJ100KCj+NSYn/zYmJv83Jib/OCUm/zklJv9ALC3/ycPE////////////9vX1/8bA
+ wP++t7f/bF1e/zcjJP84Jib/OCYn/zYlJv82Jif/NCcn/jMoKFwzKCgAMicnADInJ10zJyf+NSYm/zYl
+ Jv83Jif/NyUm/zglJv8/LC3/yMPD////////////////////////////hXl6/zUiIv84JSb/NyYm/zYl
+ Jv81Jif/Mycn/jInJ1wyJycAMygoADIoKF00KCj+NScn/zYlJv83Jif/NyUm/zglJv8/LC3/yMPE////
+ ////////////////////////iX9//zUiI/84Jib/NyYm/zYlJv81Jyf/Mygo/jInJ1wyJycAMykpADMo
+ KF00KCj+NSgo/zUmJv82Jib/NyYm/zclJv8+LC3/yMPD////////////+vr6/9fT0//Qzc3/e3Bw/zUj
+ JP83JSb/NiUm/zUmJv81KCj/NCgo/jIoKFwzKCgAMigoADIoKF0yKCj+NCgo/zUmJ/81JSb/NiUm/zcl
+ Jv8+LS3/yMPD////////////6ejo/1tLTP8/LS7/PCor/zcmJv83Jif/NiUm/zUmJ/80KCj/Migo/jIo
+ KFwyKCgAMSgoADAnJ10yKCj+Mygo/zQoKP81Jif/NiYn/zclJv8+LS3/yMPD////////////5+Xl/04+
+ P/8zICH/NSMk/zcmJv83Jif/NSYn/zQnKP8zKCj/Migo/jEoKFwyKCgAMCcnADAnJ10wKCj+Migo/zMo
+ KP80Jyf/NSYm/zUlJv88LC3/x8PD////////////7evr/3xxcf9nWlv/XE9P/zkpKf81Jib/NCcn/zMn
+ KP8yKCj/MSgo/jAoKFwwKCgALygoAC8oKF0wKCj+MCcn/zInJ/8zJyf/NCcn/zYnKP88LC3/x8PD////
+ /////////v7+//j4+P/4+Pj/1tPU/0g6O/8zJib/Mycn/zIoKP8xKCj/Lycn/i8nJ1wvJycALycoAC8o
+ KF0vKCj+MCcn/zEoKP8yKCj/Mycn/zUoKP86Li7/x8TE////////////////////////////6+rq/1RK
+ Sv8xJib/Micn/zEnKP8wJyj/Lycn/i8oKFwvKCgALicnAC4nJ14vKCj+Lygo/zAoKP8wKCj/MScn/zEn
+ J/85Li7/x8XF////////////////////////////9fX1/2JbW/8vJSX/MSgo/y8nJ/8wKCj/Lygo/i8o
+ KFwvKCgALigoAC4oKFkuJyj9Licn/y8nJ/8wKCj/MCcn/zAnJ/80Kyv/gHp6/6Cbm/+empr/npqa/56a
+ mv+fmpr/m5eX/1BJSf8uJib/MCgo/y8nJ/8uJyf/Licn/S4oKFcuKCgAMCoqADErKyouKCnXLicn/y4n
+ J/8wKCj/Lycn/y8nJ/8wKCj/LyYm/y4lJf8uJSX/LiUl/y4lJf8vJib/LSUl/y8nJ/8vKCj/Lygo/y4n
+ J/8uKCj/Ligo1jArKykvKioA/wD/APwAPwDgAAcAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAA
+ AQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAKAAAACAA
+ AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAABQSUkAMSgoADgwMAo1LCxEMyoqpjEoKPUwKCj0MikppTQsLEM5MDEKMSgoAFNO
+ TgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAABMQEAAc2RjADowMBc0KipaMikpsTIoKO0xJyf/LyUl/y8lJf8wJib/Migo7TIp
+ KbA0KipZOS8vFnVnZwBNQUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wA4Li8AOjIyBDYsLCw2Kyt9NSoqzzInJ/ovJSX/MSYm/0E3N/5kXFz9XlZW/T0z
+ M/4xJib/MCUl/zEnJ/o0KirPNiwsfDYsLCw8NDQEOTAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAFBKSgAWDQ0AODAwDjQrK0gzKSmgMigo5jIoKP4zKCj/PDIy/mBXV/2YkpL8z83N/fHx
+ 8f7u7u7+ycfH/ZOOjvxeVVX9PDEx/jMoKP8yKCj+Migo5TMpKZ80KytHNi8vDh4VFQBMRkYAAAAAAAAA
+ AAAAAAAAAAAAADs0NABDPj4BNCwsHjIqKmoyKSnAMigo9DIoKP8yJyf/Mycn/zUpKf5KQED7bWRk/Hty
+ c/18c3T9e3Jy/Xtxcv19c3T9e3Jy/WtiY/xKQED7NSkp/jMnJ/8zKCj/Mygo/zIoKPQxKCi/MioqaTQt
+ LR1FP0ABOzQ0AAAAAAA/OjoAKR8fADMrK1AwKCjWMCcn/TEnJ/8xJyf/Mycn/zMnJ/80Jyf/NCYn/zQl
+ Jv8xISL/MSAh/zIhIv8yIiP/MiIj/zIiI/8yIiP/MyMk/zQlJv80Jif/Mycn/zMnJ/8zJyf/Micn/zEn
+ J/8wKCj8MCgo1TIqK04qICAAQDo7ADIrKwAzLCwHMCgotTAnJ/8xJyf/MScn/zMoKP81KCn/NCcn/zUm
+ Jv81JSb/Nyco/1FDRP9NPj//PCwt/zUkJf8zIiP/NSQl/zcmJ/83Jyf/NiYm/zUlJv81Jib/NSco/zQo
+ KP8yJyf/Micn/zEnJ/8wJyf/MCgoszMsLAYyKysALycnAC8nJwoxKCi/Migo/zIoKP8zJyj/Mycn/zQn
+ J/81Jib/NSUm/zYlJv85KCn/sqys/+Ti4v/Ev7//oZma/3xxcv9IOTr/NiQl/zcmJv83JSb/NiUm/zUl
+ Jv81Jib/NCcn/zMnJ/8zKCj/Mygo/zEoKP8wKCi+LycnCS8nJwAvJycALycnCjIoKL8zKCj/Mygo/zQo
+ KP8zJyf/NiYn/zYmJ/82JSb/NiUm/zkoKf+7trb/////////////////+vr6/3pub/80IiP/OCYm/zgm
+ J/83JSb/NiUm/zUlJv81Jib/NCcn/zQoKP8zKCj/Mygo/zEoKL0uJycJLycnADAnJwAwJycKMigovzIo
+ KP80KCj/NCco/zUmJv81JSb/NiUm/zclJv83Jib/Oikp/7u2tv/////////////////9/f3/fHFx/zQh
+ Iv83JSb/NyUm/zclJv83Jif/NyYm/zUlJv81Jib/NCgo/zMoKP8yKCj/MigovS8nJwkwJycAMScnADEn
+ JwoxJye/Micn/zMnJ/81Jyf/NSUm/zYlJv83Jib/NyYm/zknJ/88KSr/u7a2//////////////////z8
+ /P98cHD/NiIj/zkmJv84Jib/OCUm/zknJ/84Jif/NiYm/zYmJv80Jyf/Mycn/zInJ/8yKCi9MigoCTIo
+ KAAxJycAMCYmCjIoKL80KCj/NSgo/zYnJ/82Jib/NyYm/zcmJ/83JSb/OCYm/zwpKf+8trb/////////
+ /////////Pz8/3xvcP83IiP/OiYm/zomJ/84JSb/OCYn/zgmJ/83Jib/NiYm/zYmJ/80KCj/NCgo/zMo
+ Kb0zKCgJMygoADInJwAxJycKMicnvzMnJ/80Jyf/NiYm/zYlJv83JSb/NyUm/zglJv85JSb/PCgp/7y2
+ tv/////////////////8/Pz/fG5v/zgiI/86JSb/OSUm/zklJv84Jib/NyUm/zYlJv82JSb/NSUm/zQn
+ J/8zKCj/MigovTEoKAkyKCgAMygoADIoKAozKCi/NCgo/zQmJ/81JSb/NiYm/zclJv83JSb/OSYn/zsm
+ J/88KCn/vLa2//////////////////z8/P97bW7/OSIj/zolJv85JSb/OyYn/zomJ/84Jib/NiUm/zcm
+ Jv82Jib/NScn/zMnJ/8yJye9MSgoCTIoKAAzKCgAMigoCjMoKL80KCj/NSYn/zYlJv83Jib/NyUm/zcl
+ Jv87Jyj/PSco/zwoKf+8trb/////////////////+/v7/3psbf85IiP/OyUm/zolJv88Jyj/PCgo/zgm
+ Jv82JSb/NiYm/zYmJv81Jif/Mycn/zMnJ70xKCgJMicnADInJwAxJycKMycnvzQnKP81Jib/NiYm/zcm
+ Jv83Jib/NyUm/zomJ/86Jib/PSgp/7y2tv/////////////////7+/v/emtr/zgiIv87JSb/OiUm/zsm
+ J/85Jif/OCYm/zclJv83Jib/NiUm/zUmJ/8zJyf/MygovTEoKAkyKCgAMScnADAnJwoyJye/NSgo/zUm
+ J/82Jib/NyYm/zcmJv84JSb/OSYm/zklJv89KSn/vba2//////////////////7+/v/Jw8P/raWl/6+n
+ p/9xZGT/OCQl/zglJv84Jif/OCYn/zcmJv81JSb/Nicn/zQnJ/8zKCi9MSgoCTIoKAAxJycAMCcnCjIn
+ J780Jyf/NSYm/zUlJv82JSb/NyUm/zclJv84JSb/OSUm/zwoKf+8trb/////////////////////////
+ /////////////5mQkP83IyP/OCUm/zclJv83Jib/NyYm/zUlJv81Jif/Mycn/zInJ70wJycJMScnADEn
+ JwAwJycKMicnvzMnJ/81Jif/NSUm/zcmJv84Jif/OCYm/zclJv85JSb/PSkp/7y2tv//////////////
+ ////////////////////////m5KS/zYjI/84JSb/OCYn/zcmJv82JSb/NiUm/zUmJ/8zJyf/MicnvTAn
+ JwkxJycAMScnADAnJwozKCi/NCgo/zQnJ/81JSb/NiUm/zcmJ/83JSb/NyUm/zglJv88KCn/vLa2////
+ //////////////////////////////////+hmJn/NiMk/zglJv83JSb/NyYm/zYlJv82Jib/NScn/zMo
+ KP8yJye9MCcnCTEnJwAxJycAMScnCjMoKL80KCj/NSgo/zYmJ/81JSb/NyYn/zcmJ/83JSb/OCUm/zso
+ Kf+8trb///////////////////////b19f/v7e7/8fHx/6CYmf83JSX/NyUm/zYlJv82JSb/NSUm/zYm
+ J/81KCj/NCgo/zMoKL0xJycJMScnADEnJwAxJycKMigovzMoKP80KCj/NScn/zUlJv82JSb/NiUm/zcm
+ Jv84Jib/Oigp/7u2tv/////////////////+////m5KS/1lKS/9cTU7/TT4+/zgmJv83Jif/NyYm/zYl
+ Jv81JSb/NScn/zQoKP8zKCj/MigovTEnJwkxJycAMCcnAC8nJwoxJye/Micn/zMnJ/80Jyf/NSYm/zUl
+ Jv82JSb/NyUm/zgmJ/87KSr/u7a2//////////////////7+/v+AdXb/Mh8g/zUjJP82JCX/NyUm/zgn
+ J/83Jif/NiUm/zUmJ/80Jyf/Mycn/zInJ/8yKCi9MCgoCTEoKAAvJycALSYmCjEoKL8yKCj/Mygo/zUo
+ KP80Jyf/NiYn/zYmJ/82JSb/NyYn/zopKf+7trb//////////////////f39/4B0df8zISH/NyUl/zcl
+ Jv82JSb/NyYn/zYmJ/82Jif/NSco/zQoKP8zKCj/Migo/zIoKL0wKCgJMSgoAC8nJwAvJycKLycnvzEn
+ J/8yKCj/Mygo/zQnJ/80Jyf/NSUm/zUlJv82JSb/OSgp/7u2tv/////////////////9/f3/i4GC/0Y2
+ N/9IODn/RTY3/zkpKv81JSb/NSYm/zQnJ/8zJyf/Micn/zInJ/8xKCj/MSgovTAoKAkwKCgAMCgoADEo
+ KAowKCi/MCgo/zEnJ/8xJyf/Mycn/zMnJ/80Jyf/Nicn/zYmJ/84KCn/u7a2////////////////////
+ ///q6en/3dvb/93a2v/T0ND/XlJS/zQkJf80Jyf/Mycn/zMoKP8yKCj/Migo/zAnJ/8vJye9MCgoCTAo
+ KAAvKCgALygoCi8oKL8wKCj/MCcn/zEnJ/8yKCj/Micn/zMnJ/82KSn/Nygp/zgpKf+6trb/////////
+ //////////////////////////////z8/P95cHD/MyYm/zQoKP8yJyf/Mico/zEoKP8wKCj/Lycn/y8n
+ J70vJycJLycnAC8oKAAvKCgKLycovy8nJ/8vJyf/MCgo/zIoKP8yKCj/Micn/zQoKP81KCj/Nioq/7q2
+ tv///////////////////////////////////////////4yFhf8xJSX/Migo/zEnJ/8xJyf/MCcn/zAn
+ J/8vJyf/LygovS8oKAkvJygALicnAC0nJwouJye/MCgo/y8oKP8wKCj/MCgo/zEoKP8xJyf/Micn/zIn
+ J/82Kyv/ure3////////////////////////////////////////////oZyd/zAmJv8yKCj/Migo/zAo
+ KP8vJyf/MCgo/y8oKP8vKCi9LigoCS4oKAAtJycALScnCi0nJ78uKCj/Licn/y8nJ/8vJyf/MCcn/zAn
+ J/8xJyf/MScn/zQqKv+sqKj/7e3t/+rq6v/q6ur/6urq/+rq6v/q6en/6urp/+3t7f+no6P/Mikp/zAn
+ J/8wKCj/MCgo/y8nJ/8vKCj/Licn/y4nJ74uKCgJLigoADMtLQA1LzAFLykprS4nJ/8uJyf/Licn/y8o
+ KP8wKCj/MCcn/y8nJ/8wJyf/MSgo/0Y+Pv9RSUn/UUhI/1FISf9RSEn/UEhI/1FJSf9RSUn/UElJ/0U+
+ Pv8wKCj/MCgo/y8oKP8vJyf/Licn/y4nJ/8tJyf/LigoqzQvLwQyLC0AQTw9ACslJQAxKytRLygp5S4n
+ J/8uJyf/Lygo/zAoKP8vKCj/Lycn/zAnJ/8wKCj/LyYm/y0lJf8uJSX/LiUl/y4lJf8tJSX/LiUl/y8m
+ Jv8tJSX/LiYm/y8nJ/8vKCj/Lygo/y4nJ/8uKCj/Ligo/y4oKOQwKytPKyQkAEM/PwD/8A///8AD//4A
+ AH/4AAAfwAAAA8AAAAOAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
+ AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAAygA
+ AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFP0AAAAAAADsz
+ MxQ1LS1bMioqwDAoKPwwKCj8MSkpvzMsLFk4MTIUAAAAAEQ/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPzc3AEQ8
+ PAM4Li4kNCsrcDQqKsQyKSn1Migo/zIoKP8xKCj/MCcn/zEoKPUzKirDNCsrbjcuLyNDPDwCPjY2AAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd29vAC4j
+ IwBDODgKNy0tPzQqKpMyKCjeMScn/TIoKP8yJyf/MScn/zEnJ/8xJyf/MScn/zEnJ/8xJyf/Migo/TIo
+ KN00KiqRNy0tPUE3NwoqICEAioODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEU9
+ PgBUT08BOjExGTkuL144LS21Mykp8DInJ/8xJyf/MScn/zEnJ/8wJSX/Mygo/kE3N/08MzP9MCYm/zAl
+ Jf8xJyf/Migo/zEnJ/8xJyf/Mykp7zcsLLM6Ly9cOjExGF1XWAFHP0AAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMPf
+ 3wA4Ly8AQDo6BTcuLi80KiqANCkp0TMpKfozKSn/Mygo/zEnJ/8wJSX/Micn/kI3N/1oYGD8oJub/NHP
+ z/3Ixsb8lI6O/GFYWPw/NDT9Micn/zAlJf8xJib/Migo/zMoKf80KSn6NCoq0DQrK343Li8uPDY2BTcw
+ MAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AABMRkYAAAAAADozMw81LS1LMyoqojIoKOcxJyf+MScn/zIoKP8yJyf/NCkp/kE2Nv1kXFz8mpaW+9DP
+ z/zz8/P+/////////////////v7+/+/v7/7KyMj8lpGR+2JaWvxANTX9NCkp/jMoKP8yJyf/MScn/zIo
+ KP4yKCjmNCoqoDQsLEk5MjIPEAUFAE1ISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAPzg4AEY/PwI2Ly8iNCwsbDIqKsEyKCj1Migo/zInJ/8yJyf/Mygo/zMoKP8zJyf/PTMz+mJb
+ W/mGgID7lpCQ+5eRkfyWj5D8lo+P/JaPj/yWj4/8lo+P/JeQkPyYkZL8lY+P+4R/f/thWlr5PzU1+jQo
+ KP4zJyf/Micn/zMpKf8zKCj/Mygo/zEoKPQxKSnANCwsazkwMSFHQkECQDk5AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAD03OABPTE4BNS0uLTIqKo0wKCjbMCcn/DEnJ/8yJyf/Micn/zInJ/8yJyf/Mycn/zMn
+ J/80KCj/NCcn/zUnJ/80JSb/NCQl/zMjJP8zIyT/MyMk/zMjJP8zIyT/MyMk/zMjJP8zIyT/MyQk/zQl
+ Jf80Jyf/NCgo/zMnJ/80KCj/Mycn/zMoKP8zKCj/Migo/zInJ/8wJyf/MCgo/DEpKdoyKiqMNS4uLFZV
+ VAE+ODgAAAAAAAAAAAAAAAAAQj09ADEpKQA1LS09MSkp2zAnJ/8wJyf/MCcn/zEnJ/8xJyf/Micn/zMo
+ KP8zJyf/Mycn/zQnJ/80Jif/NSUm/zUlJv81JSb/NSUm/zYlJv82JSb/NiUm/zYlJv82JSb/NSUm/zUl
+ Jv81JSb/NSUm/zYmJv81JSb/NSYm/zQmJ/8zJyf/Mycn/zMnJ/8zJyf/Micn/zIoKP8xJyf/MScn/y8n
+ J/8wJyf/MSkp2TQtLTowKSkARUBAAAAAAAAAAAAAODExAJ2oqAAxKSmXMCcn/zAnJ/8xJyf/Micn/zEn
+ J/8yJyj/NSkp/zUpKf80KCj/NCYn/zUlJv81JSb/NiUm/zcmJ/85Kir/Nycn/zQiI/80IiP/NSQl/zYl
+ Jv82JSb/NiUm/zYlJv82Jib/OCcn/zcnJ/82Jif/NSUm/zUlJv81Jib/NCcn/zUoKP80KCj/Mygo/zIn
+ J/8xJyf/Micn/zEnJ/8wJyf/MCcn/zEpKZMAAAAAODExAAAAAAAAAAAALycnAC4mJgMwKCirMCgo/zAn
+ J/8xJyf/MScn/zInJ/8zJyf/NSgo/zQoKP81Jyf/NSUm/zUlJv82Jib/NiUm/zYlJv+BeHj/raen/4d+
+ f/9nWlv/Tj9A/z0tLv81JCX/NCIj/zYlJv83Jib/OCYn/zcmJ/83Jib/NSUm/zUlJv82Jib/NSUm/zUn
+ J/80KCj/Mycn/zMnJ/8yJyf/Migo/zEnJ/8wJyf/Lycn/y8nJ6kvJycDLycnAAAAAAAAAAAALycnACwl
+ JQMxKCirMikp/zIoKP8zKCj/Mygo/zMoKP8zJyf/Mycn/zUmJ/81Jib/NSUm/zUlJv82Jib/NiUm/zUk
+ Jf+hm5v///////39/f/z8vL/397e/8O/v/+hmpv/dmxs/z4tLv82JCX/NiUm/zcmJv83JSb/NiUm/zYl
+ Jv82Jib/NSUm/zUlJv81Jyf/NCcn/zMnJ/80KCj/NCkp/zMoKP8yKCj/MSgo/zAoKKgsJSUDLycnAAAA
+ AAAAAAAALycnACwlJQMxKCirMigp/zMoKP8zKCj/NCgo/zQoKP8zJyf/NCYn/zcnJ/82Jif/NiYm/zYl
+ Jv83Jib/NiUm/zUkJf+gmpr/////////////////////////////////4N7e/09AQP81IyT/NyUm/zgn
+ J/84Jif/NyYm/zYlJv83Jib/NSUm/zUlJv81JSb/NCYn/zMnJ/80KCj/NCgp/zMoKP8zKCj/Migo/zAo
+ KKgqJCQDLycnAAAAAAAAAAAALycnAColJQMyKCirMygp/zMoKP8zKCj/NSgo/zQoKP80Jif/NSUm/zUl
+ Jv82Jib/NiYm/zcmJv83Jib/NyUm/zYkJf+hmpr/////////////////////////////////4uDh/09A
+ Qf81IyT/NyUm/zclJv84Jib/NyYm/zcmJv83Jib/NiUm/zYlJv82Jib/NSUm/zQmJ/80KCj/NSgo/zMo
+ KP8zKCj/Mygo/zEoKKgpJCQDLycnAAAAAAAAAAAAMCcnAC0mJgMyKCirMigo/zIoKP80KCj/NCgo/zQn
+ J/81JSb/NSUm/zUlJv82JSb/NiUm/zclJv84Jif/OSYn/zckJf+gmZr/////////////////////////
+ ////////4uDg/08/QP82IyT/NyUm/zclJv83JSb/NyUm/zclJv83Jif/OCYn/zcmJv81JSb/NiUm/zUl
+ Jv80Jyf/NCgo/zMoKP8yKCj/Migo/zEoKKgtJiYDMCcnAAAAAAAAAAAAMScnADEnJwMxJyerMScn/zIn
+ J/8zJyf/NCcn/zUmJ/82JSb/NSUm/zYlJv83Jib/NiUm/zcmJv85Jyf/Oicn/zglJf+hmZr/////////
+ ////////////////////////4d/f/1A/QP84JCX/OCUm/zglJv84Jib/NyUm/zgmJv85Jyf/OCcn/zgm
+ J/82JSb/NSUm/zUlJv80Jib/Mycn/zMnJ/8yJyf/Micn/zIoKKgyKCgDMigoAAAAAAAAAAAAMScnADAm
+ JgMxJyerMykp/zMoKP80Jyj/NSgo/zYmJ/82Jib/NSUm/zgmJ/85Jyf/NyUm/zgmJv86Jyf/Oicn/zgl
+ Jf+hmZr/////////////////////////////////4d/f/1A/P/84JCX/OSUm/zsmJ/87Jyf/NyUm/zgm
+ Jv85Jyf/OCcn/zgmJ/83Jif/NyYn/zcnJ/81Jib/NSgo/zQoKP8zKCj/Mygo/zMoKKgyJycDMigoAAAA
+ AAAAAAAAMScnADAmJgMxJyerMygo/zQoKP80KCj/Nigo/zcmJ/82Jib/NiUm/zcmJv83Jib/NyUm/zgl
+ Jv84Jib/OSYm/zklJf+hmZr/////////////////////////////////4N7e/1A/P/85JCX/OSUm/zom
+ Jv86Jib/OCUm/zglJv84Jib/OCYm/zcmJ/82JSb/NiUm/zUlJv81JSb/Nigo/zQoKP80KCj/NCkp/zMo
+ KKgzKSkDMykpAAAAAAAAAAAAMScnADEnJwMxJyerMicn/zMnJ/80Jyf/Nicn/zYmJv82JSb/NyUm/zYl
+ Jv82JSb/NyUm/zclJv84JSb/OSUm/zgkJf+impr/////////////////////////////////4N3d/1A+
+ Pv85JCX/OiUm/zklJv85JSb/OSUm/zglJv84JSb/NyUm/zclJv83JSb/NiUm/zYlJv81JSb/NSYm/zMn
+ J/80Jyj/Mygo/zIoKKgxJycDMigoAAAAAAAAAAAAMygoADQpKQMzKCirMygo/zQoKP80Jyf/NSUm/zUl
+ Jv82JSb/NyYm/zcmJv83JSb/OCUm/zkmJ/86Jif/OiYn/zgkJf+impr/////////////////////////
+ ////////393d/1A9Pf86JCX/OyYm/zomJv85JSb/OiUm/zomJ/85Jif/OCYn/zclJv82JSb/NiUm/zcm
+ J/82Jif/NiYn/zUoKP80Jyf/Micn/zEnJ6gzKCgDMigoAAAAAAAAAAAAMigoADMpKQMyJyerMycn/zQo
+ KP80Jyf/NSUm/zUlJv83Jib/NyYm/zYlJv83JSb/OCYm/zomJ/87Jif/OyYn/zgkJf+imZr/////////
+ ////////////////////////3tzc/088Pf87JCX/PCYm/zolJv85JSb/OiYm/zsmJ/85Jif/OSYn/zgl
+ Jv82JSb/NiUm/zcmJ/82Jib/NSUm/zUnJ/8zJyf/Mycn/zInJ6g0KSkDMygoAAAAAAAAAAAAMygoADIp
+ KQMyKCirNCgo/zQoKP80Jif/NSUm/zUlJv82JSb/NyYm/zYlJv83JSb/OCYm/z0oKP8/KSn/OyYn/zgk
+ Jf+imZr/////////////////////////////////3tvc/088PP86JCX/PCYm/zslJv85JSb/OiYm/z4o
+ KP8+KSn/OSYn/zglJv83JSb/NiUm/zcmJv82Jib/NiYm/zUnJ/8zJyf/Mycn/zInJ6gvJycDMScnAAAA
+ AAAAAAAAMygoADIoKQMzKCirNCgo/zQoKP81Jif/NSUm/zYmJ/84Jif/OCYn/zclJv83JSb/OCYn/zsn
+ J/89Jyj/OyYn/zkkJf+impr/////////////////////////////////3tvb/088PP87JSX/PCYn/zsl
+ Jv86JSb/OiYm/zwnJ/88Jyj/OSYn/zglJv83JSb/NiUm/zcmJv82Jib/NiYn/zUmJ/8zJyf/Myco/zMo
+ KKgvKCcDMigoAAAAAAAAAAAAMScnAC8nJwMyJyerMycn/zQnJ/81Jib/NSUm/zYmJv82JSb/NyYm/zcl
+ Jv83JSb/OCUm/zomJ/86Jib/OiYm/zkkJf+impr/////////////////////////////////3dra/0w4
+ OP83ISL/OSMj/zkiI/84IyT/OiUm/zomJ/85Jib/OCYm/zglJv83JSb/NyYm/zcmJv81JSb/NSUm/zUm
+ J/8zJyf/Mygo/zMoKKgsJSUDMScnAAAAAAAAAAAAMScnAC8nJwMyJyerNCgo/zYpKf81Jif/NSUm/zYm
+ J/83Jib/NyYn/zclJv84JSb/OCYm/zkmJv85JSb/OSUm/zslJf+jmpr/////////////////////////
+ ////////7Ovr/5mOj/+MgIH/jYGC/46Cg/9yZWX/PCgp/zolJv84JSb/NyUm/zkmJ/84Jif/OCYn/zYl
+ Jv81JSb/NiYn/zcoKP80KCj/Mygo/zMoKKguJiYDMicnAAAAAAAAAAAAMScnAC8nJwMyJyerNCgo/zQo
+ KP81Jif/NSUm/zYmJ/83Jib/NyYn/zclJv83JSb/OCUm/zklJv86Jib/OSUm/zolJf+jmpr/////////
+ ///////////////////////////////////+//7//v////////+/urr/Pisr/zklJv85Jib/NyUm/zkm
+ J/84Jif/OCYn/zYlJv81JSb/NiYm/zUnJ/8zJyf/Mycn/zMoKKguJycDMicoAAAAAAAAAAAAMScnADAn
+ JwMyJyerMycn/zMnJ/80Jif/NSUm/zUlJv82JSb/NiUm/zclJv83JSb/OCUm/zglJv85JSb/OSUm/zgk
+ Jf+imZr////////////////////////////////////////////////////////////Au7v/Piss/zkl
+ Jv84JSb/NyUm/zclJv83JSb/NiUm/zclJv81JSb/NSUm/zQmJ/8zJyf/Mycn/zEnJ6gvJycDMScnAAAA
+ AAAAAAAAMScnADAnJwMyJyerMycn/zQoJ/80Jyf/NiUm/zUlJv82JSb/OCYn/zgmJ/84Jib/NyUm/zcl
+ Jv85JSb/OSUm/zklJf+impr/////////////////////////////////////////////////////////
+ ///Cvb7/Piss/zglJv83JSb/OCUm/zgmJ/83Jib/NiUm/zYlJv81JSb/NiYm/zQnJ/80KCj/Mycn/zEn
+ J6gwJycDMScnAAAAAAAAAAAAMScnAC8mJgMyJyerMygo/zMnJ/80Jyf/NSUm/zUlJv82Jib/OCcn/zgn
+ J/84Jif/NyUm/zclJv85Jib/OiUm/zolJf+impr/////////////////////////////////////////
+ ///////////////////GwsL/QC0u/zglJv84Jib/OCUm/zkmJ/83Jif/NyYm/zYlJv81JSb/NiYm/zQn
+ J/8zJyf/Micn/zEnJ6gxJycDMScnAAAAAAAAAAAAMScnAC4lJQMyKCirNCkp/zQoKP80KCj/NSYn/zUl
+ Jv81JSb/NiUm/zYlJv83JSb/NyUm/zclJv84Jib/OSUm/zgkJf+impr/////////////////////////
+ ///////////////////////////////////MyMj/Qi8w/zclJf84Jib/NyUm/zclJv83JSb/NiUm/zYl
+ Jv82Jib/Nicn/zQoKP80KCj/Mygo/zIoKKgvJiYDMScnAAAAAAAAAAAAMScnAC4lJQMzKCirNCkp/zUo
+ KP81KCj/Nico/zYmJv81JSb/NiUm/zgmJ/83Jif/OCYm/zclJv84Jib/OCUm/zgkJf+impr/////////
+ ///////////////////////////////////////////////////V0tL/RjU1/zckJf84Jib/NyUm/zYl
+ Jv83JSb/NiUm/zUlJv82Jib/Nigo/zUoKP80KCj/Mygo/zIoKKguJSUDMScnAAAAAAAAAAAAMScnAC4l
+ JQMzKCirMygo/zQoKP80KCj/NSgo/zYmJ/81JSb/NSUm/zcmJv83Jif/NyYm/zglJv84Jib/NyUm/zck
+ Jf+hmpr/////////////////////////////////+Pf3/8G8vP+yrK3/s62t/7Surv+dlpb/QzMz/zcl
+ Jf84Jib/NyUm/zclJv82JSb/NSUm/zUlJv82Jif/NSgo/zUoKP80KCj/Mygo/zIoKKgtJCQDMScnAAAA
+ AAAAAAAAMScnAC8mJQMyKCirMigo/zMoKP80KCj/NCgo/zUmJ/81JSb/NSUm/zYlJv82JSb/NiUm/zcm
+ Jv84Jib/OCYn/zYkJf+hmZr/////////////////////////////////6ejo/1lJSv84JSb/OSco/zkn
+ KP85Jyj/OCYm/zglJv84Jif/NyYn/zcmJv82JSb/NSUm/zUlJv81Jyf/NCgo/zQoKP8zKCj/Migo/zIo
+ KKgvJSUDMScnAAAAAAAAAAAAMCcnAC8nJwMxJyerMScn/zEnJ/8zJyf/Mycn/zQnJ/81Jib/NSUm/zUl
+ Jv82JSb/NiUm/zcmJv84Jyf/OScn/zclJf+gmZr/////////////////////////////////5+bm/1VG
+ R/82IyT/NyUm/zclJv83JSb/NyUm/zcmJv84Jif/OCcn/zcmJ/81JSb/NSUm/zUmJv8zJyf/Mycn/zMn
+ J/8xJyf/MScn/zEoKKgvKCcDMSgoAAAAAAAAAAAALycnAC0nJgMwJyerMigo/zInJ/8yJyf/NCgo/zQo
+ KP80Jyf/NSUm/zYmJ/83Jyf/NiUm/zcmJv84Jyf/OScn/zclJf+gmZr/////////////////////////
+ ////////5uXl/1RFRv82IyT/NyUm/zkmJ/85Jyf/NyUm/zcmJv84Jyf/OCcn/zcmJ/82Jif/NiYn/zUo
+ KP8zJyf/NCgo/zInJ/8xJyf/Migo/zEoKKguKCgDMCgoAAAAAAAAAAAALycnAC0mJgMvJyerMykp/zIo
+ KP8yKCj/NCkp/zUoKP80KCj/NCYn/zYmJ/83Jyf/NSUm/zYmJv83Jif/NyYm/zYlJf+gmZr/////////
+ ////////////////////////5eTk/1RERf82JCX/NyUm/zgmJ/84Jyf/NiUm/zcmJv83Jif/NiYm/zYm
+ J/81Jib/NScn/zQoKP80Jyf/NSkp/zIoKP8yKCj/Mykp/zEoKKgwKCgDMSgoAAAAAAAAAAAALycnAC8n
+ JwMvJyerMCcn/zEnJ/8yKCj/Mygp/zQoKP80KCj/Mycn/zQmJ/81JSb/NSUm/zUlJv82JSb/NyUm/zUk
+ Jf+gmZr/////////////////////////////////5OLi/09AQf8yISH/NCIj/zMiI/8zIiP/NCMk/zYl
+ Jv81JSb/NSUm/zUmJv80Jif/Mycn/zMnJ/8zJyf/Micn/zEnJ/8yKCj/MSgo/zEoKKgwKCgDMSgoAAAA
+ AAAAAAAAMCgoADEoKAMwKCirMCgo/zEoKP8xJyf/MScn/zInJ/8zJyf/NCgo/zQnJ/80Jif/NSUm/zYm
+ J/82Jif/NiUm/zUkJf+gmpr/////////////////////////////////8O/v/5uTlP+If3//h35//4V8
+ ff+Ee3z/aV5f/zgoKf82Jif/NSUm/zQmJ/80Jyf/Mycn/zQoKP8yKCj/Migo/zIoKP8wJyf/Lycn/y8n
+ J6gvJycDLycnAAAAAAAAAAAAMCgpADIpKgMwKCirMCgo/zEoKP8xKCj/MScn/zInJ/8yKCj/Mycn/zMn
+ J/8zJyf/NScn/zYnJ/82Jif/NiYn/zQkJf+gmZr/////////////////////////////////////////
+ ///+/v7//v7+//3+/v//////yMXF/z8wMf81Jib/NSgo/zQnJ/8zJyf/Mycn/zMoKP8yKCj/Migo/zIo
+ KP8wJyf/Lycn/y8nJ6gzKioDMSgpAAAAAAAAAAAALygoAC8oKAMvJyerLycn/zAnJ/8vJyf/MCcn/zEn
+ J/8xJyf/Micn/zInJ/8zJyf/NCgo/zcpKf84KSn/NiYn/zQkJf+gmZr/////////////////////////
+ ////////////////////////////////////////2tjY/0k8Pf82KSn/NCgo/zQnJ/8zJyf/Micn/zIo
+ KP8yJyf/MCcn/zAoKP8vJyf/Lycn/y4nJ6guJycDLicnAAAAAAAAAAAAMCgpADEpKgMwKCirMCgo/zAo
+ KP8vJyf/MCcn/zEoKP8yKCj/Mygo/zInJ/8yJyf/NCgo/zYpKv83Kir/NSgo/zMlJf+gmpr/////////
+ ////////////////////////////////////////////////////////6Ofn/1VLS/81KCj/NCgo/zMn
+ J/8xJyf/MScn/zInKP8yKCj/MSgo/zAoKP8vJyf/Lycn/y8oKKguJycDLygoAAAAAAAAAAAALicnAC4n
+ JwMuJyerLicn/y8nJ/8vJyf/MCcn/zAoKP8xKCj/Migo/zInJ/8xJyf/Mygo/zQoKP80KCj/NCgo/zIm
+ Jv+fmpr/////////////////////////////////////////////////////////////////8vLy/2Na
+ Wv8xJSX/Mygo/zEnJ/8yJyf/Micn/zEoKP8vJyf/Lycn/y8nJ/8uJyf/Lygo/y8oKKgtJiYDLycnAAAA
+ AAAAAAAALicnAC0nJwMuJyerLygo/zApKf8vKCj/MCcn/zAoKP8wJyf/MSgo/zEnJ/8xJyf/Micn/zIo
+ KP8yJyf/Mycn/zMnJ/+fmpr/////////////////////////////////////////////////////////
+ ////////+vr6/3Rubv8uJCT/MScn/zIoKP8yKCj/MSgo/zAnJ/8vJyf/MCgo/zApKf8vKCj/Lygo/y8o
+ KKgsJiYDLicnAAAAAAAAAAAALScnAC0nJwMtJyerLygo/zApKf8vKCj/Lycn/zAoKP8wKCj/MCgo/zAn
+ J/8xJyf/Micn/zInJ/8yJyf/MScn/zInJ/+gm5v/////////////////////////////////////////
+ /////////////////////////////4mEhP8vJCT/MScn/zIoKf8yKSn/MSgo/zAnJ/8vJyf/Lygo/zAp
+ Kf8vKCj/Lico/y8oKKgsJycDLigoAAAAAAAAAAAALScnAC0nJwQtJyerLScn/y4nJ/8uJyf/Licn/y4n
+ J/8vJyf/Lycn/zAnJ/8vJyf/MCcn/zEnJ/8xJyf/MScn/zAmJv+UkJD/7e3t/+zr6//r6+v/6+vr/+vr
+ 6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7e3t/5KOjv8wJib/Lycn/y8nJ/8wKCj/MCgo/y8o
+ KP8uJyf/Licn/y4nJ/8uJyf/LScn/y0nJ6ktJycDLScnAAAAAAAAAAAANC8vAEM/PwEvKSmgLigo/y4n
+ J/8uJyf/Lycn/y4nJ/8uJyf/Lygo/zAoKP8wJyf/Lycn/y8nJ/8vJyf/MCcn/zEnJ/9EPDz/Vk5O/1ZN
+ Tf9VTU3/Vk1N/1VNTf9WTU3/Vk1N/1VNTf9VTU3/Vk5O/1ZOTv9VTU3/VE1N/0Q9Pf8vJyf/Lycn/zAn
+ J/8vJyf/Lycn/y8oKP8uJyf/Lygo/y4nJ/8uJyf/LScn/y4oKJ1PTU0BMy4uAAAAAAAAAAAAWlhZACsk
+ JAAyLCxfLigo+C0nJ/8uJyf/Licn/y4nJ/8vKCj/MCkp/zApKf8wKCj/Lycn/y8nJ/8wJyf/MCgo/zEo
+ KP8wJyf/LiUl/y4lJf8uJSX/LyUl/y8lJf8vJSX/LiUl/y4lJf8vJSX/MCYn/zAmJv8uJib/LSUl/y4m
+ Jv8wJyf/MCgo/zAoKP8vKCj/Lygo/y4nJ/8uJyf/Lico/y0nJ/8tJyf/Ligo9zErLFwrJSUAWVdYAAAA
+ AAAAAAAAAAAAADYxMQA5NDQOMSssiy8pKe0uKCj/LScn/y4nJ/8uJyf/Lygo/y8oKP8vKCj/Licn/y8n
+ J/8wKCj/Lycn/zAoKP8wKCj/Lycn/zAnJ/8wJyf/MCgo/zAoKP8wJyf/MCcn/y8nJ/8wJyf/MCgo/zAo
+ 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
+ AElFTkSuQmCC
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index 1d4ca28c..25f02cee 100644
--- a/README.md
+++ b/README.md
@@ -12,10 +12,10 @@
### Prerequisites
[.NET Framework 4.6.1](https://dotnet.microsoft.com/download/dotnet-framework-runtime/net461)
### Download
-[](https://github.com/iAmAsval/FModel/releases/tag/1.3)
+[](https://github.com/iAmAsval/FModel/releases/tag/1.4)
### How does it works
**1.** Once you start the executable, you'll be asked to set your path to your Fortnite .PAK files. Meanwhile a `FModel` subfolder will be created in your `Documents` folder and it'll automatically download the latest version of the modded Fortnite Asset Parser in this subfolder.
-
+
**2.** Restart the executable, select your .PAK file, enter the AES key and click **Load**
- It will parse all Assets contained in the selected .PAK file with their respective path
@@ -40,7 +40,7 @@
**2.** Enable PAKs Diff
**3.** Click `Load Difference`
-
+
@@ -71,7 +71,7 @@ I'd highly suggest you to use [UModel](https://github.com/gildor2/UModel) instea
- [x] Load all paks
- [ ] Shop loader ?
- [x] Load only difference between 2 paks version
-- [ ] Custom watermark option on icons
+- [x] Custom watermark option on icons
- [x] Choose between extracted filename or displayName for icons file name
- [ ] Stop button while extracting
- [ ] Support for meshes