[
  {
    "path": ".gitignore",
    "content": "POEApi.Infrastructure/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache\nPOEApi.Model/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache\nPOEApi.Transport/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache\nProcurement.suo\nProcurement.v12.suo\nProcurement.v11.suo\nProcurement/Procurement.csproj.user\n**/bin/Debug/\n**/bin/Release/\n**/obj/\n\n.vs/\n\npackages/\n*.user\n\n# NCrunch\n_NCrunch_*\n.*crunch*.local.xml\nnCrunchTemp_*"
  },
  {
    "path": "LICENSE",
    "content": "  The Artistic License 2.0\n\n\t    Copyright (c) 2000-2006, The Perl Foundation.\n\n     Everyone is permitted to copy and distribute verbatim copies\n      of this license document, but changing it is not allowed.\n\nPreamble\n\nThis license establishes the terms under which a given free software\nPackage may be copied, modified, distributed, and/or redistributed.\nThe intent is that the Copyright Holder maintains some artistic\ncontrol over the development of that Package while still keeping the\nPackage available as open source and free software.\n\nYou are always permitted to make arrangements wholly outside of this\nlicense directly with the Copyright Holder of a given Package.  If the\nterms of this license do not permit the full use that you propose to\nmake of the Package, you should contact the Copyright Holder and seek\na different licensing arrangement. \n\nDefinitions\n\n    \"Copyright Holder\" means the individual(s) or organization(s)\n    named in the copyright notice for the entire Package.\n\n    \"Contributor\" means any party that has contributed code or other\n    material to the Package, in accordance with the Copyright Holder's\n    procedures.\n\n    \"You\" and \"your\" means any person who would like to copy,\n    distribute, or modify the Package.\n\n    \"Package\" means the collection of files distributed by the\n    Copyright Holder, and derivatives of that collection and/or of\n    those files. A given Package may consist of either the Standard\n    Version, or a Modified Version.\n\n    \"Distribute\" means providing a copy of the Package or making it\n    accessible to anyone else, or in the case of a company or\n    organization, to others outside of your company or organization.\n\n    \"Distributor Fee\" means any fee that you charge for Distributing\n    this Package or providing support for this Package to another\n    party.  It does not mean licensing fees.\n\n    \"Standard Version\" refers to the Package if it has not been\n    modified, or has been modified only in ways explicitly requested\n    by the Copyright Holder.\n\n    \"Modified Version\" means the Package, if it has been changed, and\n    such changes were not explicitly requested by the Copyright\n    Holder. \n\n    \"Original License\" means this Artistic License as Distributed with\n    the Standard Version of the Package, in its current version or as\n    it may be modified by The Perl Foundation in the future.\n\n    \"Source\" form means the source code, documentation source, and\n    configuration files for the Package.\n\n    \"Compiled\" form means the compiled bytecode, object code, binary,\n    or any other form resulting from mechanical transformation or\n    translation of the Source form.\n\n\nPermission for Use and Modification Without Distribution\n\n(1)  You are permitted to use the Standard Version and create and use\nModified Versions for any purpose without restriction, provided that\nyou do not Distribute the Modified Version.\n\n\nPermissions for Redistribution of the Standard Version\n\n(2)  You may Distribute verbatim copies of the Source form of the\nStandard Version of this Package in any medium without restriction,\neither gratis or for a Distributor Fee, provided that you duplicate\nall of the original copyright notices and associated disclaimers.  At\nyour discretion, such verbatim copies may or may not include a\nCompiled form of the Package.\n\n(3)  You may apply any bug fixes, portability changes, and other\nmodifications made available from the Copyright Holder.  The resulting\nPackage will still be considered the Standard Version, and as such\nwill be subject to the Original License.\n\n\nDistribution of Modified Versions of the Package as Source \n\n(4)  You may Distribute your Modified Version as Source (either gratis\nor for a Distributor Fee, and with or without a Compiled form of the\nModified Version) provided that you clearly document how it differs\nfrom the Standard Version, including, but not limited to, documenting\nany non-standard features, executables, or modules, and provided that\nyou do at least ONE of the following:\n\n    (a)  make the Modified Version available to the Copyright Holder\n    of the Standard Version, under the Original License, so that the\n    Copyright Holder may include your modifications in the Standard\n    Version.\n\n    (b)  ensure that installation of your Modified Version does not\n    prevent the user installing or running the Standard Version. In\n    addition, the Modified Version must bear a name that is different\n    from the name of the Standard Version.\n\n    (c)  allow anyone who receives a copy of the Modified Version to\n    make the Source form of the Modified Version available to others\n    under\n\t\t\n\t(i)  the Original License or\n\n\t(ii)  a license that permits the licensee to freely copy,\n\tmodify and redistribute the Modified Version using the same\n\tlicensing terms that apply to the copy that the licensee\n\treceived, and requires that the Source form of the Modified\n\tVersion, and of any works derived from it, be made freely\n\tavailable in that license fees are prohibited but Distributor\n\tFees are allowed.\n\n\nDistribution of Compiled Forms of the Standard Version \nor Modified Versions without the Source\n\n(5)  You may Distribute Compiled forms of the Standard Version without\nthe Source, provided that you include complete instructions on how to\nget the Source of the Standard Version.  Such instructions must be\nvalid at the time of your distribution.  If these instructions, at any\ntime while you are carrying out such distribution, become invalid, you\nmust provide new instructions on demand or cease further distribution.\nIf you provide valid instructions or cease distribution within thirty\ndays after you become aware that the instructions are invalid, then\nyou do not forfeit any of your rights under this license.\n\n(6)  You may Distribute a Modified Version in Compiled form without\nthe Source, provided that you comply with Section 4 with respect to\nthe Source of the Modified Version.\n\n\nAggregating or Linking the Package \n\n(7)  You may aggregate the Package (either the Standard Version or\nModified Version) with other packages and Distribute the resulting\naggregation provided that you do not charge a licensing fee for the\nPackage.  Distributor Fees are permitted, and licensing fees for other\ncomponents in the aggregation are permitted. The terms of this license\napply to the use and Distribution of the Standard or Modified Versions\nas included in the aggregation.\n\n(8) You are permitted to link Modified and Standard Versions with\nother works, to embed the Package in a larger work of your own, or to\nbuild stand-alone binary or bytecode versions of applications that\ninclude the Package, and Distribute the result without restriction,\nprovided the result does not expose a direct interface to the Package.\n\n\nItems That are Not Considered Part of a Modified Version \n\n(9) Works (including, but not limited to, modules and scripts) that\nmerely extend or make use of the Package, do not, by themselves, cause\nthe Package to be a Modified Version.  In addition, such works are not\nconsidered parts of the Package itself, and are not subject to the\nterms of this license.\n\n\nGeneral Provisions\n\n(10)  Any use, modification, and distribution of the Standard or\nModified Versions is governed by this Artistic License. By using,\nmodifying or distributing the Package, you accept this license. Do not\nuse, modify, or distribute the Package, if you do not accept this\nlicense.\n\n(11)  If your Modified Version has been derived from a Modified\nVersion made by someone other than you, you are nevertheless required\nto ensure that your Modified Version complies with the requirements of\nthis license.\n\n(12)  This license does not grant you the right to use any trademark,\nservice mark, tradename, or logo of the Copyright Holder.\n\n(13)  This license includes the non-exclusive, worldwide,\nfree-of-charge patent license to make, have made, use, offer to sell,\nsell, import and otherwise transfer the Package with respect to any\npatent claims licensable by the Copyright Holder that are necessarily\ninfringed by the Package. If you institute patent litigation\n(including a cross-claim or counterclaim) against any party alleging\nthat the Package constitutes direct or contributory patent\ninfringement, then this Artistic License to you shall terminate on the\ndate that such litigation is filed.\n\n(14)  Disclaimer of Warranty:\nTHE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS \"AS\nIS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED\nWARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR\nNON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL\nLAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL\nBE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
  },
  {
    "path": "POEApi.Infrastructure/CacheService.cs",
    "content": "﻿using System.IO;\r\nusing System.Linq;\r\nusing System.Reflection;\r\n\r\nnamespace POEApi.Infrastructure\r\n{\r\n    public class CacheService\r\n    {\r\n        private string _location;\r\n\r\n        private string GetFullPath(string key)\r\n        {\r\n            // Percent-encode any characters in the key name that aren't valid in filenames\r\n            key = Path.GetInvalidFileNameChars()\r\n                .Aggregate(key, (current, c) => current.Replace(c.ToString(), \"%\" + ((int)c).ToString(\"X2\")));\r\n\r\n            if (Path.GetExtension(key) != string.Empty)\r\n                return Path.Combine(_location, key);\r\n\r\n            return Path.Combine(_location, key + \".bin\");\r\n        }\r\n\r\n        public CacheService()\r\n            : this(\"Common\")\r\n        { }\r\n\r\n        public CacheService(string email)\r\n        {\r\n            _location = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), email);\r\n            if (!Directory.Exists(_location))\r\n                Directory.CreateDirectory(_location);\r\n        }\r\n\r\n        public bool Exists(string key)\r\n        {\r\n            return File.Exists(GetFullPath(key));\r\n        }\r\n\r\n        public Stream Get(string key)\r\n        {\r\n            return new MemoryStream(File.ReadAllBytes(GetFullPath(key)));\r\n        }\r\n\r\n        public void Set(string key, Stream data)\r\n        {\r\n            StreamReader reader = new StreamReader(data);\r\n            File.WriteAllBytes(GetFullPath(key), reader.ReadAllBytes());\r\n        }\r\n\r\n        public void Remove(string key)\r\n        {\r\n            File.Delete(GetFullPath(key));\r\n        }\r\n\r\n        public void Clear()\r\n        {\r\n            Directory.Delete(_location, true);\r\n            Directory.CreateDirectory(_location);\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "POEApi.Infrastructure/CurrencyAbbreviationMap.cs",
    "content": "﻿using System.Collections.Generic;\nusing System;\n\nnamespace POEApi.Infrastructure\n{\n    //WTB Bi-directional Dictionary in .NET\n\n    public sealed class CurrencyAbbreviationMap\n    {\n        private static volatile CurrencyAbbreviationMap _instance;\n        private static object _syncRoot = new Object();\n\n        private static Dictionary<string, string> _currencyToAbbreviation = new Dictionary<string, string>();\n        private static Dictionary<string, string> _abbreviationToCurrency = new Dictionary<string, string>();\n\n        private CurrencyAbbreviationMap()\n        {\n            AddItem(\"Chromatic Orb\", \"chrom\");\n            AddItem(\"Orb of Alteration\", \"alt\");\n            AddItem(\"Jeweller's Orb\", \"jew\");\n            AddItem(\"Orb of Chance\", \"chance\");\n            AddItem(\"Cartographer's Chisel\", \"chisel\");\n            AddItem(\"Orb of Fusing\", \"fuse\");\n            AddItem(\"Orb of Alchemy\", \"alch\");\n            AddItem(\"Orb of Scouring\", \"scour\");\n            AddItem(\"Blessed Orb\", \"blessed\");\n            AddItem(\"Chaos Orb\", \"chaos\");\n            AddItem(\"Orb of Regret\", \"regret\");\n            AddItem(\"Regal Orb\", \"regal\");\n            AddItem(\"Gemcutter's Prism\", \"gcp\");\n            AddItem(\"Divine Orb\", \"divine\");\n            AddItem(\"Exalted Orb\", \"exa\");\n            AddItem(\"Vaal Orb\", \"vaal\");\n        }\n\n        private static void AddItem(string currency, string abbreviation)\n        {\n            _currencyToAbbreviation.Add(currency, abbreviation);\n            _abbreviationToCurrency.Add(abbreviation, currency);\n        }\n\n        public string FromAbbreviation(string abbreviation)\n        {\n            if (!_abbreviationToCurrency.ContainsKey(abbreviation))\n                return string.Empty;\n            \n            return _abbreviationToCurrency[abbreviation];\n        }\n\n        public string FromCurrency(string currency)\n        {\n            if (!_currencyToAbbreviation.ContainsKey(currency))\n                return string.Empty;\n\n            return _currencyToAbbreviation[currency];\n        }\n\n        public static CurrencyAbbreviationMap Instance\n        {\n            get\n            {\n                if (_instance == null)\n                    lock (_syncRoot)\n                        if (_instance == null)\n                            _instance = new CurrencyAbbreviationMap();\n\n                return _instance;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Infrastructure/DPAPI.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Security;\nusing System.Security.Cryptography;\nusing System.Runtime.InteropServices;\nusing System.IO;\n\nnamespace POEApi.Infrastructure\n{\n    public static class DPAPI\n    {\n        private static RNGCryptoServiceProvider _rngProvider = new RNGCryptoServiceProvider();\n        private static int _saltLengthBytes = 16;\n\n        public static string Encrypt(this SecureString secret)\n        {\n            if (secret == null)\n                throw new ArgumentNullException(\"secret\");\n\n            IntPtr ptr = Marshal.SecureStringToCoTaskMemUnicode(secret);\n            try\n            {\n                byte[] entropy = new byte[_saltLengthBytes];\n                _rngProvider.GetBytes(entropy);\n\n                char[] buffer = new char[secret.Length];\n                Marshal.Copy(ptr, buffer, 0, secret.Length);\n\n                byte[] data = Encoding.Unicode.GetBytes(buffer);\n                byte[] encrypted = ProtectedData.Protect(data, entropy, DataProtectionScope.CurrentUser);\n\n                List<byte> saltInclusive = new List<byte>();\n                saltInclusive.AddRange(entropy);\n                saltInclusive.AddRange(encrypted);\n\n                return Convert.ToBase64String(saltInclusive.ToArray());\n            }\n            finally\n            {\n                Marshal.ZeroFreeCoTaskMemUnicode(ptr);\n            }\n        }\n\n        public static SecureString Decrypt(this string cipher)\n        {\n            if (cipher == null) throw new ArgumentNullException(\"cipher\");\n\n            byte[] saltInclusive = Convert.FromBase64String(cipher);\n            if (saltInclusive.Length < _saltLengthBytes)\n            {\n                var securedString = new SecureString();\n                securedString.MakeReadOnly();\n                return securedString;\n            }\n\n            MemoryStream ms;\n            byte[] entropy, data;\n\n            using (ms = new MemoryStream(saltInclusive))\n            {\n                BinaryReader reader = new BinaryReader(ms, Encoding.Unicode);\n                entropy = reader.ReadBytes(_saltLengthBytes);\n                data = reader.ReadBytes(saltInclusive.Length - _saltLengthBytes);\n            }\n\n            byte[] decrypted = ProtectedData.Unprotect(data, entropy, DataProtectionScope.CurrentUser);\n\n            SecureString secured = new SecureString();\n\n            int count = Encoding.Unicode.GetCharCount(decrypted);\n            if (count > 0)\n            {\n                int bc = decrypted.Length / count;\n\n                for (int i = 0; i < count; i++)\n                    secured.AppendChar(Encoding.Unicode.GetChars(decrypted, i * bc, bc)[0]);\n            }\n\n            secured.MakeReadOnly();\n\n            return secured;\n        }\n\n        public static string UnWrap(this SecureString secret)\n        {\n            if (secret == null)\n                throw new ArgumentNullException(\"secret\");\n\n            IntPtr ptr = Marshal.SecureStringToCoTaskMemUnicode(secret);\n            try\n            {\n                return Marshal.PtrToStringUni(ptr);\n            }\n            finally\n            {\n                Marshal.ZeroFreeCoTaskMemUnicode(ptr);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Infrastructure/Events/ThottledEventArgs.cs",
    "content": "﻿using System;\n\nnamespace POEApi.Infrastructure.Events\n{\n    public class ThottledEventArgs : EventArgs\n    {\n        public TimeSpan WaitTime { get; private set; }\n        public ThottledEventArgs(TimeSpan waitTime)\n        {\n            WaitTime = waitTime;\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Infrastructure/Events/ThrottledEventHandler.cs",
    "content": "﻿namespace POEApi.Infrastructure.Events\n{\n    public delegate void ThottledEventHandler(object sender, ThottledEventArgs e);\n}\n"
  },
  {
    "path": "POEApi.Infrastructure/ExcessiveRequestException.cs",
    "content": "﻿using System;\n\nnamespace POEApi.Infrastructure\n{\n    public class ExcessiveRequestException: Exception\n    {\n        public ExcessiveRequestException() \n            : base(\"Too many requests to GGG server\")\n        { }\n    }\n}\n"
  },
  {
    "path": "POEApi.Infrastructure/Extensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Security.Cryptography;\nusing System.Text;\nusing System.Xml.Linq;\n\nnamespace POEApi.Infrastructure\n{\n    public static class Extensions\n    {\n        public static string GetHash(this string input)\n        {\n            StringBuilder sb = new StringBuilder();\n\n            foreach (var item in MD5.Create().ComputeHash(Encoding.ASCII.GetBytes(input)))\n                sb.Append(item.ToString(\"x2\").ToLower());\n\n            return sb.ToString();\n        }\n\n        public static T GetEnum<T>(this XAttribute attribute)\n        {\n            return (T)Enum.Parse(typeof(T), attribute.Value);\n        }\n\n        public static byte[] ReadAllBytes(this StreamReader reader)\n        {\n            List<byte> bytes = new List<byte>();\n            byte[] buffer = new byte[1024];\n\n            int readBytes = -1;\n            while (readBytes != 0)\n            {\n                readBytes = reader.BaseStream.Read(buffer, 0, buffer.Length);\n                bytes.AddRange(buffer.Take(readBytes));\n            }\n\n            return bytes.ToArray();\n        }\n\n        public static string SafeSubString(this string text, int start, int length)\n        {\n            return text.SafeSubString(start, length, string.Empty);\n        }\n\n        public static string SafeSubString(this string text, int start, int length, string suffix)\n        {\n            if (length > text.Length)\n                return text;\n\n            return string.Concat(text.Substring(start, length), suffix);\n        }\n\n        public static string GetEntry(this Dictionary<string, string> dictionary, string key) \n        {\n            if (!dictionary.ContainsKey(key))\n                return string.Empty;\n\n            return dictionary[key];\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Infrastructure/ForumThreadException.cs",
    "content": "﻿using System;\n\nnamespace POEApi.Infrastructure\n{\n    public class ForumThreadException : Exception\n    {\n        public ForumThreadException()\n            : base() { }\n\n        public ForumThreadException(string message)\n            : base(message) { }\n    }\n}\n"
  },
  {
    "path": "POEApi.Infrastructure/Logger.cs",
    "content": "﻿using System;\nusing System.IO;\n\nnamespace POEApi.Infrastructure\n{\n    public static class Logger\n    {\n        private const string Output = \"DebugInfo.log\";\n        public static void Log(Exception e)\n        {\n            Log(e.ToString());\n        }\n        public static void Log(string message)\n        {\n            File.AppendAllText(Output, string.Format(\"{0}[{1}] {2}\", Environment.NewLine, DateTime.Now.ToString(\"dd-MM-yyyy H:mm\"), message));\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Infrastructure/LogonFailedException.cs",
    "content": "﻿\nusing System;\n\nnamespace POEApi.Infrastructure\n{\n    public class LogonFailedException : Exception\n    {\n        public LogonFailedException(string userName) \n            : base(string.Format(\"Username or password incorrect. User {0}\", userName))\n        { }\n\n        public LogonFailedException()\n            : base(\"Incorrect session id\")\n        { }\n    }\n}\n"
  },
  {
    "path": "POEApi.Infrastructure/POEApi.Infrastructure.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n  <PropertyGroup>\r\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\r\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\r\n    <ProductVersion>8.0.30703</ProductVersion>\r\n    <SchemaVersion>2.0</SchemaVersion>\r\n    <ProjectGuid>{2F0E4301-694B-4A26-80D8-D57042DA9D6F}</ProjectGuid>\r\n    <OutputType>Library</OutputType>\r\n    <AppDesignerFolder>Properties</AppDesignerFolder>\r\n    <RootNamespace>POEApi.Infrastructure</RootNamespace>\r\n    <AssemblyName>POEApi.Infrastructure</AssemblyName>\r\n    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>\r\n    <FileAlignment>512</FileAlignment>\r\n    <TargetFrameworkProfile>\r\n    </TargetFrameworkProfile>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DebugType>full</DebugType>\r\n    <Optimize>false</Optimize>\r\n    <OutputPath>bin\\Debug\\</OutputPath>\r\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n    <Prefer32Bit>false</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\r\n    <DebugType>none</DebugType>\r\n    <Optimize>true</Optimize>\r\n    <OutputPath>bin\\Release\\</OutputPath>\r\n    <DefineConstants>TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n    <Prefer32Bit>false</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <Reference Include=\"System\" />\r\n    <Reference Include=\"System.Core\" />\r\n    <Reference Include=\"System.Security\" />\r\n    <Reference Include=\"System.Xml.Linq\" />\r\n    <Reference Include=\"System.Data.DataSetExtensions\" />\r\n    <Reference Include=\"Microsoft.CSharp\" />\r\n    <Reference Include=\"System.Data\" />\r\n    <Reference Include=\"System.Xml\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Compile Include=\"CacheService.cs\" />\r\n    <Compile Include=\"CurrencyAbbreviationMap.cs\" />\r\n    <Compile Include=\"DPAPI.cs\" />\r\n    <Compile Include=\"Events\\ThottledEventArgs.cs\" />\r\n    <Compile Include=\"Events\\ThrottledEventHandler.cs\" />\r\n    <Compile Include=\"ExcessiveRequestException.cs\" />\r\n    <Compile Include=\"Extensions.cs\" />\r\n    <Compile Include=\"ForumThreadException.cs\" />\r\n    <Compile Include=\"Logger.cs\" />\r\n    <Compile Include=\"LogonFailedException.cs\" />\r\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\r\n  </ItemGroup>\r\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\r\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\r\n</Project>"
  },
  {
    "path": "POEApi.Infrastructure/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"POEApi.Infrastructure\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"POEApi.Infrastructure\")]\n[assembly: AssemblyCopyright(\"Artistic License 2.0\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"8ed80a35-95da-4d77-ad5c-3a30c5897343\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.29.2.0\")]\n[assembly: AssemblyFileVersion(\"1.29.2.0\")]\n\n\n\n"
  },
  {
    "path": "POEApi.Model/AbyssJewel.cs",
    "content": "using System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    public class AbyssJewel : SocketableItem\n    {\n        public AbyssJewel(JSONProxy.Item item) : base(item)\n        {\n\n        }\n\n        public bool Abyssal { get; } = true;\n\n        protected override Dictionary<string, string> DescriptiveNameComponents\n        {\n            get\n            {\n                var components = base.DescriptiveNameComponents;\n\n                if (Rarity != Rarity.Normal)\n                {\n                    if (!Identified)\n                    {\n                        components[\"name\"] = string.Format(\"Unidentified {0} {1}\", Rarity, TypeLine);\n                    }\n                    else if (Rarity != Rarity.Magic)\n                    {\n                        components[\"name\"] = string.Format(\"\\\"{0}\\\", {1} {2}\", Name, Rarity, TypeLine);\n                    }\n                }\n\n                return components;\n            }\n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/BreachSplinter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model.Interfaces;\n\nnamespace POEApi.Model\n{\n    public class BreachSplinter : Item, IBreachCurrency\n    {\n        public BreachType Type { get; set; }\n\n        public BreachSplinter(JSONProxy.Item item) : base(item)\n        {\n            Type = ProxyMapper.GetBreachType(item);\n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/BreachStone.cs",
    "content": "﻿using POEApi.Model.Interfaces;\n\nnamespace POEApi.Model\n{\n    public class Breachstone : Item, IBreachCurrency\n    {\n        public BreachType Type { get; set; }\n\n        public Breachstone(JSONProxy.Item item) : base(item)\n        {\n            Type = ProxyMapper.GetBreachType(item);\n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/BreachType.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public enum BreachType\n    {\n        Chayula,\n        Xoph,\n        Esh,\n        Tul,\n        UulNetol,\n\n        Unknown\n    }\n}"
  },
  {
    "path": "POEApi.Model/Buyouts.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Buyouts>\n  <ItemBuyouts> \n    <!-- Buyouts you set on items in Procurement are stored in this section-->\n  </ItemBuyouts>\n  <TabBuyouts>\n    <!--Add your tabwide buyouts here Eg\"-->\n    <!--<Item id=\"TabNameHere\" value=\"1 chaos\" />-->\n  </TabBuyouts>\n</Buyouts>\n"
  },
  {
    "path": "POEApi.Model/Character.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace POEApi.Model\n{\n    public class Character\n    {\n        [JsonProperty(\"name\")]\n        public string Name { get; set; }\n\n        [JsonProperty(\"league\")]\n        public string League { get; set; }\n\n        [JsonProperty(\"class\")]\n        public string Class { get; set; }\n\n        [JsonProperty(\"classId\")]\n        public int ClassId { get; set; }\n\n        [JsonProperty(\"level\")]\n        public int Level { get; set; }\n\n        [JsonProperty(\"expired\")]\n        public bool Expired { get; set; }\n    }\n}"
  },
  {
    "path": "POEApi.Model/CharacterStashBuilder.cs",
    "content": "﻿using POEApi.Infrastructure;\nusing System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    public class CharacterStashBuilder\n    {\n        public static List<Item> GetCharacterStashItems(string characterName, IEnumerable<Item> inventory, int inventoryID)\n        {\n            List<Item> characterItems = new List<Item>();\n            foreach (var item in inventory)\n            {\n                var clone = item.Clone() as Item;\n                clone.InventoryId = \"Stash\" + inventoryID;\n                clone.Character = characterName;\n\n                if (item.InventoryId != \"MainInventory\")\n                    UpdatePosition(item, clone);\n\n                if (item.InventoryId != \"Map\")\n                    characterItems.Add(clone);\n            }\n            return characterItems;\n        }\n\n        public static void UpdatePosition(Item item, Item clone)\n        {\n            switch (item.InventoryId)\n            {\n                case \"Flask\":\n                    clone.Y = 5;\n                    break;\n                case \"Helm\":\n                    clone.X = 5;\n                    clone.Y = 5;\n                    break;\n                case \"Gloves\":\n                    clone.X = 7;\n                    clone.Y = 5;\n                    break;\n                case \"Boots\":\n                    clone.X = 9;\n                    clone.Y = 5;\n                    break;\n                case \"Ring\":\n                    clone.X = 11;\n                    clone.Y = 5;\n                    break;\n                case \"Ring2\":\n                    clone.X = 11;\n                    clone.Y = 6;\n                    break;\n                case \"Weapon\":\n                    clone.X = 0;\n                    clone.Y = 7;\n                    break;\n                case \"Offhand\":\n                    clone.X = 2;\n                    clone.Y = 7;\n                    break;\n                case \"Weapon2\":\n                    clone.X = 4;\n                    clone.Y = 7;\n                    break;\n                case \"Offhand2\":\n                    clone.X = 6;\n                    clone.Y = 7;\n                    break;\n                case \"Belt\":\n                    clone.X = 9;\n                    clone.Y = 7;\n                    break;\n                case \"Amulet\":\n                    clone.X = 11;\n                    clone.Y = 7;\n                    break;\n                case \"BodyArmour\":\n                    clone.X = 9;\n                    clone.Y = 8;\n                    break;\n                default:\n                    Logger.Log(string.Format(\"Unknown character inventoryId '{0}' found for {1}\", clone.InventoryId, clone.TypeLine));\n                    break;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/ChargeInfo.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public class ChargeInfo\n    {\n        public int Charges { get; set; }\n        public int MaxCharges { get; set; }\n\n        internal ChargeInfo(int charges, int maxCharges)\n        {\n            this.Charges = charges;\n            this.MaxCharges = maxCharges;\n        }\n\n        public override string ToString()\n        {\n            return $\"{Charges}/{MaxCharges}\";\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Colour.cs",
    "content": "﻿using System.Windows.Media;\n\nnamespace POEApi.Model\n{\n    public class Colour\n    {\n        public int r { get; set; }\n        public int g { get; set; }\n        public int b { get; set; }\n\n        public Color WpfColor => Color.FromRgb((byte) r,(byte) g,(byte) b); \n    }\n}"
  },
  {
    "path": "POEApi.Model/Currency.cs",
    "content": "﻿using System.Diagnostics;\n\nnamespace POEApi.Model\n{\n    [DebuggerDisplay(\"Type: {Type} Stack: {StackInfo.Amount}/{StackInfo.MaxSize}\")]\n    public class Currency : Item\n    {\n        public Currency(JSONProxy.Item item) : base(item)\n        {\n            ItemType = ItemType.Currency;\n            Type = ProxyMapper.GetOrbType(item);\n            ChaosValue = CurrencyHandler.GetChaosValue(Type);\n        }\n\n        public OrbType Type { get; }\n        public double ChaosValue { get; private set; }\n       \n    }\n}"
  },
  {
    "path": "POEApi.Model/CurrencyHandler.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace POEApi.Model\n{\n    internal class CurrencyHandler\n    {\n        private static Dictionary<OrbType, double> ratioCache;\n\n        static CurrencyHandler()\n        {\n            ratioCache = new Dictionary<OrbType, double>();\n\n            foreach (var type in Enum.GetValues(typeof(OrbType)).Cast<OrbType>())\n                ratioCache[type] = getRatio(type);\n        }\n\n        private static double getRatio(OrbType type)\n        {\n            if (!Settings.CurrencyRatios.ContainsKey(type))\n                return 0;\n\n            return calculateRatio(Settings.CurrencyRatios[type]);\n        }\n\n        private static double calculateRatio(CurrencyRatio ratio)\n        {\n            if (ratio.OrbAmount == 1)\n                return ratio.OrbAmount * ratio.ChaosAmount;\n\n            return ratio.ChaosAmount / ratio.OrbAmount;\n        }\n        \n        internal static double GetChaosValue(OrbType type)\n        {\n            return ratioCache[type];\n        }\n\n        public static double GetTotal(OrbType target, IEnumerable<Currency> currency)\n        {\n            double total = 0;\n\n            foreach (var orb in currency)\n                total += orb.StackSize * orb.ChaosValue;\n\n            var ratioToChaos = Settings.CurrencyRatios[target];\n\n            total *= (ratioToChaos.OrbAmount / ratioToChaos.ChaosAmount);\n\n            return total;\n        }\n\n        public static Dictionary<OrbType, double> GetTotalCurrencyDistribution(OrbType target, IEnumerable<Currency> currency)\n        {\n            return currency.Where(o => !o.TypeLine.Contains(\"Shard\"))\n                           .GroupBy(orb => orb.Type)\n                           .Where(group => GetTotal(target, group) > 0)\n                           .Select(grp => new { Key = grp.Key, Value = GetTotal(target, grp) })\n                           .OrderByDescending(at => at.Value)\n                           .ToDictionary(at => at.Key, at => at.Value);\n        }\n\n        public static Dictionary<OrbType, double> GetTotalCurrencyCount(IEnumerable<Currency> currency)\n        {\n            return currency.Where(o => !o.TypeLine.Contains(\"Shard\"))\n                           .GroupBy(orb => orb.Type)\n                           .Select(grp => new { Key = grp.Key, Value = (double)grp.Sum(c => c.StackSize) })\n                           .OrderByDescending(at => at.Value)\n                           .ToDictionary(at => at.Key, at => at.Value);\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/CurrencyRatio.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public class CurrencyRatio\n    {\n        public OrbType OrbType { get; set; }\n        public double OrbAmount { get; set; }\n        public double ChaosAmount { get; set; }\n\n        public CurrencyRatio(OrbType orbType, double orbAmount, double chaosAmount)\n        {\n            OrbType = orbType;\n            OrbAmount = orbAmount;\n            ChaosAmount = chaosAmount;\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Data.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Data xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"Data.xsd\">\n  <GearBaseTypes>\n    <GearBaseType name=\"Ring\">\n      <Item name=\"Breach Ring\"/>\n      <Item name=\"Coral Ring\"/>\n      <Item name=\"Iron Ring\"/>\n      <Item name=\"Paua Ring\"/>\n      <Item name=\"Unset Ring\"/>\n      <Item name=\"Sapphire Ring\"/>\n      <Item name=\"Topaz Ring\"/>\n      <Item name=\"Ruby Ring\"/>\n      <Item name=\"Diamond Ring\"/>\n      <Item name=\"Gold Ring\"/>\n      <Item name=\"Moonstone Ring\"/>\n      <Item name=\"Two-Stone Ring\"/>\n      <Item name=\"Amethyst Ring\"/>\n      <Item name=\"Prismatic Ring\"/>\n      <Item name=\"Opal Ring\"/>\n      <Item name=\"Steel Ring\"/>\n      <Item name=\"Vermillion Ring\"/>\n      <Item name=\"Cerulean Ring\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Amulet\">\n      <Item name=\"Coral Amulet\"/>\n      <Item name=\"Paua Amulet\"/>\n      <Item name=\"Amber Amulet\"/>\n      <Item name=\"Jade Amulet\"/>\n      <Item name=\"Lapis Amulet\"/>\n      <Item name=\"Gold Amulet\"/>\n      <Item name=\"Agate Amulet\"/>\n      <Item name=\"Citrine Amulet\"/>\n      <Item name=\"Turquoise Amulet\"/>\n      <Item name=\"Onyx Amulet\"/>\n      <Item name=\"Marble Amulet\"/>\n      <Item name=\"Blue Pearl Amulet\"/>\n\n      <Item name=\"Ashscale Talisman\"/>\n      <Item name=\"Avian Twins Talisman\"/>\n      <Item name=\"Black Maw Talisman\"/>\n      <Item name=\"Bonespire Talisman\"/>\n      <Item name=\"Breakrib Talisman\"/>\n      <Item name=\"Chrysalis Talisman\"/>\n      <Item name=\"Clutching Talisman\"/>\n      <Item name=\"Deadhand Talisman\"/>\n      <Item name=\"Deep One Talisman\"/>\n      <Item name=\"Fangjaw Talisman\"/>\n      <Item name=\"Greatwolf Talisman\"/>\n      <Item name=\"Hexclaw Talisman\"/>\n      <Item name=\"Horned Talisman\"/>\n      <Item name=\"Lone Antler Talisman\"/>\n      <Item name=\"Longtooth Talisman\"/>\n      <Item name=\"Mandible Talisman\"/>\n      <Item name=\"Monkey Paw Talisman\"/>\n      <Item name=\"Monkey Twins Talisman\"/>\n      <Item name=\"Primal Skull Talisman\"/>\n      <Item name=\"Rot Head Talisman\"/>\n      <Item name=\"Rotfeather Talisman\"/>\n      <Item name=\"Spinefuse Talisman\"/>\n      <Item name=\"Splitnewt Talisman\"/>\n      <Item name=\"Three Hands Talisman\"/>\n      <Item name=\"Three Rat Talisman\"/>\n      <Item name=\"Undying Flesh Talisman\"/>\n      <Item name=\"Wereclaw Talisman\"/>\n      <Item name=\"Writhing Talisman\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Helmet\">\n      <Item name=\"Iron Hat\"/>\n      <Item name=\"Cone Helmet\"/>\n      <Item name=\"Barbute Helmet\"/>\n      <Item name=\"Close Helmet\"/>\n      <Item name=\"Gladiator Helmet\"/>\n      <Item name=\"Reaver Helmet\"/>\n      <Item name=\"Siege Helmet\"/>\n      <Item name=\"Samite Helmet\"/>\n      <Item name=\"Ezomyte Burgonet\"/>\n      <Item name=\"Royal Burgonet\"/>\n      <Item name=\"Eternal Burgonet\"/>\n\n      <Item name=\"Leather Cap\"/>\n      <Item name=\"Tricorne\"/>\n      <Item name=\"Leather Hood\"/>\n      <Item name=\"Wolf Pelt\"/>\n      <Item name=\"Hunter Hood\"/>\n      <Item name=\"Noble Tricorne\"/>\n      <Item name=\"Ursine Pelt\"/>\n      <Item name=\"Silken Hood\"/>\n      <Item name=\"Sinner Tricorne\"/>\n      <Item name=\"Lion Pelt\"/>\n\n      <Item name=\"Vine Circlet\"/>\n      <Item name=\"Iron Circlet\"/>\n      <Item name=\"Torture Cage\"/>\n      <Item name=\"Tribal Circlet\"/>\n      <Item name=\"Bone Circlet\"/>\n      <Item name=\"Lunaris Circlet\"/>\n      <Item name=\"Steel Circlet\"/>\n      <Item name=\"Necromancer Circlet\"/>\n      <Item name=\"Solaris Circlet\"/>\n      <Item name=\"Mind Cage\"/>\n      <Item name=\"Hubris Circlet\"/>\n\n      <Item name=\"Battered Helm\"/>\n      <Item name=\"Sallet\"/>\n      <Item name=\"Visored Sallet\"/>\n      <Item name=\"Gilded Sallet\"/>\n      <Item name=\"Secutor Helm\"/>\n      <Item name=\"Fencer Helm\"/>\n      <Item name=\"Lacquered Helmet\"/>\n      <Item name=\"Fluted Bascinet\"/>\n      <Item name=\"Pig-Faced Bascinet\"/>\n      <Item name=\"Nightmare Bascinet\"/>\n\n      <Item name=\"Rusted Coif\"/>\n      <Item name=\"Soldier Helmet\"/>\n      <Item name=\"Great Helmet\"/>\n      <Item name=\"Crusader Helmet\"/>\n      <Item name=\"Aventail Helmet\"/>\n      <Item name=\"Zealot Helmet\"/>\n      <Item name=\"Great Crown\"/>\n      <Item name=\"Magistrate Crown\"/>\n      <Item name=\"Prophet Crown\"/>\n      <Item name=\"Praetor Crown\"/>\n      <Item name=\"Bone Helmet\"/>\n\n      <Item name=\"Scare Mask\"/>\n      <Item name=\"Plague Mask\"/>\n      <Item name=\"Iron Mask\"/>\n      <Item name=\"Festival Mask\"/>\n      <Item name=\"Golden Mask\"/>\n      <Item name=\"Raven Mask\"/>\n      <Item name=\"Callous Mask\"/>\n      <Item name=\"Regicide Mask\"/>\n      <Item name=\"Harlequin Mask\"/>\n      <Item name=\"Vaal Mask\"/>\n      <Item name=\"Deicide Mask\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Chest\">\n      <Item name=\"Plate Vest\"/>\n      <Item name=\"Chestplate\"/>\n      <Item name=\"Copper Plate\"/>\n      <Item name=\"War Plate\"/>\n      <Item name=\"Full Plate\"/>\n      <Item name=\"Arena Plate\"/>\n      <Item name=\"Lordly Plate\"/>\n      <Item name=\"Bronze Plate\"/>\n      <Item name=\"Battle Plate\"/>\n      <Item name=\"Sun Plate\"/>\n      <Item name=\"Colosseum Plate\"/>\n      <Item name=\"Majestic Plate\"/>\n      <Item name=\"Golden Plate\"/>\n      <Item name=\"Crusader Plate\"/>\n      <Item name=\"Astral Plate\"/>\n      <Item name=\"Gladiator Plate\"/>\n      <Item name=\"Glorious Plate\"/>\n\n      <Item name=\"Shabby Jerkin\"/>\n      <Item name=\"Strapped Leather\"/>\n      <Item name=\"Buckskin Tunic\"/>\n      <Item name=\"Wild Leather\"/>\n      <Item name=\"Full Leather\"/>\n      <Item name=\"Sun Leather\"/>\n      <Item name=\"Thief's Garb\"/>\n      <Item name=\"Eelskin Tunic\"/>\n      <Item name=\"Frontier Leather\"/>\n      <Item name=\"Glorious Leather\"/>\n      <Item name=\"Coronal Leather\"/>\n      <Item name=\"Cutthroat's Garb\"/>\n      <Item name=\"Sharkskin Tunic\"/>\n      <Item name=\"Destiny Leather\"/>\n      <Item name=\"Exquisite Leather\"/>\n      <Item name=\"Zodiac Leather\"/>\n      <Item name=\"Assassin's Garb\"/>\n\n      <Item name=\"Simple Robe\"/>\n      <Item name=\"Silken Vest\"/>\n      <Item name=\"Scholar's Robe\"/>\n      <Item name=\"Silken Garb\"/>\n      <Item name=\"Mage's Vestment\"/>\n      <Item name=\"Silk Robe\"/>\n      <Item name=\"Cabalist Regalia\"/>\n      <Item name=\"Sage's Robe\"/>\n      <Item name=\"Silken Wrap\"/>\n      <Item name=\"Conjurer's Vestment\"/>\n      <Item name=\"Spidersilk Robe\"/>\n      <Item name=\"Destroyer Regalia\"/>\n      <Item name=\"Savant's Robe\"/>\n      <Item name=\"Necromancer Silks\"/>\n      <Item name=\"Occultist's Vestment\"/>\n      <Item name=\"Widowsilk Robe\"/>\n      <Item name=\"Vaal Regalia\"/>\n\n      <Item name=\"Scale Vest\"/>\n      <Item name=\"Light Brigandine\"/>\n      <Item name=\"Scale Doublet\"/>\n      <Item name=\"Infantry Brigandine\"/>\n      <Item name=\"Full Scale Armour\"/>\n      <Item name=\"Soldier's Brigandine\"/>\n      <Item name=\"Field Lamellar\"/>\n      <Item name=\"Wyrmscale Doublet\"/>\n      <Item name=\"Hussar Brigandine\"/>\n      <Item name=\"Full Wyrmscale\"/>\n      <Item name=\"Commander's Brigandine\"/>\n      <Item name=\"Battle Lamellar\"/>\n      <Item name=\"Dragonscale Doublet\"/>\n      <Item name=\"Desert Brigandine\"/>\n      <Item name=\"Full Dragonscale\"/>\n      <Item name=\"General's Brigandine\"/>\n      <Item name=\"Triumphant Lamellar\"/>\n\n      <Item name=\"Chainmail Vest\"/>\n      <Item name=\"Chainmail Tunic\"/>\n      <Item name=\"Ringmail Coat\"/>\n      <Item name=\"Chainmail Doublet\"/>\n      <Item name=\"Full Ringmail\"/>\n      <Item name=\"Full Chainmail\"/>\n      <Item name=\"Holy Chainmail\"/>\n      <Item name=\"Latticed Ringmail\"/>\n      <Item name=\"Crusader Chainmail\"/>\n      <Item name=\"Ornate Ringmail\"/>\n      <Item name=\"Chain Hauberk\"/>\n      <Item name=\"Devout Chainmail\"/>\n      <Item name=\"Loricated Ringmail\"/>\n      <Item name=\"Conquest Chainmail\"/>\n      <Item name=\"Elegant Ringmail\"/>\n      <Item name=\"Saint's Hauberk\"/>\n      <Item name=\"Saintly Chainmail\"/>\n\n      <Item name=\"Padded Vest\"/>\n      <Item name=\"Oiled Vest\"/>\n      <Item name=\"Padded Jacket\"/>\n      <Item name=\"Oiled Coat\"/>\n      <Item name=\"Scarlet Raiment\"/>\n      <Item name=\"Waxed Garb\"/>\n      <Item name=\"Bone Armour\"/>\n      <Item name=\"Quilted Jacket\"/>\n      <Item name=\"Sleek Coat\"/>\n      <Item name=\"Crimson Raiment\"/>\n      <Item name=\"Lacquered Garb\"/>\n      <Item name=\"Crypt Armour\"/>\n      <Item name=\"Sentinel Jacket\"/>\n      <Item name=\"Varnished Coat\"/>\n      <Item name=\"Blood Raiment\"/>\n      <Item name=\"Sadist Garb\"/>\n      <Item name=\"Carnal Armour\"/>\n\n      <Item name=\"Sacrificial Garb\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Belt\">\n      <Item name=\"Chain Belt\"/>\n      <Item name=\"Rustic Sash\"/>\n      <Item name=\"Stygian Vise\"/>\n      <Item name=\"Heavy Belt\"/>\n      <Item name=\"Leather Belt\"/>\n      <Item name=\"Cloth Belt\"/>\n      <Item name=\"Studded Belt\"/>\n      <Item name=\"Vanguard Belt\"/>\n      <Item name=\"Crystal Belt\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Flask\">\n      <Item name=\"Small Life Flask\"/>\n      <Item name=\"Medium Life Flask\"/>\n      <Item name=\"Large Life Flask\"/>\n      <Item name=\"Greater Life Flask\"/>\n      <Item name=\"Grand Life Flask\"/>\n      <Item name=\"Giant Life Flask\"/>\n      <Item name=\"Colossal Life Flask\"/>\n      <Item name=\"Sacred Life Flask\"/>\n      <Item name=\"Hallowed Life Flask\"/>\n      <Item name=\"Sanctified Life Flask\"/>\n      <Item name=\"Divine Life Flask\"/>\n      <Item name=\"Eternal Life Flask\"/>\n\n      <Item name=\"Small Mana Flask\"/>\n      <Item name=\"Medium Mana Flask\"/>\n      <Item name=\"Large Mana Flask\"/>\n      <Item name=\"Greater Mana Flask\"/>\n      <Item name=\"Grand Mana Flask\"/>\n      <Item name=\"Giant Mana Flask\"/>\n      <Item name=\"Colossal Mana Flask\"/>\n      <Item name=\"Sacred Mana Flask\"/>\n      <Item name=\"Hallowed Mana Flask\"/>\n      <Item name=\"Sanctified Mana Flask\"/>\n      <Item name=\"Divine Mana Flask\"/>\n      <Item name=\"Eternal Mana Flask\"/>\n\n      <Item name=\"Small Hybrid Flask\"/>\n      <Item name=\"Medium Hybrid Flask\"/>\n      <Item name=\"Large Hybrid Flask\"/>\n      <Item name=\"Colossal Hybrid Flask\"/>\n      <Item name=\"Sacred Hybrid Flask\"/>\n      <Item name=\"Hallowed Hybrid Flask\"/>\n\n      <Item name=\"Quicksilver Flask\"/>\n      <Item name=\"Bismuth Flask\"/>\n      <Item name=\"Stibnite Flask\"/>\n      <Item name=\"Amethyst Flask\"/>\n      <Item name=\"Ruby Flask\"/>\n      <Item name=\"Sapphire Flask\"/>\n      <Item name=\"Topaz Flask\"/>\n      <Item name=\"Silver Flask\"/>\n      <Item name=\"Aquamarine Flask\"/>\n      <Item name=\"Granite Flask\"/>\n      <Item name=\"Jade Flask\"/>\n      <Item name=\"Quartz Flask\"/>\n      <Item name=\"Sulphur Flask\"/>\n      <Item name=\"Basalt Flask\"/>\n\n      <Item name=\"Diamond Flask\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Map\">\n      <!-- War for the Atlas Maps - [3.1.0, Current] -->\n      <!-- Tier 1 -->\n      <Item name=\"Beach Map\"/>\n      <Item name=\"Dungeon Map\"/>\n      <Item name=\"Graveyard Map\"/>\n      <Item name=\"Lookout Map\"/>\n\n      <!-- Tier 2 -->\n      <Item name=\"Alleyways Map\"/>\n      <Item name=\"Arid Lake Map\"/>\n      <Item name=\"Desert Map\"/>\n      <Item name=\"Flooded Mine Map\"/>\n      <Item name=\"Marshes Map\"/>\n      <Item name=\"Pen Map\"/>\n\n      <!-- Tier 3 -->\n      <Item name=\"Arcade Map\"/>\n      <Item name=\"Burial Chambers Map\"/>\n      <Item name=\"Cage Map\"/>\n      <Item name=\"Cells Map\"/>\n      <Item name=\"Excavation Map\"/>\n      <Item name=\"Iceberg Map\"/>\n      <Item name=\"Leyline Map\"/>\n      <Item name=\"Peninsula Map\"/>\n      <Item name=\"Port Map\"/>\n      <Item name=\"Springs Map\"/>\n\n      <!-- Tier 4 -->\n      <Item name=\"Canyon Map\"/>\n      <Item name=\"Chateau Map\"/>\n      <Item name=\"City Square Map\"/>\n      <Item name=\"Courthouse Map\"/>\n      <Item name=\"Gorge Map\"/>\n      <Item name=\"Grotto Map\"/>\n      <Item name=\"Lighthouse Map\"/>\n      <Item name=\"Relic Chambers Map\"/>\n      <Item name=\"Strand Map\"/>\n      <Item name=\"Volcano Map\"/>\n\n      <!-- Tier 5 -->\n      <Item name=\"Ancient City Map\"/>\n      <Item name=\"Barrows Map\"/>\n      <Item name=\"Channel Map\"/>\n      <Item name=\"Conservatory Map\"/>\n      <Item name=\"Harbinger Map\"/>\n      <Item name=\"Haunted Mansion Map\"/>\n      <Item name=\"Ivory Temple Map\"/>\n      <Item name=\"Maze Map\"/>\n      <Item name=\"Spider Lair Map\"/>\n      <Item name=\"Sulphur Vents Map\"/>\n      <Item name=\"Toxic Sewer Map\"/>\n\n      <!-- Tier 6 -->\n      <Item name=\"Academy Map\"/>\n      <Item name=\"Ashen Wood Map\"/>\n      <Item name=\"Atoll Map\"/>\n      <Item name=\"Cemetery Map\"/>\n      <Item name=\"Fields Map\"/>\n      <Item name=\"Jungle Valley Map\"/>\n      <Item name=\"Mausoleum Map\"/>\n      <Item name=\"Phantasmagoria Map\"/>\n      <Item name=\"Thicket Map\"/>\n      <Item name=\"Underground Sea Map\"/>\n      <Item name=\"Wharf Map\"/>\n\n      <!-- Tier 7 -->\n      <Item name=\"Arachnid Nest Map\"/>\n      <Item name=\"Bazaar Map\"/>\n      <Item name=\"Bone Crypt Map\"/>\n      <Item name=\"Coral Ruins Map\"/>\n      <Item name=\"Dunes Map\"/>\n      <Item name=\"Gardens Map\"/>\n      <Item name=\"Lava Chamber Map\"/>\n      <Item name=\"Ramparts Map\"/>\n      <Item name=\"Residence Map\"/>\n      <Item name=\"Tribunal Map\"/>\n      <Item name=\"Underground River Map\"/>\n\n      <!-- Tier 8 -->\n      <Item name=\"Armoury Map\"/>\n      <Item name=\"Courtyard Map\"/>\n      <Item name=\"Geode Map\"/>\n      <Item name=\"Infested Valley Map\"/>\n      <Item name=\"Laboratory Map\"/>\n      <Item name=\"Mineral Pools Map\"/>\n      <Item name=\"Mud Geyser Map\"/>\n      <Item name=\"Overgrown Ruin Map\"/>\n      <Item name=\"Shore Map\"/>\n      <Item name=\"Tropical Island Map\"/>\n      <Item name=\"Vaal Pyramid Map\"/>\n\n      <!-- Tier 9 -->\n      <Item name=\"Arena Map\"/>\n      <Item name=\"Estuary Map\"/>\n      <Item name=\"Moon Temple Map\"/>\n      <Item name=\"Museum Map\"/>\n      <Item name=\"Plateau Map\"/>\n      <Item name=\"Scriptorium Map\"/>\n      <Item name=\"Sepulchre Map\"/>\n      <Item name=\"Temple Map\"/>\n      <Item name=\"Tower Map\"/>\n      <Item name=\"Vault Map\"/>\n      <Item name=\"Waste Pool Map\"/>\n\n      <!-- Tier 10 -->\n      <Item name=\"Arachnid Tomb Map\"/>\n      <Item name=\"Belfry Map\"/>\n      <Item name=\"Bog Map\"/>\n      <Item name=\"Cursed Crypt Map\"/>\n      <Item name=\"Harbinger Map\"/>\n      <Item name=\"Orchard Map\"/>\n      <Item name=\"Pier Map\"/>\n      <Item name=\"Precinct Map\"/>\n      <Item name=\"Shipyard Map\"/>\n      <Item name=\"Siege Map\"/>\n      <Item name=\"Wasteland Map\"/>\n\n      <!-- Tier 11 -->\n      <Item name=\"Colonnade Map\"/>\n      <Item name=\"Coves Map\"/>\n      <Item name=\"Factory Map\"/>\n      <Item name=\"Lair Map\"/>\n      <Item name=\"Mesa Map\"/>\n      <Item name=\"Pit Map\"/>\n      <Item name=\"Primordial Pool Map\"/>\n      <Item name=\"Promenade Map\"/>\n      <Item name=\"Shaped Academy Map\"/>\n      <Item name=\"Spider Forest Map\"/>\n      <Item name=\"Waterways Map\"/>\n\n      <!-- Tier 12 -->\n      <Item name=\"Castle Ruins Map\"/>\n      <Item name=\"Crystal Ore Map\"/>\n      <Item name=\"Defiled Cathedral Map\"/>\n      <Item name=\"Necropolis Map\"/>\n      <Item name=\"Overgrown Shrine Map\"/>\n      <Item name=\"Racecourse Map\"/>\n      <Item name=\"Summit Map\"/>\n      <Item name=\"Torture Chamber Map\"/>\n      <Item name=\"Villa Map\"/>\n\n      <!-- Tier 13 -->\n      <Item name=\"Arsenal Map\"/>\n      <Item name=\"Caldera Map\"/>\n      <Item name=\"Core Map\"/>\n      <Item name=\"Desert Spring Map\"/>\n      <Item name=\"Ghetto Map\"/>\n      <Item name=\"Malformation Map\"/>\n      <Item name=\"Park Map\"/>\n      <Item name=\"Shrine Map\"/>\n      <Item name=\"Terrace Map\"/>\n\n      <!-- Tier 14 -->\n      <Item name=\"Acid Lakes Map\"/>\n      <Item name=\"Colosseum Map\"/>\n      <Item name=\"Crimson Temple Map\"/>\n      <Item name=\"Dark Forest Map\"/>\n      <Item name=\"Dig Map\"/>\n      <Item name=\"Palace Map\"/>\n      <Item name=\"Plaza Map\"/>\n\n      <!-- Tier 15 -->\n      <Item name=\"Basilica Map\"/>\n      <Item name=\"Carcass Map\"/>\n      <Item name=\"Harbinger Map\"/>\n      <Item name=\"Lava Lake Map\"/>\n      <Item name=\"Reef Map\"/>\n      <Item name=\"Sunken City Map\"/>\n\n      <!-- Tier 16 -->\n      <Item name=\"Forge of the Phoenix Map\"/>\n      <Item name=\"Lair of the Hydra Map\"/>\n      <Item name=\"Maze of the Minotaur Map\"/>\n      <Item name=\"Pit of the Chimera Map\"/>\n      <Item name=\"Vaal Temple Map\"/>\n\n      <!-- Tier 17 -->\n      <Item name=\"The Shaper's Realm\"/>\n\n      <!-- Atlas of Worlds Maps - [2.4.0, 3.1.0) -->\n      <!-- Tier 1 -->\n      <Item name=\"Arcade Map\"/>\n      <Item name=\"Crystal Ore Map\"/>\n      <Item name=\"Desert Map\"/>\n      <Item name=\"Jungle Valley Map\"/>\n\n      <!-- Tier 2 -->\n      <Item name=\"Beach Map\"/>\n      <Item name=\"Desert Spring Map\"/>\n      <Item name=\"Factory Map\"/>\n      <Item name=\"Ghetto Map\"/>\n\n      <!-- Tier 3 -->\n      <Item name=\"Arid Lake Map\"/>\n      <Item name=\"Channel Map\"/>\n      <Item name=\"Flooded Mine Map\"/>\n      <Item name=\"Grotto Map\"/>\n      <Item name=\"Marshes Map\"/>\n      <Item name=\"Toxic Sewer Map\"/>\n      <Item name=\"Vaal Pyramid Map\"/>\n\n      <!-- Tier 4 -->\n      <Item name=\"Academy Map\"/>\n      <Item name=\"Acid Lakes Map\"/>\n      <Item name=\"Dungeon Map\"/>\n      <Item name=\"Graveyard Map\"/>\n      <Item name=\"Phantasmagoria Map\"/>\n      <Item name=\"Villa Map\"/>\n      <Item name=\"Waste Pool Map\"/>\n\n      <!-- Tier 5 -->\n      <Item name=\"Burial Chambers Map\"/>\n      <Item name=\"Dunes Map\"/>\n      <Item name=\"Harbinger Map\"/>\n      <Item name=\"Mesa Map\"/>\n      <Item name=\"Peninsula Map\"/>\n      <Item name=\"Pit Map\"/>\n      <Item name=\"Primordial Pool Map\"/>\n      <Item name=\"Spider Lair Map\"/>\n      <Item name=\"Tower Map\"/>\n\n      <!-- Tier 6 -->\n      <Item name=\"Ancient City Map\"/>\n      <Item name=\"Canyon Map\"/>\n      <Item name=\"Geode Map\"/>\n      <Item name=\"Racecourse Map\"/>\n      <Item name=\"Ramparts Map\"/>\n      <Item name=\"Shaped Arcade Map\"/>\n      <Item name=\"Shaped Crystal Ore Map\"/>\n      <Item name=\"Shaped Desert Map\"/>\n      <Item name=\"Shaped Jungle Valley Map\"/>\n      <Item name=\"Spider Forest Map\"/>\n      <Item name=\"Strand Map\"/>\n      <Item name=\"Thicket Map\"/>\n      <Item name=\"Wharf Map\"/>\n\n      <!-- Tier 7 -->\n      <Item name=\"Arachnid Tomb Map\"/>\n      <Item name=\"Armoury Map\"/>\n      <Item name=\"Ashen Wood Map\"/>\n      <Item name=\"Bone Crypt Map\"/>\n      <Item name=\"Castle Ruins Map\"/>\n      <Item name=\"Cells Map\"/>\n      <Item name=\"Mud Geyser Map\"/>\n      <Item name=\"Shaped Beach Map\"/>\n      <Item name=\"Shaped Desert Spring Map\"/>\n      <Item name=\"Shaped Factory Map\"/>\n      <Item name=\"Shaped Ghetto Map\"/>\n\n      <!-- Tier 8 -->\n      <Item name=\"Arachnid Nest Map\"/>\n      <Item name=\"Arena Map\"/>\n      <Item name=\"Atoll Map\"/>\n      <Item name=\"Barrows Map\"/>\n      <Item name=\"Bog Map\"/>\n      <Item name=\"Cemetery Map\"/>\n      <Item name=\"Pier Map\"/>\n      <Item name=\"Shaped Arid Lake Map\"/>\n      <Item name=\"Shaped Channel Map\"/>\n      <Item name=\"Shaped Flooded Mine Map\"/>\n      <Item name=\"Shaped Grotto Map\"/>\n      <Item name=\"Shaped Marshes Map\"/>\n      <Item name=\"Shaped Toxic Sewer Map\"/>\n      <Item name=\"Shaped Vaal Pyramid Map\"/>\n      <Item name=\"Shore Map\"/>\n      <Item name=\"Tropical Island Map\"/>\n\n      <!-- Tier 9 -->\n      <Item name=\"Coves Map\"/>\n      <Item name=\"Cursed Crypt Map\"/>\n      <Item name=\"Museum Map\"/>\n      <Item name=\"Orchard Map\"/>\n      <Item name=\"Overgrown Shrine Map\"/>\n      <Item name=\"Promenade Map\"/>\n      <Item name=\"Reef Map\"/>\n      <Item name=\"Shaped Academy Map\"/>\n      <Item name=\"Shaped Acid Lakes Map\"/>\n      <Item name=\"Shaped Dungeon Map\"/>\n      <Item name=\"Shaped Graveyard Map\"/>\n      <Item name=\"Shaped Phantasmagoria Map\"/>\n      <Item name=\"Shaped Villa Map\"/>\n      <Item name=\"Shaped Waste Pool Map\"/>\n      <Item name=\"Temple Map\"/>\n\n      <!-- Tier 10 -->\n      <Item name=\"Arsenal Map\"/>\n      <Item name=\"Colonnade Map\"/>\n      <Item name=\"Courtyard Map\"/>\n      <Item name=\"Harbinger Map\"/>\n      <Item name=\"Malformation Map\"/>\n      <Item name=\"Port Map\"/>\n      <Item name=\"Shaped Burial Chambers Map\"/>\n      <Item name=\"Shaped Dunes Map\"/>\n      <Item name=\"Shaped Mesa Map\"/>\n      <Item name=\"Shaped Peninsula Map\"/>\n      <Item name=\"Shaped Pit Map\"/>\n      <Item name=\"Shaped Primordial Pool Map\"/>\n      <Item name=\"Shaped Spider Lair Map\"/>\n      <Item name=\"Shaped Tower Map\"/>\n      <Item name=\"Terrace Map\"/>\n      <Item name=\"Underground River Map\"/>\n\n      <!-- Tier 11 -->\n      <Item name=\"Bazaar Map\"/>\n      <Item name=\"Chateau Map\"/>\n      <Item name=\"Excavation Map\"/>\n      <Item name=\"Precinct Map\"/>\n      <Item name=\"Shaped Ancient City Map\"/>\n      <Item name=\"Shaped Canyon Map\"/>\n      <Item name=\"Shaped Geode Map\"/>\n      <Item name=\"Shaped Racecourse Map\"/>\n      <Item name=\"Shaped Ramparts Map\"/>\n      <Item name=\"Shaped Spider Forest Map\"/>\n      <Item name=\"Shaped Strand Map\"/>\n      <Item name=\"Shaped Thicket Map\"/>\n      <Item name=\"Shaped Wharf Map\"/>\n      <Item name=\"Torture Chamber Map\"/>\n      <Item name=\"Underground Sea Map\"/>\n      <Item name=\"Wasteland Map\"/>\n\n      <!-- Tier 12 -->\n      <Item name=\"Estuary Map\"/>\n      <Item name=\"Ivory Temple Map\"/>\n      <Item name=\"Lava Chamber Map\"/>\n      <Item name=\"Necropolis Map\"/>\n      <Item name=\"Plateau Map\"/>\n      <Item name=\"Residence Map\"/>\n      <Item name=\"Shaped Arachnid Tomb Map\"/>\n      <Item name=\"Shaped Armoury Map\"/>\n      <Item name=\"Shaped Ashen Wood Map\"/>\n      <Item name=\"Shaped Bone Crypt Map\"/>\n      <Item name=\"Shaped Castle Ruins Map\"/>\n      <Item name=\"Shaped Cells Map\"/>\n      <Item name=\"Shaped Mud Geyser Map\"/>\n      <Item name=\"Shipyard Map\"/>\n      <Item name=\"Vault Map\"/>\n\n      <!-- Tier 13 -->\n      <Item name=\"Gorge Map\"/>\n      <Item name=\"High Gardens Map\"/>\n      <Item name=\"Lair Map\"/>\n      <Item name=\"Leyline Map\"/>\n      <Item name=\"Lighthouse Map\"/>\n      <Item name=\"Plaza Map\"/>\n      <Item name=\"Scriptorium Map\"/>\n      <Item name=\"Shaped Arachnid Nest Map\"/>\n      <Item name=\"Shaped Arena Map\"/>\n      <Item name=\"Shaped Atoll Map\"/>\n      <Item name=\"Shaped Barrows Map\"/>\n      <Item name=\"Shaped Bog Map\"/>\n      <Item name=\"Shaped Cemetery Map\"/>\n      <Item name=\"Shaped Pier Map\"/>\n      <Item name=\"Shaped Shore Map\"/>\n      <Item name=\"Shaped Tropical Island Map\"/>\n      <Item name=\"Waterways Map\"/>\n\n      <!-- Tier 14 -->\n      <Item name=\"Maze Map\"/>\n      <Item name=\"Mineral Pools Map\"/>\n      <Item name=\"Palace Map\"/>\n      <Item name=\"Shaped Coves Map\"/>\n      <Item name=\"Shaped Cursed Crypt Map\"/>\n      <Item name=\"Shaped Museum Map\"/>\n      <Item name=\"Shaped Orchard Map\"/>\n      <Item name=\"Shaped Overgrown Shrine Map\"/>\n      <Item name=\"Shaped Promenade Map\"/>\n      <Item name=\"Shaped Reef Map\"/>\n      <Item name=\"Shaped Temple Map\"/>\n      <Item name=\"Shrine Map\"/>\n      <Item name=\"Springs Map\"/>\n      <Item name=\"Volcano Map\"/>\n\n      <!-- Tier 15 -->\n      <Item name=\"Caldera Map\"/>\n      <Item name=\"Colosseum Map\"/>\n      <Item name=\"Core Map\"/>\n      <Item name=\"Dark Forest Map\"/>\n      <Item name=\"Harbinger Map\"/>\n      <Item name=\"Overgrown Ruin Map\"/>\n      <Item name=\"Shaped Arsenal Map\"/>\n      <Item name=\"Shaped Colonnade Map\"/>\n      <Item name=\"Shaped Courtyard Map\"/>\n      <Item name=\"Shaped Malformation Map\"/>\n      <Item name=\"Shaped Port Map\"/>\n      <Item name=\"Shaped Terrace Map\"/>\n      <Item name=\"Shaped Underground River Map\"/>\n\n      <!-- Tier 16 -->\n      <Item name=\"Forge of the Phoenix Map\"/>\n      <Item name=\"Lair of the Hydra Map\"/>\n      <Item name=\"Maze of the Minotaur Map\"/>\n      <Item name=\"Pit of the Chimera Map\"/>\n      <Item name=\"Vaal Temple Map\"/>\n\n      <!-- Tier 17 -->\n      <Item name=\"The Shaper's Realm\"/>\n\n      <!-- The Awakening Maps - [2.0.0, 2.4.0) -->\n      <!-- Tier 1 -->\n      <Item name=\"Crypt Map\"/>\n      <Item name=\"Desert Map\"/>\n      <Item name=\"Dunes Map\"/>\n      <Item name=\"Dungeon Map\"/>\n      <Item name=\"Grotto Map\"/>\n      <Item name=\"Pit Map\"/>\n      <Item name=\"Tropical Island Map\"/>\n\n      <!-- Tier 2 -->\n      <Item name=\"Arcade Map\"/>\n      <Item name=\"Atoll Map\"/>\n      <Item name=\"Cemetery Map\"/>\n      <Item name=\"Channel Map\"/>\n      <Item name=\"Sewer Map\"/>\n      <Item name=\"Thicket Map\"/>\n      <Item name=\"Wharf Map\"/>\n\n      <!-- Tier 3 -->\n      <Item name=\"Ghetto Map\"/>\n      <Item name=\"Mud Geyser Map\"/>\n      <Item name=\"Museum Map\"/>\n      <Item name=\"Quarry Map\"/>\n      <Item name=\"Reef Map\"/>\n      <Item name=\"Spider Lair Map\"/>\n      <Item name=\"Vaal Pyramid Map\"/>\n\n      <!-- Tier 4 -->\n      <Item name=\"Arena Map\"/>\n      <Item name=\"Crystal Ore Map\"/>\n      <Item name=\"Overgrown Shrine Map\"/>\n      <Item name=\"Phantasmagoria Map\"/>\n      <Item name=\"Promenade Map\"/>\n      <Item name=\"Shore Map\"/>\n      <Item name=\"Spider Forest Map\"/>\n\n      <!-- Tier 5 -->\n      <Item name=\"Bog Map\"/>\n      <Item name=\"Coves Map\"/>\n      <Item name=\"Graveyard Map\"/>\n      <Item name=\"Pier Map\"/>\n      <Item name=\"Underground River Map\"/>\n      <Item name=\"Villa Map\"/>\n\n      <!-- Tier 6 -->\n      <Item name=\"Arachnid Nest Map\"/>\n      <Item name=\"Ashen Wood Map\"/>\n      <Item name=\"Catacombs Map\"/>\n      <Item name=\"Colonnade Map\"/>\n      <Item name=\"Strand Map\"/>\n      <Item name=\"Temple Map\"/>\n\n      <!-- Tier 7 -->\n      <Item name=\"Cavern Map\"/>\n      <Item name=\"Jungle Valley Map\"/>\n      <Item name=\"Terrace Map\"/>\n      <Item name=\"Torture Chamber Map\"/>\n      <Item name=\"Waste Pool Map\"/>\n\n      <!-- Tier 8 -->\n      <Item name=\"Canyon Map\"/>\n      <Item name=\"Cells Map\"/>\n      <Item name=\"Dark Forest Map\"/>\n      <Item name=\"Orchard Map\"/>\n      <Item name=\"Peninsula Map\"/>\n\n      <!-- Tier 9 -->\n      <Item name=\"Arid Lake Map\"/>\n      <Item name=\"Gorge Map\"/>\n      <Item name=\"Malformation Map\"/>\n      <Item name=\"Residence Map\"/>\n      <Item name=\"Underground Sea Map\"/>\n\n      <!-- Tier 10 -->\n      <Item name=\"Bazaar Map\"/>\n      <Item name=\"Chateau Map\"/>\n      <Item name=\"Necropolis Map\"/>\n      <Item name=\"Plateau Map\"/>\n      <Item name=\"Volcano Map\"/>\n\n      <!-- Tier 11 -->\n      <Item name=\"Academy Map\"/>\n      <Item name=\"Crematorium Map\"/>\n      <Item name=\"Precinct Map\"/>\n      <Item name=\"Springs Map\"/>\n\n      <!-- Tier 12 -->\n      <Item name=\"Arsenal Map\"/>\n      <Item name=\"Overgrown Ruin Map\"/>\n      <Item name=\"Shipyard Map\"/>\n\n      <!-- Tier 13 -->\n      <Item name=\"Courtyard Map\"/>\n      <Item name=\"Excavation Map\"/>\n      <Item name=\"Wasteland Map\"/>\n      <Item name=\"Waterways Map\"/>\n\n      <!-- Tier 14 -->\n      <Item name=\"Maze Map\"/>\n      <Item name=\"Palace Map\"/>\n      <Item name=\"Plaza Map\"/>\n      <Item name=\"Shrine Map\"/>\n      <Item name=\"Vaal Temple Map\"/>\n\n      <!-- Tier 15 -->\n      <Item name=\"Abyss Map\"/>\n      <Item name=\"Colosseum Map\"/>\n      <Item name=\"Core Map\"/>\n\n      <!-- Original Maps - (1.0.0, 2.0.0) -->\n      <!-- Tier 1 -->\n      <Item name=\"Arid Lake Map\"/>\n      <Item name=\"Crypt Map\"/>\n      <Item name=\"Dunes Map\"/>\n      <Item name=\"Dungeon Map\"/>\n      <Item name=\"Grotto Map\"/>\n      <Item name=\"Orchard Map\"/>\n      <Item name=\"Overgrown Ruin Map\"/>\n      <Item name=\"Tropical Island Map\"/>\n\n      <!-- Tier 2 -->\n      <Item name=\"Arcade Map\"/>\n      <Item name=\"Arsenal Map\"/>\n      <Item name=\"Atoll Map\"/>\n      <Item name=\"Cemetery Map\"/>\n      <Item name=\"Sewer Map\"/>\n      <Item name=\"Thicket Map\"/>\n      <Item name=\"Wharf Map\"/>\n\n      <!-- Tier 3 -->\n      <Item name=\"Ghetto Map\"/>\n      <Item name=\"Mud Geyser Map\"/>\n      <Item name=\"Museum Map\"/>\n      <Item name=\"Reef Map\"/>\n      <Item name=\"Spider Lair Map\"/>\n      <Item name=\"Springs Map\"/>\n      <Item name=\"Vaal Pyramid Map\"/>\n\n      <!-- Tier 4 -->\n      <Item name=\"Catacombs Map\"/>\n      <Item name=\"Crystal Ore Map\"/>\n      <Item name=\"Overgrown Shrine Map\"/>\n      <Item name=\"Promenade Map\"/>\n      <Item name=\"Shore Map\"/>\n      <Item name=\"Spider Forest Map\"/>\n\n      <!-- Tier 5 -->\n      <Item name=\"Bog Map\"/>\n      <Item name=\"Coves Map\"/>\n      <Item name=\"Graveyard Map\"/>\n      <Item name=\"Pier Map\"/>\n      <Item name=\"Underground River Map\"/>\n      <Item name=\"Villa Map\"/>\n\n      <!-- Tier 6 -->\n      <Item name=\"Arachnid Nest Map\"/>\n      <Item name=\"Ashen Wood Map\"/>\n      <Item name=\"Colonnade Map\"/>\n      <Item name=\"Strand Map\"/>\n      <Item name=\"Temple Map\"/>\n\n      <!-- Tier 7 -->\n      <Item name=\"Cavern Map\"/>\n      <Item name=\"Jungle Valley Map\"/>\n      <Item name=\"Terrace Map\"/>\n      <Item name=\"Torture Chamber Map\"/>\n      <Item name=\"Waste Pool Map\"/>\n\n      <!-- Tier 8 -->\n      <Item name=\"Canyon Map\"/>\n      <Item name=\"Cells Map\"/>\n      <Item name=\"Dark Forest Map\"/>\n      <Item name=\"Peninsula Map\"/>\n\n      <!-- Tier 9 -->\n      <Item name=\"Gorge Map\"/>\n      <Item name=\"Maze Map\"/>\n      <Item name=\"Residence Map\"/>\n      <Item name=\"Underground Sea Map\"/>\n\n      <!-- Tier 10 -->\n      <Item name=\"Bazaar Map\"/>\n      <Item name=\"Necropolis Map\"/>\n      <Item name=\"Plateau Map\"/>\n\n      <!-- Tier 11 -->\n      <Item name=\"Academy Map\"/>\n      <Item name=\"Crematorium Map\"/>\n      <Item name=\"Precinct Map\"/>\n\n      <!-- Tier 12 -->\n      <Item name=\"Shipyard Map\"/>\n      <Item name=\"Shrine Map\"/>\n\n      <!-- Tier 13 -->\n      <Item name=\"Courtyard Map\"/>\n      <Item name=\"Palace Map\"/>\n\n      <!-- Tier 14 -->\n      <Item name=\"Vaal Temple Map\"/>\n\n      <!-- Other-->\n      <Item name=\"The Apex of Sacrifice\"/>\n      <Item name=\"The Alluring Abyss\"/>\n      <Item name=\"The Pale Court\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Gloves\">\n      <Item name=\"Iron Gauntlets\"/>\n      <Item name=\"Plated Gauntlets\"/>\n      <Item name=\"Bronze Gauntlets\"/>\n      <Item name=\"Steel Gauntlets\"/>\n      <Item name=\"Antique Gauntlets\"/>\n      <Item name=\"Ancient Gauntlets\"/>\n      <Item name=\"Goliath Gauntlets\"/>\n      <Item name=\"Vaal Gauntlets\"/>\n      <Item name=\"Titan Gauntlets\"/>\n      <Item name=\"Spiked Gloves\"/>\n\n      <Item name=\"Rawhide Gloves\"/>\n      <Item name=\"Goathide Gloves\"/>\n      <Item name=\"Deerskin Gloves\"/>\n      <Item name=\"Nubuck Gloves\"/>\n      <Item name=\"Eelskin Gloves\"/>\n      <Item name=\"Sharkskin Gloves\"/>\n      <Item name=\"Shagreen Gloves\"/>\n      <Item name=\"Stealth Gloves\"/>\n      <Item name=\"Slink Gloves\"/>\n\n      <Item name=\"Wool Gloves\"/>\n      <Item name=\"Velvet Gloves\"/>\n      <Item name=\"Silk Gloves\"/>\n      <Item name=\"Embroidered Gloves\"/>\n      <Item name=\"Satin Gloves\"/>\n      <Item name=\"Samite Gloves\"/>\n      <Item name=\"Conjurer Gloves\"/>\n      <Item name=\"Arcanist Gloves\"/>\n      <Item name=\"Sorcerer Gloves\"/>\n      <Item name=\"Fingerless Silk Gloves\"/>\n\n      <Item name=\"Fishscale Gauntlets\"/>\n      <Item name=\"Ironscale Gauntlets\"/>\n      <Item name=\"Bronzescale Gauntlets\"/>\n      <Item name=\"Steelscale Gauntlets\"/>\n      <Item name=\"Serpentscale Gauntlets\"/>\n      <Item name=\"Wyrmscale Gauntlets\"/>\n      <Item name=\"hydrascale Gauntlets\"/>\n      <Item name=\"Dragonscale Gauntlets\"/>\n\n      <Item name=\"Chain Gloves\"/>\n      <Item name=\"Ringmail Gloves\"/>\n      <Item name=\"Mesh Gloves\"/>\n      <Item name=\"Riveted Gloves\"/>\n      <Item name=\"Zealot Gloves\"/>\n      <Item name=\"Soldier Gloves\"/>\n      <Item name=\"Legion Gloves\"/>\n      <Item name=\"Crusader Gloves\"/>\n\n      <Item name=\"Wrapped Mitts\"/>\n      <Item name=\"Strapped Mitts\"/>\n      <Item name=\"Clasped Mitts\"/>\n      <Item name=\"Trapper Mitts\"/>\n      <Item name=\"Ambush Mitts\"/>\n      <Item name=\"Carnal Mitts\"/>\n      <Item name=\"Assassin's Mitts\"/>\n      <Item name=\"Murder Mitts\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Boots\">\n      <Item name=\"Iron Greaves\"/>\n      <Item name=\"Steel Greaves\"/>\n      <Item name=\"Plated Greaves\"/>\n      <Item name=\"Reinforced Greaves\"/>\n      <Item name=\"Antique Greaves\"/>\n      <Item name=\"Ancient Greaves\"/>\n      <Item name=\"Goliath Greaves\"/>\n      <Item name=\"Vaal Greaves\"/>\n      <Item name=\"Titan Greaves\"/>\n\n      <Item name=\"Rawhide Boots\"/>\n      <Item name=\"Goathide Boots\"/>\n      <Item name=\"Deerskin Boots\"/>\n      <Item name=\"Nubuck Boots\"/>\n      <Item name=\"Eelskin Boots\"/>\n      <Item name=\"Sharkskin Boots\"/>\n      <Item name=\"Shagreen Boots\"/>\n      <Item name=\"Stealth Boots\"/>\n      <Item name=\"Slink Boots\"/>\n\n      <Item name=\"Wool Shoes\"/>\n      <Item name=\"Velvet Slippers\"/>\n      <Item name=\"Silk Slippers\"/>\n      <Item name=\"Scholar Boots\"/>\n      <Item name=\"Satin Slippers\"/>\n      <Item name=\"Samite Slippers\"/>\n      <Item name=\"Conjurer Boots\"/>\n      <Item name=\"Arcanist Slippers\"/>\n      <Item name=\"Sorcerer Boots\"/>\n\n      <Item name=\"Leatherscale Boots\"/>\n      <Item name=\"Ironscale Boots\"/>\n      <Item name=\"Bronzescale Boots\"/>\n      <Item name=\"Steelscale Boots\"/>\n      <Item name=\"Serpentscale Boots\"/>\n      <Item name=\"Wyrmscale Boots\"/>\n      <Item name=\"Hydrascale Boots\"/>\n      <Item name=\"Dragonscale Boots\"/>\n\n      <Item name=\"Chain Boots\"/>\n      <Item name=\"Ringmail Boots\"/>\n      <Item name=\"Mesh Boots\"/>\n      <Item name=\"Riveted Boots\"/>\n      <Item name=\"Zealot Boots\"/>\n      <Item name=\"Soldier Boots\"/>\n      <Item name=\"Legion Boots\"/>\n      <Item name=\"Crusader Boots\"/>\n\n      <Item name=\"Wrapped Boots\"/>\n      <Item name=\"Strapped Boots\"/>\n      <Item name=\"Clasped Boots\"/>\n      <Item name=\"Shackled Boots\"/>\n      <Item name=\"Trapper Boots\"/>\n      <Item name=\"Ambush Boots\"/>\n      <Item name=\"Carnal Boots\"/>\n      <Item name=\"Assassin's Boots\"/>\n      <Item name=\"Murder Boots\"/>\n\n      <!-- Armor and Evasion: Fire and Cold Resistances\n           Armor and Energy Shield: Fire and Lightning Resistances\n           Energy Shield and Evasion: Cold and Lightning Resistances -->\n      <Item name=\"Two-Toned Boots\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Axe\">\n      <!-- One Hand Axes -->\n      <Item name=\"Rusted Hatchet\"/>\n      <Item name=\"Jade Hatchet\"/>\n      <Item name=\"Boarding Axe\"/>\n      <Item name=\"Cleaver\"/>\n      <Item name=\"Broad Axe\"/>\n      <Item name=\"Arming Axe\"/>\n      <Item name=\"Decorative Axe\"/>\n      <Item name=\"Spectral Axe\"/>\n      <Item name=\"Etched Hatchet\"/>\n      <Item name=\"Jasper Axe\"/>\n      <Item name=\"Tomahawk\"/>\n      <Item name=\"Wrist Chopper\"/>\n      <Item name=\"War Axe\"/>\n      <Item name=\"Chest Splitter\"/>\n      <Item name=\"Ceremonial Axe\"/>\n      <Item name=\"Wraith Axe\"/>\n      <Item name=\"Engraved Hatchet\"/>\n      <Item name=\"Karui Axe\"/>\n      <Item name=\"Siege Axe\"/>\n      <Item name=\"Reaver Axe\"/>\n      <Item name=\"Butcher Axe\"/>\n      <Item name=\"Vaal Hatchet\"/>\n      <Item name=\"Royal Axe\"/>\n      <Item name=\"Infernal Axe\"/>\n      <Item name=\"Runic Hatchet\"/>\n\n      <!-- Two Hand Axes -->\n      <Item name=\"Stone Axe\"/>\n      <Item name=\"Jade Chopper\"/>\n      <Item name=\"Woodsplitter\"/>\n      <Item name=\"Poleaxe\"/>\n      <Item name=\"Double Axe\"/>\n      <Item name=\"Gilded Axe\"/>\n      <Item name=\"Shadow Axe\"/>\n      <Item name=\"Dagger Axe\"/>\n      <Item name=\"Jasper Chopper\"/>\n      <Item name=\"Timber Axe\"/>\n      <Item name=\"Headsman Axe\"/>\n      <Item name=\"Labrys\"/>\n      <Item name=\"Noble Axe\"/>\n      <Item name=\"Abyssal Axe\"/>\n      <Item name=\"Karui Chopper\"/>\n      <Item name=\"Talon Axe\"/>\n      <Item name=\"Sundering Axe\"/>\n      <Item name=\"Ezomyte Axe\"/>\n      <Item name=\"Vaal Axe\"/>\n      <Item name=\"Despot Axe\"/>\n      <Item name=\"Void Axe\"/>\n      <Item name=\"Fleshripper\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Claw\">\n      <Item name=\"Nailed Fist\"/>\n      <Item name=\"Sharktooth Claw\"/>\n      <Item name=\"Awl\"/>\n      <Item name=\"Cat's Paw\"/>\n      <Item name=\"Blinder\"/>\n      <Item name=\"Timeworn Claw\"/>\n      <Item name=\"Sparkling Claw\"/>\n      <Item name=\"Fright Claw\"/>\n      <Item name=\"Double Claw\"/>\n      <Item name=\"Thresher Claw\"/>\n      <Item name=\"Gouger\"/>\n      <Item name=\"Tiger's Paw\"/>\n      <Item name=\"Gut Ripper\"/>\n      <Item name=\"Prehistoric Claw\"/>\n      <Item name=\"Noble Claw\"/>\n      <Item name=\"Eagle Claw\"/>\n      <Item name=\"Twin Claw\"/>\n      <Item name=\"Great White Claw\"/>\n      <Item name=\"Throat Stabber\"/>\n      <Item name=\"Hellion's Paw\"/>\n      <Item name=\"Eye Gouger\"/>\n      <Item name=\"Vaal Claw\"/>\n      <Item name=\"Imperial Claw\"/>\n      <Item name=\"Terror Claw\"/>\n      <Item name=\"Gemini Claw\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Bow\">\n      <Item name=\"Crude Bow\"/>\n      <Item name=\"Short Bow\"/>\n      <Item name=\"Long Bow\"/>\n      <Item name=\"Composite Bow\"/>\n      <Item name=\"Recurve Bow\"/>\n      <Item name=\"Bone Bow\"/>\n      <Item name=\"Royal Bow\"/>\n      <Item name=\"Death Bow\"/>\n      <Item name=\"Grove Bow\"/>\n      <Item name=\"Reflex Bow\"/>\n      <Item name=\"Decurve Bow\"/>\n      <Item name=\"Compound Bow\"/>\n      <Item name=\"Sniper Bow\"/>\n      <Item name=\"Ivory Bow\"/>\n      <Item name=\"Highborn Bow\"/>\n      <Item name=\"Decimation Bow\"/>\n      <Item name=\"Thicket Bow\"/>\n      <Item name=\"Steelwood Bow\"/>\n      <Item name=\"Citadel Bow\"/>\n      <Item name=\"Ranger Bow\"/>\n      <Item name=\"Assassin Bow\"/>\n      <Item name=\"Spine Bow\"/>\n      <Item name=\"Imperial Bow\"/>\n      <Item name=\"Harbinger Bow\"/>\n      <Item name=\"Maraketh Bow\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Dagger\">\n      <Item name=\"Glass Shank\"/>\n      <Item name=\"Skinning Knife\"/>\n      <Item name=\"Carving Knife\"/>\n      <Item name=\"Stiletto\"/>\n      <Item name=\"Boot Knife\"/>\n      <Item name=\"Copper Kris\"/>\n      <Item name=\"Skean\"/>\n      <Item name=\"Imp Dagger\"/>\n      <Item name=\"Flaying Knife\"/>\n      <Item name=\"Prong Dagger\"/>\n      <Item name=\"Butcher Knife\"/>\n      <Item name=\"Poignard\"/>\n      <Item name=\"Boot Blade\"/>\n      <Item name=\"Golden Kris\"/>\n      <Item name=\"Royal Skean\"/>\n      <Item name=\"Fiend Dagger\"/>\n      <Item name=\"Trisula\"/>\n      <Item name=\"Gutting Knife\"/>\n      <Item name=\"Slaughter Knife\"/>\n      <Item name=\"Ambusher\"/>\n      <Item name=\"Ezomyte Dagger\"/>\n      <Item name=\"Platinum Kris\"/>\n      <Item name=\"Imperial Skean\"/>\n      <Item name=\"Demon Dagger\"/>\n      <Item name=\"Sai\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Mace\">\n      <!-- One Hand Maces -->\n      <Item name=\"Driftwood Club\"/>\n      <Item name=\"Tribal Club\"/>\n      <Item name=\"Spiked Club\"/>\n      <Item name=\"Stone Hammer\"/>\n      <Item name=\"War Hammer\"/>\n      <Item name=\"Bladed Mace\"/>\n      <Item name=\"Ceremonial Mace\"/>\n      <Item name=\"Dream Mace\"/>\n      <Item name=\"Wyrm Mace\"/>\n      <Item name=\"Petrified Club\"/>\n      <Item name=\"Barbed Club\"/>\n      <Item name=\"Rock Breaker\"/>\n      <Item name=\"Battle Hammer\"/>\n      <Item name=\"Flanged Mace\"/>\n      <Item name=\"Ornate Mace\"/>\n      <Item name=\"Phantom Mace\"/>\n      <Item name=\"Dragon Mace\"/>\n      <Item name=\"Ancestral Club\"/>\n      <Item name=\"Tenderizer\"/>\n      <Item name=\"Gavel\"/>\n      <Item name=\"Legion Hammer\"/>\n      <Item name=\"Pernarch\"/>\n      <Item name=\"Auric Mace\"/>\n      <Item name=\"Nightmare Mace\"/>\n      <Item name=\"Behemoth Mace\"/>\n\n      <!-- Two Hand Maces -->\n      <Item name=\"Driftwood Maul\"/>\n      <Item name=\"Tribal Maul\"/>\n      <Item name=\"Mallet\"/>\n      <Item name=\"Sledgehammer\"/>\n      <Item name=\"Jagged Maul\"/>\n      <Item name=\"Brass Maul\"/>\n      <Item name=\"Fright Maul\"/>\n      <Item name=\"Morning Star\"/>\n      <Item name=\"Totemic Maul\"/>\n      <Item name=\"Great Mallet\"/>\n      <Item name=\"Steelhead\"/>\n      <Item name=\"Spiny Maul\"/>\n      <Item name=\"Plated Maul\"/>\n      <Item name=\"Dread Maul\"/>\n      <Item name=\"Solar Maul\"/>\n      <Item name=\"Karui Maul\"/>\n      <Item name=\"Colossus Mallet\"/>\n      <Item name=\"Piledriver\"/>\n      <Item name=\"Meatgrinder\"/>\n      <Item name=\"Imperial Maul\"/>\n      <Item name=\"Terror Maul\"/>\n      <Item name=\"Coronal Maul\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Quiver\">\n      <!-- Current Quivers -->\n      <Item name=\"Two-Point Arrow Quiver\"/>\n      <Item name=\"Serrated Arrow Quiver\"/>\n      <Item name=\"Sharktooth Arrow Quiver\"/>\n      <Item name=\"Blunt Arrow Quiver\"/>\n      <Item name=\"Fire Arrow Quiver\"/>\n      <Item name=\"Broadhead Arrow Quiver\"/>\n      <Item name=\"Penetrating Arrow Quiver\"/>\n      <Item name=\"Spike-Point Arrow Quiver\"/>\n\n      <!-- Old Quivers -->\n      <Item name=\"Rugged Quiver\"/>\n      <Item name=\"Cured Quiver\"/>\n      <Item name=\"Conductive Quiver\"/>\n      <Item name=\"Heavy Quiver\"/>\n      <Item name=\"Light Quiver\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Sceptre\">\n      <Item name=\"Driftwood Sceptre\"/>\n      <Item name=\"Darkwood Sceptre\"/>\n      <Item name=\"Bronze Sceptre\"/>\n      <Item name=\"Quartz Sceptre\"/>\n      <Item name=\"Iron Sceptre\"/>\n      <Item name=\"Ochre Sceptre\"/>\n      <Item name=\"Ritual Sceptre\"/>\n      <Item name=\"Shadow Sceptre\"/>\n      <Item name=\"Grinning Fetish\"/>\n      <Item name=\"Horned Sceptre\"/>\n      <Item name=\"Sekhem\"/>\n      <Item name=\"Crystal Sceptre\"/>\n      <Item name=\"Lead Sceptre\"/>\n      <Item name=\"Blood Sceptre\"/>\n      <Item name=\"Royal Sceptre\"/>\n      <Item name=\"Abyssal Sceptre\"/>\n      <Item name=\"Stag Sceptre\"/>\n      <Item name=\"Karui Sceptre\"/>\n      <Item name=\"Tyrant's Sekhem\"/>\n      <Item name=\"Opal Sceptre\"/>\n      <Item name=\"Platinum Sceptre\"/>\n      <Item name=\"Vaal Sceptre\"/>\n      <Item name=\"Carnal Sceptre\"/>\n      <Item name=\"Void Sceptre\"/>\n      <Item name=\"Sambar Sceptre\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Staff\">\n      <Item name=\"Gnarled Branch\"/>\n      <Item name=\"Primitive Staff\"/>\n      <Item name=\"Long Staff\"/>\n      <Item name=\"Iron Staff\"/>\n      <Item name=\"Coiled Staff\"/>\n      <Item name=\"Royal Staff\"/>\n      <Item name=\"Vile Staff\"/>\n      <Item name=\"Crescent Staff\"/>\n      <Item name=\"Woodful Staff\"/>\n      <Item name=\"Quarterstaff\"/>\n      <Item name=\"Military Staff\"/>\n      <Item name=\"Serpentine Staff\"/>\n      <Item name=\"Highborn Staff\"/>\n      <Item name=\"Foul Staff\"/>\n      <Item name=\"Moon Staff\"/>\n      <Item name=\"Primordial Staff\"/>\n      <Item name=\"Lathi\"/>\n      <Item name=\"Ezomyte Staff\"/>\n      <Item name=\"Maelström Staff\"/>\n      <Item name=\"Imperial Staff\"/>\n      <Item name=\"Judgement Staff\"/>\n      <Item name=\"Eclipse Staff\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Sword\">\n      <!-- One Hand Swords -->\n      <Item name=\"Rusted Sword\"/>\n      <Item name=\"Copper Sword\"/>\n      <Item name=\"Sabre\"/>\n      <Item name=\"Broad Sword\"/>\n      <Item name=\"War Sword\"/>\n      <Item name=\"Ancient Sword\"/>\n      <Item name=\"Elegant Sword\"/>\n      <Item name=\"Dusk Blade\"/>\n      <Item name=\"Hook Sword\"/>\n      <Item name=\"Variscite Blade\"/>\n      <Item name=\"Cutlass\"/>\n      <Item name=\"Baselard\"/>\n      <Item name=\"Battle Sword\"/>\n      <Item name=\"Elder Sword\"/>\n      <Item name=\"Graceful Sword\"/>\n      <Item name=\"Twilight Blade\"/>\n      <Item name=\"Grappler\"/>\n      <Item name=\"Gemstone Sword\"/>\n      <Item name=\"Corsair Sword\"/>\n      <Item name=\"Gladius\"/>\n      <Item name=\"Legion Sword\"/>\n      <Item name=\"Vaal Blade\"/>\n      <Item name=\"Eternal Sword\"/>\n      <Item name=\"Midnight Blade\"/>\n      <Item name=\"Tiger Hook\"/>\n\n      <!-- Thrusting One Hand Swords -->\n      <Item name=\"Rusted Spike\"/>\n      <Item name=\"Whalebone Rapier\"/>\n      <Item name=\"Battered Foil\"/>\n      <Item name=\"Basket Rapier\"/>\n      <Item name=\"Jagged Foil\"/>\n      <Item name=\"Antique Rapier\"/>\n      <Item name=\"Elegant Foil\"/>\n      <Item name=\"Thorn Rapier\"/>\n      <Item name=\"Smallsword\"/>\n      <Item name=\"Wyrmbone Rapier\"/>\n      <Item name=\"Burnished Foil\"/>\n      <Item name=\"Estoc\"/>\n      <Item name=\"Serrated Foil\"/>\n      <Item name=\"Primeval Rapier\"/>\n      <Item name=\"Fancy Foil\"/>\n      <Item name=\"Apex Rapier\"/>\n      <Item name=\"Courtesan Sword\"/>\n      <Item name=\"Dragonbone Rapier\"/>\n      <Item name=\"Tempered Foil\"/>\n      <Item name=\"Pecoraro\"/>\n      <Item name=\"Spiraled Foil\"/>\n      <Item name=\"Vaal Rapier\"/>\n      <Item name=\"Jewelled Foil\"/>\n      <Item name=\"Harpy Rapier\"/>\n      <Item name=\"Dragoon Sword\"/>\n\n      <!-- Two Hand Swords -->\n      <Item name=\"Corroded Blade\"/>\n      <Item name=\"Longsword\"/>\n      <Item name=\"Bastard Sword\"/>\n      <Item name=\"Two-Handed Sword\"/>\n      <Item name=\"Etched Greatsword\"/>\n      <Item name=\"Ornate Sword\"/>\n      <Item name=\"Spectral Sword\"/>\n      <Item name=\"Curved Blade\"/>\n      <Item name=\"Butcher Sword\"/>\n      <Item name=\"Footman Sword\"/>\n      <Item name=\"Highland Blade\"/>\n      <Item name=\"Engraved Greatsword\"/>\n      <Item name=\"Tiger Sword\"/>\n      <Item name=\"Wraith Sword\"/>\n      <Item name=\"Lithe Blade\"/>\n      <Item name=\"Headman's Sword\"/>\n      <Item name=\"Reaver Sword\"/>\n      <Item name=\"Ezomyte Blade\"/>\n      <Item name=\"Vaal Greatsword\"/>\n      <Item name=\"Lion Sword\"/>\n      <Item name=\"Infernal Sword\"/>\n      <Item name=\"Exquisite Blade\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Shield\">\n      <Item name=\"Splintered Tower Shield\"/>\n      <Item name=\"Corroded Tower Shield\"/>\n      <Item name=\"Rawhide Tower Shield\"/>\n      <Item name=\"Cedar Tower Shield\"/>\n      <Item name=\"Copper Tower Shield\"/>\n      <Item name=\"Reinforced Tower Shield\"/>\n      <Item name=\"Painted Tower Shield\"/>\n      <Item name=\"Buckskin Tower Shield\"/>\n      <Item name=\"Mahogany Tower Shield\"/>\n      <Item name=\"Bronze Tower Shield\"/>\n      <Item name=\"Girded Tower Shield\"/>\n      <Item name=\"Crested Tower Shield\"/>\n      <Item name=\"Shagreen Tower Shield\"/>\n      <Item name=\"Ebony Tower Shield\"/>\n      <Item name=\"Ezomyte Tower Shield\"/>\n      <Item name=\"Colossal Tower Shield\"/>\n      <Item name=\"Pinnacle Tower Shield\"/>\n\n      <Item name=\"Goathide Buckler\"/>\n      <Item name=\"Pine Buckler\"/>\n      <Item name=\"Painted Buckler\"/>\n      <Item name=\"Hammered Buckler\"/>\n      <Item name=\"War Buckler\"/>\n      <Item name=\"Gilded Buckler\"/>\n      <Item name=\"Oak Buckler\"/>\n      <Item name=\"Enameled Buckler\"/>\n      <Item name=\"Corrugated Buckler\"/>\n      <Item name=\"Battle Buckler\"/>\n      <Item name=\"Golden Buckler\"/>\n      <Item name=\"Ironwood Buckler\"/>\n      <Item name=\"Lacquered Buckler\"/>\n      <Item name=\"Vaal Buckler\"/>\n      <Item name=\"Crusader Buckler\"/>\n      <Item name=\"Imperial Buckler\"/>\n\n      <Item name=\"Twig Spirit Shield\"/>\n      <Item name=\"Yew Spirit Shield\"/>\n      <Item name=\"Bone Spirit Shield\"/>\n      <Item name=\"Tarnished Spirit Shield\"/>\n      <Item name=\"Jingling Spirit Shield\"/>\n      <Item name=\"Brass Spirit Shield\"/>\n      <Item name=\"Walnut Spirit Shield\"/>\n      <Item name=\"Ivory Spirit Shield\"/>\n      <Item name=\"Ancient Spirit Shield\"/>\n      <Item name=\"Chiming Spirit Shield\"/>\n      <Item name=\"Thorium Spirit Shield\"/>\n      <Item name=\"Lacewood Spirit Shield\"/>\n      <Item name=\"Fossilized Spirit Shield\"/>\n      <Item name=\"Vaal Spirit Shield\"/>\n      <Item name=\"Harmonic Spirit Shield\"/>\n      <Item name=\"Titanium Spirit Shield\"/>\n\n      <Item name=\"Rotted Round Shield\"/>\n      <Item name=\"Fir Round Shield\"/>\n      <Item name=\"Studded Round Shield\"/>\n      <Item name=\"Scarlet Round Shield\"/>\n      <Item name=\"Splendid Round Shield\"/>\n      <Item name=\"Maple Round Shield\"/>\n      <Item name=\"Spiked Round Shield\"/>\n      <Item name=\"Crimson Round Shield\"/>\n      <Item name=\"Baroque Round Shield\"/>\n      <Item name=\"Teak Round Shield\"/>\n      <Item name=\"Spiny Round Shield\"/>\n      <Item name=\"Cardinal Round Shield\"/>\n      <Item name=\"Elegant Round Shield\"/>\n\n      <Item name=\"Plank Kite Shield\"/>\n      <Item name=\"Linden Kite Shield\"/>\n      <Item name=\"Reinforced Kite Shield\"/>\n      <Item name=\"Layered Kite Shield\"/>\n      <Item name=\"Ceremonial Kite Shield\"/>\n      <Item name=\"Etched Kite Shield\"/>\n      <Item name=\"Steel Kite Shield\"/>\n      <Item name=\"Laminated Kite Shield\"/>\n      <Item name=\"Angelic Kite Shield\"/>\n      <Item name=\"Branded Kite Shield\"/>\n      <Item name=\"Champion Kite Shield\"/>\n      <Item name=\"Mosaic Kite Shield\"/>\n      <Item name=\"Archon Kite Shield\"/>\n\n      <Item name=\"Spiked Bundle\"/>\n      <Item name=\"Driftwood Spiked Shield\"/>\n      <Item name=\"Alloyed Spike Shield\"/>\n      <Item name=\"Burnished Spike Shield\"/>\n      <Item name=\"Ornate Spiked Shield\"/>\n      <Item name=\"Redwood Spiked Shield\"/>\n      <Item name=\"Compound Spiked Shield\"/>\n      <Item name=\"Polished Spiked Shield\"/>\n      <Item name=\"Sovereign Spiked Shield\"/>\n      <Item name=\"Alder Spike Shield\"/>\n      <Item name=\"Ezomyte Spiked Shield\"/>\n      <Item name=\"Mirrored Spiked Shield\"/>\n      <Item name=\"Supreme Spiked Shield\"/>\n    </GearBaseType>\n    <GearBaseType name=\"Wand\">\n      <Item name=\"Driftwood Wand\"/>\n      <Item name=\"Goat's Horn\"/>\n      <Item name=\"Carved Wand\"/>\n      <Item name=\"Quartz Wand\"/>\n      <Item name=\"Spiraled Wand\"/>\n      <Item name=\"Sage Wand\"/>\n      <Item name=\"Pagan Wand\"/>\n      <Item name=\"Faun's Horn\"/>\n      <Item name=\"Engraved Wand\"/>\n      <Item name=\"Crystal Wand\"/>\n      <Item name=\"Serpent Wand\"/>\n      <Item name=\"Omen Wand\"/>\n      <Item name=\"Heathen Wand\"/>\n      <Item name=\"Demon's Horn\"/>\n      <Item name=\"Imbued Wand\"/>\n      <Item name=\"Opal Wand\"/>\n      <Item name=\"Tornado Wand\"/>\n      <Item name=\"Prophecy Wand\"/>\n      <Item name=\"Profane Wand\"/>\n      <Item name=\"Convoking Wand\"/>\n    </GearBaseType>\n\n    <!--Source data: https://pathofexile.gamepedia.com/Divination_card-->\n    <!--Regex find: ^(.*)\\r -->\n    <!--Regex Replace: <Item name=\"$1\"/> -->\n    <GearBaseType name=\"DivinationCard\">\n      <Item name=\"A Dab of Ink\"/>\n      <Item name=\"A Mother's Parting Gift\"/>\n      <Item name=\"Abandoned Wealth\"/>\n      <Item name=\"Akil's Prophecy\"/>\n      <Item name=\"Alluring Bounty\"/>\n      <Item name=\"Alone in the Darkness\"/>\n      <Item name=\"Anarchy's Price\"/>\n      <Item name=\"Arrogance of the Vaal\"/>\n      <Item name=\"Assassin's Favour\"/>\n      <Item name=\"Atziri's Arsenal\"/>\n      <Item name=\"Audacity\"/>\n      <Item name=\"Azyran's Reward\"/>\n      <Item name=\"Beauty Through Death\"/>\n      <Item name=\"Birth of the Three\"/>\n      <Item name=\"Blessing of God\"/>\n      <Item name=\"Blind Venture\"/>\n      <Item name=\"Boon of Justice\"/>\n      <Item name=\"Boon of the First Ones\"/>\n      <Item name=\"Boundless Realms\"/>\n      <Item name=\"Bowyer's Dream\"/>\n      <Item name=\"Buried Treasure\"/>\n      <Item name=\"Burning Blood\"/>\n      <Item name=\"Call to the First Ones\"/>\n      <Item name=\"Cartographer's Delight\"/>\n      <Item name=\"Chaotic Disposition\"/>\n      <Item name=\"Coveted Possession\"/>\n      <Item name=\"Dark Dreams\"/>\n      <Item name=\"Dark Temptation\"/>\n      <Item name=\"Death\"/>\n      <Item name=\"Demigod's Wager\"/>\n      <Item name=\"Destined to Crumble\"/>\n      <Item name=\"Dialla's Subjugation\"/>\n      <Item name=\"Doedre's Madness\"/>\n      <Item name=\"Dying Anguish\"/>\n      <Item name=\"Earth Drinker\"/>\n      <Item name=\"Echoes of Love\"/>\n      <Item name=\"Emperor of Purity\"/>\n      <Item name=\"Emperor's Luck\"/>\n      <Item name=\"Forbidden Power\"/>\n      <Item name=\"Gemcutter's Promise\"/>\n      <Item name=\"Gift of the Gemling Queen\"/>\n      <Item name=\"Glimmer of Hope\"/>\n      <Item name=\"Grave Knowledge\"/>\n      <Item name=\"Harmony of Souls\"/>\n      <Item name=\"Her Mask\"/>\n      <Item name=\"Heterochromia\"/>\n      <Item name=\"Hope\"/>\n      <Item name=\"House of Mirrors\"/>\n      <Item name=\"Hubris\"/>\n      <Item name=\"Humility\"/>\n      <Item name=\"Hunter's Resolve\"/>\n      <Item name=\"Hunter's Reward\"/>\n      <Item name=\"Immortal Resolve\"/>\n      <Item name=\"Imperial Legacy\"/>\n      <Item name=\"Jack in the Box\"/>\n      <Item name=\"Lantador's Lost Love\"/>\n      <Item name=\"Last Hope\"/>\n      <Item name=\"Left to Fate\"/>\n      <Item name=\"Light and Truth\"/>\n      <Item name=\"Lingering Remnants\"/>\n      <Item name=\"Lost Worlds\"/>\n      <Item name=\"Loyalty\"/>\n      <Item name=\"Lucky Connections\"/>\n      <Item name=\"Lucky Deck\"/>\n      <Item name=\"Lysah's Respite\"/>\n      <Item name=\"Mawr Blaidd\"/>\n      <Item name=\"Merciless Armament\"/>\n      <Item name=\"Might is Right\"/>\n      <Item name=\"Mitts\"/>\n      <Item name=\"Monochrome\"/>\n      <Item name=\"More is Never Enough\"/>\n      <Item name=\"No Traces\"/>\n      <Item name=\"Nook's Crown\"/>\n      <Item name=\"Perfection\"/>\n      <Item name=\"Pride Before the Fall\"/>\n      <Item name=\"Pride of the First Ones\"/>\n      <Item name=\"Prosperity\"/>\n      <Item name=\"Rain of Chaos\"/>\n      <Item name=\"Rain Tempter\"/>\n      <Item name=\"Rats\"/>\n      <Item name=\"Rebirth\"/>\n      <Item name=\"Remembrance\"/>\n      <Item name=\"Sambodhi's Vow\"/>\n      <Item name=\"Scholar of the Seas\"/>\n      <Item name=\"Seven Years Bad Luck\"/>\n      <Item name=\"Shard of Fate\"/>\n      <Item name=\"Struck by Lightning\"/>\n      <Item name=\"The Admirer\"/>\n      <Item name=\"The Aesthete\"/>\n      <Item name=\"The Archmage's Right Hand\"/>\n      <Item name=\"The Arena Champion\"/>\n      <Item name=\"The Army of Blood\"/>\n      <Item name=\"The Artist\"/>\n      <Item name=\"The Avenger\"/>\n      <Item name=\"The Bargain\"/>\n      <Item name=\"The Battle Born\"/>\n      <Item name=\"The Beast\"/>\n      <Item name=\"The Betrayal\"/>\n      <Item name=\"The Blazing Fire\"/>\n      <Item name=\"The Body\"/>\n      <Item name=\"The Breach\"/>\n      <Item name=\"The Brittle Emperor\"/>\n      <Item name=\"The Cacophony\"/>\n      <Item name=\"The Calling\"/>\n      <Item name=\"The Carrion Crow\"/>\n      <Item name=\"The Cartographer\"/>\n      <Item name=\"The Cataclysm\"/>\n      <Item name=\"The Catalyst\"/>\n      <Item name=\"The Celestial Justicar\"/>\n      <Item name=\"The Celestial Stone\"/>\n      <Item name=\"The Chains that Bind\"/>\n      <Item name=\"The Coming Storm\"/>\n      <Item name=\"The Conduit\"/>\n      <Item name=\"The Cursed King\"/>\n      <Item name=\"The Damned\"/>\n      <Item name=\"The Dapper Prodigy\"/>\n      <Item name=\"The Dark Mage\"/>\n      <Item name=\"The Darkest Dream\"/>\n      <Item name=\"The Deal\"/>\n      <Item name=\"The Deceiver\"/>\n      <Item name=\"The Deep Ones\"/>\n      <Item name=\"The Demon\"/>\n      <Item name=\"The Demoness\"/>\n      <Item name=\"The Devastator\"/>\n      <Item name=\"The Doctor\"/>\n      <Item name=\"The Doppelganger\"/>\n      <Item name=\"The Dragon\"/>\n      <Item name=\"The Dragon's Heart\"/>\n      <Item name=\"The Dreamer\"/>\n      <Item name=\"The Dreamland\"/>\n      <Item name=\"The Drunken Aristocrat\"/>\n      <Item name=\"The Encroaching Darkness\"/>\n      <Item name=\"The Endless Darkness\"/>\n      <Item name=\"The Endurance\"/>\n      <Item name=\"The Enlightened\"/>\n      <Item name=\"The Ethereal\"/>\n      <Item name=\"The Explorer\"/>\n      <Item name=\"The Eye of Terror\"/>\n      <Item name=\"The Eye of the Dragon\"/>\n      <Item name=\"The Fathomless Depths\"/>\n      <Item name=\"The Feast\"/>\n      <Item name=\"The Fiend\"/>\n      <Item name=\"The Fletcher\"/>\n      <Item name=\"The Flora's Gift\"/>\n      <Item name=\"The Fool\"/>\n      <Item name=\"The Formless Sea\"/>\n      <Item name=\"The Forsaken\"/>\n      <Item name=\"The Fox\"/>\n      <Item name=\"The Gambler\"/>\n      <Item name=\"The Garish Power\"/>\n      <Item name=\"The Gemcutter\"/>\n      <Item name=\"The Gentleman\"/>\n      <Item name=\"The Gladiator\"/>\n      <Item name=\"The Golden Era\"/>\n      <Item name=\"The Hale Heart\"/>\n      <Item name=\"The Harvester\"/>\n      <Item name=\"The Hermit\"/>\n      <Item name=\"The Heroic Shot\"/>\n      <Item name=\"The Hoarder\"/>\n      <Item name=\"The Hunger\"/>\n      <Item name=\"The Immortal\"/>\n      <Item name=\"The Incantation\"/>\n      <Item name=\"The Innocent\"/>\n      <Item name=\"The Inoculated\"/>\n      <Item name=\"The Insatiable\"/>\n      <Item name=\"The Inventor\"/>\n      <Item name=\"The Iron Bard\"/>\n      <Item name=\"The Jester\"/>\n      <Item name=\"The Jeweller's Boon\"/>\n      <Item name=\"The Journey\"/>\n      <Item name=\"The King's Blade\"/>\n      <Item name=\"The King's Heart\"/>\n      <Item name=\"The Landing\"/>\n      <Item name=\"The Last One Standing\"/>\n      <Item name=\"The Lich\"/>\n      <Item name=\"The Life Thief\"/>\n      <Item name=\"The Lion\"/>\n      <Item name=\"The Lord in Black\"/>\n      <Item name=\"The Lord of Celebration\"/>\n      <Item name=\"The Lover\"/>\n      <Item name=\"The Lunaris Priestess\"/>\n      <Item name=\"The Mad King\"/>\n      <Item name=\"The Master Artisan\"/>\n      <Item name=\"The Master\"/>\n      <Item name=\"The Mayor\"/>\n      <Item name=\"The Mercenary\"/>\n      <Item name=\"The Messenger\"/>\n      <Item name=\"The Metalsmith's Gift\"/>\n      <Item name=\"The Mountain\"/>\n      <Item name=\"The Nurse\"/>\n      <Item name=\"The Oath\"/>\n      <Item name=\"The Obscured\"/>\n      <Item name=\"The Offering\"/>\n      <Item name=\"The Old Man\"/>\n      <Item name=\"The One With All\"/>\n      <Item name=\"The Opulent\"/>\n      <Item name=\"The Pack Leader\"/>\n      <Item name=\"The Pact\"/>\n      <Item name=\"The Penitent\"/>\n      <Item name=\"The Poet\"/>\n      <Item name=\"The Polymath\"/>\n      <Item name=\"The Porcupine\"/>\n      <Item name=\"The Price of Loyalty\"/>\n      <Item name=\"The Price of Protection\"/>\n      <Item name=\"The Primordial\"/>\n      <Item name=\"The Professor\"/>\n      <Item name=\"The Puzzle\"/>\n      <Item name=\"The Queen\"/>\n      <Item name=\"The Rabid Rhoa\"/>\n      <Item name=\"The Realm\"/>\n      <Item name=\"The Risk\"/>\n      <Item name=\"The Rite of Elements\"/>\n      <Item name=\"The Road to Power\"/>\n      <Item name=\"The Ruthless Ceinture\"/>\n      <Item name=\"The Sacrifice\"/>\n      <Item name=\"The Saint's Treasure\"/>\n      <Item name=\"The Samurai's Eye\"/>\n      <Item name=\"The Scarred Meadow\"/>\n      <Item name=\"The Scavenger\"/>\n      <Item name=\"The Scholar\"/>\n      <Item name=\"The Seeker\"/>\n      <Item name=\"The Sephirot\"/>\n      <Item name=\"The Side Quest\"/>\n      <Item name=\"The Sigil\"/>\n      <Item name=\"The Siren\"/>\n      <Item name=\"The Skeleton\"/>\n      <Item name=\"The Soul\"/>\n      <Item name=\"The Spark and the Flame\"/>\n      <Item name=\"The Spoiled Prince\"/>\n      <Item name=\"The Standoff\"/>\n      <Item name=\"The Stormcaller\"/>\n      <Item name=\"The Summoner\"/>\n      <Item name=\"The Sun\"/>\n      <Item name=\"The Surgeon\"/>\n      <Item name=\"The Surveyor\"/>\n      <Item name=\"The Survivalist\"/>\n      <Item name=\"The Sword King's Salute\"/>\n      <Item name=\"The Thaumaturgist\"/>\n      <Item name=\"The Throne\"/>\n      <Item name=\"The Tower\"/>\n      <Item name=\"The Traitor\"/>\n      <Item name=\"The Trial\"/>\n      <Item name=\"The Twilight Moon\"/>\n      <Item name=\"The Twins\"/>\n      <Item name=\"The Tyrant\"/>\n      <Item name=\"The Undaunted\"/>\n      <Item name=\"The Undisputed\"/>\n      <Item name=\"The Union\"/>\n      <Item name=\"The Valkyrie\"/>\n      <Item name=\"The Valley of Steel Boxes\"/>\n      <Item name=\"The Vast\"/>\n      <Item name=\"The Visionary\"/>\n      <Item name=\"The Void\"/>\n      <Item name=\"The Warden\"/>\n      <Item name=\"The Warlord\"/>\n      <Item name=\"The Watcher\"/>\n      <Item name=\"The Web\"/>\n      <Item name=\"The Wilted Rose\"/>\n      <Item name=\"The Wind\"/>\n      <Item name=\"The Witch\"/>\n      <Item name=\"The Wolf's Legacy\"/>\n      <Item name=\"The Wolf's Shadow\"/>\n      <Item name=\"The Wolf\"/>\n      <Item name=\"The Wolven King's Bite\"/>\n      <Item name=\"The Wolverine\"/>\n      <Item name=\"The World Eater\"/>\n      <Item name=\"The Wrath\"/>\n      <Item name=\"The Wretched\"/>\n      <Item name=\"Thirst for Knowledge\"/>\n      <Item name=\"Three Faces in the Dark\"/>\n      <Item name=\"Three Voices\"/>\n      <Item name=\"Thunderous Skies\"/>\n      <Item name=\"Time-Lost Relic\"/>\n      <Item name=\"Tranquillity\"/>\n      <Item name=\"Treasure Hunter\"/>\n      <Item name=\"Turn the Other Cheek\"/>\n      <Item name=\"Vanity\"/>\n      <Item name=\"Vile Power\"/>\n      <Item name=\"Vinia's Token\"/>\n      <Item name=\"Void of the Elements\"/>\n      <Item name=\"Volatile Power\"/>\n      <Item name=\"Wealth and Power\"/>\n    </GearBaseType>\n\n    <GearBaseType name=\"Jewel\">\n      <Item name=\"Cobalt Jewel\"/>\n      <Item name=\"Crimson Jewel\"/>\n      <Item name=\"Viridian Jewel\"/>\n      <Item name=\"Prismatic Jewel\"/>\n    </GearBaseType>\n\n    <GearBaseType name=\"AbyssJewel\">\n      <Item name=\"Ghastly Eye Jewel\"/>\n      <Item name=\"Hypnotic Eye Jewel\"/>\n      <Item name=\"Murderous Eye Jewel\"/>\n      <Item name=\"Searching Eye Jewel\"/>\n    </GearBaseType>\n\n    <GearBaseType name=\"FishingRod\">\n      <Item name=\"Fishing Rod\"/>\n    </GearBaseType>\n  </GearBaseTypes>\n\n  <FatedUniques>\n    <FatedUnique targetName=\"Reverberation Rod\" fatedName=\"Amplification Rod\" prophecyName=\"Power Magnified\"\n                 baseType=\"Spiraled Wand\" />\n    <FatedUnique targetName=\"Asenath's Mark\" fatedName=\"Asenath's Chant\" prophecyName=\"Song of the Sekhema\"\n                 baseType=\"Iron Circlet\" />\n    <FatedUnique targetName=\"Atziri's Mirror\" fatedName=\"Atziri's Reflection\" prophecyName=\"The Queen's Sacrifice\"\n                 baseType=\"Golden Buckler\" />\n    <FatedUnique targetName=\"Cameria's Maul\" fatedName=\"Cameria's Avarice\" prophecyName=\"Cold Greed\"\n                 baseType=\"Gavel\" />\n    <FatedUnique targetName=\"Chober Chaber\" fatedName=\"Chaber Cairn\" prophecyName=\"Faith Exhumed\"\n                 baseType=\"Great Mallet\" />\n    <FatedUnique targetName=\"Eclipse Solaris\" fatedName=\"Corona Solaris\" prophecyName=\"Blinding Light\"\n                 baseType=\"Crystal Wand\" />\n    <FatedUnique targetName=\"Craghead\" fatedName=\"Cragfall\" prophecyName=\"Heavy Blows\"\n                 baseType=\"Serrated Arrow Quiver\" />\n    <FatedUnique targetName=\"Icetomb\" fatedName=\"Crystal Vault\" prophecyName=\"End of the Light\"\n                 baseType=\"Latticed Ringmail\" />\n    <FatedUnique targetName=\"Death's Harp\" fatedName=\"Death's Opus\" prophecyName=\"The Bowstring's Music\"\n                 baseType=\"Death Bow\" />\n    <FatedUnique targetName=\"Deidbell\" fatedName=\"Deidbellow\" prophecyName=\"Dying Cry\"\n                 baseType=\"Gilded Sallet\" />\n    <FatedUnique targetName=\"Doedre's Tenure\" fatedName=\"Doedre's Malevolence\" prophecyName=\"The Malevolent Witch\"\n                 baseType=\"Velvet Gloves\" />\n    <FatedUnique targetName=\"Doomfletch\" fatedName=\"Doomfletch's Prism\" prophecyName=\"Ancient Doom\"\n                 baseType=\"Royal Bow\" />\n    <FatedUnique targetName=\"Redbeak\" fatedName=\"Dreadbeak\" prophecyName=\"The Dreaded Rhoa\"\n                 baseType=\"Rusted Sword\" />\n    <FatedUnique targetName=\"Dreadarc\" fatedName=\"Dreadsurge\" prophecyName=\"Burning Dread\"\n                 baseType=\"Cleaver\" />\n    <FatedUnique targetName=\"Dusktoe\" fatedName=\"Duskblight\" prophecyName=\"Agony at Dusk\"\n                 baseType=\"Ironscale Boots\" />\n    <FatedUnique targetName=\"Ezomyte Peak\" fatedName=\"Ezomyte Hold\" prophecyName=\"The Bloody Flowers Redux\"\n                 baseType=\"Iron Hat\" />\n    <FatedUnique targetName=\"Foxshade\" fatedName=\"Fox's Fortune\" prophecyName=\"Dark Instincts\"\n                 baseType=\"Wild Leather\" />\n    <FatedUnique targetName=\"Heatshiver\" fatedName=\"Frostferno\" prophecyName=\"A Vision of Ice and Fire\"\n                 baseType=\"Leather Hood\" />\n    <FatedUnique targetName=\"Geofri's Baptism\" fatedName=\"Geofri's Devotion\" prophecyName=\"Black Devotion\"\n                 baseType=\"Brass Maul\" />\n    <FatedUnique targetName=\"Geofri's Crest\" fatedName=\"Geofri's Legacy\" prophecyName=\"The Bishop's Legacy\"\n                 baseType=\"Great Crown\" />\n    <FatedUnique targetName=\"Wondertrap\" fatedName=\"Greedtrap\" prophecyName=\"Greed's Folly\"\n                 baseType=\"Velvet Slippers\" />\n    <FatedUnique targetName=\"Hrimsorrow\" fatedName=\"Hrimburn\" prophecyName=\"Fire and Ice\"\n                 baseType=\"Goathide Gloves\" />\n    <FatedUnique targetName=\"Hrimnor's Hymn\" fatedName=\"Hrimnor's Dirge\" prophecyName=\"Winter's Mournful Melodies\"\n                 baseType=\"Sledgehammer\" />\n    <FatedUnique targetName=\"Hyrri's Bite\" fatedName=\"Hyrri's Demise\" prophecyName=\"A Dishonourable Death\"\n                 baseType=\"Sharktooth Arrow Quiver\" />\n    <FatedUnique targetName=\"Kaltenhalt\" fatedName=\"Kaltensoul\" prophecyName=\"The Snuffed Flame\"\n                 baseType=\"Painted Buckler\" />\n    <FatedUnique targetName=\"Kaom's Sign\" fatedName=\"Kaom's Way\" prophecyName=\"The King's Path\"\n                 baseType=\"Coral Ring\" />\n    <FatedUnique targetName=\"Karui Ward\" fatedName=\"Karui Charge\" prophecyName=\"The Karui Rebellion\"\n                 baseType=\"Jade Amulet\" />\n    <FatedUnique targetName=\"Malachai's Simula\" fatedName=\"Malachai's Awakening\" prophecyName=\"The Nightmare Awakens\"\n                 baseType=\"Iron Mask\" />\n    <FatedUnique targetName=\"Crown of Thorns\" fatedName=\"Martyr's Crown\" prophecyName=\"Pleasure and Pain\"\n                 baseType=\"Vine Circlet\" />\n    <FatedUnique targetName=\"Fencoil\" fatedName=\"Mirebough\" prophecyName=\"Trapped in the Tower\"\n                 baseType=\"Gnarled Branch\" />\n    <FatedUnique targetName=\"Araku Tiki\" fatedName=\"Ngamahu Tiki\" prophecyName=\"A Forest of False Idols\"\n                 baseType=\"Coral Amulet\" />\n    <FatedUnique targetName=\"Quecholli\" fatedName=\"Panquetzaliztli\" prophecyName=\"The Fall of an Empire\"\n                 baseType=\"Jagged Maul\" />\n    <FatedUnique targetName=\"Queen's Decree\" fatedName=\"Queen's Escape\" prophecyName=\"The Misunderstood Queen\"\n                 baseType=\"Ornate Sword\" />\n    <FatedUnique targetName=\"Realmshaper\" fatedName=\"Realm Ender\" prophecyName=\"The Beginning and the End\"\n                 baseType=\"Iron Staff\" />\n    <FatedUnique targetName=\"Goredrill\" fatedName=\"Sanguine Gambol\" prophecyName=\"Crimson Hues\"\n                 baseType=\"Skinning Knife\" />\n    <FatedUnique targetName=\"Shavronne's Pace\" fatedName=\"Shavronne's Gambit\" prophecyName=\"The Flow of Energy\"\n                 baseType=\"Scholar Boots\" />\n    <FatedUnique targetName=\"Silverbranch\" fatedName=\"Silverbough\" prophecyName=\"The Silverwood\"\n                 baseType=\"Crude Bow\" />\n    <FatedUnique targetName=\"Sundance\" fatedName=\"Sunspite\" prophecyName=\"Sun's Punishment\"\n                 baseType=\"Clasped Boots\" />\n    <FatedUnique targetName=\"Limbsplit\" fatedName=\"The Cauteriser\" prophecyName=\"Severed Limbs\"\n                 baseType=\"Woodsplitter\" />\n    <FatedUnique targetName=\"The Dancing Dervish\" fatedName=\"The Dancing Duo\" prophecyName=\"Dance of Steel\"\n                 baseType=\"Reaver Sword\" />\n    <FatedUnique targetName=\"The Ignomon\" fatedName=\"The Effigon\" prophecyName=\"Blind Faith\"\n                 baseType=\"Gold Amulet\" />\n    <FatedUnique targetName=\"The Screaming Eagle\" fatedName=\"The Gryphon\" prophecyName=\"The Apex Predator\"\n                 baseType=\"Jade Hatchet\" />\n    <FatedUnique targetName=\"Iron Heart\" fatedName=\"The Iron Fortress\" prophecyName=\"Battle Hardened\"\n                 baseType=\"Crusader Plate\" />\n    <FatedUnique targetName=\"The Magnate\" fatedName=\"The Nomad\" prophecyName=\"The Great Leader of the North\"\n                 baseType=\"Studded Belt\" />\n    <FatedUnique targetName=\"Springleaf\" fatedName=\"The Oak\" prophecyName=\"Nature's Resilience\"\n                 baseType=\"Plank Kite Shield\" />\n    <FatedUnique targetName=\"Blackgleam\" fatedName=\"The Signal Fire\" prophecyName=\"Fire and Brimstone\"\n                 baseType=\"Fire Arrow Quiver\" />\n    <FatedUnique targetName=\"The Stormheart\" fatedName=\"The Stormwall\" prophecyName=\"The Storm Spire\"\n                 baseType=\"Royal Staff\" />\n    <FatedUnique targetName=\"The Magnate\" fatedName=\"The Tactician\" prophecyName=\"The Great Mind of the North\"\n                 baseType=\"Studded Belt\" />\n    <FatedUnique targetName=\"Storm Cloud\" fatedName=\"The Tempest\" prophecyName=\"The Servant's Heart\"\n                 baseType=\"Long Bow\" />\n    <FatedUnique targetName=\"Chalice of Horrors\" fatedName=\"Thirst for Horrors\" prophecyName=\"Mouth of Horrors\"\n                 baseType=\"War Buckler\" />\n    <FatedUnique targetName=\"Timeclasp\" fatedName=\"Timetwist\" prophecyName=\"A Rift in Time\"\n                 baseType=\"Moonstone Ring\" />\n    <FatedUnique targetName=\"Blackheart\" fatedName=\"Voidheart\" prophecyName=\"From The Void\"\n                 baseType=\"Iron Ring\" />\n    <FatedUnique targetName=\"Bramblejack\" fatedName=\"Wall of Brambles\" prophecyName=\"The King and the Brambles\"\n                 baseType=\"Plate Vest\" />\n    <FatedUnique targetName=\"Matua Tupuna\" fatedName=\"Whakatutuki o Matua\" prophecyName=\"The Mentor\"\n                 baseType=\"Tarnished Spirit Shield\" />\n    <FatedUnique targetName=\"Briskwrap\" fatedName=\"Wildwrap\" prophecyName=\"Last of the Wildmen\"\n                 baseType=\"Strapped Leather\" />\n    <FatedUnique targetName=\"Windscream\" fatedName=\"Windshriek\" prophecyName=\"Darktongue's Shriek\"\n                 baseType=\"Reinforced Greaves\" />\n    <FatedUnique targetName=\"Bloodboil\" fatedName=\"Winterweave\" prophecyName=\"Cold Blooded Fury\"\n                 baseType=\"Coral Ring\" />\n  </FatedUniques>\n</Data>\n"
  },
  {
    "path": "POEApi.Model/Data.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema id=\"Data\"\n    elementFormDefault=\"qualified\"\n    xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n>\n  <xs:element name=\"Data\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element ref=\"GearBaseTypes\" minOccurs=\"1\" maxOccurs=\"1\" />\n        <xs:element ref=\"FatedUniques\" minOccurs=\"0\" maxOccurs=\"1\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n\n  <xs:element name=\"GearBaseTypes\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element name=\"GearBaseType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n\n  <xs:element name=\"GearBaseType\">\n    <xs:complexType>\n      <xs:attribute name=\"name\" use=\"required\" type=\"xs:string\" />\n    </xs:complexType>\n  </xs:element>\n\n  <xs:element name=\"Item\">\n    <xs:complexType>\n      <xs:attribute name=\"id\" use=\"optional\" type=\"xs:string\" />\n      <xs:attribute name=\"name\" use=\"required\" type=\"xs:string\" />\n    </xs:complexType>\n  </xs:element>\n\n  <xs:element name=\"FatedUniques\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element ref=\"FatedUnique\" minOccurs=\"1\" maxOccurs=\"unbounded\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n\n  <xs:element name=\"FatedUnique\">\n    <xs:complexType>\n      <xs:attribute name=\"targetName\" use=\"optional\" type=\"xs:string\" />\n      <xs:attribute name=\"fatedName\" use=\"optional\" type=\"xs:string\" />\n      <xs:attribute name=\"prophecyName\" use=\"optional\" type=\"xs:string\" />\n      <xs:attribute name=\"baseType\" use=\"optional\" type=\"xs:string\" />\n    </xs:complexType>\n  </xs:element>\n</xs:schema>\n"
  },
  {
    "path": "POEApi.Model/Decoration.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace POEApi.Model\n{\n    public class Decoration : Item\n    {\n        public Decoration(JSONProxy.Item item)\n            : base(item)\n        {\n\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/DivineVessel.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public class DivineVessel : Item\n    {\n        public DivineVessel(JSONProxy.Item item) : base(item)\n        {\n            \n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/EquipedItems.cs",
    "content": "﻿using POEApi.Infrastructure;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\n\nnamespace POEApi.Model\n{\n    public class EquipedItems\n    {\n        private Dictionary<string, PropertyInfo> properties;\n        private Dictionary<string, string> propertyMapping;\n\n        public Item Amulet { get; set; }\n        public Item Belt { get; set; }\n        public Item Helm { get; set; }\n        public Item RingLeft { get; set; }\n        public Item RingRight { get; set; }\n        public Item Flask0 { get; set; }\n        public Item Flask1 { get; set; }\n        public Item Flask2 { get; set; }\n        public Item Flask3 { get; set; }\n        public Item Flask4 { get; set; }\n        public Item Weapon { get; set; }\n        public Item Offhand { get; set; }\n        public Item AltWeapon { get; set; }\n        public Item AltOffhand { get; set; }\n        public Item Boots { get; set; }\n        public Item Armour { get; set; }\n        public Item Gloves { get; set; }\n\n        public EquipedItems(IEnumerable<Item> items)\n        {\n            propertyMapping = new Dictionary<string, string>();\n            properties = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).ToDictionary(p => p.Name);\n            propertyMapping.Add(\"Ring\", \"RingLeft\");\n            propertyMapping.Add(\"Ring2\", \"RingRight\");\n            propertyMapping.Add(\"Weapon2\", \"AltWeapon\");\n            propertyMapping.Add(\"Offhand2\", \"AltOffhand\");\n            propertyMapping.Add(\"BodyArmour\", \"Armour\");\n\n            foreach (var item in items)\n                if (item.InventoryId != \"Map\")\n                    SetProperty(item);\n        }   \n\n        private void SetProperty(Item item)\n        {\n            try\n            {\n                string target = item.InventoryId;\n\n                if (propertyMapping.ContainsKey(item.InventoryId))\n                    target = propertyMapping[item.InventoryId];\n\n                if (item.InventoryId == \"Flask\")\n                    target = item.InventoryId + item.X;\n\n                properties[target].SetValue(this, item, null);\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Error in EquipedItems.setProperty : \" + ex);\n                Logger.Log(\"Target property : \" + item.InventoryId);\n\n            }\n        }\n\n        public Dictionary<string, Item> GetItems()\n        {\n            return properties.Keys.ToDictionary(prop => prop, prop => (Item)properties[prop].GetValue(this, null));\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Essence.cs",
    "content": "﻿using System.Diagnostics;\n\nnamespace POEApi.Model\n{\n    [DebuggerDisplay(\"{TypeLine}\")]\n    public class Essence : Item\n    {\n        public EssenceType Type { get; }\n\n        public Essence(JSONProxy.Item item) : base(item)\n        {\n            Type = ProxyMapper.GetEssenceType(item);\n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/EssenceType.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public enum EssenceType\n    {\n        WhisperingGreed,\n        WhisperingContempt,\n        WhisperingHatred,\n        WhisperingWoe,\n        MutteringGreed,\n        MutteringContempt,\n        MutteringHatred,\n        MutteringWoe,\n        MutteringFear,\n        MutteringAnger,\n        MutteringTorment,\n        MutteringSorrow,\n        WeepingGreed,\n        WeepingContempt,\n        WeepingHatred,\n        WeepingWoe,\n        WeepingFear,\n        WeepingAnger,\n        WeepingTorment,\n        WeepingSorrow,\n        WeepingRage,\n        WeepingSuffering,\n        WeepingWrath,\n        WeepingDoubt,\n        WailingGreed,\n        WailingContempt,\n        WailingHatred,\n        WailingWoe,\n        WailingFear,\n        WailingAnger,\n        WailingTorment,\n        WailingSorrow,\n        WailingRage,\n        WailingSuffering,\n        WailingWrath,\n        WailingDoubt,\n        WailingLoathing,\n        WailingZeal,\n        WailingAnguish,\n        WailingSpite,\n        ScreamingGreed,\n        ScreamingContempt,\n        ScreamingHatred,\n        ScreamingWoe,\n        ScreamingFear,\n        ScreamingAnger,\n        ScreamingTorment,\n        ScreamingSorrow,\n        ScreamingRage,\n        ScreamingSuffering,\n        ScreamingWrath,\n        ScreamingDoubt,\n        ScreamingLoathing,\n        ScreamingZeal,\n        ScreamingAnguish,\n        ScreamingSpite,\n        ScreamingScorn,\n        ScreamingEnvy,\n        ScreamingMisery,\n        ScreamingDread,\n        ShriekingGreed,\n        ShriekingContempt,\n        ShriekingHatred,\n        ShriekingWoe,\n        ShriekingFear,\n        ShriekingAnger,\n        ShriekingTorment,\n        ShriekingSorrow,\n        ShriekingRage,\n        ShriekingSuffering,\n        ShriekingWrath,\n        ShriekingDoubt,\n        ShriekingLoathing,\n        ShriekingZeal,\n        ShriekingAnguish,\n        ShriekingSpite,\n        ShriekingScorn,\n        ShriekingEnvy,\n        ShriekingMisery,\n        ShriekingDread,\n        DeafeningGreed,\n        DeafeningContempt,\n        DeafeningHatred,\n        DeafeningWoe,\n        DeafeningFear,\n        DeafeningAnger,\n        DeafeningTorment,\n        DeafeningSorrow,\n        DeafeningRage,\n        DeafeningSuffering,\n        DeafeningWrath,\n        DeafeningDoubt,\n        DeafeningLoathing,\n        DeafeningZeal,\n        DeafeningAnguish,\n        DeafeningSpite,\n        DeafeningScorn,\n        DeafeningEnvy,\n        DeafeningMisery,\n        DeafeningDread,\n        Insanity,\n        Horror,\n        Delirium,\n        Hysteria,\n        RemnantOfCorruption,\n\n        //Must always be last\n        Unknown\n    }\n}"
  },
  {
    "path": "POEApi.Model/Events/AuthenticateEventArgs.cs",
    "content": "﻿namespace POEApi.Model.Events\n{\n    public class AuthenticateEventArgs : POEEventArgs\n    {\n        public string Email { get; private set; }\n        public string Realm { get; private set; }\n\n        public AuthenticateEventArgs(string email, string realm,POEEventState state) :\n            base(state)\n        {\n            Email = email;\n            Realm = realm;\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Events/ImageLoadedEventArgs.cs",
    "content": "﻿using System;\n\nnamespace POEApi.Model.Events\n{\n    public class ImageLoadedEventArgs : POEEventArgs\n    {\n        public string URL { get; private set; }\n        public ImageLoadedEventArgs(string url, POEEventState state) :\n            base(state)\n        {\n            URL = url;\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Events/POEEventArgs.cs",
    "content": "﻿using System;\n\nnamespace POEApi.Model.Events\n{\n    public class POEEventArgs : EventArgs\n    {\n        public POEEventState State { get; private set; }\n        public POEEventArgs(POEEventState state)\n        {\n            State = state;\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Events/POEEventState.cs",
    "content": "﻿namespace POEApi.Model.Events\n{\n    public enum POEEventState\n    {\n        BeforeEvent,\n        AfterEvent\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Events/StashLoadedEventArgs.cs",
    "content": "﻿namespace POEApi.Model.Events\n{\n    public class StashLoadedEventArgs : POEEventArgs\n    {\n        public int StashID { get; private set; }\n        public int NumTabs { get; private set; }\n\n        public StashLoadedEventArgs(int index, int numTabs, POEEventState state) :\n            base(state)\n        {\n            StashID = index;\n            NumTabs = numTabs;\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/FatedUniqueInfo.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace POEApi.Model\n{\n    public class FatedUniqueInfo\n    {\n        /// <summary>\n        /// The name of the unique item that will be upgraded.\n        /// </summary>\n        public string TargetItemName { get; set; }\n        /// <summary>\n        /// The name of the item that is created from upgrading the target item.\n        /// </summary>\n        public string FatedItemName { get; set; }\n        /// <summary>\n        /// The name of the base type of the fated unique.\n        /// </summary>\n        public string BaseTypeName { get; set; }\n        /// <summary>\n        /// The name of the prophecy that upgrades the target item.\n        /// </summary>\n        public string ProphecyName { get; set; }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Fossil.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public class Fossil : Item\n    {\n        public Fossil(JSONProxy.Item item) : base(item)\n        {\n\n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/FullBestiaryOrb.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public class FullBestiaryOrb : Item\n    {\n        public FullBestiaryOrb(JSONProxy.Item item) : base(item)\n        {\n            ItemType = ItemType.Currency;\n\n            Genus = ProxyMapper.GetGenus(item.Properties);\n            Group = ProxyMapper.GetGroup(item.Properties);\n            Family = ProxyMapper.GetFamily(item.Properties);\n\n            // TODO: This item's explicit mods are the mods of the contained beast.  These could be various types of\n            // mods (\"prefix mod\", \"suffix mod\", \"monster mod\", etc.), but only the name is provided in the JSON for\n            // the explicit mod.  Compile a list of each of these types of mods and map them here, so we can style the\n            // text of the mods correctly in the item tooltip.  Right now all of the mods have the default blue\n            // foreground text and no other styling, which is only correct for prefix/suffix mods.  Note that the\n            // in-game detailed tooltip uses \"monster mod\" for different kinds of mods, including bestiary beast mods\n            // (bold white text with red outline) and bloodline mods (magenta text RGB(210, 0, 220)).\n        }\n\n        // TODO: Compile the possible values of Genus, Group, and Family, and use enums instead of raw strings.\n        public string Genus { get; }\n        public string Group { get; }\n        public string Family { get; }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Gear.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Infrastructure;\n\nnamespace POEApi.Model\n{\n    public class Gear : Item\n    {\n        public List<Socket> Sockets { get; set; }\n        public List<SocketableItem> SocketedItems { get; set; }\n        public List<string> Implicitmods { get; set; }\n        public List<Requirement> Requirements { get; set; }\n        public GearType GearType { get; set; }\n        public string BaseType { get; set; }\n\n        public override bool IsGear => true;\n\n        public Gear(JSONProxy.Item item) : base(item)\n        {\n            Sockets = GetSockets(item);\n            Explicitmods = item.ExplicitMods;\n            SocketedItems = GetSocketedItems(item);\n            Implicitmods = item.ImplicitMods;\n            Requirements = ProxyMapper.GetRequirements(item.Requirements);\n            ItemType = Model.ItemType.Gear;\n            GearType = GearTypeFactory.GetType(this);\n            BaseType = GearTypeFactory.GetBaseType(this);\n        }\n\n        private List<Socket> GetSockets(JSONProxy.Item item) =>\n            item.Sockets == null ? new List<Socket>() : item.Sockets.Select(proxy => new Socket(proxy)).ToList();\n\n        private List<SocketableItem> GetSocketedItems(JSONProxy.Item item) =>\n            item.SocketedItems == null ? new List<SocketableItem>() :\n            item.SocketedItems.Select(proxy => (SocketableItem)ItemFactory.Get(proxy)).ToList();\n\n        public bool IsLinked(int links)\n        {\n            return Sockets.GroupBy(s => s.Group).Any(g => g.Count() == links);\n        }\n\n        public int NumberOfSockets()\n        {\n            return Sockets.Count();\n        }\n\n        protected override Dictionary<string, string> DescriptiveNameComponents\n        {\n            get\n            {\n                // TODO: Reduce code duplication between this class's implementation and AbyssJewel's (they both\n                // have a \"Rarity\" property that works the same way, but do not inherit it from the same parent class).\n                var components = base.DescriptiveNameComponents;\n                if (Rarity != Rarity.Normal)\n                {\n                    if (!Identified)\n                    {\n                        components[\"name\"] = string.Format(\"Unidentified {0} {1}\", Rarity, TypeLine);\n                    }\n                    else if (this.Rarity != Rarity.Magic)\n                    {\n                        string quotedName = string.IsNullOrWhiteSpace(Name) ? string.Empty :\n                            string.Format(\"\\\"{0}\\\", \", Name);\n                        components[\"name\"] = string.Format(\"{0}{1} {2}\", quotedName, Rarity, TypeLine);\n                    }\n                }\n\n                return components;\n            }\n        }\n\n        public override string PobData\n        {\n            get\n            {\n                try\n                {\n                    var pobData = new StringBuilder();\n                    pobData.AppendLine(Name);\n                    pobData.AppendLine(TypeLine);\n                    pobData.AppendLine($\"Unique ID: {Id}\");\n\n                    var itemType = GetSpecialItemType();\n                    if (string.IsNullOrEmpty(itemType) == false)\n                        pobData.AppendLine(itemType);\n\n                    if (Corrupted)\n                        pobData.AppendLine(nameof(Corrupted));\n\n                    if (string.IsNullOrEmpty(Radius) == false)\n                        pobData.AppendLine($\"Radius: {Radius}\");\n\n                    pobData.AppendLine($\"Quality: {Quality}\");\n\n                    if (Sockets != null && Sockets.Any())\n                    {\n                        //Links are denoted by \"Groups\"\n                        List<int> groups = Sockets.Select(x => x.Group).Distinct().ToList();\n                        string socketData = string.Empty;\n                            \n                        foreach (var group in groups)\n                        {\n                            socketData += string.Join(\"=\", Sockets.Where(x => x.Group == group).Select(y => y.ToPobFormat()));\n                            \n                            //Don't append a space on the last character\n                            if (groups.Last() != group)\n                            {\n                                //Space character denotes group demarcations\n                                socketData += \" \";\n                            }\n                        }\n\n                        pobData.AppendLine($\"Sockets: {socketData}\");\n                    }\n\n                    if (Implicitmods != null && Implicitmods.Any())\n                    {\n                        pobData.AppendLine($\"Implicits: {Implicitmods.Count}\");\n                        Implicitmods.ForEach(x => pobData.AppendLine($\"{{crafted}}{x}\"));\n                    }\n\n                    if (FracturedMods != null && FracturedMods.Any())\n                    {\n                        FracturedMods.ForEach(x => pobData.AppendLine($\"{{fractured}}{x}\"));\n                    }\n\n                    if (Explicitmods != null && Explicitmods.Any())\n                    {\n                        Explicitmods.ForEach(x=> pobData.AppendLine(x));\n                    }\n\n                    if (CraftedMods != null && CraftedMods.Any())\n                    {\n                        CraftedMods.ForEach(x => pobData.AppendLine($\"{{crafted}}{x}\"));\n                    }\n\n                    return pobData.ToString();\n                }\n                catch (Exception e)\n                {\n                    Logger.Log(e);\n                    throw;\n                }\n            }\n        }\n\n        private string GetSpecialItemType()\n        {\n            if (Elder)\n            {\n                return \"Elder Item\";\n            }\n\n            if (Shaper)\n            {\n                return \"Shaper Item\";\n            }\n\n            if (Fractured)\n            {\n                return \"Fractured Item\";\n            }\n\n            if (Synthesised)\n            {\n                return \"Synthesised Item\";\n            }\n\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/GearType/GearType.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public enum GearType\n    {\n        Unknown,\n        Ring,\n        Amulet,\n        Helmet,\n        Chest,\n        Belt,\n        Gloves,\n        Boots,\n        Axe,\n        Claw,\n        Bow,\n        Dagger,\n        Mace,\n        Quiver,\n        Sceptre,\n        Staff,\n        Sword,\n        Shield,\n        Wand,\n        FishingRod,\n        Flask,\n        Map,\n        QuestItem,\n        DivinationCard,\n        Jewel,\n        AbyssJewel,\n        Talisman,\n        Breachstone,\n        Leaguestone\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/GearType/GearTypeFactory.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    internal class GearTypeFactory\n    {\n        private static List<GearTypeRunner> _runners = new List<GearTypeRunner>()\n        {\n            { new HelmetRunner() },\n            { new RingRunner() },\n            { new AmuletRunner() },\n            { new TalismanRunner() },\n            { new BeltRunner() },\n            { new FlaskRunner() },\n            { new GloveRunner() },\n            { new BootRunner() },\n            { new AxeRunner() },\n            { new ClawRunner() },\n            { new BowRunner() },\n            { new DaggerRunner() },\n            { new ShieldRunner() },\n            { new MaceRunner() },\n            { new QuiverRunner() },\n            { new SceptreRunner() },\n            { new StaffRunner() },\n            { new SwordRunner() },\n            { new WandRunner() },\n            { new FishingRodRunner() },\n            { new MapRunner() },\n            { new DivinationCardRunner() },\n            { new JewelRunner() },\n            { new AbyssJewelRunner() },\n            { new BreachstoneRunner() },\n            { new LeaguestoneRunner() },\n            { new ChestRunner() } //Must always be last!\n        };\n\n        public static GearType GetType(Gear item)\n        {\n            foreach (var runner in _runners)\n                if (runner.IsCompatibleType(item))\n                    return runner.Type;\n\n            return GearType.Unknown;\n        }\n\n        public static string GetBaseType(Gear item)\n        {\n            foreach (var runner in _runners)\n            {\n                // If we know the GearType of the item, only query the GearTypeRunner for\n                // that type.  If the GearType is unknown, query all of them.\n                if (item.GearType == GearType.Unknown || item.GearType == runner.Type)\n                {\n                    string baseType = runner.GetBaseType(item);\n                    if (!string.IsNullOrWhiteSpace(baseType))\n                    {\n                        return baseType;\n                    }\n                }\n            }\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/GearType/GearTypeRunner.cs",
    "content": "﻿using System.Collections.Generic;\r\nusing System.Linq;\r\n\r\nnamespace POEApi.Model\r\n{\r\n    public abstract class GearTypeRunner\r\n    {\r\n        public abstract bool IsCompatibleType(Gear item);\r\n        public abstract string GetBaseType(Gear item);\r\n        public GearType Type { get; set; }\r\n\r\n        public GearTypeRunner(GearType gearType)\r\n        {\r\n            Type = gearType;\r\n        }\r\n    }\r\n\r\n    public class GearTypeRunnerBase : GearTypeRunner\r\n    {\r\n        protected List<string> _generalTypes;\r\n        protected List<string> _compatibleTypes;\r\n        protected List<string> _incompatibleTypes;\r\n\r\n        public GearTypeRunnerBase(GearType gearType, IEnumerable<string> compatibleTypes)\r\n            : base(gearType)\r\n        {\r\n            _generalTypes = new List<string>();\r\n            _compatibleTypes = compatibleTypes.OrderByDescending(s => s.Length).ToList();\r\n            _incompatibleTypes = new List<string>();\r\n        }\r\n\r\n        public override bool IsCompatibleType(Gear item)\r\n        {\r\n            if (_incompatibleTypes != null && _incompatibleTypes.Any(t => item.TypeLine.Contains(t)))\r\n                return false;\r\n            \r\n            // First, check the general types, to see if there is an easy match.\r\n            foreach (var type in _generalTypes)\r\n                if (item.TypeLine.Contains(type))\r\n                    return true;\r\n\r\n            // Second, check all known types.\r\n            foreach (var type in _compatibleTypes)\r\n                if (item.TypeLine.Contains(type))\r\n                    return true;\r\n\r\n            return false;\r\n        }\r\n\r\n        public override string GetBaseType(Gear item)\r\n        {\r\n            if (_incompatibleTypes != null && _incompatibleTypes.Any(t => item.TypeLine.Contains(t)))\r\n                return null;\r\n\r\n            foreach (var type in _compatibleTypes)\r\n                if (item.TypeLine.Contains(type))\r\n                    return type;\r\n\r\n            return null;\r\n        }\r\n    }\r\n\r\n    public class RingRunner : GearTypeRunnerBase\r\n    {\r\n        public RingRunner()\r\n            : base(GearType.Ring, Settings.GearBaseTypes[GearType.Ring])\r\n        {\r\n            _incompatibleTypes = new List<string>() { \"Ringmail\" };\r\n        }\r\n\r\n        public override bool IsCompatibleType(Gear item)\r\n        {\r\n            if (item.TypeLine.Contains(\"Ring\") && !_incompatibleTypes.Any(t => item.TypeLine.Contains(t)))\r\n                return true;\r\n\r\n            return false;\r\n        }\r\n    }\r\n\r\n    public class AmuletRunner : GearTypeRunnerBase\r\n    {\r\n        public AmuletRunner()\r\n            : base(GearType.Amulet, Settings.GearBaseTypes[GearType.Amulet])\r\n        {\r\n            _generalTypes.Add(\"Amulet\");\r\n        }\r\n    }\r\n\r\n    public class TalismanRunner : GearTypeRunnerBase\r\n    {\r\n        public TalismanRunner()\r\n            : base(GearType.Talisman, new List<string>() { \"Talisman\" })\r\n        {\r\n            _generalTypes.Add(\"Talisman\");\r\n        }\r\n    }\r\n\r\n    public class BreachstoneRunner : GearTypeRunnerBase\r\n    {\r\n        public BreachstoneRunner()\r\n            : base(GearType.Breachstone, new List<string>()\r\n            {\r\n                \"Chayula's Breachstone\",\r\n                \"Xoph's Breachstone\",\r\n                \"Esh's Breachstone\",\r\n                \"Tul's Breachstone\",\r\n                \"Uul-Netol's Breachstone\"\r\n            })\r\n        {\r\n            _generalTypes.Add(\"Breachstone\");\r\n        }\r\n    }\r\n\r\n    public class LeaguestoneRunner : GearTypeRunnerBase\r\n    {\r\n        public LeaguestoneRunner() : base(GearType.Leaguestone, new List<string>() { \"Leaguestone\" })\r\n        {\r\n            _generalTypes.Add(\"Leaguestone\");\r\n        }\r\n    }\r\n\r\n    public class HelmetRunner : GearTypeRunnerBase\r\n    {\r\n        public HelmetRunner()\r\n            : base(GearType.Helmet, Settings.GearBaseTypes[GearType.Helmet])\r\n        {\r\n            _generalTypes.AddRange(new List<string>() { \"Helmet\", \"Circlet\", \"Cap\", \"Mask\", \"Chain Coif\", \"Casque\", \"Hood\", \"Ringmail Coif\", \"Chainmail Coif\", \"Ring Coif\", \"Crown\", \"Burgonet\", \"Bascinet\", \"Pelt\" });\r\n        }\r\n    }\r\n\r\n    public class ChestRunner : GearTypeRunnerBase\r\n    {\r\n        public ChestRunner()\r\n            : base(GearType.Chest, Settings.GearBaseTypes[GearType.Chest])\r\n        {\r\n            \r\n        }\r\n    }\r\n\r\n    public class BeltRunner : GearTypeRunnerBase\r\n    {\r\n        public BeltRunner()\r\n            : base(GearType.Belt, Settings.GearBaseTypes[GearType.Belt])\r\n        {\r\n            _generalTypes.Add(\"Belt\");\r\n            _generalTypes.Add(\"Sash\");\r\n            _generalTypes.Add(\"Stygian Vise\");\r\n        }\r\n    }\r\n\r\n    public class FlaskRunner : GearTypeRunnerBase\r\n    {\r\n        public FlaskRunner()\r\n            : base(GearType.Flask, Settings.GearBaseTypes[GearType.Flask])\r\n        {\r\n            _generalTypes.Add(\"Flask\");\r\n        }\r\n    }\r\n\r\n    public class MapRunner : GearTypeRunnerBase\r\n    {\r\n        public MapRunner()\r\n            : base(GearType.Map, Settings.GearBaseTypes[GearType.Map])\r\n        {\r\n            _generalTypes.Add(\"Map\");\r\n        }\r\n    }\r\n\r\n    public class DivinationCardRunner : GearTypeRunnerBase\r\n    {\r\n        public DivinationCardRunner()\r\n            : base(GearType.DivinationCard, Settings.GearBaseTypes[GearType.DivinationCard])\r\n        {\r\n        }\r\n    }\r\n\r\n    public class JewelRunner : GearTypeRunnerBase\r\n    {\r\n        public JewelRunner()\r\n            : base(GearType.Jewel, Settings.GearBaseTypes[GearType.Jewel])\r\n        {\r\n            _generalTypes.Add(\"Jewel\");\r\n            _incompatibleTypes = new List<string>() { \"Jewelled Foil\", \"Eye Jewel\" };\r\n        }\r\n    }\r\n\r\n    internal class AbyssJewelRunner : GearTypeRunnerBase\r\n    {\r\n        public AbyssJewelRunner()\r\n            : base(GearType.AbyssJewel, Settings.GearBaseTypes[GearType.AbyssJewel])\r\n        {\r\n            _generalTypes.Add(\"Eye Jewel\");\r\n            _incompatibleTypes = new List<string>() { \"Jewelled Foil\" };\r\n        }\r\n    }\r\n\r\n    public class GloveRunner : GearTypeRunnerBase\r\n    {\r\n        public GloveRunner()\r\n            : base(GearType.Gloves, Settings.GearBaseTypes[GearType.Gloves])\r\n        {\r\n            _generalTypes.Add(\"Glove\");\r\n            _generalTypes.Add(\"Mitts\");\r\n            _generalTypes.Add(\"Gauntlets\");\r\n        }\r\n    }\r\n\r\n    public class BootRunner : GearTypeRunnerBase\r\n    {\r\n        public BootRunner()\r\n            : base(GearType.Boots, Settings.GearBaseTypes[GearType.Boots])\r\n        {\r\n            _generalTypes.Add(\"Greaves\");\r\n            _generalTypes.Add(\"Slippers\");\r\n            _generalTypes.Add(\"Boots\");\r\n            _generalTypes.Add(\"Shoes\");\r\n        }\r\n    }\r\n\r\n    public class AxeRunner : GearTypeRunnerBase\r\n    {\r\n        public AxeRunner()\r\n            : base(GearType.Axe, Settings.GearBaseTypes[GearType.Axe])\r\n        {\r\n            _generalTypes.AddRange(new List<string>() { \"Axe\", \"Chopper\", \"Splitter\", \"Labrys\", \"Tomahawk\", \"Hatchet\", \"Poleaxe\", \"Woodsplitter\", \"Cleaver\" });\r\n        }\r\n    }\r\n\r\n    public class ClawRunner : GearTypeRunnerBase\r\n    {\r\n        public ClawRunner()\r\n            : base(GearType.Claw, Settings.GearBaseTypes[GearType.Claw])\r\n        {\r\n            _generalTypes.AddRange(new List<string>() { \"Fist\", \"Awl\", \"Paw\", \"Blinder\", \"Ripper\", \"Stabber\", \"Claw\", \"Gouger\" });\r\n        }\r\n    }\r\n\r\n    public class BowRunner : GearTypeRunnerBase\r\n    {\r\n        public BowRunner()\r\n            : base(GearType.Bow, Settings.GearBaseTypes[GearType.Bow])\r\n        {\r\n            _generalTypes.Add(\"Bow\");\r\n        }\r\n    }\r\n\r\n    public class DaggerRunner : GearTypeRunnerBase\r\n    {\r\n        public DaggerRunner()\r\n            : base(GearType.Dagger, Settings.GearBaseTypes[GearType.Dagger])\r\n        {\r\n            _generalTypes.AddRange(new List<string>() { \"Dagger\", \"Shank\", \"Knife\", \"Stiletto\", \"Skean\", \"Poignard\", \"Ambusher\", \"Boot Blade\", \"Kris\", \"Trisula\" });\r\n            _incompatibleTypes = new List<string>() { \"Saint\" };\r\n        }\r\n    }\r\n\r\n    public class MaceRunner : GearTypeRunnerBase\r\n    {\r\n        public MaceRunner()\r\n            : base(GearType.Mace, Settings.GearBaseTypes[GearType.Mace])\r\n        {\r\n            _generalTypes.AddRange(new List<string>() { \"Club\", \"Tenderizer\", \"Mace\", \"Hammer\", \"Maul\", \"Mallet\", \"Breaker\", \"Gavel\", \"Pernarch\", \"Steelhead\", \"Piledriver\", \"Bladed Mace\", \"Morning Star\" });\r\n        }\r\n    }\r\n\r\n    public class QuiverRunner : GearTypeRunnerBase\r\n    {\r\n        public QuiverRunner()\r\n            : base(GearType.Quiver, Settings.GearBaseTypes[GearType.Quiver])\r\n        {\r\n            _generalTypes.Add(\"Quiver\");\r\n        }\r\n    }\r\n\r\n    public class SceptreRunner : GearTypeRunnerBase\r\n    {\r\n        public SceptreRunner()\r\n            : base(GearType.Sceptre, Settings.GearBaseTypes[GearType.Sceptre])\r\n        {\r\n            _generalTypes.Add(\"Sceptre\");\r\n            _generalTypes.Add(\"Fetish\");\r\n            _generalTypes.Add(\"Sekhem\");\r\n        }\r\n    }\r\n\r\n    public class StaffRunner : GearTypeRunnerBase\r\n    {\r\n        public StaffRunner()\r\n            : base(GearType.Staff, Settings.GearBaseTypes[GearType.Staff])\r\n        {\r\n            _generalTypes.Add(\"Staff\");\r\n            _generalTypes.Add(\"Gnarled Branch\");\r\n            _generalTypes.Add(\"Quarterstaff\");\r\n            _generalTypes.Add(\"Lathi\");\r\n        }\r\n    }\r\n\r\n    public class SwordRunner : GearTypeRunnerBase\r\n    {\r\n        public SwordRunner()\r\n            : base(GearType.Sword, Settings.GearBaseTypes[GearType.Sword])\r\n        {\r\n            _generalTypes.AddRange(new List<string>() { \"Sword\", \"sword\", \"Sabre\", \"Dusk Blade\", \"Cutlass\", \"Baselard\", \"Gladius\", \"Variscite Blade\", \"Vaal Blade\", \"Midnight Blade\", \"Corroded Blade\",\r\n                   \"Highland Blade\", \"Ezomyte Blade\", \"Rusted Spike\", \"Rapier\", \"Foil\", \"Pecoraro\", \"Estoc\", \"Twilight Blade\", \"Lithe Blade\" });\r\n        }\r\n    }\r\n\r\n    public class ShieldRunner : GearTypeRunnerBase\r\n    {\r\n        public ShieldRunner()\r\n            : base(GearType.Shield, Settings.GearBaseTypes[GearType.Shield])\r\n        {\r\n            _generalTypes.Add(\"Shield\");\r\n            _generalTypes.Add(\"Spiked Bundle\");\r\n            _generalTypes.Add(\"Buckler\");\r\n        }\r\n    }\r\n\r\n    public class WandRunner : GearTypeRunnerBase\r\n    {\r\n        public WandRunner()\r\n            : base(GearType.Wand, Settings.GearBaseTypes[GearType.Wand])\r\n        {\r\n            _generalTypes.Add(\"Wand\");\r\n            _generalTypes.Add(\"Horn\");\r\n        }\r\n    }\r\n\r\n    public class FishingRodRunner : GearTypeRunnerBase\r\n    {\r\n        public FishingRodRunner()\r\n            : base(GearType.FishingRod, Settings.GearBaseTypes[GearType.FishingRod])\r\n        {\r\n        }\r\n    }\r\n}"
  },
  {
    "path": "POEApi.Model/GearType.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public enum GearType\n    {\n        Ring,\n        Amulet,\n        Helmet,\n        Chest,\n        Belt,\n        Gloves,\n        Boots,\n        Weapon,\n        Flask\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Gem.cs",
    "content": "﻿using System.Linq;\nusing System.Diagnostics;\n\nnamespace POEApi.Model\n{\n    public class Gem : SocketableItem\n    {\n        public int Level { get; set; }\n\n        /// <summary>\n        /// Value between 0 and 1 to show how far a gem has progressed to the next level.\n        /// </summary>\n        public double LevelExperienceProgress { get; private set; }\n\n        /// <summary>\n        /// Numerator to show how much experience has been gained for this level\n        /// </summary>\n        public int ExperienceNumerator { get; set; }\n\n        /// <summary>\n        /// Denominator to show how much experience needs to be gained for the next level.\n        /// </summary>\n        public int ExperienceDenominator { get; set; }\n\n        public Gem(JSONProxy.Item item) : base(item)\n        {\n            Properties = ProxyMapper.GetProperties(item.Properties);\n            ItemType = ItemType.Gem;\n\n            Level = getLevel();\n\n            ExtractGemExperience(item);\n        }\n\n        private void ExtractGemExperience(JSONProxy.Item item)\n        {\n            var experienceProperties = item.AdditionalProperties?.FirstOrDefault(x => x.Name == \"Experience\");\n\n            if (experienceProperties == null)\n            {\n                return;\n            }\n\n            LevelExperienceProgress = experienceProperties.Progress;\n            var experienceValues = experienceProperties.Values[0].FirstOrDefault()?.ToString();\n\n            if (experienceValues == null || !experienceValues.Contains(\"/\"))\n            {\n                return;\n            }\n\n            var numeratorAndDenominator = experienceValues.Split('/');\n\n            int temporaryInt; \n            if(int.TryParse(numeratorAndDenominator[0], out temporaryInt))\n            {\n                ExperienceNumerator = temporaryInt;\n            }\n\n            if(int.TryParse(numeratorAndDenominator[1], out temporaryInt))\n            {\n                ExperienceDenominator = temporaryInt;\n            }\n\n            HasExperience = true;\n        }\n\n        private int getLevel()\n        {\n            Property levelProperty = Properties.Find(p => p.Name == \"Level\");\n            if (levelProperty == null || levelProperty.Values.Count == 0)\n                return 1;\n\n            var levelPropertyValue = levelProperty.Values[0].Item1;\n            levelPropertyValue = levelPropertyValue.Split(' ')[0];  // fixes \"20 (MAX)\"\n\n            int level;\n            if (!int.TryParse(levelPropertyValue, out level))\n                return 1;\n            \n            return level;\n        }\n\n        public bool HasExperience { get; set; }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/GemCategory.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public enum GemCategory\n    {\n        AoE,\n        Attack,\n        Aura,\n        Bow,\n        Cast,\n        Chaining,\n        Chaos,\n        Cold,\n        Curse,\n        Duration,\n        Fire,\n        Lightning,\n        Melee,\n        Mine,\n        Minion,\n        Movement,\n        Projectile,\n        Spell,\n        Totem,\n        Trap,\n        Support,\n        Vaal\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/GemHandler.cs",
    "content": "﻿using System.Collections.Generic;\r\n\r\nnamespace POEApi.Model\r\n{\r\n    internal class GemHandler\r\n    {\r\n        public static SortedDictionary<string, int> GetGemDistribution(IEnumerable<Gem> gems)\r\n        {\r\n            SortedDictionary<string, int> gemTable = new SortedDictionary<string, int>();\r\n            foreach (Gem gem in gems)\r\n            {\r\n                if (gemTable.ContainsKey(gem.TypeLine))\r\n                    gemTable[gem.TypeLine]++;\r\n                else\r\n                    gemTable[gem.TypeLine] = 1;\r\n            }\r\n\r\n            return gemTable;\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "POEApi.Model/ImageComparer.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    public class ImageComparer : IEqualityComparer<Item>\n    {\n        public bool Equals(Item x, Item y)\n        {\n            if (x.GetHashCode() == y.GetHashCode())\n                return true;\n\n            return x.IconURL.Equals(y.IconURL);\n        }\n\n        public int GetHashCode(Item obj)\n        {\n            return obj.IconURL.GetHashCode();\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Incubator.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public class Incubator : Item\n    {\n        public Incubator(JSONProxy.Item item) : base(item)\n        {\n            \n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/Interfaces/IBreachCurrency.cs",
    "content": "﻿namespace POEApi.Model.Interfaces\n{\n    public interface IBreachCurrency\n    {\n        BreachType Type { get; set; }\n    }\n}"
  },
  {
    "path": "POEApi.Model/Interfaces/ILegion.cs",
    "content": "﻿namespace POEApi.Model.Interfaces\n{\n    public interface ILegion\n    {\n        LegionFaction Faction { get; set; }\n    }\n}"
  },
  {
    "path": "POEApi.Model/Item.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing POEApi.Model.JSONProxy;\n\nnamespace POEApi.Model\n{\n    public enum ItemType : int\n    {\n        UnSet,\n        Gear,\n        Gem,\n        Jewel,\n        Currency,\n    }\n\n    public enum Rarity : int\n    {\n        Normal,\n        Magic,\n        Rare,\n        Unique,\n        Relic\n    }\n\n    [DebuggerDisplay(\"{DebuggerDisplay,nq}\")]\n    public abstract class Item : ICloneable\n    {\n        public string Id { get; set; }\n        public bool Verified { get; private set; }\n        public bool Identified { get; private set; }\n        // Only non-unique equipment, non-corrupted item, or maps that are not already mirrored can be mirrored.\n        public bool IsMirrored { get; set; }\n        public int W { get; private set; }\n        public int H { get; private set; }\n        public string IconURL { get; private set; }\n        public string League { get; private set; }\n        public string Name { get; private set; }\n        public string TypeLine { get; private set; }\n        public string DescrText { get; private set; }\n        public int X { get; set; }\n        public int Y { get; set; }\n        public string InventoryId { get; set; }\n        public string SecDescrText { get; private set; }\n        public List<string> Explicitmods { get; set; }\n        public ItemType ItemType { get; set; }\n        public List<Property> Properties { get; set; }\n        public bool IsQuality { get; private set; }\n        public int Quality { get; private set; }\n        public bool Corrupted { get; private set; }\n        public List<string> Microtransactions { get; set; }\n        public List<String> EnchantMods { get; set; }\n        public List<string> FlavourText { get; set; }\n\n        public List<string> CraftedMods { get; set; }\n        public List<string> VeiledMods { get; set; }\n        public List<string> FracturedMods { get; set; }\n\n        public IncubatedDetails IncubatedDetails { get; set; }\n\n        public int TradeX { get; set; }\n        public int TradeY { get; set; }\n        public string TradeInventoryId { get; set; }\n        public string Character { get; set; }\n        public int ItemLevel { get; set; }\n        public bool Shaper { get; set; }\n        public bool Elder { get; set; }\n        public bool Synthesised { get; set; }\n        public bool Fractured { get; set; }\n        public int StackSize { get; set; }\n        public int MaxStackSize { get; set; }\n        public Rarity Rarity { get; set; }\n\n        public string BackgroundUrl { get; private set; }\n\n        public bool HasBackground => string.IsNullOrEmpty(BackgroundUrl) == false;\n\n        public virtual bool IsGear => false;\n\n        protected Item(JSONProxy.Item item)\n        {\n            Id = item.Id;\n            Verified = item.Verified;\n            Identified = item.Identified;\n            IsMirrored = item.Duplicated;\n            W = item.W;\n            H = item.H;\n            IconURL = getIconUrl(item.Icon);\n            League = item.League;\n            Name = item.Name;\n            TypeLine = item.TypeLine;\n            DescrText = item.DescrText;\n            X = item.X;\n            Y = item.Y;\n            InventoryId = item.InventoryId;\n            SecDescrText = item.SecDescrText;\n            Explicitmods = item.ExplicitMods;\n            ItemType = Model.ItemType.UnSet;\n            CraftedMods = item.CraftedMods ?? new List<string>();\n            VeiledMods = item.VeiledMods ?? new List<string>();\n            EnchantMods = item.EnchantMods ?? new List<string>();\n            FracturedMods = item.FracturedMods ?? new List<string>();\n            FlavourText = item.FlavourText;\n            ItemLevel = item.Ilvl;\n            Shaper = item.Shaper;\n            Elder = item.Elder;\n            Synthesised = item.Synthesised;\n            Fractured = item.Fractured;\n            StackSize = item.StackSize;\n            MaxStackSize = item.MaxStackSize;\n            IncubatedDetails = item.IncubatedItem;\n\n            if (item.Properties != null)\n            {\n                Properties = item.Properties.Select(p => new Property(p)).ToList();\n\n                if (Properties.Any(p => p.Name == \"Quality\"))\n                {\n                    IsQuality = true;\n                    Quality = ProxyMapper.GetQuality(item.Properties);\n                }\n\n                if (Properties.Any(p => p.Name == \"Radius\"))\n                {\n                    Radius = Properties.First(p => p.Name == \"Radius\").Values[0].Item1;\n                }\n            }\n\n            Corrupted = item.Corrupted;\n            Microtransactions = item.CosmeticMods ?? new List<string>();\n            EnchantMods = item.EnchantMods ?? new List<string>();\n\n            TradeX = X;\n            TradeY = Y;\n            TradeInventoryId = InventoryId;\n            Character = string.Empty;\n            Rarity = GetRarity(item);\n\n            if (item.Elder || item.Shaper)\n                BackgroundUrl = ItemBackgroundUrlBuilder.GetUrl(this);\n        }\n\n        public string Radius { get; set; }\n\n        private string getIconUrl(string url)\n        {\n            Uri uri;\n            if (Uri.TryCreate(url, UriKind.Absolute, out uri))\n                return url;\n\n            return \"https://webcdn.pathofexile.com\" + url;\n        }\n\n        private Rarity GetRarity(JSONProxy.Item item)\n        {\n            //Looks like isRelic is coming across the wire as an additional field but coincidentally 9 was the correct frame type here.\n            if (item.FrameType == 9 || item.IsRelic)\n                return Rarity.Relic;\n\n            if (item.FrameType <= 3)\n                return (Rarity)item.FrameType;\n\n            return Rarity.Normal;\n        }\n\n        // TODO: Allow providing a format string in another function, so how an Item is presented can be customized.\n        //       Something similar to (but not as extreme as) the DateTime class' ToString() method.\n        // (See: https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings)\n        public virtual string DescriptiveName\n        {\n            get\n            {\n                return AssembleDescriptiveName();\n            }\n        }\n\n        protected virtual Dictionary<string, string> DescriptiveNameComponents\n        {\n            get\n            {\n                // TODO: Use a persistent Dictionary that we do not need to recreate for every call.  But this would\n                // require reworking the class in multiple places and in the (applicable) getters, so it would not be\n                // trivial.  Could make the recreation \"lazy\", however, by just setting a \"dirty\" flag in the property\n                // setters, and recreating the Dictionary if the data is dirty.\n                return new Dictionary<string, string>\n                {\n                    { \"quality\", IsQuality ? string.Format(\"+{0}% Quality\", Quality) : null },\n                    { \"iLevel\",  ItemLevel > 0 ? string.Format(\"i{0}\", ItemLevel) : null },\n                    { \"name\", TypeLine },\n                };\n            }\n        }\n\n        protected virtual string AssembleDescriptiveName()\n        {\n            var parts = DescriptiveNameComponents;\n            var orderedParts = new List<string>\n            {\n                parts[\"name\"], parts[\"quality\"], parts[\"iLevel\"]\n            }.Where(i => !string.IsNullOrWhiteSpace(i));\n            return string.Join(\", \", orderedParts);\n        }\n\n        public object Clone()\n        {\n            return MemberwiseClone();\n        }\n\n        private string DebuggerDisplay\n        {\n            get\n            {\n                return AssembleDescriptiveName();\n            }\n        }\n        \n        public virtual string PobData => String.Empty;\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/ItemBackgroundUrlBuilder.cs",
    "content": "﻿using POEApi.Infrastructure;\nusing System;\nusing System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    internal static class ItemBackgroundUrlBuilder\n    {\n        private const string ElderBackgroundUrl = \"https://www.pathofexile.com/image/inventory/ElderBackground.png?w={0}&h={1}\";\n        private const string ShaperBackgroundUrl = \"https://www.pathofexile.com/image/inventory/ShaperBackground.png?w={0}&h={1}&x={2}&y={3}\";\n        private const int GridSize = 47;\n\n        public static string GetUrl(Item item)\n        {\n            try\n            {\n                if (item.Elder)\n                    return string.Format(ElderBackgroundUrl, item.W, item.H);\n\n                if (item.Shaper)\n                    return string.Format(ShaperBackgroundUrl, item.W, item.H, item.X * GridSize, item.Y * GridSize);\n\n                return string.Empty;\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(ex);\n                return string.Empty;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/ItemFactory.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing POEApi.Infrastructure;\n\nnamespace POEApi.Model\n{\n    internal class ItemFactory\n    {\n        public static Item Get(JSONProxy.Item item)\n        {\n            try\n            {\n                item.Name = FilterString(item.Name);\n                item.TypeLine = FilterString(item.TypeLine);\n\n                if (!string.IsNullOrWhiteSpace(item.ProphecyText))\n                    return new Prophecy(item);\n\n                if(item.AbyssJewel)\n                    return new AbyssJewel(item);\n\n                if (item.FrameType == 4)\n                    return new Gem(item);\n\n                if (item.DescrText != null && item.DescrText.ToLower() == \"right click this item then left click a location on the ground to create the object.\")\n                    return new Decoration(item);\n\n                if (item.DescrText != null && string.Equals(item.DescrText,\n                    \"Right-click to add this to your bestiary.\", StringComparison.CurrentCultureIgnoreCase))\n                    return new FullBestiaryOrb(item);\n\n                if (item.TypeLine.Contains(\"Leaguestone\"))\n                    return new Leaguestone(item);\n\n                if (item.FrameType == 5)\n                    return GetCurrency(item);\n\n                if (item.TypeLine.Contains(\"Map\") && item.DescrText != null && item.DescrText.Contains(\"Travel to this Map\"))\n                    return new Map(item);\n\n                if (item.FrameType == 7)\n                    return new QuestItem(item);\n\n                if (item.FrameType == 0)\n                {\n                    if (item.TypeLine == \"Divine Vessel\")\n                        return new DivineVessel(item);\n\n                    if(item.TypeLine == \"Offering to the Goddess\")\n                        return new Offering(item);\n\n                    if (item.TypeLine.Contains(\"Scarab\")) //TODO: Refactor to use category property: \"category\": { \"maps\": [\"fragment\", \"scarab\"] }\n                        return new Scarab(item);\n\n                    if (item.TypeLine.Contains(\"Incubator\")) //TODO: Refactor to use category property: \"category\": { \"currency\": [\"incubator\"] }\n                        return new Incubator(item);\n                }\n\n                return new Gear(item);\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(ex);\n                var errorMessage = \"ItemFactory unable to instantiate type : \" + item.TypeLine;\n                Logger.Log(errorMessage);\n\n                try\n                {\n                    // Try to fall back and create an unknownItem based off of the provided item object.  This will\n                    // hopefully preserve enough properties so Procurement does not crash elsewhere and the issue is\n                    // more easily debuggable.\n                    var baseItemShell = new UnknownItem(item, ex.ToString());\n                    Logger.Log(\"Successfully instantiated base item shell for item.\");\n                    return baseItemShell;\n                }\n                catch (Exception innerException)\n                {\n                    Logger.Log(innerException);\n                    errorMessage = \"Additionally, failed to instantiate base item shell for type : \" + item.TypeLine;\n                    Logger.Log(errorMessage);\n\n                    return new UnknownItem();\n                }\n            }\n        }\n\n        private static Item GetCurrency(JSONProxy.Item item)\n        {\n            var typeline = item.TypeLine.ToLower();\n\n            if (typeline.Contains(\"essence\") || typeline.Contains(\"remnant of\"))\n                return new Essence(item);\n\n            if (typeline.Contains(\"splinter of\"))\n                return new BreachSplinter(item);\n\n            if(typeline.Contains(\"splinter\"))\n                return new LegionSplinter(item);\n\n            if(typeline.Contains(\"emblem\"))\n                return new LegionEmblem(item);\n\n            if (typeline.Contains(\"blessing\"))\n                return new Breachstone(item);\n\n            if (item.TypeLine.Contains(\"Sextant\"))\n                return new Sextant(item);\n\n            if (item.TypeLine.Contains(\"Net\"))\n                return new Net(item);\n\n            if (item.TypeLine.Contains(\"Fossil\"))\n                return new Fossil(item);\n\n            if (item.TypeLine.Contains(\"Resonator\"))\n                return new Resonator(item);\n\n            return new Currency(item);\n        }\n\n\n        private static string FilterString(string json)\n        {\n            var items = json.Split(new[] {\">>\"}, StringSplitOptions.None);\n\n            if (items.Count() == 1)\n                return json;\n\n            return items[3];\n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/ItemFilterConfig.json",
    "content": "﻿{\n  \"fileConfig\": [\n    {\n      \"disabled\": true,\n      \"inputLocation\": \"<ITEM FILTER DIRECTORY>\\\\NeverSink's filter - 1-REGULAR.filter\",\n      \"outputLocation\": \"<ITEM FILTER DIRECTORY>\\\\[MOD] NeverSink's filter - 1-REGULAR.filter\",\n      \"filterRuleConfig\": [\n        {\n          \"ruleType\": \"CHANCING_BASES\",\n          \"name\": \"Chancing Bases\",\n          \"searchString\": \"#   [1008] Chancing items\\r\\n#------------------------------------\",\n          \"searchStringRelation\": \"AFTER\",\n          \"additionalConfig\": {\n            \"@type\": \"type.googleapis.com/POEApi.Model.Protobuf.ChancingBasesFilterRuleConfig\",\n            \"otherCharactersStyling\": \"SECONDARY\"\n          }\n        },\n        {\n          \"ruleType\": \"MISSING_SAME_BASE_TYPE\",\n          \"name\": \"Missing Same Base Types\",\n          \"searchString\": \"#===============================================================================================================\\r\\n# [[0300]]\",\n          \"additionalConfig\": {\n            \"@type\": \"type.googleapis.com/POEApi.Model.Protobuf.MissingSameBaseTypesFilterRuleConfig\"\n          }\n        }\n      ]\n    }\n  ],\n  \"leagueConfig\": [\n    {\n      \"name\": \"SSF Legion\",\n      \"buildConfig\": [\n        {\n          \"buildName\": \"Freezing Pulse\",\n          \"chancingBase\": [\n            {\n              \"baseTypeName\": \"Occultist's Vestment\",\n              \"uniqueItemName\": \"Shavronne's Wrappings\",\n              \"quantityNeeded\": 1\n            },\n            {\n              \"baseTypeName\": \"Prophecy Wand\",\n              \"uniqueItemName\": \"Void Battery\",\n              \"quantityNeeded\": 2\n            },\n            {\n              \"baseTypeName\": \"Jade Amulet\",\n              \"uniqueItemName\": \"The Pandemonius\",\n              \"quantityNeeded\": 1\n            },\n            {\n              \"baseTypeName\": \"Cobalt Jewel\",\n              \"uniqueItemName\": \"First Snow\",\n              \"quantityNeeded\": 2,\n              \"quantityHeld\": 1\n            },\n            {\n              \"baseTypeName\": \"Cobalt Jewel\",\n              \"uniqueItemName\": \"Energy From Within\",\n              \"quantityNeeded\": 1\n            }\n          ]\n        },\n        {\n          \"buildName\": \"2h Freezing Cyclone\",\n          \"chancingBase\": [\n            {\n              \"baseTypeName\": \"Goathide Gloves\",\n              \"uniqueItemName\": \"Hrimsorrow\",\n              \"quantityNeeded\": 1\n            },\n            {\n              \"disabled\": true,\n              \"baseTypeName\": \"Nightmare Bascinet\",\n              \"uniqueItemName\": \"Devoto's Devotion\",\n              \"quantityNeeded\": 1\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "POEApi.Model/ItemFilterConfig.proto",
    "content": "﻿syntax = \"proto3\";\n\nimport \"google/protobuf/any.proto\";\n\npackage POEApi.Model.Protobuf;\n\nmessage SemanticVersion {\n  int32 major = 1;\n  int32 minor = 2;\n  int32 revision = 3;\n}\n\nmessage MissingSameBaseTypesFilterRuleConfig {\n  bool disable_missing_normal_items = 1;\n  bool disable_missing_magic_items = 2;\n  bool disable_missing_rare_items = 3;\n  bool disable_missing_normal_quality_items = 4;\n  bool disable_missing_magic_quality_items = 5;\n  bool disable_missing_rare_quality_items = 6;\n}\n\nmessage ChancingBasesFilterRuleConfig {\n  enum ChancingBaseStyling {\n\tPRIMARY = 0;\n\tSECONDARY = 1;\n\tUNSTYLED = 2;\n  }\n  ChancingBaseStyling current_character_styling = 5;\n  ChancingBaseStyling other_characters_styling = 6;\n}\n\nmessage FilterRuleConfig {\n  bool disabled = 1;\n\n  enum FilterRuleType {\n    UNKNOWN = 0;\n    MISSING_SAME_BASE_TYPE = 1;\n    CHANCING_BASES = 2;\n  }\n  FilterRuleType rule_type = 2;\n  string name = 3;\n\n  string search_string = 4;\n\n  enum SearchStringRelation {\n\tBEFORE = 0;\n\tAFTER = 1;\n  }\n  SearchStringRelation search_string_relation = 5;\n\n  google.protobuf.Any additional_config = 6;\n}\n\nmessage FileConfig {\n  bool disabled = 1;\n  string input_location = 2;\n  string output_location = 3;\n\n  repeated FilterRuleConfig filter_rule_config = 4;\n}\n\nmessage ChancingBaseConfig {\n  bool disabled = 1;\n  string base_type_name = 2;\n  string unique_item_name = 3;\n\n  int32 quantity_held = 4;\n  int32 quantity_needed = 5;\n\n  string required_league = 6;\n}\n\nmessage BuildConfig {\n  bool disabled = 1;\n  string build_name = 2;\n  string character_name = 3;\n  repeated string stash_name = 4;\n\n  repeated ChancingBaseConfig chancing_base = 5;\n}\n\nmessage LeagueConfig {\n  bool disabled = 1;\n  string name = 2;\n\n  repeated BuildConfig build_config = 3;\n}\n\nmessage ItemFilterConfig {\n  SemanticVersion version = 1;\n\n  repeated FileConfig file_config = 2;\n  repeated LeagueConfig league_config = 3;\n}"
  },
  {
    "path": "POEApi.Model/ItemTradeInfo.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public class ItemTradeInfo\n    {\n        public string Buyout { get; set; }\n        public string Price { get; set; }\n        public string CurrentOffer { get; set; }\n        public string Notes { get; set; }\n        public bool IsEmpty\n        {\n            get { return string.IsNullOrEmpty(Buyout) && string.IsNullOrEmpty(Price) && string.IsNullOrEmpty(CurrentOffer) && string.IsNullOrEmpty(Notes); }\n        }\n\n        public ItemTradeInfo()\n        { }\n\n        public ItemTradeInfo(string buyout, string price, string currentOffer, string notes)\n        {\n            Buyout = buyout;\n            Price = price;\n            CurrentOffer = currentOffer;\n            Notes = notes;\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/JSONProxy/Account.cs",
    "content": "﻿namespace POEApi.Model.JSONProxy\r\n{\r\n    // Represents a pathofexile.com account; should match what is defined at\r\n    // https://www.pathofexile.com/developer/docs/reference#profile .\r\n    public class Account\r\n    {\r\n        public string uuid { get; set; }\r\n        public string name { get; set; }\r\n        public string realm { get; set; }\r\n\r\n        // TODO: Add objects for guild and twitch information.\r\n    }\r\n}"
  },
  {
    "path": "POEApi.Model/JSONProxy/Stash.cs",
    "content": "﻿using System.Collections.Generic;\nusing Newtonsoft.Json;\n\nnamespace POEApi.Model.JSONProxy\n{\n    public class Property\n    {\n        public string Name { get; set; }\n        public List<object> Values { get; set; }\n        public int DisplayMode { get; set; }\n    }\n\n    public class AdditionalProperty\n    {\n        public string Name { get; set; }\n        public List<List<object>> Values { get; set; }\n        public int DisplayMode { get; set; }\n        public double Progress { get; set; }\n    }\n\n\n    public class Requirement\n    {\n        public string Name { get; set; }\n        public List<object> Values { get; set; }\n        public int DisplayMode { get; set; }\n    }\n\n    public class IncubatedDetails\n    {\n        public string Name { get; set; }\n        public int Level { get; set; }\n        public int Progress { get; set; }\n        public int Total { get; set; }\n    }\n\n    public class Item\n    {\n        public string Id { get; set; }\n        public bool Verified { get; set; }\n        public int W { get; set; }\n        public int H { get; set; }\n        public string Icon { get; set; }\n        public bool Support { get; set; }\n        public string League { get; set; }\n        public bool Shaper { get; set; }\n        public bool Elder { get; set; }\n        public bool Synthesised { get; set; }\n        public bool Fractured { get; set; }\n        public string Name { get; set; }\n        public string TypeLine { get; set; }\n        public bool Identified { get; set; }\n        public bool Duplicated { get; set; }\n        public List<Property> Properties { get; set; }\n        public List<string> ExplicitMods { get; set; }\n        public string DescrText { get; set; }\n        public int FrameType { get; set; }\n        public int X { get; set; }\n        public int Y { get; set; }\n        public string InventoryId { get; set; }\n        public List<Item> SocketedItems { get; set; }\n        public List<Socket> Sockets { get; set; }\n        public List<AdditionalProperty> AdditionalProperties { get; set; }\n        public string SecDescrText { get; set; }\n        public List<string> ImplicitMods { get; set; }\n        public List<string> FlavourText { get; set; }\n        public List<Requirement> Requirements { get; set; }\n        public List<Requirement> NextLevelRequirements { get; set; }\n        public int Socket { get; set; }\n        public int StackSize { get; set; }\n        public int MaxStackSize { get; set; }\n        public string Colour { get; set; }\n        public bool Corrupted { get; set; }\n        public bool AbyssJewel { get; set; }\n        public IncubatedDetails IncubatedItem { get; set; }\n        public List<string> CosmeticMods { get; set; }\n        public List<string> CraftedMods { get; set; }\n        public List<string> EnchantMods { get; set; }\n        public List<string> VeiledMods { get; set; }\n        public List<string> FracturedMods { get; set; }\n        public int Ilvl { get; set; }\n        public string ProphecyText { get; set; }\n        public string ProphecyDiffText { get; set; }\n        public bool IsRelic { get; set; }\n    }\n\n    public class Socket\n    {\n        public string Attr { get; set; }\n        public int Group { get; set; }\n    }\n\n    [JsonObject(MemberSerialization.OptOut)]\n    public class Stash\n    {\n        public int NumTabs { get; set; }\n        public List<Item> Items { get; set; }\n        public List<Tab> Tabs { get; set; }\n    }\n\n    [JsonObject(MemberSerialization.OptOut)]\n    public class Inventory\n    {\n        public List<Item> Items { get; set; }\n    }\n\n    public class Colour\n    {\n        public int r { get; set; }\n        public int g { get; set; }\n        public int b { get; set; }\n    }\n\n    public class Tab\n    {\n        public string n { get; set; }\n        public int i { get; set; }\n        public Colour colour { get; set; }\n        public string srcL { get; set; }\n        public string srcC { get; set; }\n        public string srcR { get; set; }\n        public bool hidden { get; set; }\n        public string type { get; set; }\n        public bool selected { get; set; }\n    }\n}"
  },
  {
    "path": "POEApi.Model/Leaguestone.cs",
    "content": "﻿using System.Diagnostics;\n\nnamespace POEApi.Model\n{\n    [DebuggerDisplay(\"{TypeLine} Charges: {Charges.ToString()}\")]\n    public class Leaguestone : Item\n    {\n        public ChargeInfo Charges { get; }\n\n        public Leaguestone(JSONProxy.Item item) : base(item)\n        {\n            Charges = ProxyMapper.GetCharges(item.Properties);\n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/LegionEmblem.cs",
    "content": "﻿using POEApi.Model.Interfaces;\n\nnamespace POEApi.Model\n{\n    public class LegionEmblem : Item, ILegion\n    {\n        public LegionEmblem(JSONProxy.Item item) : base(item)\n        {\n            Faction = ProxyMapper.GetLegionFaction(item);\n        }\n\n        public LegionFaction Faction { get; set; }\n    }\n}"
  },
  {
    "path": "POEApi.Model/LegionFaction.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public enum LegionFaction\n    {\n        Unknown,\n\n        EternalEmpire,\n        Karui,\n        Maraketh,\n        Templar,\n        Vaal\n    }\n}"
  },
  {
    "path": "POEApi.Model/LegionSplinter.cs",
    "content": "﻿using POEApi.Model.Interfaces;\n\nnamespace POEApi.Model\n{\n    public class LegionSplinter : Item, ILegion\n    {\n        public LegionSplinter(JSONProxy.Item item) : base(item)\n        {\n            Faction = ProxyMapper.GetLegionFaction(item);\n        }\n\n        public LegionFaction Faction { get; set; }\n    }\n}"
  },
  {
    "path": "POEApi.Model/Map.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    public class Map : Item\n    {\n        public int MapTier { get; private set; }\n        public int MapQuantity { get; private set; }\n\n        public Map(JSONProxy.Item item) : base(item)\n        {\n            ItemType = Model.ItemType.Gear;\n            Properties = ProxyMapper.GetProperties(item.Properties);\n            MapTier = int.Parse(Properties.Find(p => p.Name == \"Map Tier\").Values[0].Item1);\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Net.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public class Net : Currency\n    {\n        public Net(JSONProxy.Item item) : base(item)\n        {\n            NetTier = ProxyMapper.GetNetTier(item.Properties);\n        }\n\n        // Note: Necromancy nets technically do not have a net tier, but uses the default value of 0 here.\n        public int NetTier { get; }\n    }\n}"
  },
  {
    "path": "POEApi.Model/Offering.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public class Offering : Item\n    {\n        public Offering(JSONProxy.Item item) : base(item)\n        {\n            \n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/OrbType.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public enum OrbType\n    {\n        Eternal,\n        Imprint,\n        Exalted,\n        Divine,\n        GemCutterPrism,\n        Regal,\n        Blessed,\n        Chaos,\n        Regret,\n        Chisel,\n        Alchemy,\n        Scouring,\n        Fusing,\n        Chance,\n        Chromatic,\n        JewelersOrb,\n        Alteration,\n        Augmentation,\n        Transmutation,\n        PortalScroll,\n        WisdomScroll,\n        ArmourersScrap,\n        GlassblowersBauble,\n        BlacksmithsWhetstone,\n        ScrollFragment,\n        ScrollofWisdom,\n        AlbinaRhoaFeather,\n        AlchemyShard,\n        Mirror,\n        VaalOrb,\n        PerandusCoin,\n        SilverCoin,\n        TransmutationShard,\n        AlterationShard,\n        AncientOrb,\n        AncientShard,\n        AnnulmentShard,\n        BindingShard,\n        ChaosShard,\n        EngineersOrb,\n        EngineersShard,\n        ExaltedShard,\n        HarbingersOrb,\n        HarbingersShard,\n        HorizonShard,\n        MirrorShard,\n        AnnulmentOrb,\n        BindingOrb,\n        HorizonOrb,\n        RegalShard,\n        BestiaryOrb,\n        SimpleRopeNet,\n        ReinforcedRopeNet,\n        StrongRopeNet,\n        SimpleIronNet,\n        ReinforcedIronNet,\n        StrongIronNet,\n        SimpleSteelNet,\n        ReinforcedSteelNet,\n        StrongSteelNet,\n        ThaumaturgicalNet,\n        NecromancyNet,\n        PantheonSoul,\n        IncursionVial,\n\n        //Must always be last\n        Unknown\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/POEApi.Model.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n  <Import Project=\"..\\packages\\Grpc.Tools.1.21.0\\build\\Grpc.Tools.props\" Condition=\"Exists('..\\packages\\Grpc.Tools.1.21.0\\build\\Grpc.Tools.props')\" />\r\n  <PropertyGroup>\r\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\r\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\r\n    <ProductVersion>8.0.30703</ProductVersion>\r\n    <SchemaVersion>2.0</SchemaVersion>\r\n    <ProjectGuid>{9841DD07-224D-4534-B9D1-F934C1D7BC73}</ProjectGuid>\r\n    <OutputType>Library</OutputType>\r\n    <AppDesignerFolder>Properties</AppDesignerFolder>\r\n    <RootNamespace>POEApi.Model</RootNamespace>\r\n    <AssemblyName>POEApi.Model</AssemblyName>\r\n    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>\r\n    <FileAlignment>512</FileAlignment>\r\n    <TargetFrameworkProfile>\r\n    </TargetFrameworkProfile>\r\n    <NuGetPackageImportStamp>\r\n    </NuGetPackageImportStamp>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DebugType>full</DebugType>\r\n    <Optimize>false</Optimize>\r\n    <OutputPath>bin\\Debug\\</OutputPath>\r\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n    <Prefer32Bit>false</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\r\n    <DebugType>none</DebugType>\r\n    <Optimize>true</Optimize>\r\n    <OutputPath>bin\\Release\\</OutputPath>\r\n    <DefineConstants>TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n    <Prefer32Bit>false</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <Reference Include=\"Google.Protobuf, Version=3.8.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\Google.Protobuf.3.8.0\\lib\\net45\\Google.Protobuf.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\Grpc.Core.1.21.0\\lib\\net45\\Grpc.Core.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"Grpc.Core.Api, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\Grpc.Core.Api.1.21.0\\lib\\net45\\Grpc.Core.Api.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\Newtonsoft.Json.9.0.1\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"PresentationCore\" />\r\n    <Reference Include=\"System\" />\r\n    <Reference Include=\"System.Core\" />\r\n    <Reference Include=\"System.Interactive.Async, Version=3.2.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Interactive.Async.3.2.0\\lib\\net46\\System.Interactive.Async.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Xml.Linq\" />\r\n    <Reference Include=\"System.Data.DataSetExtensions\" />\r\n    <Reference Include=\"Microsoft.CSharp\" />\r\n    <Reference Include=\"System.Data\" />\r\n    <Reference Include=\"System.Xml\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Compile Include=\"AbyssJewel.cs\" />\r\n    <Compile Include=\"Breachstone.cs\" />\r\n    <Compile Include=\"BreachType.cs\" />\r\n    <Compile Include=\"CharacterStashBuilder.cs\" />\r\n    <Compile Include=\"ChargeInfo.cs\" />\r\n    <Compile Include=\"Colour.cs\" />\r\n    <Compile Include=\"Decoration.cs\" />\r\n    <Compile Include=\"DivineVessel.cs\" />\r\n    <Compile Include=\"Essence.cs\" />\r\n    <Compile Include=\"EssenceType.cs\" />\r\n    <Compile Include=\"FatedUniqueInfo.cs\" />\r\n    <Compile Include=\"Fossil.cs\" />\r\n    <Compile Include=\"FullBestiaryOrb.cs\" />\r\n    <Compile Include=\"GemHandler.cs\" />\r\n    <Compile Include=\"Interfaces\\ILegion.cs\" />\r\n    <Compile Include=\"Incubator.cs\" />\r\n    <Compile Include=\"Interfaces\\IBreachCurrency.cs\" />\r\n    <Compile Include=\"ItemBackgroundUrlBuilder.cs\" />\r\n    <Compile Include=\"ItemTradeInfo.cs\" />\r\n    <Compile Include=\"Character.cs\" />\r\n    <Compile Include=\"Currency.cs\" />\r\n    <Compile Include=\"CurrencyHandler.cs\" />\r\n    <Compile Include=\"CurrencyRatio.cs\" />\r\n    <Compile Include=\"EquipedItems.cs\" />\r\n    <Compile Include=\"Events\\AuthenticateEventArgs.cs\" />\r\n    <Compile Include=\"Gear.cs\" />\r\n    <Compile Include=\"GearType\\GearType.cs\" />\r\n    <Compile Include=\"GearType\\GearTypeFactory.cs\" />\r\n    <Compile Include=\"GearType\\GearTypeRunner.cs\" />\r\n    <Compile Include=\"Gem.cs\" />\r\n    <Compile Include=\"Events\\ImageLoadedEventArgs.cs\" />\r\n    <Compile Include=\"GemCategory.cs\" />\r\n    <Compile Include=\"ImageComparer.cs\" />\r\n    <Compile Include=\"Item.cs\" />\r\n    <Compile Include=\"ItemFactory.cs\" />\r\n    <Compile Include=\"JSONProxy\\Account.cs\" />\r\n    <Compile Include=\"JSONProxy\\Stash.cs\" />\r\n    <Compile Include=\"Leaguestone.cs\" />\r\n    <Compile Include=\"LegionEmblem.cs\" />\r\n    <Compile Include=\"LegionSplinter.cs\" />\r\n    <Compile Include=\"LegionFaction.cs\" />\r\n    <Compile Include=\"Map.cs\" />\r\n    <Compile Include=\"Net.cs\" />\r\n    <Compile Include=\"Offering.cs\" />\r\n    <Compile Include=\"OrbType.cs\" />\r\n    <Compile Include=\"Events\\POEEventArgs.cs\" />\r\n    <Compile Include=\"Events\\POEEventState.cs\" />\r\n    <Compile Include=\"POEModel.cs\" />\r\n    <Compile Include=\"Property.cs\" />\r\n    <Compile Include=\"Prophecy.cs\" />\r\n    <Compile Include=\"ProxyMapper.cs\" />\r\n    <Compile Include=\"QuestItem.cs\" />\r\n    <Compile Include=\"Requirement.cs\" />\r\n    <Compile Include=\"Resonator.cs\" />\r\n    <Compile Include=\"Scarab.cs\" />\r\n    <Compile Include=\"Settings.cs\" />\r\n    <Compile Include=\"Sextant.cs\" />\r\n    <Compile Include=\"SextantType.cs\" />\r\n    <Compile Include=\"ShopSetting.cs\" />\r\n    <Compile Include=\"Socket.cs\" />\r\n    <Compile Include=\"SocketableItem.cs\" />\r\n    <Compile Include=\"BreachSplinter.cs\" />\r\n    <Compile Include=\"Stash.cs\" />\r\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\r\n    <Compile Include=\"Events\\StashLoadedEventArgs.cs\" />\r\n    <Compile Include=\"Tab.cs\" />\r\n    <Compile Include=\"UnknownItem.cs\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <ProjectReference Include=\"..\\POEApi.Infrastructure\\POEApi.Infrastructure.csproj\">\r\n      <Project>{2F0E4301-694B-4A26-80D8-D57042DA9D6F}</Project>\r\n      <Name>POEApi.Infrastructure</Name>\r\n    </ProjectReference>\r\n    <ProjectReference Include=\"..\\POEApi.Transport\\POEApi.Transport.csproj\">\r\n      <Project>{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}</Project>\r\n      <Name>POEApi.Transport</Name>\r\n    </ProjectReference>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Content Include=\"Buyouts.xml\">\r\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r\n    </Content>\r\n    <Content Include=\"Data.xml\">\r\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r\n      <SubType>Designer</SubType>\r\n    </Content>\r\n    <Content Include=\"Settings.xml\">\r\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r\n      <SubType>Designer</SubType>\r\n    </Content>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Content Include=\"Settings.xsd\">\r\n      <SubType>Designer</SubType>\r\n    </Content>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Content Include=\"Data.xsd\">\r\n      <SubType>Designer</SubType>\r\n    </Content>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <None Include=\"packages.config\" />\r\n    <Protobuf Include=\"ItemFilterConfig.proto\" />\r\n    <None Include=\"app.config\" />\r\n    <None Include=\"ItemFilterConfig.json\">\r\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r\n    </None>\r\n  </ItemGroup>\r\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\r\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\r\n    <PropertyGroup>\r\n      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>\r\n    </PropertyGroup>\r\n    <Error Condition=\"!Exists('..\\packages\\Grpc.Tools.1.21.0\\build\\Grpc.Tools.props')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Grpc.Tools.1.21.0\\build\\Grpc.Tools.props'))\" />\r\n    <Error Condition=\"!Exists('..\\packages\\Grpc.Tools.1.21.0\\build\\Grpc.Tools.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Grpc.Tools.1.21.0\\build\\Grpc.Tools.targets'))\" />\r\n    <Error Condition=\"!Exists('..\\packages\\Grpc.Core.1.21.0\\build\\net45\\Grpc.Core.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\packages\\Grpc.Core.1.21.0\\build\\net45\\Grpc.Core.targets'))\" />\r\n  </Target>\r\n  <Import Project=\"..\\packages\\Grpc.Tools.1.21.0\\build\\Grpc.Tools.targets\" Condition=\"Exists('..\\packages\\Grpc.Tools.1.21.0\\build\\Grpc.Tools.targets')\" />\r\n  <Import Project=\"..\\packages\\Grpc.Core.1.21.0\\build\\net45\\Grpc.Core.targets\" Condition=\"Exists('..\\packages\\Grpc.Core.1.21.0\\build\\net45\\Grpc.Core.targets')\" />\r\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\r\n</Project>"
  },
  {
    "path": "POEApi.Model/POEModel.cs",
    "content": "﻿using System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Linq;\r\nusing POEApi.Infrastructure;\r\nusing POEApi.Model.Events;\r\nusing POEApi.Transport;\r\nusing System.Security;\r\nusing System;\r\nusing System.Diagnostics;\r\nusing POEApi.Infrastructure.Events;\r\nusing Newtonsoft.Json;\r\nusing Newtonsoft.Json.Serialization;\r\nusing POEApi.Model.JSONProxy;\r\nusing System.Threading.Tasks;\r\n\r\nnamespace POEApi.Model\r\n{\r\n    public class POEModel\r\n    {\r\n        public ITransport Transport;\r\n        private CacheService cacheService;\r\n        private bool downOnlyMyCharacters;\r\n\r\n\r\n        public delegate void AuthenticateEventHandler(POEModel sender, AuthenticateEventArgs e);\r\n        public event AuthenticateEventHandler Authenticating;\r\n\r\n        public delegate void StashLoadEventHandler(POEModel sender, StashLoadedEventArgs e);\r\n        public event StashLoadEventHandler StashLoading;\r\n\r\n        public delegate void ImageLoadEventHandler(POEModel sender, ImageLoadedEventArgs e);\r\n        public event ImageLoadEventHandler ImageLoading;\r\n\r\n        public event ThottledEventHandler Throttled;\r\n\r\n        public bool Offline { get; private set; }\r\n\r\n        public POEModel()\r\n        {\r\n            downOnlyMyCharacters = bool.Parse(Settings.UserSettings[\"DownloadOnlyMyCharacters\"]);\r\n        }\r\n\r\n        public bool Authenticate(string email, SecureString password, bool offline, string realm)\r\n        {\r\n            if (Transport != null)\r\n                Transport.Throttled -= new ThottledEventHandler(instance_Throttled);\r\n\r\n            Transport = GetTransport(email, offline);\r\n            cacheService = new CacheService(email);\r\n            Offline = offline;\r\n\r\n            if (offline)\r\n                return true;\r\n\r\n            Transport.Throttled += new ThottledEventHandler(instance_Throttled);\r\n            onAuthenticate(POEEventState.BeforeEvent, email,realm);\r\n\r\n            Transport.Authenticate(email, password);\r\n\r\n            onAuthenticate(POEEventState.AfterEvent, email, realm);\r\n\r\n            return true;\r\n        }\r\n\r\n        public string GetAccountName(string realm)\r\n        {\r\n            try\r\n            {\r\n                if (Offline)\r\n                {\r\n                    return string.Empty;\r\n                }\r\n\r\n                var account = GetProperObjectFromTransport<Account>(Transport.GetAccountName(realm));\r\n\r\n                if (string.IsNullOrEmpty(account?.name))\r\n                {\r\n                    throw new Exception(\"Null account name received from API\");\r\n                }\r\n\r\n                return account.name;\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Logger.Log(string.Format(\"Error downloading account name, exception details: {0}\", ex.ToString()));\r\n\r\n                throw new Exception(@\"Error downloading account name, details logged to DebugInfo.log. Please open a ticket at https://github.com/Stickymaddness/Procurement/issues and include your DebugInfo.log\");\r\n            }\r\n        }\r\n\r\n        /// <summary>\r\n        /// With a stream from the transport and a strong type, parse the json.\r\n        /// </summary>\r\n        /// <typeparam name=\"T\"></typeparam>\r\n        /// <param name=\"networkData\"></param>\r\n        /// <returns></returns>\r\n        private T GetProperObjectFromTransport<T>(Stream networkData)\r\n        {\r\n            using (var stream = networkData)\r\n            using (var textReader = new StreamReader(stream))\r\n            using (var jsonTextReader = new JsonTextReader(textReader))\r\n            {\r\n                try\r\n                {\r\n                    var serializer = new JsonSerializer {ContractResolver = new CamelCasePropertyNamesContractResolver()};\r\n\r\n                    return (T) serializer.Deserialize(jsonTextReader, typeof (T));\r\n                }\r\n                catch\r\n                {\r\n                    MemoryStream ms = stream as MemoryStream;\r\n                    ms.Seek(0, SeekOrigin.Begin);\r\n                    var sr = new StreamReader(ms);\r\n                    var text = sr.ReadToEnd();\r\n                    Debug.Write(text);\r\n                }\r\n            }\r\n            \r\n            throw new ApplicationException(\"Unable to deserialize object\");\r\n        }\r\n\r\n        void instance_Throttled(object sender, ThottledEventArgs e)\r\n        {\r\n            if (Throttled != null)\r\n                Throttled(sender, e);\r\n        }\r\n\r\n        private ITransport GetTransport(string email, bool offline)\r\n        {\r\n            if (Settings.ProxySettings[\"Enabled\"] != bool.TrueString)\r\n                return new CachedTransport(email, new HttpTransport(email), offline);\r\n\r\n            return new CachedTransport(email, new HttpTransport(email, Settings.ProxySettings[\"Username\"], Settings.ProxySettings[\"Password\"], Settings.ProxySettings[\"Domain\"]), offline);\r\n        }\r\n\r\n        public void ForceRefresh()\r\n        {\r\n            cacheService.Clear();\r\n        }\r\n\r\n        public Stash GetStash(int index, string league, string accountName, string realm, bool forceRefresh = false)\r\n        {\r\n            JSONProxy.Stash proxy = null;\r\n\r\n            onStashLoaded(POEEventState.BeforeEvent, index, -1);\r\n\r\n            using (var stream = Transport.GetStash(index, league, accountName, realm, forceRefresh))\r\n            {\r\n                try\r\n                {\r\n                    if (stream == Stream.Null)\r\n                    {\r\n                        return new Stash(null);\r\n                    }\r\n\r\n                    proxy = GetProperObjectFromTransport<JSONProxy.Stash>(stream);\r\n                    if (proxy == null)\r\n                        LogNullStash(stream, \"Proxy was null\");\r\n                }\r\n                catch (Exception ex)\r\n                {\r\n                    Logger.Log(ex);\r\n                    LogNullStash(stream, \"JSON Serialization Failed\");\r\n                }\r\n            }\r\n\r\n            onStashLoaded(POEEventState.AfterEvent, index, proxy.NumTabs);\r\n\r\n            return new Stash(proxy);\r\n        }\r\n\r\n        private void LogNullStash(Stream stream, string errorPrefix)\r\n        {\r\n            try\r\n            {\r\n                MemoryStream ms = stream as MemoryStream;\r\n                ms.Seek(0, SeekOrigin.Begin);\r\n                Logger.Log(errorPrefix + \": base64 bytes:\");\r\n                Logger.Log(Convert.ToBase64String(ms.ToArray()));\r\n                Logger.Log(\"END\");\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Logger.Log(ex);\r\n            }\r\n\r\n            throw new Exception(@\"Downloading stash, details logged to DebugInfo.log, please open a ticket at https://github.com/Stickymaddness/Procurement/issues and include your DebugInfo.log\");\r\n        }\r\n\r\n        public Stash GetStash(string league, string accountName, string realm)\r\n        {\r\n            try\r\n            {\r\n                var myTabs = Settings.Lists[\"MyTabs\"];\r\n                bool onlyMyTabs = myTabs.Count != 0;\r\n\r\n                Stash stash = GetStash(0, league, accountName, realm);\r\n\r\n                var firstTab = stash.Tabs.FirstOrDefault();\r\n                if (firstTab != null && firstTab.Hidden)\r\n                    stash.ClearItems();\r\n\r\n                List<Tab> skippedTabs = new List<Tab>();\r\n\r\n                if (!onlyMyTabs)\r\n                    return GetAllTabs(league, accountName, stash, realm);\r\n\r\n                int tabCount = 0;\r\n\r\n                for (int i = 1; i < stash.NumberOfTabs; i++)\r\n                {\r\n                    if (myTabs.Contains(stash.Tabs[i].Name))\r\n                    {\r\n                        stash.Add(GetStash(i, league, accountName, realm));\r\n                        ++tabCount;\r\n                    }\r\n                    else\r\n                        skippedTabs.Add(stash.Tabs[i]);\r\n                }\r\n\r\n                foreach (var tab in skippedTabs)\r\n                    stash.Tabs.Remove(tab);\r\n\r\n                stash.NumberOfTabs = tabCount + 1;\r\n\r\n                return stash;\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Logger.Log(string.Format(\"Error downloading stash for {0}, exception details: {1}\", league, ex.ToString()));\r\n                throw new Exception(@\"Downloading stash for \" + league + \", details logged to DebugInfo.log, please open a ticket at https://github.com/Stickymaddness/Procurement/issues and include your DebugInfo.log\");\r\n            }\r\n        }\r\n\r\n        private Stash GetAllTabs(string league, string accountName, Stash stash, string realm)\r\n        {\r\n            List<Tab> hiddenTabs = new List<Tab>();\r\n\r\n            for (int i = 1; i < stash.NumberOfTabs; i++)\r\n            {\r\n                if (!stash.Tabs[i].Hidden)\r\n                {\r\n                    stash.Add(GetStash(i, league, accountName, realm));\r\n                }\r\n                else\r\n                {\r\n                    hiddenTabs.Add(stash.Tabs[i]);\r\n                }\r\n            }\r\n\r\n            var firstTab = stash.Tabs.FirstOrDefault();\r\n            if (firstTab != null && firstTab.Hidden)\r\n            {\r\n                stash.Tabs.Remove(stash.Tabs[0]);\r\n                --stash.NumberOfTabs;\r\n            }\r\n\r\n            foreach (var tab in hiddenTabs)\r\n            {\r\n                stash.Tabs.Remove(tab);\r\n                --stash.NumberOfTabs;\r\n            }\r\n\r\n            return stash;\r\n        }\r\n\r\n        public List<Character> GetCharacters(string realm)\r\n        {\r\n            return GetProperObjectFromTransport<List<Character>>(Transport.GetCharacters(realm));\r\n        }\r\n\r\n        public List<Item> GetInventory(string characterName, bool forceRefresh, string accountName, string realm)\r\n        {\r\n            try\r\n            {\r\n                if (downOnlyMyCharacters && !Settings.Lists[\"MyCharacters\"].Contains(characterName))\r\n                    return new List<Item>();\r\n\r\n                Inventory item  = GetProperObjectFromTransport<Inventory>(Transport.GetInventory(characterName, forceRefresh, accountName, realm));\r\n\r\n                if (item?.Items == null)\r\n                    return new List<Item>();\r\n\r\n                return item.Items.Select(i => ItemFactory.Get(i)).ToList();\r\n            }\r\n            catch (Exception sex)\r\n            {\r\n                Logger.Log(string.Format(\"Error reading character data for character '{0}', Exception info: \", characterName, sex.ToString()));\r\n                throw new Exception(string.Format(\"Error reading character data for {0}, if you are in offline mode you will need to login and update. If you received this error while logging in, the authenticated session may have expired or bad data has been returned by GGG or a network issue may have occurred - Please try again.\", characterName));\r\n            }\r\n        }\r\n\r\n        public void GetImages(IEnumerable<Item> items)\r\n        {\r\n            foreach (var item in items.Distinct(new ImageComparer()))\r\n                GetImageWithEvents(item);\r\n\r\n            LoadShaperElderImages(items);\r\n        }\r\n\r\n        private void LoadShaperElderImages(IEnumerable<Item> items)\r\n        {\r\n            IEnumerable<Item> elderShaperItems = items.Where(i => i.Shaper || i.Elder);\r\n\r\n            foreach (var item in elderShaperItems)\r\n            {\r\n                var prefix = item.Shaper ? \"Shaper\" : \"Elder\";\r\n\r\n                onImageLoaded(POEEventState.BeforeEvent, $\"{prefix} {item.Name}\");\r\n                Transport.GetImage(item.BackgroundUrl);\r\n                onImageLoaded(POEEventState.AfterEvent, $\"{prefix} {item.Name}\");\r\n            }\r\n        }\r\n\r\n        private void GetImageWithEvents(Item item)\r\n        {\r\n            try\r\n            {\r\n                GetImageWithEvents(GetItemName(item), item.IconURL);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Logger.Log(string.Format(\"Error downloading image for : {0}, exception details: {1}\", item.IconURL, ex.ToString()));\r\n                throw;\r\n            }\r\n        }\r\n\r\n        private void GetImageWithEvents(string name, string url)\r\n        {\r\n            onImageLoaded(POEEventState.BeforeEvent, name);\r\n            Transport.GetImage(url);\r\n            onImageLoaded(POEEventState.AfterEvent, name);\r\n        }\r\n\r\n        public Stream GetImage(string url)\r\n        {\r\n            return Transport.GetImage(url);\r\n        }\r\n\r\n        public IEnumerable<Stream> GetImage(Tab tab)\r\n        {\r\n            onImageLoaded(POEEventState.BeforeEvent, tab.Name);\r\n            yield return Transport.GetImage(tab.srcL);\r\n            yield return Transport.GetImage(tab.srcC);\r\n            yield return Transport.GetImage(tab.srcR);\r\n            onImageLoaded(POEEventState.AfterEvent, tab.Name);\r\n        }\r\n\r\n        public bool UpdateThread(string threadID, string threadTitle, string threadText)\r\n        {\r\n            return Transport.UpdateThread(threadID, threadTitle, threadText);\r\n        }\r\n\r\n        public bool BumpThread(string threadId, string threadTitle)\r\n        {\r\n            return Transport.BumpThread(threadId, threadTitle);\r\n        }\r\n\r\n        private static string GetItemName(Item item)\r\n        {\r\n            if (item.Name != string.Empty)\r\n                return item.Name;\r\n\r\n            return item.TypeLine;\r\n        }\r\n\r\n        private void onStashLoaded(POEEventState state, int index, int numberOfTabs)\r\n        {\r\n            if (StashLoading != null)\r\n                StashLoading(this, new StashLoadedEventArgs(index, numberOfTabs, state));\r\n        }\r\n\r\n        private void onImageLoaded(POEEventState state, string url)\r\n        {\r\n            if (ImageLoading != null)\r\n                ImageLoading(this, new ImageLoadedEventArgs(url, state));\r\n        }\r\n\r\n        private void onAuthenticate(POEEventState state, string email, string realm)\r\n        {\r\n            if (Authenticating != null)\r\n                Authenticating(this, new AuthenticateEventArgs(email, realm, state));\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "POEApi.Model/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"POEApi.Model\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"POEApi.Model\")]\n[assembly: AssemblyCopyright(\"Artistic License 2.0\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"4daa5e0a-7d48-44e3-a589-2385c8116799\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.29.2.0\")]\n[assembly: AssemblyFileVersion(\"1.29.2.0\")]\n[assembly: InternalsVisibleTo(\"POEApi.Model.Tests\")]\n\n\n\n"
  },
  {
    "path": "POEApi.Model/Property.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing Newtonsoft.Json.Linq;\n\nnamespace POEApi.Model\n{\n    public class Property\n    {\n        public string Name { get; set; }\n        public int DisplayMode { get; set; }\n        public List<Tuple<string, int>> Values { get; set; }\n\n        internal Property(JSONProxy.Property property)\n        {\n            Name = property.Name;\n            Values = new List<Tuple<string, int>>();\n\n            foreach (object value in property.Values)\n            {\n                var pair = (JArray)value;\n                Values.Add(new Tuple<string, int>(Sanitize(pair[0]), int.Parse(pair[1].ToString())));\n            }\n\n            DisplayMode = property.DisplayMode;\n        }\n\n        private string Sanitize(JToken jToken)\n        {\n            const string infoText = \"<<set:MS>><<set:M>><<set:S>>\";\n\n            return jToken.ToString().Replace(infoText, string.Empty);\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Prophecy.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    public class Prophecy : Item\n    {\n        public string ProphecyText { get; set; }\n        public string ProphecyDifficultyText { get; set; }\n\n        internal Prophecy(JSONProxy.Item item) : base(item)\n        {\n            ProphecyText = item.ProphecyText;\n            ProphecyDifficultyText = item.ProphecyDiffText;\n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/ProxyMapper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.RegularExpressions;\nusing Newtonsoft.Json.Linq;\nusing POEApi.Infrastructure;\n\nnamespace POEApi.Model\n{\n    internal class ProxyMapper\n    {\n        internal const string StackSize = \"Stack Size\";\n        internal const string Charges = \"Currently has %0 of %1 Charges\";\n        internal const string Stash = \"Stash\";\n        public const string Quality = \"Quality\";\n        public const string NetTier = \"Net Tier\";\n        public const string Genus = \"Genus\";\n        public const string Group = \"Group\";\n        public const string Family = \"Family\";\n        private static readonly Regex _qualityRx = new Regex(\"[+]{1}(?<quality>[0-9]{1,2}).*\");\n\n        #region   Orb Types  \n\n        private static readonly Dictionary<string, OrbType> _orbMap = new Dictionary<string, OrbType>(\n            StringComparer.CurrentCultureIgnoreCase)\n        {\n            {\"Chaos Orb\", OrbType.Chaos},\n            {\"Divine Orb\", OrbType.Divine},\n            {\"Regal Orb\", OrbType.Regal},\n            {\"Orb of Augmentation\", OrbType.Augmentation},\n            {\"Orb of Alchemy\", OrbType.Alchemy},\n            {\"Alchemy Shard\", OrbType.AlchemyShard},\n            {\"Chromatic Orb\", OrbType.Chromatic},\n            {\"Orb of Transmutation\", OrbType.Transmutation},\n            {\"Transmutation Shard\", OrbType.TransmutationShard},\n            {\"Orb of Scouring\", OrbType.Scouring},\n            {\"Glassblower's Bauble\", OrbType.GlassblowersBauble},\n            {\"Cartographer's Chisel\", OrbType.Chisel},\n            {\"Gemcutter's Prism\", OrbType.GemCutterPrism},\n            {\"Orb of Alteration\", OrbType.Alteration},\n            {\"Alteration Shard\", OrbType.AlterationShard},\n            {\"Orb of Chance\", OrbType.Chance},\n            {\"Orb of Regret\", OrbType.Regret},\n            {\"Exalted Orb\", OrbType.Exalted},\n            {\"Armourer's Scrap\", OrbType.ArmourersScrap},\n            {\"Blessed Orb\", OrbType.Blessed},\n            {\"Blacksmith's Whetstone\", OrbType.BlacksmithsWhetstone},\n            {\"Scroll Fragment\", OrbType.ScrollFragment},\n            {\"Jeweller's Orb\", OrbType.JewelersOrb},\n            {\"Scroll of Wisdom\", OrbType.ScrollofWisdom},\n            {\"Orb of Fusing\", OrbType.Fusing},\n            {\"Portal Scroll\", OrbType.PortalScroll},\n            {\"Albino Rhoa Feather\", OrbType.AlbinaRhoaFeather},\n            {\"Mirror\", OrbType.Mirror},\n            {\"Eternal Orb\", OrbType.Eternal},\n            {\"Imprint\", OrbType.Imprint},\n            {\"Vaal Orb\", OrbType.VaalOrb},\n            {\"Perandus Coin\", OrbType.PerandusCoin},\n            {\"Silver Coin\", OrbType.SilverCoin},\n            {\"Ancient Orb\", OrbType.AncientOrb},\n            {\"Ancient Shard\", OrbType.AncientShard},\n            {\"Annulment Shard\", OrbType.AnnulmentShard},\n            {\"Binding Shard\", OrbType.BindingShard},\n            {\"Chaos Shard\", OrbType.ChaosShard},\n            {\"Engineer's Orb\", OrbType.EngineersOrb},\n            {\"Engineer's Shard\", OrbType.EngineersShard},\n            {\"Exalted Shard\", OrbType.ExaltedShard},\n            {\"Harbinger's Orb\", OrbType.HarbingersOrb},\n            {\"Harbinger's Shard\", OrbType.HarbingersShard},\n            {\"Horizon Shard\", OrbType.HorizonShard},\n            {\"Mirror Shard\", OrbType.MirrorShard},\n            {\"Orb of Annulment\", OrbType.AnnulmentOrb},\n            {\"Orb of Binding\", OrbType.BindingOrb},\n            {\"Orb of Horizons\", OrbType.HorizonOrb},\n            {\"Regal Shard\", OrbType.RegalShard},\n            {\"Bestiary Orb\", OrbType.BestiaryOrb},\n            {\"Simple Rope Net\", OrbType.SimpleRopeNet},\n            {\"Reinforced Rope Net\", OrbType.ReinforcedRopeNet},\n            {\"Strong Rope Net\", OrbType.StrongRopeNet},\n            {\"Simple Iron Net\", OrbType.SimpleIronNet},\n            {\"Reinforced Iron Net\", OrbType.ReinforcedIronNet},\n            {\"Strong Iron Net\", OrbType.StrongIronNet},\n            {\"Simple Steel Net\", OrbType.SimpleSteelNet},\n            {\"Reinforced Steel Net\", OrbType.ReinforcedSteelNet},\n            {\"Strong Steel Net\", OrbType.StrongSteelNet},\n            {\"Thaumaturgical Net\", OrbType.ThaumaturgicalNet},\n            {\"Necromancy Net\", OrbType.NecromancyNet},\n            {\"Pantheon Soul\", OrbType.PantheonSoul},\n            {\"Incursion Vial\", OrbType.IncursionVial},\n        };\n\n        #endregion\n\n        private static readonly Dictionary<string, EssenceType> _essenceMap = new Dictionary<string, EssenceType>\n        {\n            {\"Whispering Essence of Greed\", EssenceType.WhisperingGreed},\n            {\"Whispering Essence of Contempt\", EssenceType.WhisperingContempt},\n            {\"Whispering Essence of Hatred\", EssenceType.WhisperingHatred},\n            {\"Whispering Essence of Woe\", EssenceType.WhisperingWoe},\n            {\"Muttering Essence of Greed\", EssenceType.MutteringGreed},\n            {\"Muttering Essence of Contempt\", EssenceType.MutteringContempt},\n            {\"Muttering Essence of Hatred\", EssenceType.MutteringHatred},\n            {\"Muttering Essence of Woe\", EssenceType.MutteringWoe},\n            {\"Muttering Essence of Fear\", EssenceType.MutteringFear},\n            {\"Muttering Essence of Anger\", EssenceType.MutteringAnger},\n            {\"Muttering Essence of Torment\", EssenceType.MutteringTorment},\n            {\"Muttering Essence of Sorrow\", EssenceType.MutteringSorrow},\n            {\"Weeping Essence of Greed\", EssenceType.WeepingGreed},\n            {\"Weeping Essence of Contempt\", EssenceType.WeepingContempt},\n            {\"Weeping Essence of Hatred\", EssenceType.WeepingHatred},\n            {\"Weeping Essence of Woe\", EssenceType.WeepingWoe},\n            {\"Weeping Essence of Fear\", EssenceType.WeepingFear},\n            {\"Weeping Essence of Anger\", EssenceType.WeepingAnger},\n            {\"Weeping Essence of Torment\", EssenceType.WeepingTorment},\n            {\"Weeping Essence of Sorrow\", EssenceType.WeepingSorrow},\n            {\"Weeping Essence of Rage\", EssenceType.WeepingRage},\n            {\"Weeping Essence of Suffering\", EssenceType.WeepingSuffering},\n            {\"Weeping Essence of Wrath\", EssenceType.WeepingWrath},\n            {\"Weeping Essence of Doubt\", EssenceType.WeepingDoubt},\n            {\"Wailing Essence of Greed\", EssenceType.WailingGreed},\n            {\"Wailing Essence of Contempt\", EssenceType.WailingContempt},\n            {\"Wailing Essence of Hatred\", EssenceType.WailingHatred},\n            {\"Wailing Essence of Woe\", EssenceType.WailingWoe},\n            {\"Wailing Essence of Fear\", EssenceType.WailingFear},\n            {\"Wailing Essence of Anger\", EssenceType.WailingAnger},\n            {\"Wailing Essence of Torment\", EssenceType.WailingTorment},\n            {\"Wailing Essence of Sorrow\", EssenceType.WailingSorrow},\n            {\"Wailing Essence of Rage\", EssenceType.WailingRage},\n            {\"Wailing Essence of Suffering\", EssenceType.WailingSuffering},\n            {\"Wailing Essence of Wrath\", EssenceType.WailingWrath},\n            {\"Wailing Essence of Doubt\", EssenceType.WailingDoubt},\n            {\"Wailing Essence of Loathing\", EssenceType.WailingLoathing},\n            {\"Wailing Essence of Zeal\", EssenceType.WailingZeal},\n            {\"Wailing Essence of Anguish\", EssenceType.WailingAnguish},\n            {\"Wailing Essence of Spite\", EssenceType.WailingSpite},\n            {\"Screaming Essence of Greed\", EssenceType.ScreamingGreed},\n            {\"Screaming Essence of Contempt\", EssenceType.ScreamingContempt},\n            {\"Screaming Essence of Hatred\", EssenceType.ScreamingHatred},\n            {\"Screaming Essence of Woe\", EssenceType.ScreamingWoe},\n            {\"Screaming Essence of Fear\", EssenceType.ScreamingFear},\n            {\"Screaming Essence of Anger\", EssenceType.ScreamingAnger},\n            {\"Screaming Essence of Torment\", EssenceType.ScreamingTorment},\n            {\"Screaming Essence of Sorrow\", EssenceType.ScreamingSorrow},\n            {\"Screaming Essence of Rage\", EssenceType.ScreamingRage},\n            {\"Screaming Essence of Suffering\", EssenceType.ScreamingSuffering},\n            {\"Screaming Essence of Wrath\", EssenceType.ScreamingWrath},\n            {\"Screaming Essence of Doubt\", EssenceType.ScreamingDoubt},\n            {\"Screaming Essence of Loathing\", EssenceType.ScreamingLoathing},\n            {\"Screaming Essence of Zeal\", EssenceType.ScreamingZeal},\n            {\"Screaming Essence of Anguish\", EssenceType.ScreamingAnguish},\n            {\"Screaming Essence of Spite\", EssenceType.ScreamingSpite},\n            {\"Screaming Essence of Scorn\", EssenceType.ScreamingScorn},\n            {\"Screaming Essence of Envy\", EssenceType.ScreamingEnvy},\n            {\"Screaming Essence of Misery\", EssenceType.ScreamingMisery},\n            {\"Screaming Essence of Dread\", EssenceType.ScreamingDread},\n            {\"Shrieking Essence of Greed\", EssenceType.ShriekingGreed},\n            {\"Shrieking Essence of Contempt\", EssenceType.ShriekingContempt},\n            {\"Shrieking Essence of Hatred\", EssenceType.ShriekingHatred},\n            {\"Shrieking Essence of Woe\", EssenceType.ShriekingWoe},\n            {\"Shrieking Essence of Fear\", EssenceType.ShriekingFear},\n            {\"Shrieking Essence of Anger\", EssenceType.ShriekingAnger},\n            {\"Shrieking Essence of Torment\", EssenceType.ShriekingTorment},\n            {\"Shrieking Essence of Sorrow\", EssenceType.ShriekingSorrow},\n            {\"Shrieking Essence of Rage\", EssenceType.ShriekingRage},\n            {\"Shrieking Essence of Suffering\", EssenceType.ShriekingSuffering},\n            {\"Shrieking Essence of Wrath\", EssenceType.ShriekingWrath},\n            {\"Shrieking Essence of Doubt\", EssenceType.ShriekingDoubt},\n            {\"Shrieking Essence of Loathing\", EssenceType.ShriekingLoathing},\n            {\"Shrieking Essence of Zeal\", EssenceType.ShriekingZeal},\n            {\"Shrieking Essence of Anguish\", EssenceType.ShriekingAnguish},\n            {\"Shrieking Essence of Spite\", EssenceType.ShriekingSpite},\n            {\"Shrieking Essence of Scorn\", EssenceType.ShriekingScorn},\n            {\"Shrieking Essence of Envy\", EssenceType.ShriekingEnvy},\n            {\"Shrieking Essence of Misery\", EssenceType.ShriekingMisery},\n            {\"Shrieking Essence of Dread\", EssenceType.ShriekingDread},\n            {\"Deafening Essence of Greed\", EssenceType.DeafeningGreed},\n            {\"Deafening Essence of Contempt\", EssenceType.DeafeningContempt},\n            {\"Deafening Essence of Hatred\", EssenceType.DeafeningHatred},\n            {\"Deafening Essence of Woe\", EssenceType.DeafeningWoe},\n            {\"Deafening Essence of Fear\", EssenceType.DeafeningFear},\n            {\"Deafening Essence of Anger\", EssenceType.DeafeningAnger},\n            {\"Deafening Essence of Torment\", EssenceType.DeafeningTorment},\n            {\"Deafening Essence of Sorrow\", EssenceType.DeafeningSorrow},\n            {\"Deafening Essence of Rage\", EssenceType.DeafeningRage},\n            {\"Deafening Essence of Suffering\", EssenceType.DeafeningSuffering},\n            {\"Deafening Essence of Wrath\", EssenceType.DeafeningWrath},\n            {\"Deafening Essence of Doubt\", EssenceType.DeafeningDoubt},\n            {\"Deafening Essence of Loathing\", EssenceType.DeafeningLoathing},\n            {\"Deafening Essence of Zeal\", EssenceType.DeafeningZeal},\n            {\"Deafening Essence of Anguish\", EssenceType.DeafeningAnguish},\n            {\"Deafening Essence of Spite\", EssenceType.DeafeningSpite},\n            {\"Deafening Essence of Scorn\", EssenceType.DeafeningScorn},\n            {\"Deafening Essence of Envy\", EssenceType.DeafeningEnvy},\n            {\"Deafening Essence of Misery\", EssenceType.DeafeningMisery},\n            {\"Deafening Essence of Dread\", EssenceType.DeafeningDread},\n            {\"Essence of Insanity\", EssenceType.Insanity},\n            {\"Essence of Horror\", EssenceType.Horror},\n            {\"Essence of Delirium\", EssenceType.Delirium},\n            {\"Essence of Hysteria\", EssenceType.Hysteria},\n            {\"Remnant of Corruption\", EssenceType.RemnantOfCorruption}\n        };\n\n        private static readonly Dictionary<string, BreachType> _breachMap = new Dictionary<string, BreachType>\n        {\n            {\"Chayula\", BreachType.Chayula},\n            {\"Xoph\", BreachType.Xoph},\n            {\"Esh\", BreachType.Esh},\n            {\"Tul\", BreachType.Tul},\n            {\"Uul-Netol\", BreachType.UulNetol}\n        };\n\n        private static readonly Dictionary<string, LegionFaction> _legionMap = new Dictionary<string, LegionFaction>\n        {\n            //Splinters are called Timeless Eternal Empire Splinter\n            {\"Eternal Empire\", LegionFaction.EternalEmpire},\n            //Emblems are called Timeless Eternal Emblem\n            {\"Eternal\", LegionFaction.EternalEmpire},\n            {\"Karui\", LegionFaction.Karui},\n            {\"Maraketh\", LegionFaction.Maraketh},\n            {\"Templar\", LegionFaction.Templar},\n            {\"Vaal\", LegionFaction.Vaal}\n        };\n\n        private static readonly Dictionary<string, TabType> _tabTypeMap = new Dictionary<string, TabType>\n        {\n            {\"NormalStash\", TabType.Normal},\n            {\"PremiumStash\", TabType.Premium},\n            {\"CurrencyStash\", TabType.Currency},\n            {\"DivinationCardStash\", TabType.DivinationCard},\n            {\"EssenceStash\", TabType.Essence},\n            {\"QuadStash\", TabType.Quad},\n            {\"MapStash\", TabType.Map },\n            {\"FragmentStash\", TabType.Fragment },\n            {\"UniqueStash\", TabType.Unique },\n        };\n\n        public static TabType GetTabType(string type)\n        {\n            if (string.IsNullOrWhiteSpace(type) || !_tabTypeMap.ContainsKey(type))\n            {\n                Logger.Log(string.Format(\"Found unknown stash tab type '{0}'.\", type));\n                return TabType.Unknown;\n            }\n\n            return _tabTypeMap[type];\n        }\n\n        private static string GetPropertyByName(List<JSONProxy.Property> properties, string name)\n        {\n            if (properties == null)\n                return null;\n\n            var prop = properties.Find(p => p.Name == name);\n\n            if (prop == null)\n                return string.Empty;\n\n            return (prop.Values[0] as JArray)[0].ToString();\n        }\n\n        internal static OrbType GetOrbType(JSONProxy.Item item)\n        {\n            return GetOrbType(item.TypeLine);\n        }\n\n        internal static OrbType GetOrbType(string name)\n        {\n            if (string.IsNullOrWhiteSpace(name))\n            {\n                Logger.Log(\"ProxyMapper.GetOrbType: Failed to get OrbType: name is null or white space.\");\n                return OrbType.Unknown;\n            }\n\n            // Collapse all of the \"Captured Soul of ...\" into a single PantheonSoul OrbType.\n            if (name.StartsWith(\"Captured Soul of \", StringComparison.CurrentCultureIgnoreCase))\n            {\n                name = \"Pantheon Soul\";\n            }\n            else if (name.StartsWith(\"Vial of \", StringComparison.CurrentCultureIgnoreCase))\n            {\n                name = \"Incursion Vial\";\n            }\n\n            if (_orbMap.ContainsKey(name))\n            {\n                return _orbMap[name];\n            }\n\n            Logger.Log(\"ProxyMapper.GetOrbType: Failed to get OrbType for name '\" + name + \"'.\");\n            return OrbType.Unknown;\n        }\n\n        internal static EssenceType GetEssenceType(JSONProxy.Item item)\n        {\n            return GetEssenceType(item.TypeLine);\n        }\n\n        internal static EssenceType GetEssenceType(string name)\n        {\n            try\n            {\n                return _essenceMap.First(m => name.Contains(m.Key)).Value;\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(ex);\n                Logger.Log(\"ProxyMapper.GetEssenceType Failed! ItemType = \" + name);\n\n                return EssenceType.Unknown;\n            }\n        }\n\n        public static BreachType GetBreachType(JSONProxy.Item item)\n        {\n            try\n            {\n                return _breachMap.First(m => item.TypeLine.Contains(m.Key)).Value;\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(ex);\n                Logger.Log(\"ProxyMapper.GetBreachType Failed! ItemType = \" + item.TypeLine);\n\n                return BreachType.Unknown;\n            }\n        }\n\n        public static LegionFaction GetLegionFaction(JSONProxy.Item item)\n        {\n            try\n            {\n                return _legionMap.First(m => item.TypeLine.Contains(m.Key)).Value;\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(ex);\n                Logger.Log(\"ProxyMapper.GetLegionFaction Failed! ItemType = \" + item.TypeLine);\n\n                return LegionFaction.Unknown;\n            }\n        }\n\n        internal static List<Property> GetProperties(List<JSONProxy.Property> properties)\n        {\n            return properties.Select(p => new Property(p)).ToList();\n        }\n\n        internal static List<Requirement> GetRequirements(List<JSONProxy.Requirement> requirements)\n        {\n            if (requirements == null)\n                return new List<Requirement>();\n\n            return requirements.Select(r => new Requirement(r)).ToList();\n        }\n\n        internal static int GetQuality(List<JSONProxy.Property> properties)\n        {\n            return Convert.ToInt32(_qualityRx.Match(GetPropertyByName(properties, Quality)).Groups[\"quality\"].Value);\n        }\n\n        internal static List<Tab> GetTabs(List<JSONProxy.Tab> tabs)\n        {\n            try\n            {\n                return tabs.Select(t => new Tab(t)).ToList();\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Error in ProxyMapper.GetTabs: \" + ex);\n                throw;\n            }\n        }\n\n        public static ChargeInfo GetCharges(List<JSONProxy.Property> list)\n        {\n            try\n            {\n                var chargeSize = list.Find(p => p.Name == Charges);\n                if (chargeSize == null)\n                    return new ChargeInfo(0, 0);\n\n                var qty = chargeSize.Values[0] as JArray;\n\n                var max = chargeSize.Values[1] as JArray;\n\n                return new ChargeInfo(int.Parse(qty.First.ToString()), int.Parse(max.First.ToString()));\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Error in ProxyMapper.GetCharges: \" + ex);\n            }\n\n            return new ChargeInfo(1, 1);\n        }\n\n        public static int GetNetTier(List<JSONProxy.Property> properties)\n        {\n            string maybeNetTier = GetPropertyByName(properties, NetTier);\n            if (string.IsNullOrWhiteSpace(maybeNetTier))\n                return 0;\n\n            return Convert.ToInt32(maybeNetTier);\n        }\n\n        public static string GetGenus(List<JSONProxy.Property> properties)\n        {\n            return GetPropertyByName(properties, Genus);\n        }\n\n        public static string GetGroup(List<JSONProxy.Property> properties)\n        {\n            return GetPropertyByName(properties, Group);\n        }\n\n        public static string GetFamily(List<JSONProxy.Property> properties)\n        {\n            return GetPropertyByName(properties, Family);\n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/QuestItem.cs",
    "content": "﻿using System;\n\nnamespace POEApi.Model\n{\n    public class QuestItem : Item\n    {\n        public QuestItem(JSONProxy.Item item) : base(item)\n        {\n            \n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/Requirement.cs",
    "content": "﻿using Newtonsoft.Json.Linq;\n\nnamespace POEApi.Model\n{\n    public class Requirement\n    {\n        public string Name { get; set; }\n        public string Value { get; set; }\n        public bool NameFirst { get; set; }\n\n        internal Requirement(JSONProxy.Requirement proxy)\n        {\n            Name = proxy.Name;\n            NameFirst = proxy.DisplayMode == 0;\n            Value = ((JArray)proxy.Values[0])[0].ToString();\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Resonator.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public class Resonator : Item\n    {\n        public Resonator(JSONProxy.Item item) : base(item)\n        {\n\n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/Scarab.cs",
    "content": "﻿using System;\n\nnamespace POEApi.Model\n{\n    public class Scarab : Item\n    {\n        public Scarab(JSONProxy.Item item) : base(item)\n        {\n            ScarabRank = GetScarabRank();\n            ScarabEffect = GetScarabEffect();\n        }\n\n        public ScarabRank ScarabRank { get; }\n\n        public ScarabEffect ScarabEffect { get; }\n\n        private ScarabEffect GetScarabEffect()\n        {\n            ScarabEffect result = ScarabEffect.Unknown;\n\n            Enum.TryParse(TypeLine.Split(' ')[1], true, out result);\n\n            return result;\n        }\n\n        private ScarabRank GetScarabRank()\n        {\n            ScarabRank result = ScarabRank.Unknown;\n\n            Enum.TryParse(TypeLine.Split(' ')[0], true, out result);\n\n            return result;\n        }\n    }\n\n    public enum ScarabRank\n    {\n        Unknown,\n\n        Rusted,\n        Polished,\n        Gilded\n    }\n\n    public enum ScarabEffect\n    {\n        Unknown,\n\n        Ambush,\n        Bestiary,\n        Breach,\n        Cartography,\n        Divination,\n        Elder,\n        Harbinger,\n        Perandus,\n        Reliquary,\n        Shaper,\n        Sulphite,\n        Torment\n    }\n}"
  },
  {
    "path": "POEApi.Model/Settings.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Linq;\nusing System.Xml.Linq;\nusing Google.Protobuf;\nusing POEApi.Infrastructure;\n\nnamespace POEApi.Model\n{\n    //Do you want to be refactored settings.cs? Because this is how you end up getting refactored.\n    public static class Settings\n    {\n        private const string SaveLocation = \"Settings.xml\";\n        private const string DataLocation = \"Data.xml\";\n        private const string BuyoutLocation = \"Buyouts.xml\";\n        private const string ItemFilterConfigLocation = \"ItemFilterConfig.json\";\n        private static Google.Protobuf.Reflection.TypeRegistry ProtoTypeRegistry;\n\n        public static Dictionary<OrbType, CurrencyRatio> CurrencyRatios { get; private set; }\n        public static Dictionary<string, string> UserSettings { get; private set; }\n        public static Dictionary<string, string> ProxySettings { get; private set; }\n        public static Dictionary<string, List<string>> Lists { get; private set; }\n        public static Dictionary<string, ItemTradeInfo> Buyouts { get; private set; }\n        public static Dictionary<string, string> TabsBuyouts { get; private set; }\n        public static Dictionary<string, ShopSetting> ShopSettings { get; private set; }\n        public static Protobuf.ItemFilterConfig ItemFilterConfig { get; private set; }\n        public static List<string> PopularGems { get; private set; }\n        public static List<string> DropOnlyGems { get; private set; }\n        private static XElement settingsFile;\n        private static XElement buyoutFile;\n\n        public static Dictionary<GearType, List<string>> GearBaseTypes { get; private set; }\n        public static List<FatedUniqueInfo> FatedUniques { get; private set; }\n\n        static Settings()\n        {\n            settingsFile = XElement.Load(SaveLocation);\n            CurrencyRatios = settingsFile.Elements(\"Ratios\").Descendants().ToDictionary(orb => orb.Attribute(\"type\").GetEnum<OrbType>(), orb => new CurrencyRatio(orb.Attribute(\"type\").GetEnum<OrbType>(), GetOrbAmount(orb), GetChaosAmount(orb)));\n\n            UserSettings = GetStandardNameValue(\"UserSettings\");\n            ProxySettings = GetStandardNameValue(\"ProxySettings\");\n\n            Lists = new Dictionary<string, List<string>>();\n\n            if (settingsFile.Element(\"Lists\") != null)\n                Lists = settingsFile.Element(\"Lists\").Elements(\"List\")\n                    .ToDictionary(list => list.Attribute(\"name\").Value, list => list.Elements(\"Item\")\n                    .Select(e => e.Attribute(\"value\").Value).ToList());\n\n            LoadBuyouts();\n\n            PopularGems = new List<string>();\n            if (settingsFile.Element(\"PopularGems\") != null)\n                PopularGems = settingsFile.Element(\"PopularGems\").Elements(\"Gem\")\n                    .Select(e => e.Attribute(\"name\").Value).ToList();\n\n            DropOnlyGems = new List<string>();\n            if (settingsFile.Element(\"DropOnlyGems\") != null)\n                DropOnlyGems = settingsFile.Element(\"DropOnlyGems\").Elements(\"Gem\")\n                    .Select(e => e.Attribute(\"name\").Value).ToList();\n\n            LoadGearTypeData();\n            LoadShopSettings();\n\n            ProtoTypeRegistry = Google.Protobuf.Reflection.TypeRegistry.FromMessages(\n                Protobuf.ChancingBasesFilterRuleConfig.Descriptor,\n                Protobuf.MissingSameBaseTypesFilterRuleConfig.Descriptor);\n            LoadItemFilterConfig();\n        }\n\n        private static void LoadBuyouts()\n        {\n            try\n            {\n                buyoutFile = XElement.Load(BuyoutLocation);\n                Buyouts = new Dictionary<string, ItemTradeInfo>();\n\n                if (buyoutFile.Element(\"ItemBuyouts\") != null)\n                    Buyouts = LoadItemBuyouts();\n\n                TabsBuyouts = new Dictionary<string, string>();\n                if (buyoutFile.Element(\"TabBuyouts\") != null)\n                    TabsBuyouts = buyoutFile.Element(\"TabBuyouts\").Elements(\"Item\").ToDictionary(list => list.Attribute(\"id\").Value, list => list.Attribute(\"value\").Value);\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Error loading Buyouts: \" + ex.ToString());\n                throw ex;\n            }\n        }\n\n        private static Dictionary<string, ItemTradeInfo> LoadItemBuyouts()\n        {            \n            var items = buyoutFile.Element(\"ItemBuyouts\").Elements(\"Item\");\n            var legacyBuyouts = items.Where(i => i.Attribute(\"value\") != null).Any();\n\n            if (legacyBuyouts)\n                return items.ToDictionary(list => (string)list.Attribute(\"id\"), list => new ItemTradeInfo(list.Attribute(\"value\").Value, string.Empty, string.Empty, string.Empty));\n\n            return items.ToDictionary(list => (string)list.Attribute(\"id\"), list => new ItemTradeInfo(TryGetValue(list, \"BuyoutValue\"), TryGetValue(list, \"PriceValue\"), TryGetValue(list, \"CurrentOfferValue\"), TryGetValue(list, \"Notes\")));\n        }\n\n        private static void LoadShopSettings()\n        {\n            ShopSettings = settingsFile.Elements(\"ShopSettings\").Descendants().ToDictionary(shop => shop.Attribute(\"League\").Value, shop => CreateShopSetting(shop));\n        }\n\n        private static void LoadItemFilterConfig()\n        {\n            if (!System.IO.File.Exists(ItemFilterConfigLocation))\n                return;\n\n            string jsonStringRead = System.IO.File.ReadAllText(ItemFilterConfigLocation);\n            var jsonParser = new JsonParser(new JsonParser.Settings(10, ProtoTypeRegistry));\n            try\n            {\n                ItemFilterConfig = jsonParser.Parse<Protobuf.ItemFilterConfig>(jsonStringRead);\n            }\n            catch (InvalidJsonException ex)\n            {\n                Logger.Log(string.Format(\"Failed to parse an ItemFilterConfig from the json string '{0}': {1}\",\n                    jsonStringRead, ex.ToString()));\n            }\n            catch (System.InvalidOperationException ex)\n            {\n                Logger.Log(string.Format(\"Failed to parse an ItemFilterConfig from the json string '{0}': {1}\",\n                    jsonStringRead, ex.ToString()));\n            }\n        }\n\n        private static ShopSetting CreateShopSetting(XElement shop)\n        {\n            return new ShopSetting { ThreadId = shop.Attribute(\"ThreadId\").Value, ThreadTitle = shop.Attribute(\"ThreadTitle\").Value };\n        }\n\n        private static string TryGetValue(XElement list, string key)\n        {\n            if (list.Attribute(key) == null)\n                return string.Empty;\n\n            return list.Attribute(key).Value;\n        }\n\n        private static void LoadGearTypeData()\n        {\n            XElement dataDoc = XElement.Load(DataLocation);\n\n            GearBaseTypes = new Dictionary<GearType, List<string>>();\n            if (dataDoc.Element(\"GearBaseTypes\") != null)\n            {\n                GearBaseTypes = dataDoc.Element(\"GearBaseTypes\")\n                    .Elements(\"GearBaseType\")\n                    .ToDictionary(g => (GearType)Enum.Parse(typeof(GearType), g.Attribute(\"name\").Value),\n                                  g => g.Elements(\"Item\")\n                    .Select(e => e.Attribute(\"name\").Value)\n                    .Distinct()\n                    .ToList());\n            }\n\n            FatedUniques = new List<FatedUniqueInfo>();\n            if (dataDoc.Element(\"FatedUniques\") != null)\n            {\n                FatedUniques = dataDoc.Element(\"FatedUniques\")\n                    .Elements(\"FatedUnique\")\n                    .Select(e => new FatedUniqueInfo\n                    {\n                        TargetItemName = e.Attribute(\"targetName\")?.Value,\n                        FatedItemName = e.Attribute(\"fatedName\")?.Value,\n                        BaseTypeName = e.Attribute(\"baseType\")?.Value,\n                        ProphecyName = e.Attribute(\"prophecyName\")?.Value,\n                    })\n                    .ToList();\n            }\n        }\n\n        private static double GetChaosAmount(XElement orb)\n        {\n            return double.Parse(orb.Attribute(\"ChaosAmount\").Value, CultureInfo.InvariantCulture);\n        }\n\n        private static double GetOrbAmount(XElement orb)\n        {\n            return double.Parse(orb.Attribute(\"OrbAmount\").Value, CultureInfo.InvariantCulture);\n        }\n\n        private static Dictionary<string, string> GetStandardNameValue(string root)\n        {\n            return settingsFile.Elements(root).Descendants().ToDictionary(setting => setting.Attribute(\"name\").Value, setting => setting.Attribute(\"value\").Value);\n        }\n\n        public static void Save()\n        {\n            var userSettingsElements = settingsFile.Elements(\"UserSettings\").Descendants();\n            foreach (string key in UserSettings.Keys)\n            {\n                if (UserSettings[key] != null)\n                {\n                    var elementToUpdate = userSettingsElements.FirstOrDefault(x => x.Attribute(\"name\").Value == key);\n                    if (elementToUpdate != null)\n                    {\n                        elementToUpdate.Attribute(\"value\").SetValue(UserSettings[key]);\n                    }\n                    else\n                    {\n                        var newSetting = new XElement(\"Setting\", new XAttribute(\"name\", key),\n                            new XAttribute(\"value\", UserSettings[key]));\n                        settingsFile.Element(\"UserSettings\").Add(newSetting);\n                    }\n                }\n            }\n\n            foreach (OrbType key in CurrencyRatios.Keys)\n            {\n                XElement update = settingsFile.Elements(\"Ratios\").Descendants().First(x => x.Attribute(\"type\").Value == key.ToString());\n                update.Attribute(\"OrbAmount\").SetValue(CurrencyRatios[key].OrbAmount.ToString(CultureInfo.InvariantCulture));\n                update.Attribute(\"ChaosAmount\").SetValue(CurrencyRatios[key].ChaosAmount.ToString(CultureInfo.InvariantCulture));\n            }\n            \n            updateLists();\n\n            try\n            {\n                settingsFile.Save(SaveLocation);\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Couldn't save settings: \" + ex.ToString());\n            }\n        }\n\n        public static void SaveBuyouts()\n        {\n            buyoutFile.Element(\"ItemBuyouts\").RemoveNodes();\n\n            foreach (string key in Buyouts.Keys)\n            {\n                XElement buyout = new XElement(\"Item\", new XAttribute(\"id\", key), new XAttribute(\"BuyoutValue\", Buyouts[key].Buyout), new XAttribute(\"PriceValue\", Buyouts[key].Price), new XAttribute(\"CurrentOfferValue\", Buyouts[key].CurrentOffer), new XAttribute(\"Notes\", Buyouts[key].Notes));\n                buyoutFile.Element(\"ItemBuyouts\").Add(buyout);\n            }\n\n            buyoutFile.Save(BuyoutLocation);\n        }\n\n        public static void SaveTabBuyouts()\n        {\n            buyoutFile.Element(\"TabBuyouts\").RemoveNodes();\n\n            foreach (var item in TabsBuyouts)\n            {\n                XElement tabBuyout = new XElement(\"Item\", new XAttribute(\"id\", item.Key), new XAttribute(\"value\", item.Value));\n                buyoutFile.Element(\"TabBuyouts\").Add(tabBuyout);\n            }\n\n            buyoutFile.Save(BuyoutLocation);\n        }\n\n        public static void SaveLists()\n        {\n            updateLists();\n            settingsFile.Save(SaveLocation);\n        }\n\n        private static void updateLists()\n        {\n            var listKeys = Settings.Lists.Keys.Where(k => k == \"IgnoreTabsInRecipes\" || k == \"MyCharacters\" || k == \"MyLeagues\");\n\n            foreach (var listKey in listKeys)\n            {\n                XElement original = settingsFile.Element(\"Lists\").Descendants().FirstOrDefault(x => x.Attribute(\"name\") != null && string.Equals(x.Attribute(\"name\").Value, listKey));\n\n                if (original == null)\n                    original = new XElement(\"List\", new XAttribute(\"name\", listKey));\n\n                original.RemoveNodes();\n\n                foreach (var listValue in Settings.Lists[listKey])\n                    original.Add(new XElement(\"Item\", new XAttribute(\"value\", listValue)));\n            }\n        }\n\n        public static bool SaveShopSettings()\n        {\n            try\n            {\n                bool success = true;\n                if (!settingsFile.Elements(\"ShopSettings\").Any())\n                    settingsFile.Add(new XElement(\"ShopSettings\"));\n\n                settingsFile.Element(\"ShopSettings\").RemoveNodes();\n\n                foreach (var shop in ShopSettings)\n                {\n                    if (shop.Value == null)\n                    {\n                        Logger.Log(string.Format(\"Shop settings for league {0} is null while trying to save settings.\",\n                            shop.Key));\n                        success = false;\n                        continue;\n                    }\n\n                    XElement buyout = new XElement(\"Shop\",\n                        new XAttribute(\"League\", shop.Key),\n                        new XAttribute(\"ThreadId\", shop.Value.ThreadId),\n                        new XAttribute(\"ThreadTitle\", shop.Value.ThreadTitle));\n                    settingsFile.Element(\"ShopSettings\").Add(buyout);\n                }\n\n                settingsFile.Save(SaveLocation);\n                return success;\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Unable to save shop settings: \" + ex.ToString());\n                return false;\n            }\n        }\n\n        public static bool SaveItemFilterConfig()\n        {\n            if (ItemFilterConfig == null)\n                return true;\n\n            try\n            {\n                var formatter = new JsonFormatter(new JsonFormatter.Settings(false, ProtoTypeRegistry));\n                var jsonString = formatter.Format(ItemFilterConfig);\n                System.IO.File.WriteAllText(ItemFilterConfigLocation, jsonString);\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Unable to save item filter config: \" + ex.ToString());\n                return false;\n            }\n\n            return true;\n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/Settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Settings xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"Settings.xsd\">\n  <Ratios>\n    <Orb type=\"Mirror\" OrbAmount=\"1\" ChaosAmount=\"450\" />\n    <Orb type=\"Eternal\" OrbAmount=\"1\" ChaosAmount=\"50\" />\n    <Orb type=\"Imprint\" OrbAmount=\"1\" ChaosAmount=\"0\" />\n    <Orb type=\"Exalted\" OrbAmount=\"1\" ChaosAmount=\"20\" />\n    <Orb type=\"Divine\" OrbAmount=\"1\" ChaosAmount=\"8\" />\n    <Orb type=\"GemCutterPrism\" OrbAmount=\"1\" ChaosAmount=\"2\" />\n    <Orb type=\"Chisel\" OrbAmount=\"2.5\" ChaosAmount=\"1\" />\n    <Orb type=\"Regal\" OrbAmount=\"1\" ChaosAmount=\"2\" />\n    <Orb type=\"Chaos\" OrbAmount=\"1\" ChaosAmount=\"1\" />\n    <Orb type=\"Regret\" OrbAmount=\"1\" ChaosAmount=\"1\" />\n    <Orb type=\"Blessed\" OrbAmount=\"2\" ChaosAmount=\"1\" />\n    <Orb type=\"Scouring\" OrbAmount=\"2.5\" ChaosAmount=\"1\" />\n    <Orb type=\"Fusing\" OrbAmount=\"2.5\" ChaosAmount=\"1\" />\n    <Orb type=\"Alchemy\" OrbAmount=\"2.5\" ChaosAmount=\"1\" />\n    <Orb type=\"AlchemyShard\" OrbAmount=\"40\" ChaosAmount=\"1\" />\n    <Orb type=\"Chance\" OrbAmount=\"8\" ChaosAmount=\"1\" />\n    <Orb type=\"JewelersOrb\" OrbAmount=\"10\" ChaosAmount=\"1\" />\n    <Orb type=\"Alteration\" OrbAmount=\"20\" ChaosAmount=\"1\" />\n    <Orb type=\"Chromatic\" OrbAmount=\"20\" ChaosAmount=\"1\" />\n    <Orb type=\"VaalOrb\" OrbAmount=\"1\" ChaosAmount=\"1\" />\n  </Ratios>\n  <PopularGems>\n    <Gem name=\"Cast when Damage Taken Support\" />\n    <Gem name=\"Cast On Critical Strike Support\" />\n    <Gem name=\"Blood Magic Support\" />\n    <Gem name=\"Item Quantity Support\" />\n    <Gem name=\"Life Gain on Hit Support\" />\n    <Gem name=\"Life Leech Support\" />\n    <Gem name=\"Multistrike Support\" />\n    <Gem name=\"Reduced Mana Support\" />\n    <Gem name=\"Spell Totem Support\" />\n    <Gem name=\"Chain Support\" />\n    <Gem name=\"Faster Attacks Support\" />\n    <Gem name=\"Greater Multiple Projectiles Support\" />\n    <Gem name=\"Lesser Multiple Projectiles Support\" />\n    <Gem name=\"Added Chaos Damage Support\" />\n    <Gem name=\"Item Rarity Support\" />\n    <Gem name=\"Concentrated Effect Support\" />\n    <Gem name=\"Elemental Hit\" />\n    <Gem name=\"Elemental Proliferation Support\" />\n    <Gem name=\"Elemental Weakness\" />\n    <Gem name=\"Temporal Chains\" />\n    <Gem name=\"Faster Casting Support\" />\n  </PopularGems>\n  <DropOnlyGems>\n    <Gem name=\"Empower Support\" />\n    <Gem name=\"Enhance Support\" />\n    <Gem name=\"Enlighten Support\" />\n    <Gem name=\"Portal\" />\n  </DropOnlyGems>\n  <UserSettings>\n    <Setting name=\"AccountLogin\" value=\"\" />\n    <Setting name=\"AccountPassword\" value=\"\" />\n    <Setting name=\"AccountName\" value=\"\" />\n    <Setting name=\"UseSessionID\" value=\"false\" />\n    <Setting name=\"FavoriteLeague\" value=\"\" />\n    <Setting name=\"FavoriteCharacter\" value=\"\" />\n    <Setting name=\"CompactMode\" value=\"false\" />\n    <Setting name=\"MinimalMode\" value=\"false\" />\n    <Setting name=\"DownloadOnlyMyLeagues\" value=\"false\" />\n    <Setting name=\"DownloadOnlyMyCharacters\" value=\"false\" />\n    <Setting name=\"CurrencyDistributionMetric\" value=\"Chaos\" />\n    <Setting name=\"EmbedBuyouts\" value=\"True\" />\n    <Setting name=\"BuyoutItemsOnlyVisibleInBuyoutsTag\" value=\"False\" />\n    <Setting name=\"OnlyDisplayBuyouts\" value=\"false\" />\n    <Setting name=\"CheckForUpdates\" value=\"True\" />\n    <Setting name=\"PoeTradeRefreshEnabled\" value=\"false\" />\n    <Setting name=\"PoeTradeRefreshUrl\" value=\"\" />\n    <Setting name=\"ForceRefresh\" value=\"True\" />\n  </UserSettings>\n  <ProxySettings>\n    <Setting name=\"Enabled\" value=\"False\" />\n    <Setting name=\"Username\" value=\"\" />\n    <Setting name=\"Password\" value=\"\" />\n    <Setting name=\"Domain\" value=\"\" />\n  </ProxySettings>\n  <ShopSettings>\n    <Shop League=\"Standard\" ThreadId=\"\" ThreadTitle=\"\" />\n    <Shop League=\"Hardcore\" ThreadId=\"\" ThreadTitle=\"\" />\n    <Shop League=\"Legacy\" ThreadId=\"\" ThreadTitle=\"\" />\n    <Shop League=\"Hardcore Legacy\" ThreadId=\"\" ThreadTitle=\"\" />\n  </ShopSettings>\n  <Lists>\n    <List name=\"MyLeagues\">\n      <Item value=\"Standard\" />\n      <Item value=\"Hardcore\" />\n      <Item value=\"Harvest\" />\n      <Item value=\"Hardcore Harvest\" />\n      <Item value=\"SSF Harvest\" />\n      <Item value=\"SSF Hardcore Harvest\" />\n      <Item value=\"SSF Standard\" />\n      <Item value=\"SSF Hardcore\" />\n    </List>\n    <List name=\"MyTabs\">\n      <!--If you only want Procurement to download specific tabs list them here, eg :-->\n      <!--<Item value=\"Shop\" />-->\n    </List>\n    <List name=\"MyCharacters\">\n      <!--If you only want Procurement to download specific characters list them here, eg :-->\n      <!--<Item value=\"SomeCharacter\" />-->\n    </List>\n    <List name=\"AdditionalTemplates\">\n      <!--Add yours own templates here. Eg-->\n      <!--<Item value=\"LvlingShop.txt\"/>-->\n    </List>\n    <List name=\"IgnoreTabsInRecipes\" />\n  </Lists>\n</Settings>"
  },
  {
    "path": "POEApi.Model/Settings.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema id=\"Settings\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:element name=\"Settings\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element ref=\"Ratios\" minOccurs=\"1\" maxOccurs=\"1\" />\n        <xs:element ref=\"PopularGems\" minOccurs=\"1\" maxOccurs=\"1\" />\n        <xs:element ref=\"DropOnlyGems\" minOccurs=\"1\" maxOccurs=\"1\" />\n        <xs:element ref=\"UserSettings\" minOccurs=\"1\" maxOccurs=\"1\" />\n        <xs:element ref=\"ProxySettings\" minOccurs=\"1\" maxOccurs=\"1\" />\n        <xs:element ref=\"Lists\" minOccurs=\"1\" maxOccurs=\"1\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n\n  <!--Level 1-->\n  <xs:element name=\"Ratios\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element name=\"Orb\" minOccurs=\"1\" maxOccurs=\"unbounded\">\n          <xs:complexType>\n            <xs:attribute name=\"ChaosAmount\" type=\"xs:decimal\" use=\"required\" />\n            <xs:attribute name=\"OrbAmount\" type=\"xs:decimal\" use=\"required\" />\n            <xs:attribute name=\"type\" type=\"xs:string\" use=\"required\" />\n          </xs:complexType>\n        </xs:element>\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n <xs:element name=\"UserSettings\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element name=\"Setting\">\n          <xs:complexType>\n            <xs:sequence>\n              <xs:element name=\"AccountLogin\" type=\"AccountLogin\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"AccountPassword\" type=\"AccountPassword\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"AccountName\" type=\"AccountName\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"UseSessionID\" type=\"UseSessionID\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"FavoriteLeague\" type=\"FavoriteLeague\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"FavoriteCharacter\" type=\"FavoriteCharacter\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"CompactMode\" type=\"CompactMode\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"DownloadOnlyMyLeagues\" type=\"DownloadOnlyMyLeagues\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"DownloadOnlyMyCharacters\" type=\"DownloadOnlyMyCharacters\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"CurrencyDistributionMetric\" type=\"CurrencyDistributionMetric\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"EmbedBuyouts\" type=\"EmbedBuyouts\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"BuyoutItemsOnlyVisibleInBuyoutsTag\" type=\"BuyoutItemsOnlyVisibleInBuyoutsTag\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"CheckForUpdates\" type=\"CheckForUpdates\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"ForceRefresh\" type=\"ForceRefresh\" minOccurs=\"1\" maxOccurs=\"1\" />\n            </xs:sequence>\n          </xs:complexType>\n        </xs:element>\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element> \n  <xs:element name=\"ProxySettings\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element name=\"Setting\">\n          <xs:complexType>\n            <xs:sequence>\n              <xs:element name=\"Enabled\" type=\"Enabled\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"Username\" type=\"Username\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"Password\" type=\"Password\" minOccurs=\"1\" maxOccurs=\"1\" />\n              <xs:element name=\"Domain\" type=\"Domain\" minOccurs=\"1\" maxOccurs=\"1\" />\n            </xs:sequence>\n          </xs:complexType>\n        </xs:element>\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"Lists\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element ref=\"List\" minOccurs=\"4\" maxOccurs=\"4\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"PopularGems\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element name=\"Gem\" type=\"Gem\" minOccurs=\"1\" maxOccurs=\"unbounded\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"DropOnlyGems\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element name=\"Gem\" type=\"Gem\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n\n  <!--Level 2-->\n  <xs:complexType name=\"Gem\">\n    <xs:attribute name=\"name\" type=\"xs:string\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"AccountLogin\">\n    <xs:attribute name=\"name\" fixed=\"AccountLogin\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:string\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"AccountPassword\">\n    <xs:attribute name=\"name\" fixed=\"AccountPassword\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:string\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"AccountName\">\n    <xs:attribute name=\"name\" fixed=\"AccountName\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:string\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"UseSessionID\">\n    <xs:attribute name=\"name\" fixed=\"UseSessionID\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:boolean\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"FavoriteLeague\">\n    <xs:attribute name=\"name\" fixed=\"FavoriteLeague\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:string\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"FavoriteCharacter\">\n    <xs:attribute name=\"name\" fixed=\"FavoriteCharacter\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:string\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"CompactMode\">\n    <xs:attribute name=\"name\" fixed=\"CompactMode\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:boolean\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"DownloadOnlyMyLeagues\">\n    <xs:attribute name=\"name\" fixed=\"DownloadOnlyMyLeagues\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:boolean\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"DownloadOnlyMyCharacters\">\n    <xs:attribute name=\"name\" fixed=\"DownloadOnlyMyCharacters\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:boolean\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"CurrencyDistributionMetric\">\n    <xs:attribute name=\"name\" fixed=\"CurrencyDistributionMetric\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:string\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"EmbedBuyouts\">\n    <xs:attribute name=\"name\" fixed=\"EmbedBuyouts\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:boolean\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"BuyoutItemsOnlyVisibleInBuyoutsTag\">\n    <xs:attribute name=\"name\" fixed=\"BuyoutItemsOnlyVisibleInBuyoutsTag\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:boolean\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"CheckForUpdates\">\n    <xs:attribute name=\"name\" fixed=\"CheckForUpdates\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:boolean\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"ForceRefresh\">\n    <xs:attribute name=\"name\" fixed=\"ForceRefresh\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:boolean\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"Enabled\">\n    <xs:attribute name=\"name\" fixed=\"Enabled\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:boolean\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"Username\">\n    <xs:attribute name=\"name\" fixed=\"Username\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:string\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"Password\">\n    <xs:attribute name=\"name\" fixed=\"Password\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:string\" use=\"required\"/>\n  </xs:complexType>\n  <xs:complexType name=\"Domain\">\n    <xs:attribute name=\"name\" fixed=\"Domain\" type=\"xs:string\" use=\"required\"/>\n    <xs:attribute name=\"value\" type=\"xs:string\" use=\"required\"/>\n  </xs:complexType>\n\n  <xs:element name=\"Item\">\n    <xs:complexType>\n      <xs:attribute name=\"id\" use=\"required\" type=\"xs:string\" />\n      <xs:attribute name=\"value\" use=\"required\" type=\"xs:string\" />\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"List\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element name=\"Item\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:complexType>\n            <xs:attribute name=\"value\" use=\"required\" type=\"xs:string\" />\n          </xs:complexType>\n        </xs:element>\n      </xs:sequence>\n      <xs:attribute name=\"name\" use=\"required\">\n        <xs:simpleType>\n          <xs:restriction base=\"xs:string\">\n            <xs:enumeration value=\"MyLeagues\" />\n            <xs:enumeration value=\"MyTabs\" />\n            <xs:enumeration value=\"MyCharacters\" />\n            <xs:enumeration value=\"AdditionalTemplates\" />\n          </xs:restriction>\n        </xs:simpleType>\n      </xs:attribute>\n    </xs:complexType>\n  </xs:element>\n</xs:schema>\n"
  },
  {
    "path": "POEApi.Model/Sextant.cs",
    "content": "namespace POEApi.Model\n{\n    public class Sextant : Item\n    {\n        public SextantType Type { get; }\n\n        public Sextant(JSONProxy.Item item) : base(item)\n        {\n            if (item.TypeLine.StartsWith(\"Apprentice\"))\n                Type = SextantType.Apprentice;\n            else if (item.TypeLine.StartsWith(\"Journeyman\"))\n                Type = SextantType.Journeyman;\n            else if (item.TypeLine.StartsWith(\"Master\"))\n                Type = SextantType.Master;\n            else\n                Type = SextantType.Unknown;\n        }        \n    }\n}"
  },
  {
    "path": "POEApi.Model/SextantType.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public enum SextantType\n    {\n        Apprentice,\n        Journeyman,\n        Master,\n        Unknown\n    }\n}"
  },
  {
    "path": "POEApi.Model/ShopSetting.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public class ShopSetting\n    {\n        public string ThreadId { get; set; }\n        public string ThreadTitle { get; set; }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Socket.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public class Socket\n    {\n        public string Attribute { get; set; }\n        public int Group { get; set; }\n\n        internal Socket(JSONProxy.Socket s)\n        {\n            Attribute = s.Attr;\n            Group = s.Group;\n        }\n\n        /// <summary>\n        /// Convert the Socket attribute to something consumable by path of building\n        /// </summary>\n        /// <returns></returns>\n        public string ToPobFormat()\n        {\n            switch (Attribute)\n            {\n                case \"S\":\n                    return Red;\n                case \"I\":\n                    return Blue;\n                case \"D\":\n                    return Green;\n                case \"G\":\n                    return White;\n                default:\n                    return Abyssal; \n            }\n        }\n\n        private const string Red     = \"R\";\n        private const string Green   = \"G\";\n        private const string Blue    = \"B\";\n        private const string White   = \"W\";\n        private const string Abyssal = \"A\";\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/SocketableItem.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace POEApi.Model\n{\n    public abstract class SocketableItem : Item\n    {\n        public List<Requirement> Requirements { get; set; }\n\n        public int Socket { get; set; }\n        public string Color { get; set; }\n\n        protected SocketableItem(JSONProxy.Item item) : base(item)\n        {\n            Socket = item.Socket;\n            Color = item.Colour;\n            Requirements = ProxyMapper.GetRequirements(item.Requirements);\n        }\n    }\n}"
  },
  {
    "path": "POEApi.Model/StackInfo.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\n\nnamespace POEApi.Model\n{\n    //Todo: Stackable items now have it in the base of the message - rather than the properties. \n    //This is left here for the items that used to have their stack info in the properties - they just\n    //duplicate the information in the json\n    [DebuggerDisplay(\"{Amount}/{MaxSize}\")]\n    [Obsolete(\"Please use StackSize and MaxStackSize on the item instead.\")]\n    public class StackInfo\n    {\n        public int Amount { get; set; }\n        public int MaxSize { get; set; }\n\n        internal StackInfo(int amount, int maxSize)\n        {\n            Amount = amount;\n            MaxSize = maxSize;\n        }\n    }\n\n    public class ChargeInfo\n    {\n        public int Charges { get; set; }\n        public int MaxCharges { get; set; }\n\n        internal ChargeInfo(int charges, int maxCharges)\n        {\n            Charges = charges;\n            MaxCharges = maxCharges;\n        }\n\n        public override string ToString()\n        {\n            return $\"{Charges}/{MaxCharges}\";\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Stash.cs",
    "content": "using POEApi.Infrastructure;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Text.RegularExpressions;\n\nnamespace POEApi.Model\n{\n    public class Stash\n    {\n        private List<Item> items;\n        private const int tabSize = 144;\n        public int NumberOfTabs { get; set; }\n        public List<Tab> Tabs { get; set; }\n        private Dictionary<string, List<Item>> itemsByTab;\n        private Dictionary<string, string> tabNameByInventoryId;\n        private Dictionary<int, string> tabNameByTabId;\n\n        internal Stash(JSONProxy.Stash proxy)\n        {\n            if (proxy?.Items == null)\n            {\n                items = new List<Item>();\n                Tabs = new List<Tab>();\n                NumberOfTabs = 0;\n                return;\n            }\n\n            items = proxy.Items.Select(item => ItemFactory.Get(item)).ToList();\n            NumberOfTabs = proxy.NumTabs;\n            Tabs = ProxyMapper.GetTabs(proxy.Tabs);\n\n            tabNameByTabId = Tabs.Where(t => t.IsFakeTab == false).ToDictionary(t => t.i, t => t.Name);\n        }\n\n        public void ClearItems()\n        {\n            items.Clear();\n        }\n\n        public void Add(Stash stash)\n        {\n            items.AddRange(stash.items);\n        }\n\n        public void AddCharacterTab(Tab tab, List<Item> characterItems)\n        {\n            items.AddRange(characterItems);\n            Tabs.Add(tab);\n        }\n\n        public void RefreshAll(POEModel currentModel, string currentLeague, string accountName, string realm)\n        {\n            foreach (var tab in Tabs)\n            {\n                try\n                {\n                    RefreshTab(currentModel, currentLeague, tab.i, accountName, realm);\n                }\n                catch (Exception ex)\n                {\n                    Logger.Log(\"Error refreshing tab: \" + ex.ToString());\n                }\n            }\n        }\n\n        public void RefreshUsedTabs(POEModel currentModel, string currentLeague, string accountName, string realm)\n        {\n            var usedTabNames = items.GroupBy(i => i.InventoryId)\n                .Select(group => group.First())\n                .Select(item => item.InventoryId)\n                .Where(id => !string.IsNullOrWhiteSpace(id));  // An UnknownItem could have an invalid InventoryId.\n\n            // Items in stash tabs should have an \"InventoryId\" in the format \"Stash#\", where # is 1-based.  The\n            // corresponding numeric id of the stash tab itself is # - 1.\n            List<int> usedTabIds = new List<int>();\n            foreach (var tabName in usedTabNames)\n            {\n                var match = Regex.Match(tabName, @\"\\d+\");\n                if (match.Success)\n                {\n                    int parsedInt;\n                    if (Int32.TryParse(match.Value, out parsedInt))\n                    {\n                        usedTabIds.Add(parsedInt - 1);\n                    }\n                }\n            }\n\n            // Fake tabs are used for character inventories and are at the end of the tab list, giving them the\n            // largest id values.  We need to skip them when finding the largest id among used tabs, or else we would\n            // always refresh every tab.  However, since inventories typically are used, we want to refresh fake tabs.\n\n            var maxRealTab = Tabs.Where(t => !t.IsFakeTab)\n                .Where(t => usedTabIds.Contains(t.i))\n                .Max(t => t.i);\n\n            foreach (var tab in Tabs)\n            {\n                try\n                {\n                    if (tab.i <= maxRealTab || tab.IsFakeTab)\n                    {\n                        RefreshTab(currentModel, currentLeague, tab.i, accountName, realm);\n                    }\n                }\n                catch (Exception ex)\n                {\n                    Logger.Log(\"Error refreshing tab: \" + ex.ToString());\n                }\n            }\n        }\n\n        public void RefreshTab(POEModel currentModel, string currentLeague, int tabId, string accountName, string realm)\n        {\n            try\n            {\n                string inventId = ProxyMapper.Stash + (tabId + 1).ToString();\n                items.RemoveAll(i => i.InventoryId == inventId);\n\n                if (Tabs.First(t => t.i == tabId).IsFakeTab)\n                {\n                    refreshCharacterTab(currentModel, tabId, accountName, realm);\n                    return;\n                }\n\n                Add(currentModel.GetStash(tabId, currentLeague, accountName, realm, true));\n                refreshItemsByTabTab(tabId);\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Error refreshing tab: \" + ex.ToString());\n            }\n        }\n\n        private void refreshCharacterTab(POEModel currentModel, int tabId, string accountName, string realm)\n        {\n            var charTab = Tabs.First(t => t.i == tabId);\n\n            var characterName = charTab.Name;\n            var characterItems = currentModel.GetInventory(characterName, true, accountName, realm);\n            var characterStashItems = CharacterStashBuilder.GetCharacterStashItems(characterName, characterItems, tabId + 1);\n\n            items.AddRange(characterStashItems);\n            refreshItemsByTabTab(tabId);\n        }\n\n        public List<Item> GetItemsByTab(int tabId)\n        {\n            try\n            {\n                if (itemsByTab == null)\n                    buildItemsByTab();\n\n                ++tabId;\n                return itemsByTab[ProxyMapper.Stash + tabId.ToString()];\n            }\n            catch (Exception ex)\n            {\n                StringBuilder sb = new StringBuilder();\n\n                sb.AppendLine();\n                sb.AppendLine(\"Exception attempting to get items by tab for tabId : \" + tabId);\n                sb.AppendLine(\"Current TabIds:\");\n\n                foreach (var key in itemsByTab.Keys)\n                    sb.AppendLine(key);\n\n                sb.AppendLine(\"End of TabIds.\");\n                sb.AppendLine(\"Exception Details: \" + ex.ToString());\n\n                Logger.Log(sb.ToString());\n\n                return new List<Item>();\n            }\n        }\n\n        public string GetTabNameByTabId(int tabID)\n        {\n            return tabNameByTabId[tabID];\n        }\n\n        public string GetTabNameByInventoryId(string inventoryID)\n        {\n            if (tabNameByInventoryId == null)\n                tabNameByInventoryId = Tabs.ToDictionary(kvp => ProxyMapper.Stash + (kvp.i + 1).ToString(), kvp => kvp.Name);\n\n            return tabNameByInventoryId[inventoryID];\n        }\n\n        private void buildItemsByTab()\n        {\n            try\n            {\n                var tabs = Tabs.Select(t => ProxyMapper.Stash + (t.i + 1));\n                itemsByTab = tabs.ToDictionary(kvp => kvp, kvp => items.Where(i => i.InventoryId == kvp).ToList());\n            }\n            catch\n            {\n                StringBuilder sb = new StringBuilder();\n                sb.AppendLine(\"Error building items by tab. Tab data:\");\n\n                foreach (var tab in Tabs)\n                    sb.AppendLine(string.Format(\"i = {0}, hidden = {1}, fake = {2}\", tab.i, tab.Hidden, tab.IsFakeTab));\n\n                sb.AppendLine(\"End of tab data\");\n                Logger.Log(sb.ToString());\n\n                throw new Exception(\"Error building stash from downloaded tabs, please log a ticket at https://github.com/Stickymaddness/Procurement/ and include all your .bin files\");\n            }\n        }\n\n        private void refreshItemsByTabTab(int tabId)\n        {\n            if (itemsByTab == null)\n            {\n                buildItemsByTab();\n                return;\n            }\n\n            string inventId = ProxyMapper.Stash + (tabId + 1).ToString();\n            itemsByTab[inventId] = items.Where(i => i.InventoryId == inventId).ToList();\n        }\n\n        public List<T> Get<T>() where T : Item\n        {\n            return items.OfType<T>().ToList();\n        }\n\n        public double GetTotal(OrbType target)\n        {\n            return CurrencyHandler.GetTotal(target, Get<Currency>());\n        }\n\n        public Dictionary<OrbType, double> GetTotalCurrencyDistribution(OrbType target)\n        {\n            return CurrencyHandler.GetTotalCurrencyDistribution(target, Get<Currency>());\n        }\n\n        public Dictionary<OrbType, double> GetTotalCurrencyCount()\n        {\n            return CurrencyHandler.GetTotalCurrencyCount(Get<Currency>());\n        }\n\n        public SortedDictionary<string, int> GetTotalGemDistribution()\n        {\n            var gems = Get<Gem>();\n            var gears = items.OfType<Gear>()\n                             .Where(x => x.SocketedItems.Count > 0);\n\n            var socketedGems = gears.SelectMany(x => x.SocketedItems)\n                                    .OfType<Gem>().ToArray();\n\n            gems.AddRange(socketedGems);\n\n            return GemHandler.GetGemDistribution(gems);\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/Tab.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nnamespace POEApi.Model\n{\n    public enum TabType\n    {\n        Normal,\n        Premium,\n        Currency,\n        DivinationCard,\n        Essence,\n        Quad,\n        Map,\n        Fragment,\n        Unique,\n\n        Unknown\n    }\n\n    [DebuggerDisplay(\"{DebuggerDisplay,nq}\")]\n    public class Tab\n    {\n        public bool IsFakeTab { get; set; }\n        public TabType Type { get; set; }\n        public string Name { get; set; }\n        public int i { get; set; }\n        public Colour Colour { get; set; }\n        public string srcL { get; set; }\n        public string srcC { get; set; }\n        public string srcR { get; set; }\n        public bool Hidden { get; set; }        \n        \n        public Tab()\n        { }\n\n        public Tab(JSONProxy.Tab t)\n        {\n            Colour = new Colour() { b = t.colour.b, g = t.colour.g, r = t.colour.r };\n            i = t.i;\n            Name = t.n;\n            srcR = GetUrl(t.srcR);\n            srcC = GetUrl(t.srcC);\n            srcL = GetUrl(t.srcL); \n            Hidden = t.hidden;\n            Type = ProxyMapper.GetTabType(t.type);\n        }\n\n        private string GetUrl(string url)\n        {\n            Uri uri;\n            if (Uri.TryCreate(url, UriKind.Absolute, out uri))\n                return url;\n\n            return \"https://webcdn.pathofexile.com\" + url;\n        }\n\n        private string DebuggerDisplay\n        {\n            get { return string.Format(\"{0} Tab - \\\"{1}\\\"\", Type, Name); }\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/UnknownItem.cs",
    "content": "﻿namespace POEApi.Model\n{\n    public class UnknownItem : Item\n    {\n        private static JSONProxy.Item getDefaultItem() => new JSONProxy.Item();\n\n        public UnknownItem() : base(getDefaultItem())\n        { }\n\n        public UnknownItem(JSONProxy.Item item) : base(item)\n        {\n            ItemSource = item;\n        }\n\n        public UnknownItem(JSONProxy.Item item, string errorInformation) : this(item)\n        {\n            ErrorInformation = errorInformation;\n        }\n\n        protected override string AssembleDescriptiveName()\n        {\n            return string.Format(\"{0} {1}\", \"[Unknown Item]\", base.AssembleDescriptiveName()).TrimEnd();\n        }\n\n        public JSONProxy.Item ItemSource { get; }\n        public string ErrorInformation { get; }\n    }\n}\n"
  },
  {
    "path": "POEApi.Model/app.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Console\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.0.1.0\" newVersion=\"4.0.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Diagnostics.Tracing\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Reflection\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime.InteropServices\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.0.0\" newVersion=\"4.1.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Diagnostics.DiagnosticSource\" publicKeyToken=\"cc7b13ffcd2ddd51\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.0.1.0\" newVersion=\"4.0.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime.Extensions\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Net.Http\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n</configuration>"
  },
  {
    "path": "POEApi.Model/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n  <package id=\"Google.Protobuf\" version=\"3.8.0\" targetFramework=\"net462\" />\r\n  <package id=\"Grpc\" version=\"1.21.0\" targetFramework=\"net462\" />\r\n  <package id=\"Grpc.Core\" version=\"1.21.0\" targetFramework=\"net462\" />\r\n  <package id=\"Grpc.Core.Api\" version=\"1.21.0\" targetFramework=\"net462\" />\r\n  <package id=\"Grpc.Tools\" version=\"1.21.0\" targetFramework=\"net462\" developmentDependency=\"true\" />\r\n  <package id=\"Newtonsoft.Json\" version=\"9.0.1\" targetFramework=\"net462\" />\r\n  <package id=\"System.Interactive.Async\" version=\"3.2.0\" targetFramework=\"net462\" />\r\n</packages>"
  },
  {
    "path": "POEApi.Transport/CachedTransport.cs",
    "content": "﻿using System.IO;\nusing POEApi.Infrastructure;\nusing System.Security;\nusing POEApi.Infrastructure.Events;\nusing System.Net;\nusing System.Drawing;\n\nnamespace POEApi.Transport\n{\n    public class CachedTransport : ITransport\n    {\n        public bool Offline { get; }\n        private ITransport _innerTranport;\n        private const string _stashKey = \"stash\";\n        private CacheService _userCacheService;\n        private CacheService _commonCacheService;\n\n        public event ThottledEventHandler Throttled;\n\n        public CachedTransport(string email, ITransport innerTranport, bool offline)\n        {\n            Offline = offline;\n            _userCacheService = new CacheService(email);\n            _commonCacheService = new CacheService();\n            _innerTranport = innerTranport;\n            _innerTranport.Throttled += instance_Throttled;\n        }\n\n        private void instance_Throttled(object sender, ThottledEventArgs e)\n        {\n            if (Throttled != null)\n                Throttled(sender, e);\n        }\n\n        public bool Authenticate(string email, SecureString password)\n        {\n            return _innerTranport.Authenticate(email, password);\n        }\n\n        public Stream GetAccountName(string realm)\n        {\n            return _innerTranport.GetAccountName(realm);\n        }\n\n        public Stream GetStash(int index, string league, string accountName, string realm, bool refresh)\n        {\n            string key = string.Format(\"{0}-{1}-{2}\", league, _stashKey, index);\n\n            // TODO(20190612): Don't actually clear the cache until we successfully fetch a replacement.\n            if (refresh && _userCacheService.Exists(key))\n                _userCacheService.Remove(key);\n\n            if (!Offline && !_userCacheService.Exists(key))\n                _userCacheService.Set(key, _innerTranport.GetStash(index, league, accountName, realm));\n\n            if(_userCacheService.Exists(key))\n                return _userCacheService.Get(key);\n\n            return Stream.Null;\n        }\n\n        public Stream GetStash(int index, string league, string accountName, string realm)\n        {\n            return GetStash(index, league, accountName, realm, false);\n        }\n\n        public Stream GetImage(string url)\n        {\n            Stream ms;\n            try\n            {\n                string key = string.Concat(url.GetHash(), \".png\");\n                if (!_commonCacheService.Exists(key))\n                    _commonCacheService.Set(key, _innerTranport.GetImage(url));\n\n                ms = _commonCacheService.Get(key);\n            }\n            catch (WebException ex)\n            {\n                Logger.Log(string.Format(\"Failed to get image '{0}': {1}\", url, ex.ToString()));\n\n                ms = new MemoryStream();\n                SystemIcons.Error.Save(ms);\n                ms.Seek(0, SeekOrigin.Begin);\n            }\n\n            return ms;\n        }\n\n        public Stream GetCharacters(string realm)\n        {\n            string key = \"characterdata\";\n\n            if (!Offline && !_userCacheService.Exists(key))\n                _userCacheService.Set(key, _innerTranport.GetCharacters(realm));\n\n            if(_userCacheService.Exists(key))\n                return _userCacheService.Get(key);\n\n            return Stream.Null;\n        }\n\n        public Stream GetInventory(string characterName, bool forceRefresh, string accountName, string realm)\n        {\n            if (forceRefresh && _userCacheService.Exists(characterName))\n                _userCacheService.Remove(characterName);\n\n            if (!Offline && !_userCacheService.Exists(characterName))\n                _userCacheService.Set(characterName, _innerTranport.GetInventory(characterName, forceRefresh, accountName, realm));\n\n            if(_userCacheService.Exists(characterName))\n                return _userCacheService.Get(characterName);\n\n            return Stream.Null;\n        }\n\n        public bool UpdateThread(string threadID, string threadTitle, string threadText)\n        {\n            return _innerTranport.UpdateThread(threadID, threadTitle, threadText);\n        }\n\n        public bool BumpThread(string threadID, string threadTitle)\n        {\n            return _innerTranport.BumpThread(threadID, threadTitle);\n        }\n    }\n}"
  },
  {
    "path": "POEApi.Transport/HttpTransport.cs",
    "content": "﻿using System;\r\nusing System.Collections.Generic;\r\nusing System.IO;\r\nusing System.Net;\r\nusing System.Net.Http;\r\nusing System.Text;\r\nusing POEApi.Infrastructure;\r\nusing System.Security;\r\nusing POEApi.Infrastructure.Events;\r\nusing System.Text.RegularExpressions;\r\nusing System.Threading.Tasks;\r\nusing CloudflareSolverRe; \r\n\r\nnamespace POEApi.Transport\r\n{\r\n    public class HttpTransport : ITransport\r\n    {\r\n        protected enum HttpMethod { GET, POST }\r\n\r\n        private string _email;\r\n        private CookieContainer credentialCookies;\r\n\r\n        private bool _useProxy = false;\r\n        private string _proxyUser;\r\n        private string _proxyPassword;\r\n        private string _proxyDomain;\r\n\r\n        private const string LoginURL = @\"https://www.pathofexile.com/login\";\r\n        private const string AccountURL = @\"https://www.pathofexile.com/my-account\";\r\n        private const string AccountNameURL = @\"https://api.pathofexile.com/profile\";\r\n        private const string CharacterURL = @\"https://www.pathofexile.com/character-window/get-characters?&realm={0}\";\r\n        private const string StashURL = @\"https://www.pathofexile.com/character-window/get-stash-items?league={0}&tabs=1&tabIndex={1}&accountName={2}&realm={3}\";\r\n        private const string InventoryURL = @\"https://www.pathofexile.com/character-window/get-items?character={0}&accountName={1}&realm={2}\";\r\n        private const string HashRegEx = \"name=\\\\\\\"hash\\\\\\\" value=\\\\\\\"(?<hash>[a-zA-Z0-9-]{1,})\\\\\\\"\";\r\n        private const string TitleRegex = @\"\\<title\\b[^>]*\\>\\s*(?<Title>[\\s\\S]*?)\\</title\\>\";\r\n\r\n        private const string UpdateShopURL = @\"https://www.pathofexile.com/forum/edit-thread/{0}\";\r\n        private const string BumpShopURL = @\"https://www.pathofexile.com/forum/post-reply/{0}\";\r\n\r\n        protected const string UserAgent =\r\n            @\"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; \" +\r\n            @\".NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; \" +\r\n            @\".NET CLR 1.1.4322)\";\r\n        protected const string ContentType = \"application/x-www-form-urlencoded\";\r\n\r\n        public event ThottledEventHandler Throttled;\r\n\r\n        private static TaskThrottle _taskThrottle = new TaskThrottle(TimeSpan.FromMinutes(1), 42, 42);\r\n\r\n        public HttpTransport(string login)\r\n        {\r\n            credentialCookies = new CookieContainer();\r\n            _email = login;\r\n            _taskThrottle.Throttled += new ThottledEventHandler(instance_Throttled);\r\n        }\r\n\r\n        public HttpTransport(string login, string proxyUser, string proxyPassword, string proxyDomain)\r\n            : this(login)\r\n        {\r\n            _proxyUser = proxyUser;\r\n            _proxyPassword = proxyPassword;\r\n            _proxyDomain = proxyDomain;\r\n            _useProxy = true;\r\n        }\r\n\r\n        private void instance_Throttled(object sender, ThottledEventArgs e)\r\n        {\r\n            if (Throttled != null)\r\n                Throttled(this, e);\r\n        }\r\n\r\n        public bool Authenticate(string email, SecureString password)\r\n        {\r\n            // A lot of users are reporting issue with logging in. Trimming their SessionID will hopefully improve\r\n            // the situation.\r\n            var unwrappedPassword = password.UnWrap();\r\n            if (!string.IsNullOrEmpty(unwrappedPassword))\r\n            {\r\n                unwrappedPassword = unwrappedPassword.Trim();\r\n            }\r\n\r\n            credentialCookies.Add(new Cookie(\"POESESSID\", unwrappedPassword, \"/\", \".pathofexile.com\"));\r\n\r\n            TraditionalSessionIdLogin();\r\n            return true;\r\n        }\r\n\r\n        private void CloudFlareSessionIdLogin()\r\n        {\r\n            try\r\n            {\r\n                using (var clearanceHandler = new ClearanceHandler { })\r\n                using (var handler = new HttpClientHandler() { CookieContainer = credentialCookies, Proxy = GetProxySettings() })\r\n                {\r\n                    clearanceHandler.InnerHandler = handler;\r\n\r\n                    using (var client = new HttpClient(clearanceHandler))\r\n                    {\r\n                        var result = client.GetStringAsync(new Uri(LoginURL)).Result;\r\n                    }\r\n                }\r\n            }\r\n            catch (AggregateException ex) when (ex.InnerException is CloudflareSolverRe.Exceptions.CloudflareClearanceException)\r\n            {\r\n                // After all retries, clearance still failed.\r\n                throw new Exception(\"Cloud flare clearance failed, please wait one minute and try again\", ex);\r\n            }\r\n            catch (AggregateException ex) when (ex.InnerException is TaskCanceledException)\r\n            {\r\n                Logger.Log(ex);\r\n                throw;\r\n            }\r\n        }\r\n\r\n        private void TraditionalSessionIdLogin()\r\n        {\r\n            using (var sessionIdLoginResponse = BuildHttpRequestAndGetResponse(HttpMethod.GET, AccountURL))\r\n            {\r\n                if (sessionIdLoginResponse.ResponseUri.ToString() != AccountURL)\r\n                {\r\n                    throw new LogonFailedException();\r\n                }\r\n            }\r\n        }\r\n\r\n        private HttpWebRequest GetHttpRequest(HttpMethod method, string url, bool? allowAutoRedirects = null,\r\n            string requestData = null)\r\n        {\r\n            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url));\r\n            request.CookieContainer = credentialCookies;\r\n            request.UserAgent = UserAgent;\r\n            request.Method = method.ToString();\r\n            request.Proxy = GetProxySettings();\r\n            request.ContentType = ContentType;\r\n\r\n            if (allowAutoRedirects.HasValue)\r\n            {\r\n                request.AllowAutoRedirect = allowAutoRedirects.Value;\r\n            }\r\n\r\n            if (method == HttpMethod.POST && requestData != null)\r\n            {\r\n                byte[] byteData = UTF8Encoding.UTF8.GetBytes(requestData);\r\n                request.ContentLength = byteData.Length;\r\n                Stream postStream = request.GetRequestStream();\r\n                postStream.Write(byteData, 0, byteData.Length);\r\n            }\r\n\r\n            return request;\r\n        }\r\n\r\n        private IWebProxy GetProxySettings()\r\n        {\r\n            if (_useProxy)\r\n                return ProcessProxySettings();\r\n\r\n            return null;\r\n        }\r\n\r\n        public IWebProxy ProcessProxySettings()\r\n        {\r\n            var proxy = WebRequest.DefaultWebProxy;\r\n            proxy.Credentials = new NetworkCredential(_proxyUser, _proxyPassword, _proxyDomain);\r\n\r\n            return proxy;\r\n        }\r\n\r\n        protected HttpWebResponse BuildHttpRequestAndGetResponse(HttpMethod method, string url,\r\n            bool? allowAutoRedirects = null, string requestData = null)\r\n        {\r\n            _taskThrottle.StartTask();\r\n            try\r\n            {\r\n                HttpWebRequest request = GetHttpRequest(method, url, allowAutoRedirects, requestData);\r\n                return (HttpWebResponse)request.GetResponse();\r\n            }\r\n            catch (System.Net.WebException ex)\r\n            {\r\n                Logger.Log(string.Format(\"Failed to build HTTP request and get response for: method={0}, url='{1}', \" +\r\n                    \"allowAutoRedirects={2}, requestData='{3}': {4}\", method.ToString(), url, allowAutoRedirects,\r\n                    requestData, ex.Message));\r\n                // It's possible (guaranteed?) that the WebException will have a response, which can be a valid page.\r\n                // For example, for a 503 error when the site is down for maintenance:\r\n                // ((HttpWebResponse)ex.Response).StatusCode --> ServiceUnavailable (enum)\r\n                // ((HttpWebResponse)ex.Response).StatusDescription --> \"Service Temporarily Unavailable\"\r\n                // In theory, we could return this response, and the caller would need to figure out if it is valid.\r\n                throw;\r\n            }\r\n            finally\r\n            {\r\n                _taskThrottle.CompleteTask();\r\n            }\r\n        }\r\n\r\n        protected MemoryStream PerformHttpRequest(HttpMethod method, string url, bool? allowAutoRedirects = null,\r\n            string requestData = null)\r\n        {\r\n            using (var response = BuildHttpRequestAndGetResponse(method, url, allowAutoRedirects, requestData))\r\n            {\r\n                MemoryStream responseStream = GetMemoryStreamFromResponse(response);\r\n                return responseStream;\r\n            }\r\n        }\r\n\r\n        // The refresh parameter in this ITransport implementation is ignored.\r\n        public Stream GetStash(int index, string league, string accountName, string realm, bool refresh)\r\n        {\r\n            var url = string.Format(StashURL, league, index, accountName, realm);\r\n            return PerformHttpRequest(HttpMethod.GET, url);\r\n        }\r\n\r\n        public Stream GetStash(int index, string league, string accountName, string realm)\r\n        {\r\n            return GetStash(index, league, accountName, realm, false);\r\n        }\r\n\r\n        public Stream GetCharacters(string realm )\r\n        {\r\n            return PerformHttpRequest(HttpMethod.GET, string.Format(CharacterURL, realm));\r\n        }\r\n\r\n        public Stream GetAccountName(string realm )\r\n        {\r\n            return PerformHttpRequest(HttpMethod.GET, string.Format(AccountNameURL, realm));\r\n        }\r\n\r\n        // TODO(20180928): Throttle performing these requests?\r\n        public Stream GetImage(string url)\r\n        {\r\n            WebClient client = new WebClient();\r\n            client.Proxy = ProcessProxySettings();\r\n            return new MemoryStream(client.DownloadData(url));\r\n        }\r\n\r\n        public Stream GetInventory(string characterName, bool forceRefresh, string accountName, string realm )\r\n        {\r\n            var url = string.Format(InventoryURL, characterName, accountName, realm);\r\n            return PerformHttpRequest(HttpMethod.GET, url);\r\n        }\r\n\r\n        private MemoryStream GetMemoryStreamFromResponse(HttpWebResponse response)\r\n        {\r\n            StreamReader reader = new StreamReader(response.GetResponseStream());\r\n            byte[] buffer = reader.ReadAllBytes();\r\n\r\n            return new MemoryStream(buffer);\r\n        }\r\n\r\n        public bool UpdateThread(string threadID, string threadTitle, string threadText)\r\n        {\r\n            try\r\n            {\r\n                string threadHash = GetThreadHash(string.Format(UpdateShopURL, threadID), HashRegEx);\r\n                if (string.IsNullOrEmpty(threadHash))\r\n                {\r\n                    throw new ForumThreadException(\"Unable to obtain thread hash to update thread.\");\r\n                }\r\n\r\n                StringBuilder data = new StringBuilder();\r\n                data.Append(\"title=\" + Uri.EscapeDataString(threadTitle));\r\n                data.Append(\"&content=\" + Uri.EscapeDataString(threadText));\r\n                data.Append(\"&hash=\" + threadHash);\r\n\r\n                var response = BuildHttpRequestAndGetResponse(HttpMethod.POST, string.Format(UpdateShopURL, threadID),\r\n                    true, data.ToString());\r\n                // TODO: Check if response.ResponseUri is for a view-thread URI or an edit-thread URI to determine if\r\n                // the update request was a success or failure, respectively.\r\n\r\n                return true;\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Logger.Log(\"Error updating shop thread: \" + ex.ToString());\r\n                return false;\r\n            }\r\n        }\r\n\r\n        public bool BumpThread(string threadID, string threadTitle)\r\n        {\r\n            try\r\n            {\r\n                string threadHash = ValidateAndGetHash(string.Format(BumpShopURL, threadID), threadTitle,\r\n                    HashRegEx);\r\n                if (string.IsNullOrEmpty(threadHash))\r\n                {\r\n                    throw new ForumThreadException(\"Unable to obtain thread hash to bump thread.\");\r\n                }\r\n\r\n                StringBuilder data = new StringBuilder();\r\n                data.Append(\"hash=\" + threadHash);\r\n                data.Append(\"&content=\" + Uri.EscapeDataString(\r\n                    \"[url=https://github.com/Stickymaddness/Procurement/]Bumped with Procurement![/url]\"));\r\n                data.Append(\"&post_submit=\" + Uri.EscapeDataString(\"Submit\"));\r\n\r\n                var response = BuildHttpRequestAndGetResponse(HttpMethod.POST, string.Format(BumpShopURL, threadID),\r\n                    true, data.ToString());\r\n                // TODO: Check if response.ResponseUri is for a view-thread URI or an post-reply URI to determine if\r\n                // the post request was a success or failure, respectively.\r\n\r\n                return true;\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Logger.Log(\"Error bumping shop thread: \" + ex.ToString());\r\n                return false;\r\n            }\r\n        }\r\n\r\n        private string ValidateAndGetHash(string url, string threadTitle, string hashRegex)\r\n        {\r\n            string html = DownloadPageData(url);\r\n\r\n            var title = Regex.Match(html, TitleRegex).Groups[\"Title\"].Value;\r\n\r\n            if (!title.ToLower().Contains(threadTitle.ToLower()))\r\n                throw new ForumThreadException();\r\n\r\n            return Regex.Match(html, hashRegex).Groups[\"hash\"].Value;\r\n        }\r\n\r\n        private string GetThreadHash(string url, string regex)\r\n        {\r\n            string html = DownloadPageData(url);\r\n            return Regex.Match(html, regex).Groups[\"hash\"].Value;\r\n        }\r\n\r\n        private string DownloadPageData(string url)\r\n        {\r\n            var response = BuildHttpRequestAndGetResponse(HttpMethod.GET, url);\r\n            using (StreamReader reader = new StreamReader(response.GetResponseStream()))\r\n            {\r\n                return reader.ReadToEnd();\r\n            }\r\n        }\r\n    }\r\n\r\n    public class Realm\r\n    {\r\n        public const string PC = \"pc\";\r\n        public const string XBOX = \"xbox\";\r\n        public const string SONY = \"sony\";\r\n\r\n        public static IEnumerable<string> AvailableRealms = new List<string>() {PC, XBOX, SONY};\r\n    }\r\n}\r\n"
  },
  {
    "path": "POEApi.Transport/ITransport.cs",
    "content": "﻿using System.IO;\nusing System.Security;\nusing POEApi.Infrastructure.Events;\n\nnamespace POEApi.Transport\n{\n    public interface ITransport\n    {\n        bool Authenticate(string email, SecureString password);\n        Stream GetAccountName(string realm);\n        Stream GetStash(int index, string league, string accountName, string realm);\n        Stream GetStash(int index, string league, string accountName, string realm, bool refresh);\n        Stream GetImage(string url);\n        Stream GetCharacters(string realm);\n        Stream GetInventory(string characterName, bool forceRefresh, string accountName, string realm);\n        event ThottledEventHandler Throttled;\n        bool UpdateThread(string threadID, string threadTitle, string threadText);\n        bool BumpThread(string threadID, string threadTitle);\n    }\n}\n"
  },
  {
    "path": "POEApi.Transport/POEApi.Transport.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n  <PropertyGroup>\r\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\r\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\r\n    <ProductVersion>8.0.30703</ProductVersion>\r\n    <SchemaVersion>2.0</SchemaVersion>\r\n    <ProjectGuid>{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}</ProjectGuid>\r\n    <OutputType>Library</OutputType>\r\n    <AppDesignerFolder>Properties</AppDesignerFolder>\r\n    <RootNamespace>POEApi.Transport</RootNamespace>\r\n    <AssemblyName>POEApi.Transport</AssemblyName>\r\n    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>\r\n    <FileAlignment>512</FileAlignment>\r\n    <TargetFrameworkProfile>\r\n    </TargetFrameworkProfile>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DebugType>full</DebugType>\r\n    <Optimize>false</Optimize>\r\n    <OutputPath>bin\\Debug\\</OutputPath>\r\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n    <Prefer32Bit>false</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\r\n    <DebugType>none</DebugType>\r\n    <Optimize>true</Optimize>\r\n    <OutputPath>bin\\Release\\</OutputPath>\r\n    <DefineConstants>TRACE</DefineConstants>\r\n    <ErrorReport>prompt</ErrorReport>\r\n    <WarningLevel>4</WarningLevel>\r\n    <Prefer32Bit>false</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <Reference Include=\"CloudflareSolverRe, Version=1.0.7.0, Culture=neutral, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\CloudflareSolverReNgosang.1.0.7.3\\lib\\netstandard1.3\\CloudflareSolverRe.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"Jint, Version=0.0.0.0, Culture=neutral, PublicKeyToken=2e92ba9c8d81157f, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\Jint.2.11.58\\lib\\net451\\Jint.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\Microsoft.Win32.Primitives.4.3.0\\lib\\net46\\Microsoft.Win32.Primitives.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System\" />\r\n    <Reference Include=\"System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.AppContext.4.3.0\\lib\\net46\\System.AppContext.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.ComponentModel.Composition\" />\r\n    <Reference Include=\"System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Console.4.3.0\\lib\\net46\\System.Console.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Core\" />\r\n    <Reference Include=\"System.Diagnostics.DiagnosticSource, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Diagnostics.DiagnosticSource.4.3.0\\lib\\net46\\System.Diagnostics.DiagnosticSource.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Diagnostics.Tracing, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Diagnostics.Tracing.4.3.0\\lib\\net462\\System.Diagnostics.Tracing.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Drawing\" />\r\n    <Reference Include=\"System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Globalization.Calendars.4.3.0\\lib\\net46\\System.Globalization.Calendars.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.IO.4.3.0\\lib\\net462\\System.IO.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.IO.Compression.4.3.0\\lib\\net46\\System.IO.Compression.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.IO.Compression.FileSystem\" />\r\n    <Reference Include=\"System.IO.Compression.ZipFile, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.IO.Compression.ZipFile.4.3.0\\lib\\net46\\System.IO.Compression.ZipFile.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.IO.FileSystem.4.3.0\\lib\\net46\\System.IO.FileSystem.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.IO.FileSystem.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.IO.FileSystem.Primitives.4.3.0\\lib\\net46\\System.IO.FileSystem.Primitives.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Net.Http.4.3.0\\lib\\net46\\System.Net.Http.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Net.Sockets.4.3.0\\lib\\net46\\System.Net.Sockets.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Numerics\" />\r\n    <Reference Include=\"System.Reflection, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Reflection.4.3.0\\lib\\net462\\System.Reflection.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Runtime.4.3.0\\lib\\net462\\System.Runtime.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Runtime.Extensions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Runtime.Extensions.4.3.0\\lib\\net462\\System.Runtime.Extensions.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Runtime.InteropServices, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Runtime.InteropServices.4.3.0\\lib\\net462\\System.Runtime.InteropServices.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Runtime.InteropServices.RuntimeInformation.4.3.0\\lib\\net45\\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Security.Cryptography.Algorithms, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Security.Cryptography.Algorithms.4.3.0\\lib\\net461\\System.Security.Cryptography.Algorithms.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Security.Cryptography.Encoding.4.3.0\\lib\\net46\\System.Security.Cryptography.Encoding.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Security.Cryptography.Primitives.4.3.0\\lib\\net46\\System.Security.Cryptography.Primitives.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Security.Cryptography.X509Certificates.4.3.0\\lib\\net461\\System.Security.Cryptography.X509Certificates.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Xml.Linq\" />\r\n    <Reference Include=\"System.Data.DataSetExtensions\" />\r\n    <Reference Include=\"Microsoft.CSharp\" />\r\n    <Reference Include=\"System.Data\" />\r\n    <Reference Include=\"System.Xml\" />\r\n    <Reference Include=\"System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\r\n      <HintPath>..\\packages\\System.Xml.ReaderWriter.4.3.0\\lib\\net46\\System.Xml.ReaderWriter.dll</HintPath>\r\n      <Private>True</Private>\r\n    </Reference>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Compile Include=\"CachedTransport.cs\" />\r\n    <Compile Include=\"ITransport.cs\" />\r\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\r\n    <Compile Include=\"HttpTransport.cs\" />\r\n    <Compile Include=\"TaskThrottle.cs\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <ProjectReference Include=\"..\\POEApi.Infrastructure\\POEApi.Infrastructure.csproj\">\r\n      <Project>{2F0E4301-694B-4A26-80D8-D57042DA9D6F}</Project>\r\n      <Name>POEApi.Infrastructure</Name>\r\n    </ProjectReference>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <None Include=\"app.config\" />\r\n    <None Include=\"packages.config\" />\r\n  </ItemGroup>\r\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\r\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\r\n</Project>"
  },
  {
    "path": "POEApi.Transport/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"POEApi.Transport\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"POEApi.Transport\")]\n[assembly: AssemblyCopyright(\"Artistic License 2.0\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"8db0c28f-cbdb-43df-bcf1-c27231d4ca7e\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.29.2.0\")]\n[assembly: AssemblyFileVersion(\"1.29.2.0\")]\n\n\n\n\n"
  },
  {
    "path": "POEApi.Transport/TaskThrottle.cs",
    "content": "﻿using POEApi.Infrastructure.Events;\nusing System;\nusing System.Collections.Generic;\n\nnamespace POEApi.Transport\n{\n    public class TaskThrottle\n    {\n        protected Queue<DateTime> CurrentTasks { get; set; }\n        public TimeSpan WindowSize { get; set; }\n        public int WindowLimit { get; protected set; }\n        public int SimultaneiousTasksLimit { get; protected set; }\n\n        private int _numberOfOutstandingTasks;\n        public int NumberOfOutstandingTasks\n        {\n            get\n            {\n                return _numberOfOutstandingTasks;\n            }\n            protected set\n            {\n                _numberOfOutstandingTasks = value;\n            }\n        }\n\n        public event ThottledEventHandler Throttled;\n\n        private Object _lockObject = new Object();\n\n        public TaskThrottle(TimeSpan windowSize, int windowLimit, int simultaneiousTasksLimit)\n        {\n            CurrentTasks = new Queue<DateTime>(simultaneiousTasksLimit);\n            WindowSize = windowSize;\n            WindowLimit = windowLimit;\n            SimultaneiousTasksLimit = simultaneiousTasksLimit;\n        }\n\n        public void StartTask()\n        {\n            bool finished = false;\n            while (!finished)\n            {\n                while (NumberOfOutstandingTasks >= SimultaneiousTasksLimit)\n                {\n                    System.Threading.Thread.Sleep(100);\n                }\n\n                lock(_lockObject)\n                {\n                    if (NumberOfOutstandingTasks >= SimultaneiousTasksLimit)\n                    {\n                        // Another thread added a task to the queue before we could get the lock.\n                        continue;\n                    }\n\n                    RemvoeExpiredTasks();\n                    if (CurrentTasks.Count == WindowLimit)\n                    {\n                        TimeSpan waitTime = CurrentTasks.Dequeue() - DateTime.Now;\n                        if (waitTime.TotalMilliseconds > 0)\n                        {\n                            Throttled?.Invoke(this, new ThottledEventArgs(waitTime));\n                            System.Threading.Thread.Sleep(waitTime);\n                        }\n                    }\n\n                    System.Threading.Interlocked.Increment(ref _numberOfOutstandingTasks);\n                    CurrentTasks.Enqueue(DateTime.Now + WindowSize);\n                    finished = true;\n                }\n            }\n        }\n\n        public void CompleteTask()\n        {\n            lock(_lockObject)\n            {\n                System.Threading.Interlocked.Decrement(ref _numberOfOutstandingTasks);\n                RemvoeExpiredTasks();\n            }\n        }\n\n        protected void RemvoeExpiredTasks()\n        {\n            while (CurrentTasks.Count > 0 && CurrentTasks.Peek() <= DateTime.Now)\n            {\n                CurrentTasks.Dequeue();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "POEApi.Transport/app.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Console\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.0.1.0\" newVersion=\"4.0.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Diagnostics.Tracing\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Reflection\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime.InteropServices\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.0.0\" newVersion=\"4.1.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Diagnostics.DiagnosticSource\" publicKeyToken=\"cc7b13ffcd2ddd51\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.0.1.0\" newVersion=\"4.0.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime.Extensions\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Net.Http\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n</configuration>"
  },
  {
    "path": "POEApi.Transport/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"CloudflareSolverReNgosang\" version=\"1.0.7.3\" targetFramework=\"net462\" />\n  <package id=\"Jint\" version=\"2.11.58\" targetFramework=\"net462\" />\n  <package id=\"Microsoft.NETCore.Platforms\" version=\"1.1.0\" targetFramework=\"net462\" />\n  <package id=\"Microsoft.Win32.Primitives\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"NETStandard.Library\" version=\"1.6.1\" targetFramework=\"net462\" />\n  <package id=\"System.AppContext\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Collections\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Collections.Concurrent\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Console\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Diagnostics.Debug\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Diagnostics.DiagnosticSource\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Diagnostics.Tools\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Diagnostics.Tracing\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Globalization\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Globalization.Calendars\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.IO\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.IO.Compression\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.IO.Compression.ZipFile\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.IO.FileSystem\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.IO.FileSystem.Primitives\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Linq\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Linq.Expressions\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Net.Http\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Net.Primitives\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Net.Sockets\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.ObjectModel\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Reflection\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Reflection.Extensions\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Reflection.Primitives\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Resources.ResourceManager\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Runtime\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Runtime.Extensions\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Runtime.Handles\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Runtime.InteropServices\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Runtime.InteropServices.RuntimeInformation\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Runtime.Numerics\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Security.Cryptography.Algorithms\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Security.Cryptography.Encoding\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Security.Cryptography.Primitives\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Security.Cryptography.X509Certificates\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Text.Encoding\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Text.Encoding.Extensions\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Text.RegularExpressions\" version=\"4.3.1\" targetFramework=\"net462\" />\n  <package id=\"System.Threading\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Threading.Tasks\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Threading.Timer\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Xml.ReaderWriter\" version=\"4.3.0\" targetFramework=\"net462\" />\n  <package id=\"System.Xml.XDocument\" version=\"4.3.0\" targetFramework=\"net462\" />\n</packages>"
  },
  {
    "path": "Procurement/App.xaml",
    "content": "﻿<Application x:Class=\"Procurement.App\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:view=\"clr-namespace:Procurement.View\"\n             xmlns:controls=\"clr-namespace:Procurement.Controls\"\n             StartupUri=\"MainWindow.xaml\">\n    <Application.Resources>\n\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"/Procurement;component/Controls/TabControlStyle.xaml\" />\n            </ResourceDictionary.MergedDictionaries>\n\n            <view:VisibilityConverter x:Key=\"bc\" />\n            <view:ItemToItemHoverSymbolVisibility x:Key=\"symbolVisibility\" />\n            <view:ItemToItemHoverSymbolPath x:Key=\"symbolPath\" />\n\n            <Style x:Key=\"ShaperElderAdornerImage\" TargetType=\"Image\">\n                <Setter Property=\"HorizontalAlignment\" Value=\"Left\" />\n                <Setter Property=\"Margin\" Value=\"1\" />\n                <Setter Property=\"Source\" Value=\"{Binding Item, Converter={StaticResource symbolPath}}\" />\n                <Setter Property=\"Visibility\" Value=\"{Binding Item, Converter={StaticResource symbolVisibility},\n                    FallbackValue=Collapsed}\" />\n            </Style>\n\n            <Style x:Key=\"SingleCellItemStyle\" TargetType=\"controls:ItemDisplay\">\n                <Setter Property=\"Width\" Value=\"40\" />\n                <Setter Property=\"Height\" Value=\"40\" />\n                <Setter Property=\"HeightScale\" Value=\"38.3388\" />\n                <Setter Property=\"WidthScale\" Value=\"38.3388\" />\n            </Style>\n\n            <Style x:Key=\"FragmentItemStyle\" TargetType=\"controls:ItemDisplay\">\n                <Setter Property=\"Width\" Value=\"30\" />\n                <Setter Property=\"Height\" Value=\"30\" />\n                <Setter Property=\"HeightScale\" Value=\"30.4261\" />\n                <Setter Property=\"WidthScale\" Value=\"30.4261\" />\n            </Style>\n\n            <Style TargetType=\"{x:Type Button}\" x:Key=\"ImageButton\">\n                <Setter Property=\"Template\">\n                    <Setter.Value>\n                        <ControlTemplate TargetType=\"{x:Type Button}\">\n                            <ContentPresenter />\n                        </ControlTemplate>\n                    </Setter.Value>\n                </Setter>\n            </Style>\n\n        </ResourceDictionary>\n    </Application.Resources>\n</Application>\n"
  },
  {
    "path": "Procurement/App.xaml.cs",
    "content": "﻿using System.Windows;\nusing System.Text;\nusing System;\nusing POEApi.Infrastructure;\n\nnamespace Procurement\n{\n    public partial class App : Application\n    {\n        public App()\n        {\n            Application.Current.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(Current_DispatcherUnhandledException);\n        }\n\n        void Current_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)\n        {\n            Logger.Log(\"Application Version: \" + ApplicationState.Version);\n            Logger.Log(getEnvironementDetails());\n            Logger.Log(e.Exception.ToString());\n            MessageBox.Show(\"There was an unhandled error - Sorry! Please create a ticket on github https://github.com/Stickymaddness/Procurement/issues. If the crash occured after Procurement was done downloading, zip and include your .tab files.\");           \n        }\n\n        private string getEnvironementDetails()\n        {\n            StringBuilder builder = new StringBuilder();\n            try\n            {\n                builder.AppendLine();\n                builder.AppendLine(\"CurrentCulture: \" + System.Threading.Thread.CurrentThread.CurrentCulture.ToString());\n                builder.AppendLine(\"CurrentUICulture: \" + System.Threading.Thread.CurrentThread.CurrentUICulture.ToString());\n                builder.AppendLine(\"Operating System: \" + Environment.OSVersion.ToString());\n                builder.AppendLine(\"Current League: \" + ApplicationState.CurrentLeague);\n            }\n            catch (Exception ex)\n            {\n                builder.AppendLine(ex.ToString());\n            }\n\n            return builder.ToString();\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ApplicationState.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing POEApi.Model;\nusing System.Runtime.InteropServices;\nusing System;\nusing Procurement.ViewModel.Cache;\n\nnamespace Procurement\n{\n    public static class ApplicationState\n    {\n        /// <summary>\n        /// Application version to check for latest release.\n        /// Must begin with \"Procurement \". See: VersionChecker.cs\n        /// </summary>\n        public static string Version = \"Procurement 1.29.2\";\n        public static POEModel Model = new POEModel();\n        public static Dictionary<string, Stash> Stash = new Dictionary<string, Stash>();\n        public static Dictionary<string, Item> Inventory = new Dictionary<string, Item>();\n        public static List<Character> Characters = new List<Character>();\n        public static List<string> Leagues = new List<string>();\n        public static System.Drawing.Text.PrivateFontCollection FontCollection = new System.Drawing.Text.PrivateFontCollection();\n        private static Character currentCharacter = null;\n        public static BitmapCache BitmapCache { get; private set; }\n        public static string AccountName { get; set; }\n\n        static ApplicationState()\n        {\n            BitmapCache = new BitmapCache(imageUrl => Model.GetImage(imageUrl));\n        }\n\n        public static Character CurrentCharacter\n        {\n            get { return currentCharacter; }\n            set\n            {\n                currentCharacter = value;\n                if (CharacterChanged != null)\n                    CharacterChanged(Model, new PropertyChangedEventArgs(\"CurrentCharacter\"));\n            }\n        }\n\n        public static event PropertyChangedEventHandler LeagueChanged;\n        public static event PropertyChangedEventHandler CharacterChanged;\n        private static string currentLeague = string.Empty;\n\n        public static string CurrentLeague\n        {\n            get { return currentLeague; }\n            set\n            {\n                if (currentLeague == value)\n                    return;\n\n                currentLeague = value;\n                Characters = Model.GetCharacters(CurrentRealm).Where(c => c.League == value).ToList();\n                CurrentCharacter = Characters.FirstOrDefault();\n                if (LeagueChanged != null)\n                    LeagueChanged(Model, new PropertyChangedEventArgs(\"CurrentLeague\"));\n            }\n        }\n\n        private static Dictionary<string, List<string>> allCharactersByLeague = new Dictionary<string, List<string>>();\n        public static Dictionary<string, List<string>> AllCharactersByLeague\n        {\n            get { return allCharactersByLeague; }\n            set\n            {\n                allCharactersByLeague = value;\n            }\n        }\n\n        public static string CurrentRealm { get; set; }\n\n        public static void SetDefaults()\n        {\n            string favoriteLeague = Settings.UserSettings[\"FavoriteLeague\"];\n            if (!string.IsNullOrEmpty(favoriteLeague) && ApplicationState.Leagues.Contains(favoriteLeague))\n                CurrentLeague = favoriteLeague;\n\n            string defaultCharacter = Settings.UserSettings[\"FavoriteCharacter\"];\n            if (defaultCharacter != string.Empty && Characters.Count(c => c.Name == defaultCharacter) == 1)\n            {\n                CurrentCharacter = Characters.First(c => c.Name == defaultCharacter);\n                return;\n            }\n\n            CurrentCharacter = Characters.FirstOrDefault();\n\n            if (CurrentCharacter != null)\n                CurrentLeague = CurrentCharacter.League;\n        }\n\n        public static void InitializeFont(byte[] fontBytes)\n        {\n            IntPtr data = Marshal.AllocCoTaskMem(fontBytes.Length);\n            Marshal.Copy(fontBytes, 0, data, fontBytes.Length);\n            FontCollection.AddMemoryFont(data, fontBytes.Length);\n            Marshal.FreeCoTaskMem(data);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Controls/AbstractStashTabControl.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Media;\nusing POEApi.Infrastructure;\nusing POEApi.Model;\nusing Procurement.Interfaces;\nusing Procurement.ViewModel;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procurement.Controls\n{\n    public abstract class AbstractStashTabControl : UserControl, IStashControl\n    {\n        public static readonly DependencyProperty FiltersProperty =\n            DependencyProperty.Register(\"Filters\", typeof(IEnumerable<IFilter>), typeof(StashTabControl), null);\n\n        /// <summary>\n        /// Dictionary to tie together items and their view models, this collection is filtered and the viewModels\n        /// IsItemInFilter is updated\n        /// </summary>\n        public readonly Dictionary<Item, ItemDisplayViewModel> TabItemsToViewModels = new Dictionary<Item, ItemDisplayViewModel>();\n\n        public bool Ready;\n        public TabType TabType;\n\n        public AbstractStashTabControl()\n        {\n            \n        }\n\n        public AbstractStashTabControl(int tabNumber)\n        {\n            TabNumber = tabNumber;\n            Stash = ApplicationState.Stash[ApplicationState.CurrentLeague].GetItemsByTab(TabNumber);\n            \n            Loaded += Control_Loaded;\n            ApplicationState.LeagueChanged += (s,e) => { Ready = false; };\n        }\n\n        public List<Item> Stash { get; set; }\n\n        public virtual void RefreshTab(string accountName)\n        {\n            var stash = ApplicationState.Stash[ApplicationState.CurrentLeague];\n            stash.RefreshTab(ApplicationState.Model, ApplicationState.CurrentLeague, TabNumber, accountName, ApplicationState.CurrentRealm);\n        }\n\n        public int TabNumber { get; set; }\n\n        public int ItemsMatchingFiltersCount { get; set; }\n\n        public List<IFilter> Filters\n        {\n            get { return (List<IFilter>) GetValue(FiltersProperty); }\n            set { SetValue(FiltersProperty, value); }\n        }\n\n        public void SetPremiumTabBorderColour()\n        {\n            var tab = ApplicationState.Stash[ApplicationState.CurrentLeague].Tabs[TabNumber];\n\n            if (Border == null || tab.Colour == null)\n            {\n                return;\n            }\n\n            var color = tab.Colour.WpfColor;\n\n            Border.BorderBrush = new SolidColorBrush(color);\n        }\n\n        public abstract Border Border { get; }\n\n        public virtual void ForceUpdate()\n        {\n            ItemsMatchingFiltersCount = !Filters.Any() ? -1 : 0;\n\n            foreach (var item in TabItemsToViewModels)\n            {\n                if (IsFilterApplicableToItem(item.Key))\n                {\n                    item.Value.IsItemInFilter = true;\n                    ItemsMatchingFiltersCount++;\n                }\n                else\n                {\n                    item.Value.IsItemInFilter = false;\n                }\n            }\n\n            UpdateLayout();\n        }\n\n        public void Control_Loaded(object sender, RoutedEventArgs e)\n        {\n            if (Ready)\n            {\n                return;\n            }\n\n            Refresh();\n        }\n\n        protected void SetBackground(Grid childGrid, Item item)\n        {\n            var gear = item as Gear;\n\n            if (gear == null)\n                return;\n\n            if (gear.Rarity != Rarity.Normal && gear.Explicitmods == null)\n                childGrid.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#88001D\"));\n            else\n                childGrid.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#21007F\"));\n\n            childGrid.Background.Opacity = 0.3;\n\n            SetItemBackground(childGrid, item);\n        }\n\n        private static void SetItemBackground(Grid childGrid, Item item)\n        {\n            if (!item.HasBackground)\n                return;\n\n            try\n            {\n                (childGrid.Children[0] as ItemDisplay).Background = new ImageBrush(ApplicationState.BitmapCache[item.BackgroundUrl]);\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(ex);\n            }\n        }\n\n        private void UpdateStashByLocation()\n        {\n            TabItemsToViewModels.Clear();\n\n            foreach (var item in Stash)\n            {\n                var entry = TabItemsToViewModels.Keys.FirstOrDefault(x => x.X == item.X\n                                                                     && x.Y == item.Y);\n\n                if (entry != null)\n                {\n                    continue;\n                }\n\n                TabItemsToViewModels.Add(item, GetImage(item));\n            }\n        }\n\n        private ItemDisplayViewModel GetImage(Item item)\n        {\n            return new ItemDisplayViewModel(item);\n        }\n\n        public virtual void Refresh()\n        {\n            Stash = ApplicationState.Stash[ApplicationState.CurrentLeague].GetItemsByTab(TabNumber);\n            TabType = GetTabType();\n\n            UpdateStashByLocation();\n        }\n\n        private TabType GetTabType()\n        {\n            try\n            {\n                return ApplicationState.Stash[ApplicationState.CurrentLeague].Tabs[TabNumber].Type;\n            }\n            catch (Exception ex)\n            {\n                //Todo: This should be injected.\n                Logger.Log(\"Error in StashControl.GetTabType: \" + ex);\n                return TabType.Normal;\n            }\n        }\n\n        private bool IsFilterApplicableToItem(Item item)\n        {\n            if (!Filters.Any())\n            {\n                return false;\n            }\n\n            return Filters.All(filter => filter.Applicable(item));\n        }\n    }\n}"
  },
  {
    "path": "Procurement/Controls/Category.cs",
    "content": "﻿using System.Collections.ObjectModel;\nusing Procurement.ViewModel;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procurement.Controls\n{\n    internal class Category : ObservableBase\n    {\n        public Category()\n        {\n            filters = new ObservableCollection<IFilter>();\n            filters.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(filters_CollectionChanged);\n        }\n\n        void filters_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)\n        {\n            OnPropertyChanged(nameof(Filters));\n        }\n        public string Name { get; set; }\n        private ObservableCollection<IFilter> filters;\n        public ObservableCollection<IFilter> Filters\n        {\n            get { return filters; }\n            set { filters = value; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Controls/CharacterSelector.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.Controls.CharacterSelector\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             xmlns:v=\"clr-namespace:Procurement.View\"\n             mc:Ignorable=\"d\" \n             Width=\"268\">\n    <UserControl.Resources>\n        <v:CharacterToImageConverter x:Key=\"vc\" />\n        <v:CharacterToLevelConverter x:Key=\"lc\" />\n    </UserControl.Resources>\n    <Grid>\n        <ListBox Grid.Column=\"0\" ItemsSource=\"{Binding Characters}\" Background=\"Black\" SelectionChanged=\"ListBox_SelectionChanged\">\n            <ItemsControl.ItemsPanel>\n                <ItemsPanelTemplate>\n                    <StackPanel Orientation=\"Vertical\"/>\n                </ItemsPanelTemplate>\n            </ItemsControl.ItemsPanel>\n            <ItemsControl.ItemTemplate>\n                <DataTemplate>\n                        <Grid Width=\"250\">\n                            <Grid.Background>\n                                <SolidColorBrush Color=\"Black\" />\n                            </Grid.Background>\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"25\" />\n                                <RowDefinition Height=\"25\" />\n                                <RowDefinition Height=\"25\" />\n                            </Grid.RowDefinitions>\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"80\" />\n                                <ColumnDefinition Width=\"*\"/>\n                            </Grid.ColumnDefinitions>\n                            <Image Source=\"/Images/character-background.png\" Grid.Column=\"1\" Grid.Row=\"0\" Grid.RowSpan=\"2\"/>\n                        <!--<Button Click=\"Button_Click\" Tag=\"{Binding .}\" Grid.Row=\"0\" Grid.Column=\"0\" Grid.RowSpan=\"3\">-->\n                            <Image Source=\"{Binding Path=., Converter={StaticResource vc}, ConverterParameter=Class}\" Grid.Row=\"0\" Grid.Column=\"0\" Grid.RowSpan=\"3\" />\n                        <!--</Button>-->\n                        <!--<Button Margin=\"14,0,0,0\" Click=\"Button_Click\" Tag=\"{Binding .}\" Grid.Row=\"0\" Grid.Column=\"1\">-->\n                            <Label Content=\"{Binding Name, Mode=OneTime}\"  FontSize=\"12\"  HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontWeight=\"Bold\" Grid.Row=\"0\" Grid.Column=\"1\" Foreground=\"#FFAB9066\" />\n                        <!--</Button>-->\n                        <Label Margin=\"14,0,0,0\" Content=\"{Binding ., Mode=OneTime, Converter={StaticResource lc}}\" FontSize=\"12\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" FontWeight=\"Bold\" Grid.Row=\"1\" Grid.Column=\"1\" Foreground=\"#FFAB9066\" />\n                        <Label Margin=\"14,0,0,0\" Content=\"{Binding League, Mode=OneTime}\" FontWeight=\"Bold\" Grid.Row=\"2\" Grid.Column=\"1\" Foreground=\"Gray\" />\n                        </Grid>\n                </DataTemplate>\n            </ItemsControl.ItemTemplate>\n        </ListBox>\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "Procurement/Controls/CharacterSelector.xaml.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Windows;\nusing System.Windows.Controls;\nusing POEApi.Model;\n\nnamespace Procurement.Controls\n{\n    public partial class CharacterSelector : UserControl\n    {\n        public CharacterSelector()\n        {\n            InitializeComponent();\n        }\n\n        public List<Character> Characters\n        {\n            get { return (List<Character>)GetValue(CharactersProperty); }\n            set { SetValue(CharactersProperty, value); }\n        }\n\n        public static readonly DependencyProperty CharactersProperty =\n            DependencyProperty.Register(\"Characters\", typeof(List<Character>), typeof(CharacterSelector), null);\n\n        private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n        {\n            if (e.AddedItems.Count != 0)\n                ApplicationState.CurrentCharacter = (Character)e.AddedItems[0];\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Controls/CurrencyStashTab.xaml",
    "content": "﻿<local:AbstractStashTabControl x:Class=\"Procurement.Controls.CurrencyStashTab\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n             xmlns:local=\"clr-namespace:Procurement.Controls\"\n             xmlns:viewModel=\"clr-namespace:Procurement.ViewModel\"\n             xmlns:v=\"clr-namespace:Procurement.View\"\n             mc:Ignorable=\"d\"\n             d:DesignHeight=\"592\" d:DesignWidth=\"591\" Height=\"592\" Width=\"591\"\n             d:DataContext=\"{d:DesignInstance viewModel:CurrencyStashViewModel}\">\n    <!--Todo: Border data should be done with bindings -->\n    <Border x:Name=\"LocalBorder\" BorderThickness=\"3\" CornerRadius=\"2\" BorderBrush=\"Aquamarine\">\n        <Border.Resources>\n            <v:CurrencyCraftingSlotScalingConverter x:Key=\"cs\" />\n            <BooleanToVisibilityConverter x:Key=\"VisibilityConverter\" />\n            <Style x:Key=\"slotBackground\" TargetType=\"Border\">\n                <Style.Resources>\n                    <SolidColorBrush x:Key=\"slotBackgroundBrush\" Color=\"#191a96\" Opacity=\"0.25\"/>\n                </Style.Resources>\n                <Setter Property=\"Background\" Value=\"{StaticResource slotBackgroundBrush}\" />\n            </Style>\n            <Style x:Key=\"singleSlotBackground\" TargetType=\"{x:Type Border}\" BasedOn=\"{StaticResource slotBackground}\" >\n                <Setter Property=\"Width\" Value=\"38.3388\" />\n                <Setter Property=\"Height\" Value=\"38.3388\" />\n            </Style>\n        </Border.Resources>\n        <Canvas>\n            <Canvas.Background>\n                <ImageBrush ImageSource=\"/Images/CurrencyTab.png\" />\n            </Canvas.Background>\n\n            <Border Canvas.Left=\"18\" Canvas.Top=\"67\" Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasScrollFragment, Converter={StaticResource VisibilityConverter}}\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"18\" Canvas.Top=\"67\"\n                               DataContext=\"{Binding ScrollFragment}\" />\n\n            <Border Canvas.Left=\"73\" Canvas.Top=\"67\" Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasWisdomScrolls, Converter={StaticResource VisibilityConverter}}\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"73\" Canvas.Top=\"67\"\n                               DataContext=\"{Binding WisdomScrolls}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasTownPortalScrolls, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"128\" Canvas.Top=\"67\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"128\" Canvas.Top=\"67\"\n                               DataContext=\"{Binding TownPortalScrolls}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasBlacksmithsWhetstone, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"313\" Canvas.Top=\"67\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"313\" Canvas.Top=\"67\"\n                               DataContext=\"{Binding BlacksmithsWhetstone}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasArmourersScrap, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"367\" Canvas.Top=\"67\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"367\" Canvas.Top=\"67\"\n                               DataContext=\"{Binding ArmourersScrap}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasGlassblowersBauble, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"420\" Canvas.Top=\"66\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"420\" Canvas.Top=\"66\"\n                               DataContext=\"{Binding GlassblowersBauble}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasGemCuttersPrism, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"473\" Canvas.Top=\"67\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"473\" Canvas.Top=\"67\"\n                               DataContext=\"{Binding GemCuttersPrism}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasChisel, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"529\" Canvas.Top=\"67\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"529\" Canvas.Top=\"67\"\n                               DataContext=\"{Binding Chisel}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasTransmutation, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"18\" Canvas.Top=\"139\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"18\" Canvas.Top=\"139\"\n                               DataContext=\"{Binding Transmutation}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasAlteration, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"73\" Canvas.Top=\"139\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"73\" Canvas.Top=\"139\"\n                               DataContext=\"{Binding Alteration}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasAugmentation, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"182\" Canvas.Top=\"191\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"182\" Canvas.Top=\"191\"\n                               DataContext=\"{Binding Augmentation}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasExalted, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"248\" Canvas.Top=\"139\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"248\" Canvas.Top=\"139\"\n                               DataContext=\"{Binding Exalted}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasMirror, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"302\" Canvas.Top=\"139\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"302\" Canvas.Top=\"139\"\n                               DataContext=\"{Binding Mirror}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasAlchemy, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"420\" Canvas.Top=\"138\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"420\" Canvas.Top=\"138\"\n                               DataContext=\"{Binding Alchemy}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasChaos, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"473\" Canvas.Top=\"139\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"473\" Canvas.Top=\"139\"\n                               DataContext=\"{Binding Chaos}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasChaosShard, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"473\" Canvas.Top=\"190\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"473\" Canvas.Top=\"190\"\n                               DataContext=\"{Binding ChaosShard}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSingleCellItemStyle, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"182\" Canvas.Top=\"139\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"182\" Canvas.Top=\"139\"\n                               DataContext=\"{Binding Chance}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasTransmutationShard, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"18\" Canvas.Top=\"191\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"18\" Canvas.Top=\"191\"\n                               DataContext=\"{Binding TransmutationShard}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasAlterationShard, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"73\" Canvas.Top=\"191\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"73\" Canvas.Top=\"191\"\n                               DataContext=\"{Binding AlterationShard}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasRegal, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"367\" Canvas.Top=\"139\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"367\" Canvas.Top=\"139\"\n                               DataContext=\"{Binding Regal}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasRegalShard, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"363\" Canvas.Top=\"188\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"363\" Canvas.Top=\"188\"\n                               DataContext=\"{Binding RegalShard}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasAlchemyShard, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"420\" Canvas.Top=\"190\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"420\" Canvas.Top=\"190\"\n                               DataContext=\"{Binding AlchemyShard}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasBlessed, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"529\" Canvas.Top=\"139\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"529\" Canvas.Top=\"139\"\n                               DataContext=\"{Binding Blessed}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasDivine, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"529\" Canvas.Top=\"191\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"529\" Canvas.Top=\"191\"\n                               DataContext=\"{Binding Divine}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasJewlers, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"73\" Canvas.Top=\"275\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"73\" Canvas.Top=\"275\"\n                               DataContext=\"{Binding Jewlers}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasFuse, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"127\" Canvas.Top=\"274\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"127\" Canvas.Top=\"274\"\n                               DataContext=\"{Binding Fuse}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasChromatic, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"182\" Canvas.Top=\"274\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"182\" Canvas.Top=\"274\"\n                               DataContext=\"{Binding Chromatic}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasScour, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"365\" Canvas.Top=\"274\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"365\" Canvas.Top=\"274\"\n                               DataContext=\"{Binding Scour}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasRegret, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"420\" Canvas.Top=\"274\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"420\" Canvas.Top=\"274\"\n                               DataContext=\"{Binding Regret}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasVaal, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"473\" Canvas.Top=\"274\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"473\" Canvas.Top=\"274\"\n                               DataContext=\"{Binding Vaal}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasPerandus, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"127\" Canvas.Top=\"326\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"127\" Canvas.Top=\"326\"\n                               DataContext=\"{Binding Perandus}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSilver, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"182\" Canvas.Top=\"326\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"182\" Canvas.Top=\"326\"\n                               DataContext=\"{Binding Silver}\" />\n\n            <Border Height=\"162\" Canvas.Left=\"255\" Canvas.Top=\"253\" Width=\"80\" Style=\"{StaticResource slotBackground}\" Visibility=\"{Binding HasCraftingItem, Converter={StaticResource VisibilityConverter}}\"/>\n\n            <local:ItemDisplay Height=\"160\" Canvas.Left=\"257\" Canvas.Top=\"280\" Width=\"80\"\n                               WidthScale=\"{Binding Path=Item, Converter={StaticResource cs}, ConverterParameter='width'}\"\n                               HeightScale=\"{Binding Path=Item, Converter={StaticResource cs}, ConverterParameter='height'}\"\n                               DataContext=\"{Binding CraftingSection}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSlot1, Converter={StaticResource VisibilityConverter}}\"  Canvas.Left=\"112\" Canvas.Top=\"446\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"113\" Canvas.Top=\"450\"\n                               DataContext=\"{Binding Slot1}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSlot2, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"166\" Canvas.Top=\"446\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"167\" Canvas.Top=\"450\"\n                               DataContext=\"{Binding Slot2}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSlot3, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"218\" Canvas.Top=\"446\" Width=\"40\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"222\" Canvas.Top=\"450\"\n                               DataContext=\"{Binding Slot3}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSlot4, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"271\" Canvas.Top=\"446\" Width=\"40\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"275\" Canvas.Top=\"450\"\n                               DataContext=\"{Binding Slot4}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSlot5, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"329\" Canvas.Top=\"446\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"329\" Canvas.Top=\"450\"\n                               DataContext=\"{Binding Slot5}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSlot6, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"384\" Canvas.Top=\"446\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"384\" Canvas.Top=\"450\"\n                               DataContext=\"{Binding Slot6}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSlot7, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"436\" Canvas.Top=\"446\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"440\" Canvas.Top=\"450\"\n                               DataContext=\"{Binding Slot7}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSlot8, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"112\" Canvas.Top=\"500\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"113\" Canvas.Top=\"504\"\n                               DataContext=\"{Binding Slot8}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSlot9, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"166\" Canvas.Top=\"500\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"167\" Canvas.Top=\"504\"\n                               DataContext=\"{Binding Slot9}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSlot10, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"218\" Canvas.Top=\"500\" Width=\"40\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"222\" Canvas.Top=\"504\"\n                               DataContext=\"{Binding Slot10}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSlot11, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"271\" Canvas.Top=\"500\" Width=\"40\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"275\" Canvas.Top=\"504\"\n                               DataContext=\"{Binding Slot11}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSlot12, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"325\" Canvas.Top=\"500\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"329\" Canvas.Top=\"504\"\n                               DataContext=\"{Binding Slot12}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSlot13, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"380\" Canvas.Top=\"500\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"384\" Canvas.Top=\"504\"\n                               DataContext=\"{Binding Slot13}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasSlot14, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"436\" Canvas.Top=\"500\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"440\" Canvas.Top=\"504\"\n                               DataContext=\"{Binding Slot14}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasApprentice, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"365\" Canvas.Top=\"326\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"365\" Canvas.Top=\"326\"\n                               DataContext=\"{Binding Apprentice}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasJourney, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"420\" Canvas.Top=\"326\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"420\" Canvas.Top=\"326\"\n                               DataContext=\"{Binding Journey}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasMaster, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"473\" Canvas.Top=\"326\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"473\" Canvas.Top=\"326\"\n                               DataContext=\"{Binding Master}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasAnnulment, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"128\" Canvas.Top=\"139\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"128\" Canvas.Top=\"139\"\n                               DataContext=\"{Binding Annulment}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasAnnulmentShard, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"128\" Canvas.Top=\"191\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"128\" Canvas.Top=\"191\"\n                               DataContext=\"{Binding AnnulmentShard}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasExaltedShard, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"248\" Canvas.Top=\"191\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"248\" Canvas.Top=\"191\"\n                               DataContext=\"{Binding ExaltedShard}\" />\n\n            <Border Style=\"{StaticResource singleSlotBackground}\" Visibility=\"{Binding HasMirrorShard, Converter={StaticResource VisibilityConverter}}\" Canvas.Left=\"302\" Canvas.Top=\"191\"/>\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"302\" Canvas.Top=\"191\"\n                               DataContext=\"{Binding MirrorShard}\" />\n        </Canvas>\n    </Border>\n</local:AbstractStashTabControl>"
  },
  {
    "path": "Procurement/Controls/CurrencyStashTab.xaml.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Windows.Controls;\nusing Procurement.ViewModel;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procurement.Controls\n{\n    /// <summary>\n    ///     Interaction logic for CurrencyStash.xaml\n    /// </summary>\n    public partial class CurrencyStashTab : AbstractStashTabControl\n    {\n        public CurrencyStashViewModel viewModel;\n\n        public CurrencyStashTab(int tabNumber) : base(tabNumber)\n        {\n            Refresh();\n\n            viewModel = new CurrencyStashViewModel(TabItemsToViewModels);\n\n            DataContext = viewModel;\n\n            InitializeComponent();\n\n            Ready = true;\n\n            SetPremiumTabBorderColour();\n        }\n\n        public CurrencyStashTab(int tabNumber, List<IFilter> list) : this(tabNumber)\n        {\n            Filters = list;\n        }\n\n        public override Border Border => this.LocalBorder;\n    }\n}"
  },
  {
    "path": "Procurement/Controls/Equipped.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.Controls.Equipped\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             xmlns:v=\"clr-namespace:Procurement.View\"\n             mc:Ignorable=\"d\" \n             Focusable=\"True\">\n        <Grid x:Name=\"gridOuter\" Height=\"532\" Width=\"600\" Grid.Column=\"1\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\">\n            <Grid.Background>\n                <ImageBrush ImageSource=\"/Images/equiped.jpg\" />\n            </Grid.Background>\n            <Canvas x:Name=\"davinci\" Grid.Column=\"1\" />\n        </Grid>\n</UserControl>\n"
  },
  {
    "path": "Procurement/Controls/Equipped.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Input;\nusing System.Windows.Media;\nusing POEApi.Model;\nusing Procurement.ViewModel;\n\nnamespace Procurement.Controls\n{\n    public partial class Equipped : UserControl\n    {\n        private Dictionary<string, Tuple<int, int>> absolutely;\n        private EquipedItems equipped;\n        private bool showAlts = false;\n\n        public string Character\n        {\n            get { return (string)GetValue(CharacterProperty); }\n            set \n            { \n                SetValue(CharacterProperty, value);\n                render();\n            }\n        }\n\n        public static readonly DependencyProperty CharacterProperty =\n            DependencyProperty.Register(\"Character\", typeof(string), typeof(Equipped), new PropertyMetadata(OnCharacterChanged));\n        \n        public Equipped()\n        {\n            InitializeComponent();\n            absolutely = getAbolutePositions();\n            this.PreviewKeyDown += new KeyEventHandler(Equipped_PreviewKeyDown);\n            this.Loaded += new RoutedEventHandler(Equipped_Loaded);\n            \n        }\n\n        public static void OnCharacterChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)\n        {\n            Equipped instance = d as Equipped;\n            if (instance.equipped == null)\n                return;\n\n            instance.render();\n\n        }\n        void Equipped_PreviewKeyDown(object sender, KeyEventArgs e)\n        {\n            if (e.Key != Key.X)\n                return;\n                \n            showAlts = !showAlts;\n            render();\n        }\n\n        private Dictionary<string, Tuple<int, int>> getAbolutePositions()\n        {\n            Dictionary<string, Tuple<int, int>> ret = new Dictionary<string, Tuple<int, int>>();\n\n            ret.Add(\"Amulet\", new Tuple<int, int>(192, 367));\n            ret.Add(\"Belt\", new Tuple<int, int>(357, 250));\n            ret.Add(\"Helm\", new Tuple<int, int>(97, 250));\n            ret.Add(\"RingLeft\", new Tuple<int, int>(251, 181));\n            ret.Add(\"RingRight\", new Tuple<int, int>(251, 367));\n            ret.Add(\"Flask0\", new Tuple<int, int>(416, 184));\n            ret.Add(\"Flask1\", new Tuple<int, int>(416, 229));\n            ret.Add(\"Flask2\", new Tuple<int, int>(416, 277));\n            ret.Add(\"Flask3\", new Tuple<int, int>(416, 324));\n            ret.Add(\"Flask4\", new Tuple<int, int>(416, 372));\n            //Todo: Redo this tab to follow more modern MVVM pattern\n            //Scale of mainhand/offhand \"Knackered\"\n            ret.Add(\"Weapon\", new Tuple<int, int>(109, 63));\n            ret.Add(\"Offhand\", new Tuple<int, int>(109, 436));\n            ret.Add(\"AltWeapon\", new Tuple<int, int>(109, 63));\n            ret.Add(\"AltOffhand\", new Tuple<int, int>(109, 436));\n            ret.Add(\"Boots\", new Tuple<int, int>(310, 367));\n            ret.Add(\"Armour\", new Tuple<int, int>(204, 250));\n            ret.Add(\"Gloves\", new Tuple<int, int>(310, 135));\n\n            return ret;\n        }\n            \n\n        void Equipped_Loaded(object sender, RoutedEventArgs e)\n        {\n            render();\n            this.Loaded -= Equipped_Loaded;\n        }\n\n        private void render()\n        {\n            equipped = new EquipedItems(ApplicationState.Model.GetInventory(Character, false, ApplicationState.AccountName, ApplicationState.CurrentRealm).Where(i => i.InventoryId != \"MainInventory\"));\n            davinci.Children.Clear();\n            Dictionary<string, Item> itemsAtPosition = equipped.GetItems();\n\n            foreach (string key in itemsAtPosition.Keys)\n            {\n                Grid childGrid = new Grid();\n                childGrid.Margin = new Thickness(1);\n\n                Item gearAtLocation = itemsAtPosition[key];\n                if (gearAtLocation == null)\n                    continue;\n\n                if (key.Contains(\"Weapon\") || key.Contains(\"Offhand\"))\n                {\n                    bool isAlt = key.StartsWith(\"Alt\");\n                    childGrid.Height = 187;\n                    childGrid.Width = 93;                    \n                    childGrid.VerticalAlignment = System.Windows.VerticalAlignment.Center;\n                    childGrid.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;\n\n                    if (!showAlts && isAlt)\n                        continue;\n\n                    if (showAlts && !isAlt)\n                        continue;\n                }\n\n\n                Border border = getBorder();\n                childGrid.Children.Add(border);\n\n                childGrid.Children.Add(getImage(gearAtLocation));\n\n                Canvas.SetTop(childGrid, absolutely[key].Item1);\n                Canvas.SetLeft(childGrid, absolutely[key].Item2);\n\n                davinci.Children.Add(childGrid);\n            }\n            this.davinci.Focus();\n        }\n\n        private UIElement getImage(Item item)\n        {\n            return new ItemDisplay() { DataContext = new ItemDisplayViewModel(item) };\n        }\n\n        private Border getBorder()\n        {\n            Border b = new Border();\n            b.BorderBrush = Brushes.Transparent;\n            b.BorderThickness = new Thickness(1);\n            return b;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Controls/EssenceStashTab.xaml",
    "content": "﻿<local:AbstractStashTabControl x:Class=\"Procurement.Controls.EssenceStashTab\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n             xmlns:local=\"clr-namespace:Procurement.Controls\"\n             xmlns:viewModel=\"clr-namespace:Procurement.ViewModel\"\n             mc:Ignorable=\"d\"\n             d:DesignHeight=\"592\" d:DesignWidth=\"591\" Height=\"592\" Width=\"591\"\n             d:DataContext=\"{d:DesignInstance viewModel:EssenceStashViewModel}\">\n\n    <Border x:Name=\"LocalBorder\" BorderThickness=\"3\" CornerRadius=\"2\" BorderBrush=\"Aquamarine\">\n        <Canvas>\n            <Canvas.Background>\n                <ImageBrush ImageSource=\"/Procurement;component/Images/essenceTab.png\" />\n            </Canvas.Background>\n\n\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"304\" Canvas.Top=\"24\"\n                               DataContext=\"{Binding WhisperingGreed}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"304\" Canvas.Top=\"70\"\n                               DataContext=\"{Binding WhisperingContempt}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"304\" Canvas.Top=\"116\"\n                               DataContext=\"{Binding WhisperingHatred}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"304\" Canvas.Top=\"162\"\n                               DataContext=\"{Binding WhisperingWoe}\" />\n\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"258\" Canvas.Top=\"24\"\n                               DataContext=\"{Binding MutteringGreed}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"258\" Canvas.Top=\"70\"\n                               DataContext=\"{Binding MutteringContempt}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"258\" Canvas.Top=\"116\"\n                               DataContext=\"{Binding MutteringHatred}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"258\" Canvas.Top=\"162\"\n                               DataContext=\"{Binding MutteringWoe}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"258\" Canvas.Top=\"208\"\n                               DataContext=\"{Binding MutteringFear}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"258\" Canvas.Top=\"254\"\n                               DataContext=\"{Binding MutteringAnger}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"258\" Canvas.Top=\"300\"\n                               DataContext=\"{Binding MutteringTorment}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"258\" Canvas.Top=\"346\"\n                               DataContext=\"{Binding MutteringSorrow}\" />\n\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"212\" Canvas.Top=\"24\"\n                               DataContext=\"{Binding WeepingGreed}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"212\" Canvas.Top=\"70\"\n                               DataContext=\"{Binding WeepingContempt}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"212\" Canvas.Top=\"116\"\n                               DataContext=\"{Binding WeepingHatred}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"212\" Canvas.Top=\"162\"\n                               DataContext=\"{Binding WeepingWoe}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"212\" Canvas.Top=\"208\"\n                               DataContext=\"{Binding WeepingFear}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"212\" Canvas.Top=\"254\"\n                               DataContext=\"{Binding WeepingAnger}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"212\" Canvas.Top=\"300\"\n                               DataContext=\"{Binding WeepingTorment}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"212\" Canvas.Top=\"346\"\n                               DataContext=\"{Binding WeepingSorrow}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"212\" Canvas.Top=\"392\"\n                               DataContext=\"{Binding WeepingRage}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"212\" Canvas.Top=\"438\"\n                               DataContext=\"{Binding WeepingSuffering}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"212\" Canvas.Top=\"484\"\n                               DataContext=\"{Binding WeepingWrath}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"212\" Canvas.Top=\"530\"\n                               DataContext=\"{Binding WeepingDoubt}\" />\n\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"166\" Canvas.Top=\"24\"\n                               DataContext=\"{Binding WailingGreed}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"166\" Canvas.Top=\"70\"\n                               DataContext=\"{Binding WailingContempt}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"166\" Canvas.Top=\"116\"\n                               DataContext=\"{Binding WailingHatred}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"166\" Canvas.Top=\"162\"\n                               DataContext=\"{Binding WailingWoe}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"166\" Canvas.Top=\"208\"\n                               DataContext=\"{Binding WailingFear}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"166\" Canvas.Top=\"254\"\n                               DataContext=\"{Binding WailingAnger}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"166\" Canvas.Top=\"300\"\n                               DataContext=\"{Binding WailingTorment}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"166\" Canvas.Top=\"346\"\n                               DataContext=\"{Binding WailingSorrow}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"166\" Canvas.Top=\"392\"\n                               DataContext=\"{Binding WailingRage}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"166\" Canvas.Top=\"438\"\n                               DataContext=\"{Binding WailingSuffering}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"166\" Canvas.Top=\"484\"\n                               DataContext=\"{Binding WailingWrath}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"166\" Canvas.Top=\"530\"\n                               DataContext=\"{Binding WailingDoubt}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"388\" Canvas.Top=\"24\"\n                               DataContext=\"{Binding WailingLoathing}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"388\" Canvas.Top=\"70\"\n                               DataContext=\"{Binding WailingZeal}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"388\" Canvas.Top=\"116\"\n                               DataContext=\"{Binding WailingAnguish}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"388\" Canvas.Top=\"162\"\n                               DataContext=\"{Binding WailingSpite}\" />\n\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"120\" Canvas.Top=\"24\"\n                               DataContext=\"{Binding ScreamingGreed}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"120\" Canvas.Top=\"70\"\n                               DataContext=\"{Binding ScreamingContempt}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"120\" Canvas.Top=\"116\"\n                               DataContext=\"{Binding ScreamingHatred}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"120\" Canvas.Top=\"162\"\n                               DataContext=\"{Binding ScreamingWoe}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"120\" Canvas.Top=\"208\"\n                               DataContext=\"{Binding ScreamingFear}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"120\" Canvas.Top=\"254\"\n                               DataContext=\"{Binding ScreamingAnger}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"120\" Canvas.Top=\"300\"\n                               DataContext=\"{Binding ScreamingTorment}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"120\" Canvas.Top=\"346\"\n                               DataContext=\"{Binding ScreamingSorrow}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"120\" Canvas.Top=\"392\"\n                               DataContext=\"{Binding ScreamingRage}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"120\" Canvas.Top=\"438\"\n                               DataContext=\"{Binding ScreamingSuffering}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"120\" Canvas.Top=\"484\"\n                               DataContext=\"{Binding ScreamingWrath}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"120\" Canvas.Top=\"530\"\n                               DataContext=\"{Binding ScreamingDoubt}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"434\" Canvas.Top=\"24\"\n                               DataContext=\"{Binding ScreamingLoathing}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"434\" Canvas.Top=\"70\"\n                               DataContext=\"{Binding ScreamingZeal}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"434\" Canvas.Top=\"116\"\n                               DataContext=\"{Binding ScreamingAnguish}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"434\" Canvas.Top=\"162\"\n                               DataContext=\"{Binding ScreamingSpite}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"434\" Canvas.Top=\"208\"\n                               DataContext=\"{Binding ScreamingScorn}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"434\" Canvas.Top=\"254\"\n                               DataContext=\"{Binding ScreamingEnvy}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"434\" Canvas.Top=\"300\"\n                               DataContext=\"{Binding ScreamingMisery}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"434\" Canvas.Top=\"346\"\n                               DataContext=\"{Binding ScreamingDread}\" />\n\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"74\" Canvas.Top=\"24\"\n                               DataContext=\"{Binding ShriekingGreed}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"74\" Canvas.Top=\"70\"\n                               DataContext=\"{Binding ShriekingContempt}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"74\" Canvas.Top=\"116\"\n                               DataContext=\"{Binding ShriekingHatred}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"74\" Canvas.Top=\"162\"\n                               DataContext=\"{Binding ShriekingWoe}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"74\" Canvas.Top=\"208\"\n                               DataContext=\"{Binding ShriekingFear}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"74\" Canvas.Top=\"254\"\n                               DataContext=\"{Binding ShriekingAnger}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"74\" Canvas.Top=\"300\"\n                               DataContext=\"{Binding ShriekingTorment}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"74\" Canvas.Top=\"346\"\n                               DataContext=\"{Binding ShriekingSorrow}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"74\" Canvas.Top=\"392\"\n                               DataContext=\"{Binding ShriekingRage}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"74\" Canvas.Top=\"438\"\n                               DataContext=\"{Binding ShriekingSuffering}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"74\" Canvas.Top=\"484\"\n                               DataContext=\"{Binding ShriekingWrath}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"74\" Canvas.Top=\"530\"\n                               DataContext=\"{Binding ShriekingDoubt}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"480\" Canvas.Top=\"24\"\n                               DataContext=\"{Binding ShriekingLoathing}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"480\" Canvas.Top=\"70\"\n                               DataContext=\"{Binding ShriekingZeal}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"480\" Canvas.Top=\"116\"\n                               DataContext=\"{Binding ShriekingAnguish}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"480\" Canvas.Top=\"162\"\n                               DataContext=\"{Binding ShriekingSpite}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"480\" Canvas.Top=\"208\"\n                               DataContext=\"{Binding ShriekingScorn}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"480\" Canvas.Top=\"254\"\n                               DataContext=\"{Binding ShriekingEnvy}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"480\" Canvas.Top=\"300\"\n                               DataContext=\"{Binding ShriekingMisery}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"480\" Canvas.Top=\"346\"\n                               DataContext=\"{Binding ShriekingDread}\" />\n\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"28\" Canvas.Top=\"24\"\n                               DataContext=\"{Binding DeafeningGreed}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"28\" Canvas.Top=\"70\"\n                               DataContext=\"{Binding DeafeningContempt}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"28\" Canvas.Top=\"116\"\n                               DataContext=\"{Binding DeafeningHatred}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"28\" Canvas.Top=\"162\"\n                               DataContext=\"{Binding DeafeningWoe}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"28\" Canvas.Top=\"208\"\n                               DataContext=\"{Binding DeafeningFear}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"28\" Canvas.Top=\"254\"\n                               DataContext=\"{Binding DeafeningAnger}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"28\" Canvas.Top=\"300\"\n                               DataContext=\"{Binding DeafeningTorment}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"28\" Canvas.Top=\"346\"\n                               DataContext=\"{Binding DeafeningSorrow}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"28\" Canvas.Top=\"392\"\n                               DataContext=\"{Binding DeafeningRage}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"28\" Canvas.Top=\"438\"\n                               DataContext=\"{Binding DeafeningSuffering}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"28\" Canvas.Top=\"484\"\n                               DataContext=\"{Binding DeafeningWrath}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"28\" Canvas.Top=\"530\"\n                               DataContext=\"{Binding DeafeningDoubt}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"526\" Canvas.Top=\"24\"\n                               DataContext=\"{Binding DeafeningLoathing}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"526\" Canvas.Top=\"70\"\n                               DataContext=\"{Binding DeafeningZeal}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"526\" Canvas.Top=\"116\"\n                               DataContext=\"{Binding DeafeningAnguish}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"526\" Canvas.Top=\"162\"\n                               DataContext=\"{Binding DeafeningSpite}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"526\" Canvas.Top=\"208\"\n                               DataContext=\"{Binding DeafeningScorn}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"526\" Canvas.Top=\"254\"\n                               DataContext=\"{Binding DeafeningEnvy}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"526\" Canvas.Top=\"300\"\n                               DataContext=\"{Binding DeafeningMisery}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"526\" Canvas.Top=\"346\"\n                               DataContext=\"{Binding DeafeningDread}\" />\n\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"526\" Canvas.Top=\"392\"\n                               DataContext=\"{Binding Insanity}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"526\" Canvas.Top=\"438\"\n                               DataContext=\"{Binding Horror}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"526\" Canvas.Top=\"484\"\n                               DataContext=\"{Binding Delirium}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"526\" Canvas.Top=\"530\"\n                               DataContext=\"{Binding Hysteria}\" />\n\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"480\" Canvas.Top=\"392\"\n                               DataContext=\"{Binding RemnantOfCorruption}\" />\n\n            <local:ItemDisplay Canvas.Left=\"320\" Canvas.Top=\"406\"\n                DataContext=\"{Binding MainSlot}\" Height=\"157\" Width=\"81\" />\n\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"480\" Canvas.Top=\"438\"\n                DataContext=\"{Binding SlotOne}\"  />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"480\" Canvas.Top=\"484\"\n                DataContext=\"{Binding SlotTwo}\" />\n            <local:ItemDisplay Style=\"{StaticResource SingleCellItemStyle}\" Canvas.Left=\"480\" Canvas.Top=\"530\"\n                DataContext=\"{Binding SlotThree}\" />\n        </Canvas>\n    </Border>\n</local:AbstractStashTabControl>"
  },
  {
    "path": "Procurement/Controls/EssenceStashTab.xaml.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Windows.Controls;\nusing Procurement.ViewModel;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procurement.Controls\n{\n    /// <summary>\n    ///     Interaction logic for EssenceStash.xaml\n    /// </summary>\n    public partial class EssenceStashTab : AbstractStashTabControl\n    {\n        public EssenceStashViewModel viewModel;\n\n        public EssenceStashTab(int tabNumber) : base(tabNumber)\n        {\n            Refresh();\n\n            viewModel = new EssenceStashViewModel(TabItemsToViewModels);\n\n            DataContext = viewModel;\n\n            InitializeComponent();\n\n            Ready = true;\n\n            SetPremiumTabBorderColour();\n        }\n\n        public EssenceStashTab(int tabNumber, List<IFilter> list) : this(tabNumber)\n        {\n            Filters = list;\n        }\n\n        public override Border Border => this.LocalBorder;\n    }\n}"
  },
  {
    "path": "Procurement/Controls/ExpressionDark.xaml",
    "content": "﻿<!--\n// (c) Copyright Microsoft Corporation.\n// This source is subject to Microsoft Public License (Ms-PL).\n// Please see http://go.microsoft.com/fwlink/?LinkID=131993 for details.\n// All other rights reserved.\n-->\n\n<ResourceDictionary\n  xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n  xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n  xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n  mc:Ignorable=\"d\"\n  xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\">\n\n    <!-- Main Colors -->\n\n    <Color x:Key=\"MainColor\">#FF595959</Color>\n    <Color x:Key=\"HoverColor\">#FF393939</Color>\n    <Color x:Key=\"DefaultColor\">#FF9BB1C5</Color>\n    <SolidColorBrush x:Key=\"LightBrush\" Color=\"#FF333333\" />\n    <SolidColorBrush x:Key=\"ShadeBrush\" Color=\"#FF434343\" />\n\n    <Color x:Key=\"TopGradientSelectColor\">#FFFFFFFF</Color>\n    <Color x:Key=\"BottomGradientSelectColor\">#FF737373</Color>\n\n    <Color x:Key=\"BlackColor\">#FF000000</Color>\n    <SolidColorBrush x:Key=\"BlackBrush\" Color=\"{StaticResource BlackColor}\" />\n\n    <Color x:Key=\"WhiteColor\">#FFFFFFFF</Color>\n\n    <SolidColorBrush x:Key=\"TextBrush\" Color=\"#FFFFFFFF\" />\n    <SolidColorBrush x:Key=\"NormalBrush\" Color=\"{StaticResource MainColor}\" />\n    <SolidColorBrush x:Key=\"NormalBorderBrush\" Color=\"#FF333333\" />\n    <SolidColorBrush x:Key=\"HoverBrush\" Color=\"{StaticResource HoverColor}\" />\n    <SolidColorBrush x:Key=\"GlyphBrush\" Color=\"#FFD1D1D1\" />\n\n    <LinearGradientBrush x:Key=\"PressedBrush\" EndPoint=\"0.5,0.971\" StartPoint=\"0.5,0.042\">\n        <GradientStop Color=\"#4C000000\" Offset=\"0\" />\n        <GradientStop Color=\"#26FFFFFF\" Offset=\"1\" />\n        <GradientStop Color=\"#4C000000\" Offset=\"0.467\" />\n        <GradientStop Color=\"#26FFFFFF\" Offset=\"0.479\" />\n    </LinearGradientBrush>\n\n    <SolidColorBrush x:Key=\"ControlBackgroundBrush\" Color=\"#FF333333\" />\n\n    <LinearGradientBrush x:Key=\"SelectedBackgroundBrush\" EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\n        <GradientStop Color=\"{StaticResource TopGradientSelectColor}\" Offset=\"0\" />\n        <GradientStop Color=\"{StaticResource BottomGradientSelectColor}\" Offset=\"1\" />\n    </LinearGradientBrush>\n\n    <SolidColorBrush x:Key=\"DisabledForegroundBrush\" Color=\"#888\" />\n    <SolidColorBrush x:Key=\"DisabledBackgroundBrush\" Color=\"#FF787878\" />\n    <SolidColorBrush x:Key=\"DisabledBorderBrush\" Color=\"#AAA\" />\n    <SolidColorBrush x:Key=\"WindowBackgroundBrush\" Color=\"#FF595959\" />\n\n    <!-- EXPRESSION COMMON VALUES -->\n\n    <LinearGradientBrush x:Key=\"ShineBrush\" EndPoint=\"0.5,0.971\" StartPoint=\"0.5,0.042\">\n        <GradientStop Color=\"#59FFFFFF\" Offset=\"0\" />\n        <GradientStop Color=\"#00FFFFFF\" Offset=\"1\" />\n        <GradientStop Color=\"#26FFFFFF\" Offset=\"0.467\" />\n        <GradientStop Color=\"#00FFFFFF\" Offset=\"0.475\" />\n    </LinearGradientBrush>\n\n    <LinearGradientBrush x:Key=\"HoverShineBrush\" EndPoint=\"0.5,0.971\" StartPoint=\"0.5,0.042\">\n        <GradientStop Color=\"#4CFFFFFF\" Offset=\"0\" />\n        <GradientStop Color=\"#26FFFFFF\" Offset=\"1\" />\n        <GradientStop Color=\"#26FFFFFF\" Offset=\"0.467\" />\n        <GradientStop Color=\"#00FFFFFF\" Offset=\"0.475\" />\n        <GradientStop Color=\"#00FFFFFF\" Offset=\"0.856\" />\n    </LinearGradientBrush>\n\n    <LinearGradientBrush x:Key=\"PressedBorderBrush\" EndPoint=\"0,1\" StartPoint=\"0,0\">\n        <GradientStop Color=\"#444\" Offset=\"0.0\" />\n        <GradientStop Color=\"#888\" Offset=\"1.0\" />\n    </LinearGradientBrush>\n\n    <SolidColorBrush x:Key=\"DefaultedBorderBrush\" Color=\"{StaticResource DefaultColor}\" />\n    <SolidColorBrush x:Key=\"SolidBorderBrush\" Color=\"#888\" />\n\n\n    <Style x:Key=\"NuclearButtonFocusVisual\">\n        <Setter Property=\"Control.Template\">\n            <Setter.Value>\n                <ControlTemplate>\n                    <Border>\n                        <Rectangle Margin=\"2\" Stroke=\"#60000000\" StrokeThickness=\"1\" StrokeDashArray=\"1 2\" />\n                    </Border>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style TargetType=\"{x:Type Button}\" BasedOn=\"{x:Null}\">\n        <Setter Property=\"FocusVisualStyle\" Value=\"{DynamicResource NuclearButtonFocusVisual}\" />\n        <Setter Property=\"Background\" Value=\"{DynamicResource NormalBrush}\" />\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"BorderBrush\" Value=\"{DynamicResource NormalBorderBrush}\" />\n        <Setter Property=\"Template\" Value=\"{DynamicResource ButtonTemplate}\" />\n    </Style>\n\n    <ControlTemplate x:Key=\"ButtonTemplate\" TargetType=\"{x:Type Button}\">\n        <ControlTemplate.Resources>\n            <Storyboard x:Key=\"HoverOn\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                </DoubleAnimationUsingKeyFrames>\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                </DoubleAnimationUsingKeyFrames>\n\n            </Storyboard>\n            <Storyboard x:Key=\"HoverOff\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n\n            </Storyboard>\n            <Storyboard x:Key=\"PressedOn\">\n\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                </DoubleAnimationUsingKeyFrames>\n\n            </Storyboard>\n            <Storyboard x:Key=\"PressedOff\">\n\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n\n            </Storyboard>\n            <Storyboard x:Key=\"FocusedOn\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"FocussedOff\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n\n        </ControlTemplate.Resources>\n        <Grid x:Name=\"Grid\">\n            <Border x:Name=\"Background\" Background=\"{TemplateBinding Background}\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\" />\n            <Border x:Name=\"HoverBorder\" Opacity=\"0\" Background=\"{StaticResource HoverBrush}\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\" />\n            <Border x:Name=\"HoverShineBorder\" Opacity=\"0\" Background=\"{StaticResource HoverShineBrush}\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\" />\n            <Border x:Name=\"PressedBorder\" Opacity=\"0\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\" Background=\"{StaticResource PressedBrush}\" />\n            <Border x:Name=\"ShineBorder\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\" Background=\"{StaticResource ShineBrush}\" Opacity=\"1\" />\n            <ContentPresenter HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"{TemplateBinding Padding}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" RecognizesAccessKey=\"True\" />\n            <Border x:Name=\"FocusVisualElement\" IsHitTestVisible=\"false\" BorderBrush=\"{StaticResource HoverShineBrush}\" BorderThickness=\"1\" CornerRadius=\"3,3,3,3\" Margin=\"1,1,1,1\" Opacity=\"0\" />\n        </Grid>\n        <ControlTemplate.Triggers>\n            <Trigger Property=\"IsDefault\" Value=\"True\">\n                <Setter Property=\"BorderBrush\" TargetName=\"ShineBorder\" Value=\"{DynamicResource DefaultedBorderBrush}\" />\n            </Trigger>\n            <Trigger Property=\"IsKeyboardFocused\" Value=\"true\">\n                <Trigger.ExitActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource FocussedOff}\" x:Name=\"FocussedOff_BeginStoryboard\" />\n                </Trigger.ExitActions>\n                <Trigger.EnterActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource FocusedOn}\" x:Name=\"FocusedOn_BeginStoryboard\" />\n                </Trigger.EnterActions>\n\n            </Trigger>\n            <Trigger Property=\"IsMouseOver\" Value=\"true\">\n                <Trigger.ExitActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\" />\n                </Trigger.ExitActions>\n                <Trigger.EnterActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\" />\n                </Trigger.EnterActions>\n\n            </Trigger>\n            <Trigger Property=\"IsPressed\" Value=\"true\">\n                <Trigger.ExitActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource PressedOff}\" />\n                </Trigger.ExitActions>\n                <Trigger.EnterActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource PressedOn}\" />\n                </Trigger.EnterActions>\n            </Trigger>\n            <Trigger Property=\"IsEnabled\" Value=\"true\" />\n            <Trigger Property=\"IsEnabled\" Value=\"false\">\n                <Setter Property=\"Background\" Value=\"{DynamicResource DisabledBackgroundBrush}\" TargetName=\"Background\" />\n                <Setter Property=\"BorderBrush\" Value=\"{DynamicResource DisabledBorderBrush}\" TargetName=\"ShineBorder\" />\n                <Setter Property=\"Opacity\" TargetName=\"Grid\" Value=\"0.5\" />\n            </Trigger>\n        </ControlTemplate.Triggers>\n    </ControlTemplate>\n\n    <Style x:Key=\"RadioButtonFocusVisual\">\n        <Setter Property=\"Control.Template\">\n            <Setter.Value>\n                <ControlTemplate>\n                    <Border>\n                        <Rectangle Margin=\"15,0,0,0\" Stroke=\"#60000000\" StrokeThickness=\"1\" StrokeDashArray=\"1 2\" />\n                    </Border>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style x:Key=\"CheckBoxFocusVisual\">\n        <Setter Property=\"Control.Template\">\n            <Setter.Value>\n                <ControlTemplate>\n                    <Border>\n                        <Rectangle Margin=\"15,0,0,0\" Stroke=\"#60000000\" StrokeThickness=\"1\" StrokeDashArray=\"1 2\" />\n                    </Border>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style TargetType=\"{x:Type CheckBox}\">\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"true\" />\n        <Setter Property=\"FocusVisualStyle\" Value=\"{DynamicResource CheckBoxFocusVisual}\" />\n        <Setter Property=\"Background\" Value=\"{DynamicResource NormalBrush}\" />\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"BorderBrush\" Value=\"{DynamicResource NormalBorderBrush}\" />\n        <Setter Property=\"Template\" Value=\"{DynamicResource CheckBoxTemplate}\" />\n    </Style>\n\n    <ControlTemplate x:Key=\"CheckBoxTemplate\" TargetType=\"{x:Type CheckBox}\">\n        <ControlTemplate.Resources>\n            <Storyboard x:Key=\"HoverOn\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"BackgroundOverlay\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"HoverOff\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"BackgroundOverlay\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"PressedOn\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"PressedOff\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"CheckedTrue\">\n                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"CheckIcon\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"CheckedFalse\">\n                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"CheckIcon\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"IndeterminateOn\">\n                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"IndeterminateIcon\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.2000000\" Value=\"1\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"IndeterminateOff\">\n                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"IndeterminateIcon\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"FocussedOn\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"ContentFocusVisualElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"FocussedOff\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"ContentFocusVisualElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n        </ControlTemplate.Resources>\n        <BulletDecorator Background=\"Transparent\" x:Name=\"bulletDecorator\">\n            <BulletDecorator.Bullet>\n                <Grid Width=\"16\" Height=\"16\">\n                    <Rectangle Height=\"14\" Margin=\"1\" x:Name=\"Background\" Width=\"14\" Fill=\"{TemplateBinding Background}\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" />\n                    <Rectangle Height=\"14\" Margin=\"1\" x:Name=\"BackgroundOverlay\" Width=\"14\" Opacity=\"0\" Fill=\"{x:Null}\" Stroke=\"{StaticResource HoverBrush}\" StrokeThickness=\"2\" />\n                    <Rectangle Height=\"16\" x:Name=\"PressedRectangle\" Width=\"16\" IsHitTestVisible=\"false\" Opacity=\"0\" Stroke=\"{StaticResource HoverBrush}\" StrokeThickness=\"1\" />\n                    <Path Height=\"10\" Margin=\"1,1,0,1.5\" x:Name=\"CheckIcon\" Width=\"10.5\" Opacity=\"0\" Fill=\"{StaticResource GlyphBrush}\" Stretch=\"Fill\" Data=\"M102.03442,598.79645 L105.22962,597.78918 L106.78825,600.42358 C106.78825,600.42358 108.51028,595.74304 110.21724,593.60419 C112.00967,591.35822 114.89314,591.42316 114.89314,591.42316 C114.89314,591.42316 112.67844,593.42645 111.93174,594.44464 C110.7449,596.06293 107.15683,604.13837 107.15683,604.13837 z\" />\n                    <Rectangle Height=\"8\" x:Name=\"IndeterminateIcon\" Width=\"10\" Opacity=\"0\" Fill=\"{StaticResource GlyphBrush}\" />\n                    <Rectangle Height=\"14\" x:Name=\"DisabledVisualElement\" Width=\"14\" Opacity=\"0\" Fill=\"{StaticResource DisabledBackgroundBrush}\" />\n                    <Rectangle Height=\"16\" x:Name=\"ContentFocusVisualElement\" Width=\"16\" IsHitTestVisible=\"false\" Opacity=\"0\" Stroke=\"{StaticResource HoverShineBrush}\" StrokeThickness=\"1\" />\n                    <Rectangle Height=\"12\" x:Name=\"ShineRectangle\" Width=\"14\" IsHitTestVisible=\"false\" Opacity=\"1\" Stroke=\"{x:Null}\" StrokeThickness=\"1\" Fill=\"{StaticResource ShineBrush}\" Margin=\"2,2,2,2\" />\n                </Grid>\n            </BulletDecorator.Bullet>\n            <ContentPresenter RecognizesAccessKey=\"True\" Margin=\"5,0,0,0\" VerticalAlignment=\"Top\" HorizontalAlignment=\"Left\" />\n        </BulletDecorator>\n        <ControlTemplate.Triggers>\n            <Trigger Property=\"IsFocused\" Value=\"True\">\n                <Trigger.ExitActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource FocussedOff}\" x:Name=\"FocussedOff_BeginStoryboard\" />\n                </Trigger.ExitActions>\n                <Trigger.EnterActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource FocussedOn}\" x:Name=\"FocussedOn_BeginStoryboard\" />\n                </Trigger.EnterActions>\n            </Trigger>\n            <MultiTrigger>\n                <MultiTrigger.Conditions>\n                    <Condition Property=\"IsChecked\" Value=\"True\" />\n                    <Condition Property=\"IsThreeState\" Value=\"True\" />\n                </MultiTrigger.Conditions>\n                <MultiTrigger.EnterActions>\n                    <BeginStoryboard x:Name=\"ThreeStateOn_BeginStoryboard\" Storyboard=\"{StaticResource CheckedFalse}\" />\n                </MultiTrigger.EnterActions>\n                <MultiTrigger.ExitActions>\n                    <BeginStoryboard x:Name=\"ThreeStateOff_BeginStoryboard\" Storyboard=\"{StaticResource CheckedTrue}\" />\n                </MultiTrigger.ExitActions>\n            </MultiTrigger>\n            <MultiTrigger>\n                <MultiTrigger.Conditions>\n                    <Condition Property=\"IsChecked\" Value=\"{x:Null}\" />\n                    <Condition Property=\"IsThreeState\" Value=\"True\" />\n                </MultiTrigger.Conditions>\n                <MultiTrigger.EnterActions>\n                    <BeginStoryboard x:Name=\"ThreeStateOn1_BeginStoryboard\" Storyboard=\"{StaticResource IndeterminateOn}\" />\n                </MultiTrigger.EnterActions>\n                <MultiTrigger.ExitActions>\n                    <BeginStoryboard x:Name=\"ThreeStateOff1_BeginStoryboard\" Storyboard=\"{StaticResource IndeterminateOff}\" />\n                </MultiTrigger.ExitActions>\n                <Setter Property=\"Visibility\" TargetName=\"CheckIcon\" Value=\"Hidden\" />\n            </MultiTrigger>\n            <Trigger Property=\"IsChecked\" Value=\"True\">\n                <Trigger.ExitActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource CheckedFalse}\" x:Name=\"CheckedTrue_BeginStoryboard\" />\n                </Trigger.ExitActions>\n                <Trigger.EnterActions>\n                    <BeginStoryboard x:Name=\"CheckedTrue_BeginStoryboard1\" Storyboard=\"{StaticResource CheckedTrue}\" />\n                </Trigger.EnterActions>\n            </Trigger>\n            <Trigger Property=\"IsMouseOver\" Value=\"true\">\n                <Trigger.EnterActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\" />\n                </Trigger.EnterActions>\n                <Trigger.ExitActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" />\n                </Trigger.ExitActions>\n            </Trigger>\n            <Trigger Property=\"IsEnabled\" Value=\"false\">\n                <Setter Property=\"Fill\" Value=\"{DynamicResource DisabledBackgroundBrush}\" TargetName=\"Background\" />\n                <Setter Property=\"Stroke\" Value=\"{DynamicResource DisabledBorderBrush}\" TargetName=\"Background\" />\n                <Setter Property=\"Foreground\" Value=\"{DynamicResource DisabledForegroundBrush}\" />\n                <Setter Property=\"Opacity\" TargetName=\"bulletDecorator\" Value=\"0.5\" />\n            </Trigger>\n        </ControlTemplate.Triggers>\n    </ControlTemplate>\n\n    <Style TargetType=\"{x:Type RadioButton}\">\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"true\" />\n        <Setter Property=\"FocusVisualStyle\" Value=\"{DynamicResource RadioButtonFocusVisual}\" />\n        <Setter Property=\"Background\" Value=\"{DynamicResource NormalBrush}\" />\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"BorderBrush\" Value=\"{DynamicResource NormalBorderBrush}\" />\n        <Setter Property=\"Template\" Value=\"{DynamicResource RadioButtonTemplate}\" />\n        <Style.Triggers>\n        </Style.Triggers>\n    </Style>\n\n    <ControlTemplate x:Key=\"RadioButtonTemplate\" TargetType=\"{x:Type RadioButton}\">\n        <ControlTemplate.Resources>\n            <Storyboard x:Key=\"HoverOn\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"BackgroundOverlay\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"HoverOff\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"BackgroundOverlay\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"PressedOn\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedEllipse\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"PressedOff\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedEllipse\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"CheckedOn\">\n                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"CheckIcon\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"CheckedOff\">\n                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"CheckIcon\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"FocussedOn\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"ContentFocusVisualElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"FocussedOff\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"ContentFocusVisualElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n        </ControlTemplate.Resources>\n        <BulletDecorator Background=\"Transparent\" x:Name=\"bulletDecorator\">\n            <BulletDecorator.Bullet>\n                <Grid Width=\"16\" Height=\"16\">\n                    <Ellipse Height=\"14\" Margin=\"1\" x:Name=\"Background\" Width=\"14\" Fill=\"{TemplateBinding Background}\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" />\n                    <Ellipse Height=\"14\" Margin=\"1\" x:Name=\"BackgroundOverlay\" Width=\"14\" StrokeThickness=\"2\" Stroke=\"{StaticResource HoverBrush}\" Opacity=\"0\" />\n                    <Ellipse Height=\"14\" Margin=\"1\" x:Name=\"PressedEllipse\" Width=\"14\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{StaticResource HoverBrush}\" Opacity=\"0\" />\n                    <Ellipse Height=\"6\" x:Name=\"CheckIcon\" Width=\"6\" Opacity=\"0\" Fill=\"{StaticResource GlyphBrush}\" />\n                    <Ellipse Height=\"14\" x:Name=\"DisabledVisualElement\" Width=\"14\" Opacity=\"0\" Fill=\"{StaticResource DisabledBackgroundBrush}\" />\n                    <Ellipse Height=\"16\" x:Name=\"ContentFocusVisualElement\" Width=\"16\" IsHitTestVisible=\"false\" Opacity=\"0\" Stroke=\"{StaticResource HoverShineBrush}\" StrokeThickness=\"1\" />\n                    <Ellipse Height=\"12\" Margin=\"2,2,2,2\" x:Name=\"ShineEllipse\" Width=\"12\" StrokeThickness=\"{TemplateBinding BorderThickness}\" Stroke=\"{x:Null}\" Fill=\"{StaticResource ShineBrush}\" />\n                </Grid>\n            </BulletDecorator.Bullet>\n            <ContentPresenter RecognizesAccessKey=\"True\" Margin=\"5,0,0,0\" />\n        </BulletDecorator>\n        <ControlTemplate.Triggers>\n            <Trigger Property=\"IsFocused\" Value=\"True\">\n                <Trigger.ExitActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource FocussedOff}\" x:Name=\"FocussedOff_BeginStoryboard\" />\n                </Trigger.ExitActions>\n                <Trigger.EnterActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource FocussedOn}\" x:Name=\"FocussedOn_BeginStoryboard\" />\n                </Trigger.EnterActions>\n            </Trigger>\n            <Trigger Property=\"IsChecked\" Value=\"false\">\n\n                <Trigger.ExitActions>\n                    <BeginStoryboard x:Name=\"CheckedOn_BeginStoryboard\" Storyboard=\"{StaticResource CheckedOn}\" />\n                </Trigger.ExitActions>\n                <Trigger.EnterActions>\n                    <BeginStoryboard x:Name=\"CheckedOff_BeginStoryboard\" Storyboard=\"{StaticResource CheckedOff}\" />\n                </Trigger.EnterActions>\n\n            </Trigger>\n            <Trigger Property=\"IsChecked\" Value=\"True\" />\n            <Trigger Property=\"IsMouseOver\" Value=\"true\">\n\n                <Trigger.ExitActions>\n                    <BeginStoryboard x:Name=\"HoverOff_BeginStoryboard\" Storyboard=\"{StaticResource HoverOff}\" />\n                </Trigger.ExitActions>\n                <Trigger.EnterActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\" />\n                </Trigger.EnterActions>\n\n            </Trigger>\n            <Trigger Property=\"IsPressed\" Value=\"true\">\n\n                <Trigger.ExitActions>\n                    <BeginStoryboard x:Name=\"PressedOff_BeginStoryboard\" Storyboard=\"{StaticResource PressedOff}\" />\n                </Trigger.ExitActions>\n                <Trigger.EnterActions>\n                    <BeginStoryboard x:Name=\"PressedOn_BeginStoryboard\" Storyboard=\"{StaticResource PressedOn}\" />\n                </Trigger.EnterActions>\n\n            </Trigger>\n            <Trigger Property=\"IsEnabled\" Value=\"false\">\n                <Setter Property=\"Fill\" TargetName=\"Background\" Value=\"{DynamicResource DisabledBackgroundBrush}\" />\n                <Setter Property=\"Stroke\" TargetName=\"Background\" Value=\"{DynamicResource DisabledBorderBrush}\" />\n                <Setter Property=\"Foreground\" Value=\"{DynamicResource DisabledForegroundBrush}\" />\n                <Setter Property=\"Opacity\" TargetName=\"bulletDecorator\" Value=\"0.5\" />\n            </Trigger>\n        </ControlTemplate.Triggers>\n    </ControlTemplate>\n\n    <Style d:IsControlPart=\"True\" TargetType=\"{x:Type RepeatButton}\" BasedOn=\"{x:Null}\">\n        <Setter Property=\"Background\" Value=\"{DynamicResource NormalBrush}\" />\n        <Setter Property=\"BorderBrush\" Value=\"{DynamicResource NormalBorderBrush}\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type RepeatButton}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"0.8\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0.3\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"0.1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"ContentPresenter\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0.3\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Grid>\n                        <Border x:Name=\"Border\" BorderThickness=\"{TemplateBinding BorderThickness}\" Opacity=\"1\" />\n                        <ContentPresenter HorizontalAlignment=\"Center\" x:Name=\"ContentPresenter\" VerticalAlignment=\"Center\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" ContentTemplateSelector=\"{TemplateBinding ContentTemplateSelector}\" Opacity=\"0.3\" Height=\"Auto\" />\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsKeyboardFocused\" Value=\"true\" />\n                        <Trigger Property=\"IsMouseOver\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                        <Trigger Property=\"IsPressed\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOff}\" x:Name=\"PressedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOn}\" x:Name=\"PressedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Opacity\" TargetName=\"ContentPresenter\" Value=\"0.1\"/>\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style x:Key=\"NuclearThumbStyle\" d:IsControlPart=\"True\" TargetType=\"{x:Type Thumb}\" BasedOn=\"{x:Null}\">\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type Thumb}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"0.8\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0.3\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"0.1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0.3\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Grid Margin=\"0,0,0,0\" x:Name=\"Grid\">\n                        <Rectangle HorizontalAlignment=\"Stretch\" x:Name=\"HoverRectangle\" VerticalAlignment=\"Stretch\" Width=\"Auto\" Height=\"Auto\" RadiusX=\"3\" RadiusY=\"4\" Stroke=\"{x:Null}\" Margin=\"4.5,-2,4.5,-2\" Opacity=\"0.3\" MinHeight=\"10\">\n                            <Rectangle.Fill>\n                                <SolidColorBrush Color=\"{DynamicResource WhiteColor}\" />\n                            </Rectangle.Fill>\n                        </Rectangle>\n                        <Rectangle HorizontalAlignment=\"Stretch\" x:Name=\"PressedRectangle\" VerticalAlignment=\"Stretch\" Width=\"Auto\" Height=\"Auto\" RadiusX=\"3\" RadiusY=\"4\" Stroke=\"{x:Null}\" Margin=\"4.5,-2,4.5,-2\" Opacity=\"0.3\" MinHeight=\"10\">\n                            <Rectangle.Fill>\n                                <SolidColorBrush Color=\"{DynamicResource WhiteColor}\" />\n                            </Rectangle.Fill>\n                        </Rectangle>\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsFocused\" Value=\"True\" />\n                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"False\" >\n                            <Setter Property=\"Opacity\" TargetName=\"Grid\" Value=\"0.1\"/>\n                        </Trigger>\n                        <Trigger Property=\"IsDragging\" Value=\"True\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOff}\" x:Name=\"PressedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOn}\" x:Name=\"PressedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style x:Key=\"NuclearScrollRepeatButtonStyle\" d:IsControlPart=\"True\" TargetType=\"{x:Type RepeatButton}\">\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"BorderBrush\" Value=\"Transparent\" />\n        <Setter Property=\"IsTabStop\" Value=\"false\" />\n        <Setter Property=\"Focusable\" Value=\"false\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type RepeatButton}\">\n                    <Grid>\n                        <Rectangle Fill=\"{TemplateBinding Background}\" Stroke=\"{TemplateBinding BorderBrush}\" StrokeThickness=\"{TemplateBinding BorderThickness}\" />\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style TargetType=\"{x:Type ScrollBar}\">\n        <Setter Property=\"Stylus.IsFlicksEnabled\" Value=\"false\" />\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ScrollBar}\">\n                    <Grid x:Name=\"GridRoot\" Width=\"{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}\" Background=\"{DynamicResource NormalBrush}\">\n                        <Grid.RowDefinitions>\n                            <RowDefinition MaxHeight=\"18\" />\n                            <RowDefinition Height=\"0.00001*\" />\n                            <RowDefinition MaxHeight=\"18\" />\n                        </Grid.RowDefinitions>\n                        <RepeatButton x:Name=\"DecreaseRepeat\" Command=\"ScrollBar.LineUpCommand\" Background=\"{x:Null}\" BorderBrush=\"{x:Null}\" Foreground=\"{x:Null}\">\n                            <Grid Margin=\"0,0,0,0\">\n                                <Path Margin=\"4.742,3.997,4.946,5.327\" VerticalAlignment=\"Stretch\" Height=\"Auto\" Fill=\"{DynamicResource GlyphBrush}\" Stretch=\"Fill\" Stroke=\"{DynamicResource GlyphBrush}\" StrokeThickness=\"1\" Data=\"M5.2422477,11.132184 L11.5544,11.132184 8.6412958,4.4969033 z\" x:Name=\"DecreaseArrow\" />\n                            </Grid>\n                        </RepeatButton>\n                        <Track Grid.Row=\"1\" x:Name=\"PART_Track\" Orientation=\"Vertical\" IsDirectionReversed=\"true\">\n                            <Track.Thumb>\n                                <Thumb Style=\"{DynamicResource NuclearThumbStyle}\" Background=\"{x:Null}\" Foreground=\"{x:Null}\" />\n                            </Track.Thumb>\n                            <Track.IncreaseRepeatButton>\n                                <RepeatButton x:Name=\"PageUp\" Style=\"{DynamicResource NuclearScrollRepeatButtonStyle}\" Command=\"ScrollBar.PageDownCommand\" />\n                            </Track.IncreaseRepeatButton>\n                            <Track.DecreaseRepeatButton>\n                                <RepeatButton x:Name=\"PageDown\" Style=\"{DynamicResource NuclearScrollRepeatButtonStyle}\" Command=\"ScrollBar.PageUpCommand\" />\n                            </Track.DecreaseRepeatButton>\n                        </Track>\n                        <RepeatButton Grid.Row=\"2\" x:Name=\"IncreaseRepeat\" Command=\"ScrollBar.LineDownCommand\">\n                            <Grid>\n                                <Path Margin=\"4.742,3.997,4.946,5.327\" x:Name=\"IncreaseArrow\" VerticalAlignment=\"Stretch\" Height=\"Auto\" Fill=\"{DynamicResource GlyphBrush}\" Stretch=\"Fill\" Stroke=\"{DynamicResource GlyphBrush}\" StrokeThickness=\"1\" Data=\"M5.2422477,11.132184 L11.5544,11.132184 8.6412958,4.4969033 z\" RenderTransformOrigin=\"0.5,0.5\">\n                                    <Path.RenderTransform>\n                                        <TransformGroup>\n                                            <ScaleTransform ScaleX=\"1\" ScaleY=\"1\" />\n                                            <SkewTransform AngleX=\"0\" AngleY=\"0\" />\n                                            <RotateTransform Angle=\"180\" />\n                                            <TranslateTransform X=\"0\" Y=\"0\" />\n                                        </TransformGroup>\n                                    </Path.RenderTransform>\n                                </Path>\n                            </Grid>\n                        </RepeatButton>\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"Orientation\" Value=\"Horizontal\">\n                            <Setter Property=\"LayoutTransform\" TargetName=\"GridRoot\">\n                                <Setter.Value>\n                                    <RotateTransform Angle=\"-90\" />\n                                </Setter.Value>\n                            </Setter>\n                            <Setter TargetName=\"PART_Track\" Property=\"Orientation\" Value=\"Vertical\" />\n                            <Setter Property=\"Command\" Value=\"ScrollBar.LineLeftCommand\" TargetName=\"DecreaseRepeat\" />\n                            <Setter Property=\"Command\" Value=\"ScrollBar.LineRightCommand\" TargetName=\"IncreaseRepeat\" />\n                            <Setter Property=\"Command\" Value=\"ScrollBar.PageLeftCommand\" TargetName=\"PageDown\" />\n                            <Setter Property=\"Command\" Value=\"ScrollBar.PageRightCommand\" TargetName=\"PageUp\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style x:Key=\"NuclearScrollViewer\" TargetType=\"{x:Type ScrollViewer}\" BasedOn=\"{x:Null}\">\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ScrollViewer}\">\n                    <Grid Background=\"{TemplateBinding Background}\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"*\" />\n                            <ColumnDefinition Width=\"Auto\" />\n                        </Grid.ColumnDefinitions>\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"*\" />\n                            <RowDefinition Height=\"Auto\" />\n                        </Grid.RowDefinitions>\n                        <ScrollContentPresenter Grid.Column=\"0\" Grid.Row=\"0\" Margin=\"{TemplateBinding Padding}\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" CanContentScroll=\"{TemplateBinding CanContentScroll}\" />\n                        <ScrollBar Visibility=\"{TemplateBinding ComputedHorizontalScrollBarVisibility}\" Grid.Column=\"0\" Grid.Row=\"1\" x:Name=\"PART_HorizontalScrollBar\" Orientation=\"Horizontal\" Value=\"{Binding Path=HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}\" ViewportSize=\"{TemplateBinding ViewportWidth}\" Minimum=\"0\" Maximum=\"{TemplateBinding ScrollableWidth}\" AutomationProperties.AutomationId=\"HorizontalScrollBar\" />\n                        <ScrollBar Visibility=\"{TemplateBinding ComputedVerticalScrollBarVisibility}\" Grid.Column=\"1\" Grid.Row=\"0\" x:Name=\"PART_VerticalScrollBar\" Orientation=\"Vertical\" Value=\"{Binding Path=VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}\" ViewportSize=\"{TemplateBinding ViewportHeight}\" Minimum=\"0\" Maximum=\"{TemplateBinding ScrollableHeight}\" AutomationProperties.AutomationId=\"VerticalScrollBar\" />\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n    <Style TargetType=\"{x:Type ListBox}\">\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"true\" />\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\" />\n        <Setter Property=\"BorderBrush\">\n            <Setter.Value>\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\n                </LinearGradientBrush>\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"ScrollViewer.HorizontalScrollBarVisibility\" Value=\"Auto\" />\n        <Setter Property=\"ScrollViewer.VerticalScrollBarVisibility\" Value=\"Auto\" />\n        <Setter Property=\"ScrollViewer.CanContentScroll\" Value=\"True\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ListBox}\">\n                    <Grid>\n                        <Border x:Name=\"Border\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2\" Background=\"{DynamicResource ControlBackgroundBrush}\" />\n                        <ScrollViewer Margin=\"1\" Style=\"{DynamicResource NuclearScrollViewer}\" Focusable=\"false\" Background=\"{x:Null}\">\n                            <StackPanel Margin=\"1,1,1,1\" IsItemsHost=\"true\" />\n                        </ScrollViewer>\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Background\" Value=\"{DynamicResource DisabledBackgroundBrush}\" TargetName=\"Border\" />\n                            <Setter Property=\"BorderBrush\" Value=\"{DynamicResource DisabledBorderBrush}\" TargetName=\"Border\" />\n                        </Trigger>\n                        <Trigger Property=\"IsGrouping\" Value=\"true\">\n                            <Setter Property=\"ScrollViewer.CanContentScroll\" Value=\"false\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n    <Style d:IsControlPart=\"True\" TargetType=\"{x:Type ListBoxItem}\">\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"true\" />\n        <Setter Property=\"OverridesDefaultStyle\" Value=\"true\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ListBoxItem}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                        <Storyboard x:Key=\"SelectedOn\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"SelectedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                        <Storyboard x:Key=\"SelectedOff\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"SelectedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                        <Storyboard x:Key=\"FocussedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"FocussedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Grid SnapsToDevicePixels=\"true\" Margin=\"1,1,1,1\">\n                        <Rectangle x:Name=\"Background\" IsHitTestVisible=\"False\" Opacity=\"0.25\" Fill=\"{StaticResource NormalBrush}\" RadiusX=\"1\" RadiusY=\"1\"/>\n                        <Rectangle x:Name=\"HoverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource NormalBrush}\" RadiusX=\"1\" RadiusY=\"1\"/>\n                        <Rectangle x:Name=\"SelectedRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource SelectedBackgroundBrush}\" RadiusX=\"1\" RadiusY=\"1\"/>\n                        <ContentPresenter HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Margin=\"5,2,0,2\" x:Name=\"contentPresenter\" />\n                        <Rectangle x:Name=\"FocusVisualElement\" Stroke=\"{StaticResource HoverShineBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\"/>\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsFocused\" Value=\"True\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource FocussedOff}\" x:Name=\"FocussedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource FocussedOn}\" x:Name=\"FocussedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                        <Trigger Property=\"IsSelected\" Value=\"true\">\n\n                            <Trigger.ExitActions>\n                                <BeginStoryboard x:Name=\"SelectedOff_BeginStoryboard\" Storyboard=\"{StaticResource SelectedOff}\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard x:Name=\"SelectedOn_BeginStoryboard\" Storyboard=\"{StaticResource SelectedOn}\"/>\n                            </Trigger.EnterActions>\n\n                        </Trigger>\n                        <MultiTrigger>\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"IsMouseOver\" Value=\"True\" />\n                                <Condition Property=\"Selector.IsSelected\" Value=\"False\" />\n                            </MultiTrigger.Conditions>\n\n                            <MultiTrigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </MultiTrigger.EnterActions>\n                            <MultiTrigger.ExitActions>\n                                <BeginStoryboard x:Name=\"HoverOff_BeginStoryboard\" Storyboard=\"{StaticResource HoverOff}\"/>\n                            </MultiTrigger.ExitActions>\n\n                        </MultiTrigger>\n                        <MultiTrigger>\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"Selector.IsSelected\" Value=\"True\" />\n                                <Condition Property=\"IsMouseOver\" Value=\"True\" />\n                            </MultiTrigger.Conditions>\n\n                        </MultiTrigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource DisabledForegroundBrush}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Style.Triggers>\n            <Trigger Property=\"Selector.IsSelected\" Value=\"True\">\n                <Setter Property=\"Foreground\">\n                    <Setter.Value>\n                        <SolidColorBrush Color=\"{DynamicResource BlackColor}\" />\n                    </Setter.Value>\n                </Setter>\n            </Trigger>\n        </Style.Triggers>\n    </Style>\n\n    <Style x:Key=\"ExpanderHeaderFocusVisual\">\n        <Setter Property=\"Control.Template\">\n            <Setter.Value>\n                <ControlTemplate>\n                    <Border>\n                        <Rectangle SnapsToDevicePixels=\"true\" Margin=\"0\" Stroke=\"Black\" StrokeDashArray=\"1 2\" StrokeThickness=\"1\" />\n                    </Border>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n    <Style x:Key=\"ExpanderDownHeaderStyle\" TargetType=\"{x:Type ToggleButton}\">\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ToggleButton}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Border Padding=\"{TemplateBinding Padding}\" Background=\"{DynamicResource NormalBrush}\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" BorderThickness=\"1,1,1,1\" CornerRadius=\"2,2,2,2\">\n                        <Grid SnapsToDevicePixels=\"False\" Background=\"Transparent\">\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"19\" />\n                                <ColumnDefinition Width=\"*\" />\n                            </Grid.ColumnDefinitions>\n                            <Rectangle Margin=\"2,2,2,2\" x:Name=\"Rectangle\" Fill=\"{DynamicResource NormalBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" />\n                            <Rectangle Margin=\"2,2,2,2\" x:Name=\"ShineRectangle\" Fill=\"{DynamicResource ShineBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" />\n                            <Rectangle Margin=\"2,2,2,2\" x:Name=\"HoverRectangle\" Fill=\"{DynamicResource HoverBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\" />\n                            <Rectangle Margin=\"2,2,2,2\" x:Name=\"HoverShineRectangle\" Fill=\"{DynamicResource HoverShineBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\" />\n                            <Rectangle Margin=\"2,2,2,2\" x:Name=\"PressedRectangle\" Fill=\"{DynamicResource PressedBrush}\" Stroke=\"{DynamicResource PressedBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\" />\n                            <Path HorizontalAlignment=\"Center\" x:Name=\"Up_Arrow\" VerticalAlignment=\"Center\" Fill=\"{DynamicResource GlyphBrush}\" Data=\"M 0 0 L 4 4 L 8 0 Z\" />\n                            <Path Visibility=\"Collapsed\" HorizontalAlignment=\"Center\" x:Name=\"Down_Arrow\" VerticalAlignment=\"Center\" Fill=\"{DynamicResource GlyphBrush}\" Data=\"M 0 4 L 4 0 L 8 4 Z\" />\n                            <ContentPresenter SnapsToDevicePixels=\"True\" HorizontalAlignment=\"Left\" Margin=\"4,2,0,2\" VerticalAlignment=\"Center\" Grid.Column=\"1\" RecognizesAccessKey=\"True\" />\n                        </Grid>\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsChecked\" Value=\"true\">\n                            <Setter Property=\"Visibility\" TargetName=\"Down_Arrow\" Value=\"Visible\" />\n                            <Setter Property=\"Visibility\" TargetName=\"Up_Arrow\" Value=\"Collapsed\" />\n\n                        </Trigger>\n                        <Trigger Property=\"IsMouseOver\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </Trigger.EnterActions>\n\n                        </Trigger>\n                        <Trigger Property=\"IsPressed\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOff}\" x:Name=\"PressedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOn}\" x:Name=\"PressedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style x:Key=\"ExpanderRightHeaderStyle\" TargetType=\"{x:Type ToggleButton}\">\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ToggleButton}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Border Padding=\"{TemplateBinding Padding}\" Background=\"{DynamicResource NormalBrush}\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" BorderThickness=\"1,1,1,1\" CornerRadius=\"2,2,2,2\">\n                        <Grid SnapsToDevicePixels=\"False\" Background=\"Transparent\">\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"19\" />\n                                <RowDefinition Height=\"*\" />\n                            </Grid.RowDefinitions>\n                            <Grid>\n                                <Grid.LayoutTransform>\n                                    <TransformGroup>\n                                        <TransformGroup.Children>\n                                            <TransformCollection>\n                                                <RotateTransform Angle=\"-90\" />\n                                            </TransformCollection>\n                                        </TransformGroup.Children>\n                                    </TransformGroup>\n                                </Grid.LayoutTransform>\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"Rectangle\" Fill=\"{DynamicResource NormalBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" />\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"ShineRectangle\" Fill=\"{DynamicResource ShineBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" />\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"HoverRectangle\" Fill=\"{DynamicResource HoverBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\" />\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"HoverShineRectangle\" Fill=\"{DynamicResource HoverShineBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\" />\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"PressedRectangle\" Fill=\"{DynamicResource PressedBrush}\" Stroke=\"{DynamicResource PressedBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\" />\n                                <Path HorizontalAlignment=\"Center\" x:Name=\"Up_Arrow\" VerticalAlignment=\"Center\" Fill=\"{DynamicResource GlyphBrush}\" Data=\"M 0 0 L 4 4 L 8 0 Z\" />\n                                <Path Visibility=\"Collapsed\" HorizontalAlignment=\"Center\" x:Name=\"Down_Arrow\" VerticalAlignment=\"Center\" Fill=\"{DynamicResource GlyphBrush}\" Data=\"M 0 4 L 4 0 L 8 4 Z\" />\n                            </Grid>\n                            <ContentPresenter SnapsToDevicePixels=\"True\" HorizontalAlignment=\"Center\" Margin=\"2,4,4,0\" VerticalAlignment=\"Top\" Grid.Row=\"1\" RecognizesAccessKey=\"True\">\n                                <ContentPresenter.LayoutTransform>\n                                    <TransformGroup>\n                                        <TransformGroup.Children>\n                                            <TransformCollection>\n                                                <RotateTransform Angle=\"-90\" />\n                                            </TransformCollection>\n                                        </TransformGroup.Children>\n                                    </TransformGroup>\n                                </ContentPresenter.LayoutTransform>\n                            </ContentPresenter>\n                        </Grid>\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsChecked\" Value=\"true\">\n                            <Setter Property=\"Visibility\" TargetName=\"Up_Arrow\" Value=\"Collapsed\" />\n                            <Setter Property=\"Visibility\" TargetName=\"Down_Arrow\" Value=\"Visible\" />\n                        </Trigger>\n                        <Trigger Property=\"IsMouseOver\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </Trigger.EnterActions>\n\n                        </Trigger>\n                        <Trigger Property=\"IsPressed\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOff}\" x:Name=\"PressedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOn}\" x:Name=\"PressedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style x:Key=\"ExpanderUpHeaderStyle\" TargetType=\"{x:Type ToggleButton}\">\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ToggleButton}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Border Padding=\"{TemplateBinding Padding}\" CornerRadius=\"2,2,2,2\" BorderThickness=\"1,1,1,1\" Background=\"{DynamicResource NormalBrush}\" BorderBrush=\"{DynamicResource NormalBorderBrush}\">\n                        <Grid SnapsToDevicePixels=\"False\" Background=\"Transparent\">\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"19\" />\n                                <ColumnDefinition Width=\"*\" />\n                            </Grid.ColumnDefinitions>\n                            <Grid>\n                                <Grid.LayoutTransform>\n                                    <TransformGroup>\n                                        <TransformGroup.Children>\n                                            <TransformCollection>\n                                                <RotateTransform Angle=\"180\" />\n                                            </TransformCollection>\n                                        </TransformGroup.Children>\n                                    </TransformGroup>\n                                </Grid.LayoutTransform>\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"Rectangle\" Fill=\"{DynamicResource NormalBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" />\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"ShineRectangle\" Fill=\"{DynamicResource ShineBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" />\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"HoverRectangle\" Fill=\"{DynamicResource HoverBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\" />\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"HoverShineRectangle\" Fill=\"{DynamicResource HoverShineBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\" />\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"PressedRectangle\" Fill=\"{DynamicResource PressedBrush}\" Stroke=\"{DynamicResource PressedBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\" />\n                                <Path HorizontalAlignment=\"Center\" x:Name=\"Up_Arrow\" VerticalAlignment=\"Center\" Fill=\"{DynamicResource GlyphBrush}\" Data=\"M 0 0 L 4 4 L 8 0 Z\" />\n                                <Path Visibility=\"Collapsed\" HorizontalAlignment=\"Center\" x:Name=\"Down_Arrow\" VerticalAlignment=\"Center\" Fill=\"{DynamicResource GlyphBrush}\" Data=\"M 0 4 L 4 0 L 8 4 Z\" />\n                            </Grid>\n                            <ContentPresenter SnapsToDevicePixels=\"True\" HorizontalAlignment=\"Left\" Margin=\"4,2,0,2\" VerticalAlignment=\"Center\" Grid.Column=\"1\" RecognizesAccessKey=\"True\" />\n                        </Grid>\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsChecked\" Value=\"true\">\n                            <Setter Property=\"Visibility\" TargetName=\"Up_Arrow\" Value=\"Collapsed\" />\n                            <Setter Property=\"Visibility\" TargetName=\"Down_Arrow\" Value=\"Visible\" />\n                        </Trigger>\n                        <Trigger Property=\"IsMouseOver\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </Trigger.EnterActions>\n\n                        </Trigger>\n                        <Trigger Property=\"IsPressed\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOff}\" x:Name=\"PressedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOn}\" x:Name=\"PressedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style x:Key=\"ExpanderLeftHeaderStyle\" TargetType=\"{x:Type ToggleButton}\">\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ToggleButton}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Border Padding=\"{TemplateBinding Padding}\" CornerRadius=\"2,2,2,2\" Background=\"{DynamicResource NormalBrush}\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" BorderThickness=\"1,1,1,1\">\n                        <Grid SnapsToDevicePixels=\"False\" Background=\"Transparent\">\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"19\" />\n                                <RowDefinition Height=\"*\" />\n                            </Grid.RowDefinitions>\n                            <Grid>\n                                <Grid.LayoutTransform>\n                                    <TransformGroup>\n                                        <TransformGroup.Children>\n                                            <TransformCollection>\n                                                <RotateTransform Angle=\"90\" />\n                                            </TransformCollection>\n                                        </TransformGroup.Children>\n                                    </TransformGroup>\n                                </Grid.LayoutTransform>\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"Rectangle\" Fill=\"{DynamicResource NormalBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" />\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"ShineRectangle\" Fill=\"{DynamicResource ShineBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" />\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"HoverRectangle\" Fill=\"{DynamicResource HoverBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\" />\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"HoverShineRectangle\" Fill=\"{DynamicResource HoverShineBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\" />\n                                <Rectangle Margin=\"2,2,2,2\" x:Name=\"PressedRectangle\" Fill=\"{DynamicResource PressedBrush}\" Stroke=\"{DynamicResource PressedBorderBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" Opacity=\"0\" />\n                                <Path HorizontalAlignment=\"Center\" x:Name=\"Up_Arrow\" VerticalAlignment=\"Center\" Fill=\"{DynamicResource GlyphBrush}\" Data=\"M 0 0 L 4 4 L 8 0 Z\" />\n                                <Path Visibility=\"Collapsed\" HorizontalAlignment=\"Center\" x:Name=\"Down_Arrow\" VerticalAlignment=\"Center\" Fill=\"{DynamicResource GlyphBrush}\" Data=\"M 0 4 L 4 0 L 8 4 Z\" />\n                            </Grid>\n                            <ContentPresenter SnapsToDevicePixels=\"True\" HorizontalAlignment=\"Center\" Margin=\"4,4,2,0\" VerticalAlignment=\"Top\" Grid.Row=\"1\" RecognizesAccessKey=\"True\">\n                                <ContentPresenter.LayoutTransform>\n                                    <TransformGroup>\n                                        <TransformGroup.Children>\n                                            <TransformCollection>\n                                                <RotateTransform Angle=\"90\" />\n                                            </TransformCollection>\n                                        </TransformGroup.Children>\n                                    </TransformGroup>\n                                </ContentPresenter.LayoutTransform>\n                            </ContentPresenter>\n                        </Grid>\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsChecked\" Value=\"true\">\n                            <Setter Property=\"Visibility\" TargetName=\"Up_Arrow\" Value=\"Collapsed\" />\n                            <Setter Property=\"Visibility\" TargetName=\"Down_Arrow\" Value=\"Visible\" />\n                        </Trigger>\n                        <Trigger Property=\"IsMouseOver\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </Trigger.EnterActions>\n\n                        </Trigger>\n                        <Trigger Property=\"IsPressed\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOff}\" x:Name=\"PressedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOn}\" x:Name=\"PressedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style TargetType=\"{x:Type Expander}\">\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\" />\n        <Setter Property=\"BorderBrush\" Value=\"Transparent\" />\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type Expander}\">\n                    <Border SnapsToDevicePixels=\"true\" Background=\"{TemplateBinding Background}\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"1,1,1,1\" CornerRadius=\"3\">\n                        <DockPanel x:Name=\"dockPanel\">\n                            <ToggleButton FontFamily=\"{TemplateBinding FontFamily}\" FontSize=\"{TemplateBinding FontSize}\" FontStretch=\"{TemplateBinding FontStretch}\" FontStyle=\"{TemplateBinding FontStyle}\" FontWeight=\"{TemplateBinding FontWeight}\" Foreground=\"{TemplateBinding Foreground}\" HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Padding=\"{TemplateBinding Padding}\" VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\" FocusVisualStyle=\"{StaticResource ExpanderHeaderFocusVisual}\" Margin=\"1,1,1,0\" MinHeight=\"0\" MinWidth=\"0\" x:Name=\"HeaderSite\" Style=\"{StaticResource ExpanderDownHeaderStyle}\" Content=\"{TemplateBinding Header}\" ContentTemplate=\"{TemplateBinding HeaderTemplate}\" ContentTemplateSelector=\"{TemplateBinding HeaderTemplateSelector}\" IsChecked=\"{Binding Path=IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}\" DockPanel.Dock=\"Top\" />\n                            <Border Visibility=\"Collapsed\" Background=\"{DynamicResource ShadeBrush}\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" BorderThickness=\"1,0,1,1\" CornerRadius=\"3,3,3,3\" x:Name=\"border\" Margin=\"1,1,1,1\">\n                                <ContentPresenter Focusable=\"false\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" Margin=\"1,1,1,1\" x:Name=\"ExpandSite\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" DockPanel.Dock=\"Bottom\" />\n                            </Border>\n                        </DockPanel>\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsExpanded\" Value=\"true\">\n                            <Setter Property=\"Visibility\" TargetName=\"border\" Value=\"Visible\" />\n                        </Trigger>\n                        <Trigger Property=\"ExpandDirection\" Value=\"Down\" />\n                        <Trigger Property=\"ExpandDirection\" Value=\"Right\">\n                            <Setter Property=\"DockPanel.Dock\" TargetName=\"ExpandSite\" Value=\"Right\" />\n                            <Setter Property=\"DockPanel.Dock\" TargetName=\"HeaderSite\" Value=\"Left\" />\n                            <Setter Property=\"Style\" TargetName=\"HeaderSite\" Value=\"{StaticResource ExpanderRightHeaderStyle}\" />\n                        </Trigger>\n                        <Trigger Property=\"ExpandDirection\" Value=\"Up\">\n                            <Setter Property=\"DockPanel.Dock\" TargetName=\"ExpandSite\" Value=\"Top\" />\n                            <Setter Property=\"DockPanel.Dock\" TargetName=\"HeaderSite\" Value=\"Bottom\" />\n                            <Setter Property=\"Style\" TargetName=\"HeaderSite\" Value=\"{StaticResource ExpanderUpHeaderStyle}\" />\n                        </Trigger>\n                        <Trigger Property=\"ExpandDirection\" Value=\"Left\">\n                            <Setter Property=\"DockPanel.Dock\" TargetName=\"ExpandSite\" Value=\"Left\" />\n                            <Setter Property=\"DockPanel.Dock\" TargetName=\"HeaderSite\" Value=\"Right\" />\n                            <Setter Property=\"Style\" TargetName=\"HeaderSite\" Value=\"{StaticResource ExpanderLeftHeaderStyle}\" />\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <ControlTemplate x:Key=\"ComboBoxToggleButton\" TargetType=\"{x:Type ToggleButton}\">\n        <ControlTemplate.Resources>\n            <Storyboard x:Key=\"HoverOn\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                </DoubleAnimationUsingKeyFrames>\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"HoverOff\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                </DoubleAnimationUsingKeyFrames>\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n        </ControlTemplate.Resources>\n        <Grid x:Name=\"grid\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition />\n                <ColumnDefinition Width=\"20\" />\n            </Grid.ColumnDefinitions>\n            <Rectangle Grid.ColumnSpan=\"2\" HorizontalAlignment=\"Stretch\" x:Name=\"Rectangle\" VerticalAlignment=\"Stretch\" Width=\"Auto\" Height=\"Auto\" RadiusX=\"3\" RadiusY=\"3\" Fill=\"{DynamicResource LightBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" />\n            <Rectangle Grid.Column=\"0\" HorizontalAlignment=\"Stretch\" VerticalAlignment=\"Stretch\" Width=\"Auto\" Height=\"Auto\" RadiusX=\"3\" RadiusY=\"3\" Fill=\"{DynamicResource LightBrush}\" Stroke=\"{DynamicResource NormalBorderBrush}\" />\n            <Border Margin=\"2,2,2,2\" Grid.Column=\"1\" Background=\"{DynamicResource NormalBrush}\" CornerRadius=\"3,3,3,3\" x:Name=\"border\" />\n            <Border Margin=\"2,2,2,2\" Background=\"{DynamicResource HoverBrush}\" CornerRadius=\"3,3,3,3\" x:Name=\"HoverBorder\" Grid.Column=\"1\" Opacity=\"0\" />\n            <Border Margin=\"2,2,2,2\" Background=\"{DynamicResource HoverShineBrush}\" CornerRadius=\"3,3,3,3\" x:Name=\"HoverShineBorder\" Grid.Column=\"1\" Opacity=\"0\" />\n            <Path Grid.Column=\"1\" HorizontalAlignment=\"Center\" x:Name=\"Arrow\" VerticalAlignment=\"Center\" Fill=\"{x:Null}\" Data=\"M0.5,0.5 L3,6.5 5.5,0.5\" Stroke=\"{DynamicResource GlyphBrush}\" Margin=\"5,0,5,0\" Height=\"7\" StrokeThickness=\"2\" Stretch=\"Fill\" />\n            <Border Margin=\"2,2,2,2\" Background=\"{DynamicResource ShineBrush}\" CornerRadius=\"3,3,3,3\" x:Name=\"ShineBorder\" Grid.Column=\"1\" />\n        </Grid>\n        <ControlTemplate.Triggers>\n            <Trigger Property=\"IsMouseOver\" Value=\"true\">\n                <Trigger.ExitActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                </Trigger.ExitActions>\n                <Trigger.EnterActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                </Trigger.EnterActions>\n            </Trigger>\n            <Trigger Property=\"IsChecked\" Value=\"true\" />\n            <Trigger Property=\"IsEnabled\" Value=\"False\">\n                <Setter Property=\"Foreground\" Value=\"{DynamicResource DisabledForegroundBrush}\" />\n                <Setter Property=\"Stroke\" TargetName=\"Arrow\" Value=\"{DynamicResource DisabledForegroundBrush}\"/>\n                <Setter Property=\"Background\" TargetName=\"border\" Value=\"{DynamicResource DisabledBorderBrush}\"/>\n                <Setter Property=\"Opacity\" TargetName=\"grid\" Value=\"0.8\"/>\n            </Trigger>\n        </ControlTemplate.Triggers>\n    </ControlTemplate>\n    <ControlTemplate x:Key=\"ComboBoxTextBox\" TargetType=\"{x:Type TextBox}\">\n        <Border x:Name=\"PART_ContentHost\" Focusable=\"False\" Background=\"{TemplateBinding Background}\" />\n        <ControlTemplate.Triggers>\n        </ControlTemplate.Triggers>\n    </ControlTemplate>\n\n    <Style TargetType=\"{x:Type ComboBox}\">\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"true\" />\n        <Setter Property=\"Template\" Value=\"{DynamicResource ComboBoxTemplate}\" />\n    </Style>\n\n    <Style TargetType=\"{x:Type ToolTip}\">\n        <Setter Property = \"HorizontalOffset\" Value=\"0\"/>\n        <Setter Property = \"VerticalOffset\" Value=\"5\"/>\n        <Setter Property = \"Background\" Value=\"{StaticResource BlackBrush}\"/>\n        <Setter Property = \"Foreground\" Value=\"{DynamicResource TextBrush}\"/>\n        <Setter Property = \"FontSize\" Value=\"14\"/>\n        <Setter Property = \"FontWeight\" Value=\"Normal\"/>\n    </Style>\n\n    <ControlTemplate x:Key=\"ComboBoxTemplate\" TargetType=\"{x:Type ComboBox}\">\n        <Grid x:Name=\"grid\">\n            <ToggleButton Grid.Column=\"2\" Template=\"{DynamicResource ComboBoxToggleButton}\" x:Name=\"ToggleButton\" Focusable=\"false\" IsChecked=\"{Binding Path=IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}\" ClickMode=\"Press\" />\n            <ContentPresenter HorizontalAlignment=\"Left\" Margin=\"3,3,23,3\" x:Name=\"ContentSite\" VerticalAlignment=\"Center\" Content=\"{TemplateBinding SelectionBoxItem}\" ContentTemplate=\"{TemplateBinding SelectionBoxItemTemplate}\" ContentTemplateSelector=\"{TemplateBinding ItemTemplateSelector}\" IsHitTestVisible=\"False\" />\n            <TextBox Visibility=\"Hidden\" Template=\"{DynamicResource ComboBoxTextBox}\" HorizontalAlignment=\"Left\" Margin=\"3,3,23,3\" x:Name=\"PART_EditableTextBox\" Style=\"{x:Null}\" VerticalAlignment=\"Center\" Focusable=\"True\" Background=\"{DynamicResource LightBrush}\" IsReadOnly=\"{TemplateBinding IsReadOnly}\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" Foreground=\"{DynamicResource TextBrush}\" />\n            <Popup IsOpen=\"{TemplateBinding IsDropDownOpen}\" Placement=\"Bottom\" x:Name=\"Popup\" Focusable=\"False\" AllowsTransparency=\"True\" PopupAnimation=\"Slide\">\n                <Grid MaxHeight=\"{TemplateBinding MaxDropDownHeight}\" MinWidth=\"{TemplateBinding ActualWidth}\" x:Name=\"DropDown\" SnapsToDevicePixels=\"True\">\n                    <Border x:Name=\"DropDownBorder\" Background=\"{DynamicResource ControlBackgroundBrush}\" CornerRadius=\"3,3,3,3\" />\n                    <ScrollViewer Margin=\"4,6,4,6\" Style=\"{DynamicResource NuclearScrollViewer}\" SnapsToDevicePixels=\"True\" HorizontalScrollBarVisibility=\"Auto\" VerticalScrollBarVisibility=\"Auto\" CanContentScroll=\"True\" Foreground=\"{DynamicResource {x:Static SystemColors.ActiveCaptionTextBrushKey}}\">\n                        <StackPanel IsItemsHost=\"True\" KeyboardNavigation.DirectionalNavigation=\"Contained\" />\n                    </ScrollViewer>\n                </Grid>\n            </Popup>\n        </Grid>\n        <ControlTemplate.Triggers>\n            <Trigger Property=\"HasItems\" Value=\"false\">\n                <Setter Property=\"MinHeight\" Value=\"95\" TargetName=\"DropDownBorder\" />\n            </Trigger>\n            <Trigger Property=\"IsEnabled\" Value=\"false\">\n                <Setter Property=\"Foreground\" Value=\"{DynamicResource DisabledForegroundBrush}\" />\n                <Setter Property=\"Opacity\" TargetName=\"grid\" Value=\"0.5\" />\n            </Trigger>\n            <Trigger Property=\"IsGrouping\" Value=\"true\">\n                <Setter Property=\"ScrollViewer.CanContentScroll\" Value=\"false\" />\n            </Trigger>\n            <Trigger Property=\"AllowsTransparency\" SourceName=\"Popup\" Value=\"true\">\n                <Setter Property=\"Margin\" Value=\"0,2,0,0\" TargetName=\"DropDownBorder\" />\n            </Trigger>\n            <Trigger Property=\"IsEditable\" Value=\"true\">\n                <Setter Property=\"IsTabStop\" Value=\"false\" />\n                <Setter Property=\"Visibility\" Value=\"Visible\" TargetName=\"PART_EditableTextBox\" />\n                <Setter Property=\"Visibility\" Value=\"Hidden\" TargetName=\"ContentSite\" />\n            </Trigger>\n        </ControlTemplate.Triggers>\n    </ControlTemplate>\n\n    <Style d:IsControlPart=\"True\" TargetType=\"{x:Type ComboBoxItem}\">\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"true\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ComboBoxItem}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\" />\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                        <Storyboard x:Key=\"SelectedOn\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"SelectedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                        <Storyboard x:Key=\"SelectedOff\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"SelectedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\" />\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n\n                    </ControlTemplate.Resources>\n                    <Grid SnapsToDevicePixels=\"true\" Margin=\"1,1,1,1\">\n                        <Rectangle x:Name=\"Background\" IsHitTestVisible=\"False\" Opacity=\"0.25\" Fill=\"{StaticResource NormalBrush}\" RadiusX=\"1\" RadiusY=\"1\" />\n                        <Rectangle x:Name=\"HoverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource NormalBrush}\" RadiusX=\"1\" RadiusY=\"1\" />\n                        <Rectangle x:Name=\"SelectedRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource SelectedBackgroundBrush}\" RadiusX=\"1\" RadiusY=\"1\" />\n                        <ContentPresenter Margin=\"5,2,0,2\" x:Name=\"contentPresenter\" VerticalAlignment=\"Center\" />\n                        <Rectangle x:Name=\"FocusVisualElement\" Visibility=\"Collapsed\" Stroke=\"{StaticResource HoverShineBrush}\" StrokeThickness=\"1\" RadiusX=\"1\" RadiusY=\"1\" />\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsHighlighted\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource SelectedOff}\" x:Name=\"SelectedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource SelectedOn}\" x:Name=\"SelectedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n\n                        </Trigger>\n                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource DisabledForegroundBrush}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style TargetType=\"{x:Type ProgressBar}\">\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ProgressBar}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"ValueChangedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PART_Track\" Storyboard.TargetProperty=\"(UIElement.BitmapEffect).(OuterGlowBitmapEffect.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\" />\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.2000000\" Value=\"1\" />\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:02\" Value=\"0\" />\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"IndeterminateOn\">\n                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"IndeterminateGradientFill\" Storyboard.TargetProperty=\"(Shape.Fill).(LinearGradientBrush.Transform).(TransformGroup.Children)[0].X\" RepeatBehavior=\"Forever\">\n                                <SplineDoubleKeyFrame KeyTime=\"0\" Value=\"0\" />\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:2.4\" Value=\"145\" />\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Grid>\n                        <Border x:Name=\"PART_Track\" BorderBrush=\"{DynamicResource SolidBorderBrush}\" BorderThickness=\"1\" CornerRadius=\"0,0,0,0\" Background=\"{DynamicResource LightBrush}\">\n                            <Border.BitmapEffect>\n                                <OuterGlowBitmapEffect Opacity=\"0\" GlowColor=\"{DynamicResource WhiteColor}\" GlowSize=\"3\" />\n                            </Border.BitmapEffect>\n                        </Border>\n                        <Border HorizontalAlignment=\"Left\" x:Name=\"PART_Indicator\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" BorderThickness=\"1\" CornerRadius=\"0,0,0,0\">\n                            <Border.Background>\n                                <LinearGradientBrush EndPoint=\".7,1\" StartPoint=\".7,0\">\n                                    <GradientStop Color=\"#B2FFFFFF\" Offset=\"0\" />\n                                    <GradientStop Color=\"#C6FFFFFF\" Offset=\"0.15\" />\n                                    <GradientStop Color=\"#D1FFFFFF\" Offset=\"0.275\" />\n                                    <GradientStop Color=\"#C6FFFFFF\" Offset=\"0.4\" />\n                                    <GradientStop Color=\"#BFFFFFFF\" Offset=\"0.65\" />\n                                    <GradientStop Color=\"#A5FFFFFF\" Offset=\"0.75\" />\n                                    <GradientStop Color=\"#91FFFFFF\" Offset=\"0.85\" />\n                                    <GradientStop Color=\"#72FFFFFF\" Offset=\"1\" />\n                                </LinearGradientBrush>\n                            </Border.Background>\n                        </Border>\n                        <Grid x:Name=\"IndeterminateRoot\" Visibility=\"Collapsed\">\n                            <Rectangle Margin=\"{TemplateBinding BorderThickness}\" x:Name=\"IndeterminateSolidFill\" Opacity=\"1\" RenderTransformOrigin=\"0.5,0.5\" RadiusX=\"2\" RadiusY=\"2\" Fill=\"{DynamicResource ControlBackgroundBrush}\" Stroke=\"#FF448DCA\" StrokeThickness=\"0\" />\n                            <Rectangle Margin=\"{TemplateBinding BorderThickness}\" x:Name=\"IndeterminateGradientFill\" RadiusX=\"2\" RadiusY=\"2\" StrokeThickness=\"1\">\n                                <Rectangle.Fill>\n                                    <LinearGradientBrush EndPoint=\"0.508,1.394\" StartPoint=\"0.401,-0.394\" SpreadMethod=\"Repeat\">\n                                        <GradientStop Color=\"#00FFFFFF\" />\n                                        <GradientStop Color=\"#FEA1A1A1\" Offset=\"1\" />\n                                        <GradientStop Color=\"#00FEFEFE\" Offset=\"0.517\" />\n                                        <GradientStop Color=\"#FEA1A1A1\" Offset=\"0.517\" />\n                                        <LinearGradientBrush.Transform>\n                                            <TransformGroup>\n                                                <TranslateTransform X=\"0\" />\n                                            </TransformGroup>\n                                        </LinearGradientBrush.Transform>\n                                    </LinearGradientBrush>\n                                </Rectangle.Fill>\n                            </Rectangle>\n                        </Grid>\n                        <Border Background=\"{DynamicResource DisabledBackgroundBrush}\" Opacity=\"0\" BorderThickness=\"1,1,1,1\" BorderBrush=\"{DynamicResource DisabledBorderBrush}\" x:Name=\"border\"/>\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsEnabled\" Value=\"False\">\n                            <Setter Property=\"Opacity\" TargetName=\"border\" Value=\"0.8\"/>\n                        </Trigger>\n                        <EventTrigger RoutedEvent=\"RangeBase.ValueChanged\">\n                            <BeginStoryboard Storyboard=\"{StaticResource ValueChangedOn}\" />\n                        </EventTrigger>\n                        <Trigger Property=\"IsIndeterminate\" Value=\"True\">\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource IndeterminateOn}\" />\n                            </Trigger.EnterActions>\n                            <Setter Property=\"Visibility\" TargetName=\"IndeterminateRoot\" Value=\"Visible\"/>\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style TargetType=\"{x:Type TextBox}\">\n        <Setter Property=\"KeyboardNavigation.TabNavigation\" Value=\"None\" />\n        <Setter Property=\"FocusVisualStyle\" Value=\"{x:Null}\" />\n        <Setter Property=\"AllowDrop\" Value=\"true\" />\n        <Setter Property=\"Template\" Value=\"{DynamicResource TextBoxTemplate}\" />\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"Background\" Value=\"{DynamicResource ControlBackgroundBrush}\"/>\n        <Setter Property=\"BorderBrush\" Value=\"#FF000000\"/>\n    </Style>\n\n    <ControlTemplate x:Key=\"TextBoxTemplate\" TargetType=\"{x:Type TextBox}\">\n        <ControlTemplate.Resources>\n            <Storyboard x:Key=\"HoverOn\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"0.5\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"HoverOff\">\n                <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"FocusedOn\">\n                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n            <Storyboard x:Key=\"FocusedOff\">\n                <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\">\n                    <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\" />\n                </DoubleAnimationUsingKeyFrames>\n            </Storyboard>\n        </ControlTemplate.Resources>\n        <Grid x:Name=\"grid\">\n            <Border x:Name=\"Border\" Opacity=\"1\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2,2,2,2\" Background=\"{TemplateBinding Background}\">\n                <Grid>\n                    <Border BorderThickness=\"1\">\n                        <ScrollViewer Margin=\"0\" x:Name=\"PART_ContentHost\" Style=\"{DynamicResource NuclearScrollViewer}\" />\n                    </Border>\n                </Grid>\n            </Border>\n            <Border x:Name=\"HoverBorder\" IsHitTestVisible=\"False\" Opacity=\"0\" BorderBrush=\"{StaticResource GlyphBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2,2,2,2\" />\n            <Border x:Name=\"FocusVisualElement\" IsHitTestVisible=\"False\" Opacity=\"0\" BorderBrush=\"{StaticResource HoverShineBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2,2,2,2\" />\n\n\n        </Grid>\n        <ControlTemplate.Triggers>\n            <Trigger Property=\"IsFocused\" Value=\"True\">\n                <Trigger.ExitActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource FocusedOff}\" x:Name=\"FocusedOff_BeginStoryboard\" />\n                </Trigger.ExitActions>\n                <Trigger.EnterActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource FocusedOn}\" x:Name=\"FocusedOn_BeginStoryboard\" />\n                </Trigger.EnterActions>\n\n            </Trigger>\n            <MultiTrigger>\n                <MultiTrigger.ExitActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\" />\n                </MultiTrigger.ExitActions>\n                <MultiTrigger.EnterActions>\n                    <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\" />\n                </MultiTrigger.EnterActions>\n                <MultiTrigger.Conditions>\n                    <Condition Property=\"IsMouseOver\" Value=\"True\" />\n                    <Condition Property=\"IsFocused\" Value=\"False\" />\n                </MultiTrigger.Conditions>\n\n            </MultiTrigger>\n            <Trigger Property=\"IsEnabled\" Value=\"False\">\n                <Setter Property=\"Foreground\" Value=\"{DynamicResource DisabledForegroundBrush}\" />\n                <Setter Property=\"Opacity\" TargetName=\"grid\" Value=\"0.5\" />\n            </Trigger>\n        </ControlTemplate.Triggers>\n    </ControlTemplate>\n\n    <Style TargetType=\"{x:Type PasswordBox}\">\n        <Setter Property=\"KeyboardNavigation.TabNavigation\" Value=\"None\" />\n        <Setter Property=\"FocusVisualStyle\" Value=\"{x:Null}\" />\n        <Setter Property=\"AllowDrop\" Value=\"true\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type PasswordBox}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"0.5\" />\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\" />\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"FocusedOn\">\n                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"FocusedOff\">\n                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\" />\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Grid>\n                        <Border x:Name=\"Border\" Opacity=\"1\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2,2,2,2\" Background=\"{TemplateBinding Background}\">\n                            <Grid>\n                                <Border BorderThickness=\"1\">\n                                    <ScrollViewer Margin=\"0\" x:Name=\"PART_ContentHost\" Style=\"{DynamicResource NuclearScrollViewer}\" />\n                                </Border>\n                            </Grid>\n                        </Border>\n                        <Border x:Name=\"HoverBorder\" IsHitTestVisible=\"False\" Opacity=\"0\" BorderBrush=\"{StaticResource GlyphBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2,2,2,2\" />\n                        <Border x:Name=\"FocusVisualElement\" IsHitTestVisible=\"False\" Opacity=\"0\" BorderBrush=\"{StaticResource HoverShineBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2,2,2,2\" />\n\n\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsFocused\" Value=\"True\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource FocusedOff}\" x:Name=\"FocusedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource FocusedOn}\" x:Name=\"FocusedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n\n                        </Trigger>\n                        <MultiTrigger>\n                            <MultiTrigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </MultiTrigger.ExitActions>\n                            <MultiTrigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </MultiTrigger.EnterActions>\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"IsMouseOver\" Value=\"True\" />\n                                <Condition Property=\"IsFocused\" Value=\"False\" />\n                            </MultiTrigger.Conditions>\n\n                        </MultiTrigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"False\">\n                            <Setter Property=\"Background\" TargetName=\"Border\" Value=\"{DynamicResource DisabledBackgroundBrush}\"/>\n                            <Setter Property=\"BorderBrush\" TargetName=\"Border\" Value=\"{DynamicResource DisabledBorderBrush}\"/>\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource DisabledForegroundBrush}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"Background\" Value=\"{DynamicResource ControlBackgroundBrush}\"/>\n        <Setter Property=\"BorderBrush\" Value=\"#FF000000\"/>\n    </Style>\n\n    <Style TargetType=\"{x:Type RichTextBox}\">\n        <Setter Property=\"KeyboardNavigation.TabNavigation\" Value=\"None\" />\n        <Setter Property=\"FocusVisualStyle\" Value=\"{x:Null}\" />\n        <Setter Property=\"AllowDrop\" Value=\"true\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type RichTextBox}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"0.5\" />\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\" />\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"FocusedOn\">\n                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"FocusedOff\">\n                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"Opacity\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\" />\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Grid>\n                        <Border x:Name=\"Border\" Opacity=\"1\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2,2,2,2\" Background=\"{TemplateBinding Background}\">\n                            <Grid>\n                                <Border BorderThickness=\"1\">\n                                    <ScrollViewer Margin=\"0\" x:Name=\"PART_ContentHost\" Style=\"{DynamicResource NuclearScrollViewer}\" />\n                                </Border>\n                            </Grid>\n                        </Border>\n                        <Border x:Name=\"HoverBorder\" IsHitTestVisible=\"False\" Opacity=\"0\" BorderBrush=\"{StaticResource GlyphBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2,2,2,2\" />\n                        <Border x:Name=\"FocusVisualElement\" IsHitTestVisible=\"False\" Opacity=\"0\" BorderBrush=\"{StaticResource HoverShineBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2,2,2,2\" />\n\n\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsFocused\" Value=\"True\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource FocusedOff}\" x:Name=\"FocusedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource FocusedOn}\" x:Name=\"FocusedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n\n                        </Trigger>\n                        <MultiTrigger>\n                            <MultiTrigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </MultiTrigger.ExitActions>\n                            <MultiTrigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </MultiTrigger.EnterActions>\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"IsMouseOver\" Value=\"True\" />\n                                <Condition Property=\"IsFocused\" Value=\"False\" />\n                            </MultiTrigger.Conditions>\n\n                        </MultiTrigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"False\">\n                            <Setter Property=\"Background\" TargetName=\"Border\" Value=\"{DynamicResource DisabledBackgroundBrush}\"/>\n                            <Setter Property=\"BorderBrush\" TargetName=\"Border\" Value=\"{DynamicResource DisabledBorderBrush}\"/>\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource DisabledForegroundBrush}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"Background\" Value=\"{DynamicResource ControlBackgroundBrush}\"/>\n        <Setter Property=\"BorderBrush\" Value=\"#FF000000\"/>\n    </Style>\n    <Style TargetType=\"{x:Type Label}\">\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Top\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type Label}\">\n                    <Grid>\n                        <ContentPresenter HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" RecognizesAccessKey=\"True\" />\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\" />\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n    </Style>\n\n    <Style TargetType=\"{x:Type Menu}\">\n        <Setter Property=\"Background\" Value=\"{DynamicResource ControlBackgroundBrush}\" />\n        <Setter Property=\"BorderBrush\" Value=\"{DynamicResource NormalBorderBrush}\" />\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"True\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type Menu}\">\n                    <Grid>\n                        <Border Margin=\"1\" x:Name=\"Border\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" />\n                        <StackPanel Background=\"{TemplateBinding Background}\" IsItemsHost=\"True\" ClipToBounds=\"True\" Orientation=\"Horizontal\" />\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsEnabled\" Value=\"False\">\n                            <Setter Property=\"Background\" Value=\"{DynamicResource DisabledBackgroundBrush}\" TargetName=\"Border\" />\n                            <Setter Property=\"BorderBrush\" Value=\"{DynamicResource DisabledBorderBrush}\" TargetName=\"Border\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <DropShadowBitmapEffect x:Key=\"PopupDropShadow\" ShadowDepth=\"1.5\" Softness=\"0.15\" />\n    <Style TargetType=\"{x:Type MenuItem}\">\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"{Binding Path=HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"{Binding Path=VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}\" />\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type MenuItem}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HighlightedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"HightlightedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Border x:Name=\"Border\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"0,0,0,0\" Margin=\"3,2,3,2\">\n                        <Grid Margin=\"0,0,0,0\">\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition MinWidth=\"17\" Width=\"Auto\" SharedSizeGroup=\"MenuItemIconColumnGroup\" />\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"Auto\" SharedSizeGroup=\"MenuItemIGTColumnGroup\" />\n                                <ColumnDefinition Width=\"14\" />\n                            </Grid.ColumnDefinitions>\n                            <Border Grid.Column=\"0\" Grid.ColumnSpan=\"4\" Background=\"{DynamicResource HoverBrush}\" Opacity=\"0\" x:Name=\"HoverBorder\" CornerRadius=\"1,1,1,1\"/>\n                            <Border Grid.ColumnSpan=\"4\" Background=\"{DynamicResource HoverShineBrush}\" Opacity=\"0\" x:Name=\"HoverShineBorder\" CornerRadius=\"1,1,1,1\"/>\n                            <ContentPresenter Margin=\"4,0,6,0\" x:Name=\"Icon\" VerticalAlignment=\"Center\" ContentSource=\"Icon\" />\n                            <Grid Visibility=\"Hidden\" Margin=\"4,0,6,0\" x:Name=\"GlyphPanel\" VerticalAlignment=\"Center\">\n                                <Path x:Name=\"GlyphPanelpath\" VerticalAlignment=\"Center\" Fill=\"{TemplateBinding Foreground}\" Data=\"M0,2 L0,4.8 L2.5,7.4 L7.1,2.8 L7.1,0 L2.5,4.6 z\" FlowDirection=\"LeftToRight\" />\n                            </Grid>\n                            <ContentPresenter Grid.Column=\"1\" x:Name=\"HeaderHost\" RecognizesAccessKey=\"True\" ContentSource=\"Header\" Margin=\"2,1,2,1\" />\n                            <Grid Grid.Column=\"3\" Margin=\"4,0,6,0\" x:Name=\"ArrowPanel\" VerticalAlignment=\"Center\">\n                                <Path x:Name=\"ArrowPanelPath\" VerticalAlignment=\"Center\" Fill=\"{TemplateBinding Foreground}\" Data=\"M0,0 L0,8 L4,4 z\" />\n                            </Grid>\n                            <Popup IsOpen=\"{Binding Path=IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" x:Name=\"SubMenuPopup\" Focusable=\"false\" AllowsTransparency=\"true\" PopupAnimation=\"{DynamicResource {x:Static SystemParameters.MenuPopupAnimationKey}}\">\n                                <Grid x:Name=\"SubMenu\">\n                                    <Border x:Name=\"SubMenuBorder\" Background=\"{DynamicResource LightBrush}\" BorderThickness=\"1\" Opacity=\"0.8\">\n                                        <Border.BorderBrush>\n                                            <SolidColorBrush Color=\"{DynamicResource WhiteColor}\" />\n                                        </Border.BorderBrush>\n                                    </Border>\n                                    <StackPanel IsItemsHost=\"True\" KeyboardNavigation.DirectionalNavigation=\"Cycle\" />\n                                </Grid>\n                            </Popup>\n                        </Grid>\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"Role\" Value=\"TopLevelHeader\">\n                            <Setter Property=\"Margin\" Value=\"0,1,0,1\" />\n                            <Setter Property=\"Padding\" Value=\"6,3,6,3\" />\n                            <Setter Property=\"Grid.IsSharedSizeScope\" Value=\"true\" />\n                            <Setter Property=\"Placement\" Value=\"Bottom\" TargetName=\"SubMenuPopup\" />\n                            <Setter Property=\"Visibility\" Value=\"Collapsed\" TargetName=\"ArrowPanel\" />\n                        </Trigger>\n                        <Trigger Property=\"Role\" Value=\"TopLevelItem\">\n                            <Setter Property=\"Margin\" Value=\"0,1,0,1\" />\n                            <Setter Property=\"Padding\" Value=\"6,3,6,3\" />\n                            <Setter Property=\"Visibility\" Value=\"Collapsed\" TargetName=\"ArrowPanel\" />\n                        </Trigger>\n                        <Trigger Property=\"Role\" Value=\"SubmenuHeader\">\n                            <Setter Property=\"DockPanel.Dock\" Value=\"Top\" />\n                            <Setter Property=\"Padding\" Value=\"0,2,0,2\" />\n                            <Setter Property=\"Grid.IsSharedSizeScope\" Value=\"true\" />\n                        </Trigger>\n                        <Trigger Property=\"Role\" Value=\"SubmenuItem\">\n                            <Setter Property=\"DockPanel.Dock\" Value=\"Top\" />\n                            <Setter Property=\"Padding\" Value=\"0,2,0,2\" />\n                            <Setter Property=\"Visibility\" Value=\"Collapsed\" TargetName=\"ArrowPanel\" />\n                        </Trigger>\n                        <Trigger Property=\"IsSuspendingPopupAnimation\" Value=\"true\">\n                            <Setter Property=\"PopupAnimation\" Value=\"None\" TargetName=\"SubMenuPopup\" />\n                        </Trigger>\n                        <Trigger Property=\"Icon\" Value=\"{x:Null}\">\n                            <Setter Property=\"Visibility\" Value=\"Collapsed\" TargetName=\"Icon\" />\n                        </Trigger>\n                        <Trigger Property=\"IsChecked\" Value=\"true\">\n                            <Setter Property=\"Visibility\" Value=\"Visible\" TargetName=\"GlyphPanel\" />\n                            <Setter Property=\"Visibility\" Value=\"Collapsed\" TargetName=\"Icon\" />\n                        </Trigger>\n                        <Trigger Property=\"AllowsTransparency\" SourceName=\"SubMenuPopup\" Value=\"true\">\n                            <Setter Property=\"Margin\" Value=\"0,0,3,3\" TargetName=\"SubMenu\" />\n                            <Setter Property=\"SnapsToDevicePixels\" Value=\"true\" TargetName=\"SubMenu\" />\n                            <Setter Property=\"BitmapEffect\" Value=\"{DynamicResource PopupDropShadow}\" TargetName=\"SubMenuBorder\" />\n                        </Trigger>\n                        <Trigger Property=\"IsHighlighted\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HightlightedOff}\" x:Name=\"HightlightedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HighlightedOn}\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style TargetType=\"{x:Type ContextMenu}\">\n        <Setter Property=\"Background\" Value=\"Black\" />\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"true\" />\n        \n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ContextMenu}\">\n                    <Border x:Name=\"Border\" Height=\"Auto\" Background=\"#FF3A3A3A\" BorderThickness=\"1\" BorderBrush=\"#FFFFFFFF\">\n                        <ScrollViewer>\n                            <StackPanel Background=\"Black\" IsItemsHost=\"True\" KeyboardNavigation.DirectionalNavigation=\"Cycle\" Margin=\"2\"/>\n                        </ScrollViewer>\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"HasDropShadow\" Value=\"true\">\n                            <Setter TargetName=\"Border\" Property=\"Padding\" Value=\"0,3,0,3\" />\n                            <Setter TargetName=\"Border\" Property=\"CornerRadius\" Value=\"4\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style TargetType=\"{x:Type Separator}\">\n        <Setter Property=\"Height\" Value=\"1\" />\n        <Setter Property=\"Margin\" Value=\"0,2,0,2\" />\n        <Setter Property=\"Focusable\" Value=\"false\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type Separator}\">\n                    <Border BorderBrush=\"{DynamicResource SolidBorderBrush}\" BorderThickness=\"1\" />\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style TargetType=\"{x:Type TabControl}\">\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type TabControl}\">\n                    <Grid ClipToBounds=\"true\" SnapsToDevicePixels=\"true\" KeyboardNavigation.TabNavigation=\"Local\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition x:Name=\"ColumnDefinition0\" />\n                            <ColumnDefinition x:Name=\"ColumnDefinition1\" Width=\"0\" />\n                        </Grid.ColumnDefinitions>\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"Auto\" x:Name=\"RowDefinition0\" />\n                            <RowDefinition Height=\"*\" x:Name=\"RowDefinition1\" />\n                        </Grid.RowDefinitions>\n                        <Border CornerRadius=\"2,2,0,0\" Background=\"{DynamicResource LightBrush}\" x:Name=\"border\">\n                            <TabPanel x:Name=\"HeaderPanel\" IsItemsHost=\"true\" Panel.ZIndex=\"1\" KeyboardNavigation.TabIndex=\"1\" RenderTransformOrigin=\"0.5,0.5\" Width=\"Auto\" Height=\"Auto\">\n                                <TabPanel.LayoutTransform>\n                                    <TransformGroup>\n                                        <ScaleTransform ScaleX=\"1\" ScaleY=\"1\" />\n                                        <SkewTransform AngleX=\"0\" AngleY=\"0\" />\n                                        <RotateTransform Angle=\"0\" />\n                                        <TranslateTransform X=\"0\" Y=\"0\" />\n                                    </TransformGroup>\n                                </TabPanel.LayoutTransform>\n                                <TabPanel.RenderTransform>\n                                    <TransformGroup>\n                                        <ScaleTransform ScaleX=\"1\" ScaleY=\"1\" />\n                                        <SkewTransform AngleX=\"0\" AngleY=\"0\" />\n                                        <RotateTransform />\n                                        <TranslateTransform X=\"0\" Y=\"0\" />\n                                    </TransformGroup>\n                                </TabPanel.RenderTransform>\n\n                            </TabPanel>\n                        </Border>\n                        <Border x:Name=\"ContentPanel\" Grid.Column=\"0\" Grid.Row=\"1\" KeyboardNavigation.DirectionalNavigation=\"Contained\" KeyboardNavigation.TabIndex=\"2\" KeyboardNavigation.TabNavigation=\"Local\" Background=\"{DynamicResource ShadeBrush}\" CornerRadius=\"0,0,2,2\">\n                            <ContentPresenter SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\" x:Name=\"PART_SelectedContentHost\" ContentSource=\"SelectedContent\" />\n                        </Border>\n                        <Border HorizontalAlignment=\"Stretch\" VerticalAlignment=\"Stretch\" Width=\"Auto\" Height=\"Auto\" BorderThickness=\"0,0,0,1\" CornerRadius=\"10,0,0,0\" Opacity=\"0.5\" Margin=\"2,0,2,0\" x:Name=\"border1\">\n                            <Border.LayoutTransform>\n                                <TransformGroup>\n                                    <ScaleTransform ScaleX=\"1\" ScaleY=\"1\"/>\n                                    <SkewTransform AngleX=\"0\" AngleY=\"0\"/>\n                                    <RotateTransform Angle=\"0\"/>\n                                    <TranslateTransform X=\"0\" Y=\"0\"/>\n                                </TransformGroup>\n                            </Border.LayoutTransform>\n                            <Border.BorderBrush>\n                                <SolidColorBrush Color=\"{DynamicResource BlackColor}\"/>\n                            </Border.BorderBrush>\n                        </Border>\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"TabStripPlacement\" Value=\"Bottom\">\n                            <Setter Property=\"Grid.Row\" TargetName=\"ContentPanel\" Value=\"0\" />\n                            <Setter Property=\"Height\" TargetName=\"RowDefinition0\" Value=\"*\" />\n                            <Setter Property=\"Height\" TargetName=\"RowDefinition1\" Value=\"Auto\" />\n                            <Setter Property=\"Grid.Row\" TargetName=\"border\" Value=\"1\"/>\n                            <Setter Property=\"CornerRadius\" TargetName=\"ContentPanel\" Value=\"2,2,0,0\"/>\n                            <Setter Property=\"CornerRadius\" TargetName=\"border\" Value=\"0,0,2,2\"/>\n                        </Trigger>\n                        <Trigger Property=\"TabStripPlacement\" Value=\"Left\">\n\n                            <Setter Property=\"Grid.Row\" TargetName=\"HeaderPanel\" Value=\"0\" />\n                            <Setter Property=\"Grid.Row\" TargetName=\"ContentPanel\" Value=\"0\" />\n                            <Setter Property=\"Grid.Column\" TargetName=\"ContentPanel\" Value=\"1\" />\n                            <Setter Property=\"Width\" TargetName=\"ColumnDefinition0\" Value=\"Auto\" />\n                            <Setter Property=\"Width\" TargetName=\"ColumnDefinition1\" Value=\"*\" />\n                            <Setter Property=\"Height\" TargetName=\"RowDefinition0\" Value=\"*\" />\n                            <Setter Property=\"Height\" TargetName=\"RowDefinition1\" Value=\"0\" />\n                            <Setter Property=\"Grid.Column\" TargetName=\"border\" Value=\"0\"/>\n                            <Setter Property=\"Margin\" TargetName=\"border\" Value=\"0,0,0,0\"/>\n                            <Setter Property=\"Margin\" TargetName=\"ContentPanel\" Value=\"0,0,0,0\"/>\n                            <Setter Property=\"LayoutTransform\" TargetName=\"border1\">\n                                <Setter.Value>\n                                    <TransformGroup>\n                                        <ScaleTransform ScaleX=\"1\" ScaleY=\"1\"/>\n                                        <SkewTransform AngleX=\"0\" AngleY=\"0\"/>\n                                        <RotateTransform Angle=\"-90\"/>\n                                        <TranslateTransform X=\"0\" Y=\"0\"/>\n                                    </TransformGroup>\n                                </Setter.Value>\n                            </Setter>\n                            <Setter Property=\"Margin\" TargetName=\"border1\" Value=\"0,0,0,0\"/>\n                            <Setter Property=\"CornerRadius\" TargetName=\"border\" Value=\"0,2,2,0\"/>\n                            <Setter Property=\"CornerRadius\" TargetName=\"ContentPanel\" Value=\"0,2,2,0\"/>\n\n                        </Trigger>\n                        <Trigger Property=\"TabStripPlacement\" Value=\"Right\">\n                            <Setter Property=\"Grid.Row\" TargetName=\"HeaderPanel\" Value=\"0\" />\n                            <Setter Property=\"Grid.Row\" TargetName=\"ContentPanel\" Value=\"0\" />\n                            <Setter Property=\"Grid.Column\" TargetName=\"ContentPanel\" Value=\"0\" />\n                            <Setter Property=\"Width\" TargetName=\"ColumnDefinition0\" Value=\"*\" />\n                            <Setter Property=\"Width\" TargetName=\"ColumnDefinition1\" Value=\"Auto\" />\n                            <Setter Property=\"Height\" TargetName=\"RowDefinition0\" Value=\"*\" />\n                            <Setter Property=\"Height\" TargetName=\"RowDefinition1\" Value=\"0\" />\n                            <Setter Property=\"Grid.Column\" TargetName=\"border\" Value=\"1\"/>\n                            <Setter Property=\"LayoutTransform\" TargetName=\"border1\">\n                                <Setter.Value>\n                                    <TransformGroup>\n                                        <ScaleTransform ScaleX=\"1\" ScaleY=\"1\"/>\n                                        <SkewTransform AngleX=\"0\" AngleY=\"0\"/>\n                                        <RotateTransform Angle=\"90\"/>\n                                        <TranslateTransform X=\"0\" Y=\"0\"/>\n                                    </TransformGroup>\n                                </Setter.Value>\n                            </Setter>\n                            <Setter Property=\"Grid.Column\" TargetName=\"border1\" Value=\"1\"/>\n                            <Setter Property=\"CornerRadius\" TargetName=\"ContentPanel\" Value=\"2,0,0,2\"/>\n                            <Setter Property=\"CornerRadius\" TargetName=\"border\" Value=\"0,2,2,0\"/>\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style d:IsControlPart=\"True\" TargetType=\"{x:Type TabItem}\">\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type TabItem}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"SelectedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"SelectedBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"SelectedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"SelectedBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Grid x:Name=\"grid\" Margin=\"2,1,2,3\">\n                        <Grid.LayoutTransform>\n                            <TransformGroup>\n                                <ScaleTransform ScaleX=\"1\" ScaleY=\"1\"/>\n                                <SkewTransform AngleX=\"0\" AngleY=\"0\"/>\n                                <RotateTransform Angle=\"0\"/>\n                                <TranslateTransform X=\"0\" Y=\"0\"/>\n                            </TransformGroup>\n                        </Grid.LayoutTransform>\n                        <Border x:Name=\"border\" BorderBrush=\"{x:Null}\" CornerRadius=\"2,2,2,2\" Opacity=\"0.5\">\n                            <Border.Background>\n                                <LinearGradientBrush EndPoint=\"0.5,0.976\" StartPoint=\"0.5,0.039\">\n                                    <GradientStop Color=\"#7F595959\" Offset=\"0\" />\n                                    <GradientStop Color=\"#19FFFFFF\" Offset=\"1\" />\n                                </LinearGradientBrush>\n                            </Border.Background>\n                        </Border>\n                        <Border x:Name=\"SelectedBorder\" BorderBrush=\"{x:Null}\" CornerRadius=\"2,2,2,2\" Opacity=\"0\" Background=\"{DynamicResource SelectedBackgroundBrush}\"/>\n                        <Border x:Name=\"HoverBorder\" BorderBrush=\"{x:Null}\" CornerRadius=\"2,2,2,2\" Opacity=\"0\">\n                            <Border.Background>\n                                <LinearGradientBrush EndPoint=\"0.5,0.976\" StartPoint=\"0.5,0.039\">\n                                    <GradientStop Color=\"#7F595959\" Offset=\"0\" />\n                                    <GradientStop Color=\"#19FFFFFF\" Offset=\"1\" />\n                                </LinearGradientBrush>\n                            </Border.Background>\n                        </Border>\n                        <Grid>\n                            <ContentPresenter x:Name=\"ContentSite\" RecognizesAccessKey=\"True\" ContentSource=\"Header\" d:LayoutOverrides=\"Width, Height\" HorizontalAlignment=\"Center\" Margin=\"6,1,6,1\" VerticalAlignment=\"Center\" />\n                        </Grid>\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"TabStripPlacement\" Value=\"Left\">\n                            <Setter Property=\"LayoutTransform\" TargetName=\"grid\">\n                                <Setter.Value>\n                                    <TransformGroup>\n                                        <ScaleTransform ScaleX=\"1\" ScaleY=\"1\" />\n                                        <SkewTransform AngleX=\"0\" AngleY=\"0\" />\n                                        <RotateTransform Angle=\"-90\" />\n                                        <TranslateTransform X=\"0\" Y=\"0\" />\n                                    </TransformGroup>\n                                </Setter.Value>\n                            </Setter>\n                        </Trigger>\n                        <Trigger Property=\"TabStripPlacement\" Value=\"Right\">\n                            <Setter Property=\"LayoutTransform\" TargetName=\"grid\">\n                                <Setter.Value>\n                                    <TransformGroup>\n                                        <ScaleTransform ScaleX=\"1\" ScaleY=\"1\" />\n                                        <SkewTransform AngleX=\"0\" AngleY=\"0\" />\n                                        <RotateTransform Angle=\"90\" />\n                                        <TranslateTransform X=\"0\" Y=\"0\" />\n                                    </TransformGroup>\n                                </Setter.Value>\n                            </Setter>\n                        </Trigger>\n                        <Trigger Property=\"TabStripPlacement\" Value=\"Bottom\">\n                            <Setter Property=\"LayoutTransform\" TargetName=\"ContentSite\">\n                                <Setter.Value>\n                                    <TransformGroup>\n                                        <ScaleTransform ScaleX=\"1\" ScaleY=\"1\" />\n                                        <SkewTransform AngleX=\"0\" AngleY=\"0\" />\n                                        <RotateTransform Angle=\"180\" />\n                                        <TranslateTransform X=\"0\" Y=\"0\" />\n                                    </TransformGroup>\n                                </Setter.Value>\n                            </Setter>\n                            <Setter Property=\"LayoutTransform\" TargetName=\"grid\">\n                                <Setter.Value>\n                                    <TransformGroup>\n                                        <ScaleTransform ScaleX=\"1\" ScaleY=\"1\"/>\n                                        <SkewTransform AngleX=\"0\" AngleY=\"0\"/>\n                                        <RotateTransform Angle=\"180\"/>\n                                        <TranslateTransform X=\"0\" Y=\"0\"/>\n                                    </TransformGroup>\n                                </Setter.Value>\n                            </Setter>\n                        </Trigger>\n                        <MultiTrigger>\n                            <MultiTrigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </MultiTrigger.ExitActions>\n                            <MultiTrigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </MultiTrigger.EnterActions>\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"IsMouseOver\" Value=\"True\" />\n                                <Condition Property=\"Selector.IsSelected\" Value=\"False\" />\n                            </MultiTrigger.Conditions>\n                        </MultiTrigger>\n                        <Trigger Property=\"IsSelected\" Value=\"True\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource SelectedOff}\" x:Name=\"SelectedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource SelectedOn}\" x:Name=\"SelectedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n                            <Setter Property=\"Panel.ZIndex\" Value=\"100\" />\n                        </Trigger>\n                        <MultiTrigger>\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"IsMouseOver\" Value=\"True\" SourceName=\"grid\" />\n                                <Condition Property=\"Selector.IsSelected\" Value=\"True\" />\n                            </MultiTrigger.Conditions>\n                            <Setter Property=\"Background\" TargetName=\"border\" Value=\"{DynamicResource SelectedBackgroundBrush}\" />\n                            <Setter Property=\"Opacity\" TargetName=\"border\" Value=\"0.9\" />\n                        </MultiTrigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"False\">\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource DisabledForegroundBrush}\" />\n                            <Setter Property=\"Background\" TargetName=\"border\" Value=\"{DynamicResource DisabledBackgroundBrush}\"/>\n                            <Setter Property=\"Opacity\" TargetName=\"grid\" Value=\"0.3\"/>\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n        <Style.Triggers>\n            <Trigger Property=\"Selector.IsSelected\" Value=\"True\">\n                <Setter Property=\"Foreground\" >\n                    <Setter.Value>\n                        <SolidColorBrush Color=\"{DynamicResource BlackColor}\"/>\n                    </Setter.Value>\n                </Setter>\n            </Trigger>\n        </Style.Triggers>\n    </Style>\n    <Style x:Key=\"NuclearSliderThumb\" d:IsControlPart=\"True\" TargetType=\"{x:Type Thumb}\">\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"true\" />\n        <Setter Property=\"Height\" Value=\"14\" />\n        <Setter Property=\"Width\" Value=\"14\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type Thumb}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\" />\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\" />\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOn\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\" />\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOff\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\" />\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Grid>\n                        <Border x:Name=\"Background\" Background=\"{TemplateBinding Background}\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\" />\n                        <Border x:Name=\"HoverBorder\" Opacity=\"0\" Background=\"{StaticResource HoverBrush}\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\" />\n                        <Border x:Name=\"HoverShineBorder\" Opacity=\"0\" Background=\"{StaticResource HoverShineBrush}\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\" />\n                        <Border x:Name=\"PressedBorder\" Opacity=\"0\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\" Background=\"{StaticResource PressedBrush}\" />\n                        <Border x:Name=\"ShineBorder\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\" Background=\"{StaticResource ShineBrush}\" Opacity=\"1\" />\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </Trigger.EnterActions>\n\n                        </Trigger>\n                        <Trigger Property=\"IsDragging\" Value=\"True\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOff}\" x:Name=\"PressedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOn}\" x:Name=\"PressedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Background\" TargetName=\"Background\" Value=\"{DynamicResource DisabledBackgroundBrush}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Background\" Value=\"{DynamicResource NormalBrush}\"/>\n        <Setter Property=\"BorderBrush\" Value=\"{DynamicResource NormalBorderBrush}\"/>\n        <Setter Property=\"BorderThickness\" Value=\"1,1,1,1\"/>\n    </Style>\n    <Style TargetType=\"{x:Type Slider}\">\n        <Setter Property=\"Background\" Value=\"{DynamicResource NormalBrush}\" />\n        <Setter Property=\"BorderBrush\" Value=\"{DynamicResource NormalBorderBrush}\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type Slider}\">\n                    <Grid x:Name=\"GridRoot\">\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"Auto\" />\n                            <RowDefinition Height=\"Auto\" MinHeight=\"{TemplateBinding MinHeight}\" />\n                            <RowDefinition Height=\"Auto\" />\n                        </Grid.RowDefinitions>\n                        <TickBar Visibility=\"Collapsed\" x:Name=\"TopTick\" Height=\"4\" SnapsToDevicePixels=\"True\" Placement=\"Top\" Fill=\"{DynamicResource GlyphBrush}\" />\n                        <Border Grid.Row=\"1\" Margin=\"0\" x:Name=\"Border\" Height=\"4\" CornerRadius=\"2\" Background=\"{DynamicResource LightBrush}\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" BorderThickness=\"1,1,1,1\" />\n                        <Track Grid.Row=\"1\" x:Name=\"PART_Track\">\n                            <Track.Thumb>\n                                <Thumb Style=\"{DynamicResource NuclearSliderThumb}\" Background=\"{DynamicResource NormalBrush}\" Foreground=\"{x:Null}\" Width=\"20\" />\n                            </Track.Thumb>\n                            <Track.IncreaseRepeatButton>\n                                <RepeatButton Style=\"{DynamicResource NuclearScrollRepeatButtonStyle}\" Command=\"Slider.IncreaseLarge\" />\n                            </Track.IncreaseRepeatButton>\n                            <Track.DecreaseRepeatButton>\n                                <RepeatButton Style=\"{DynamicResource NuclearScrollRepeatButtonStyle}\" Command=\"Slider.DecreaseLarge\" />\n                            </Track.DecreaseRepeatButton>\n                        </Track>\n                        <TickBar Visibility=\"Collapsed\" Grid.Row=\"2\" x:Name=\"BottomTick\" Height=\"4\" SnapsToDevicePixels=\"True\" Placement=\"Bottom\" Fill=\"{TemplateBinding Foreground}\" />\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"TickPlacement\" Value=\"TopLeft\">\n                            <Setter Property=\"Visibility\" Value=\"Visible\" TargetName=\"TopTick\" />\n                        </Trigger>\n                        <Trigger Property=\"TickPlacement\" Value=\"BottomRight\">\n                            <Setter Property=\"Visibility\" Value=\"Visible\" TargetName=\"BottomTick\" />\n                        </Trigger>\n                        <Trigger Property=\"TickPlacement\" Value=\"Both\">\n                            <Setter Property=\"Visibility\" Value=\"Visible\" TargetName=\"TopTick\" />\n                            <Setter Property=\"Visibility\" Value=\"Visible\" TargetName=\"BottomTick\" />\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Background\" Value=\"{DynamicResource DisabledBackgroundBrush}\" TargetName=\"Border\" />\n                            <Setter Property=\"BorderBrush\" Value=\"{DynamicResource DisabledBorderBrush}\" TargetName=\"Border\" />\n                        </Trigger>\n                        <Trigger Property=\"Orientation\" Value=\"Vertical\">\n                            <Setter Property=\"LayoutTransform\" TargetName=\"GridRoot\">\n                                <Setter.Value>\n                                    <RotateTransform Angle=\"-90\" />\n                                </Setter.Value>\n                            </Setter>\n                            <Setter TargetName=\"PART_Track\" Property=\"Orientation\" Value=\"Horizontal\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style TargetType=\"{x:Type TreeView}\">\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type TreeView}\">\n                    <Grid>\n                        <Border x:Name=\"Border\" Background=\"{DynamicResource ControlBackgroundBrush}\" BorderBrush=\"{x:Null}\" BorderThickness=\"1\" CornerRadius=\"3,3,3,3\">\n                            <ScrollViewer Style=\"{DynamicResource NuclearScrollViewer}\" Focusable=\"False\" Padding=\"4\" HorizontalScrollBarVisibility=\"Auto\" VerticalScrollBarVisibility=\"Auto\" CanContentScroll=\"False\" Foreground=\"{DynamicResource {x:Static SystemColors.ActiveCaptionTextBrushKey}}\">\n                                <ItemsPresenter />\n                            </ScrollViewer>\n                        </Border>\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style x:Key=\"NuclearTreeViewItemToggleButton\" d:IsControlPart=\"True\" TargetType=\"{x:Type ToggleButton}\">\n        <Setter Property=\"Focusable\" Value=\"False\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ToggleButton}\">\n                    <Grid Width=\"15\" Height=\"13\">\n                        <Path Visibility=\"Collapsed\" HorizontalAlignment=\"Left\" Margin=\"1,1,1,1\" x:Name=\"IsExpandedPath\" VerticalAlignment=\"Center\" Fill=\"{DynamicResource GlyphBrush}\" Data=\"M 0 4 L 8 4 L 4 8 Z\" />\n                        <Path HorizontalAlignment=\"Left\" Margin=\"1,1,1,1\" x:Name=\"ExpandPath\" VerticalAlignment=\"Center\" Fill=\"{DynamicResource GlyphBrush}\" Data=\"M 4 0 L 8 4 L 4 8 Z\" />\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsChecked\" Value=\"True\">\n                            <Setter Property=\"Visibility\" Value=\"Visible\" TargetName=\"IsExpandedPath\" />\n                            <Setter Property=\"Visibility\" Value=\"Collapsed\" TargetName=\"ExpandPath\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style d:IsControlPart=\"True\" TargetType=\"{x:Type TreeViewItem}\">\n        <Style.Triggers>\n            <Trigger Property=\"IsSelected\" Value=\"True\">\n                <Setter Property=\"Foreground\">\n                    <Setter.Value>\n                        <SolidColorBrush Color=\"{DynamicResource BlackColor}\"/>\n                    </Setter.Value>\n                </Setter>\n            </Trigger>\n        </Style.Triggers>\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"{Binding Path=HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"{Binding Path=VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}\" />\n        <Setter Property=\"Padding\" Value=\"1,0,0,0\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type TreeViewItem}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"SelectedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"SelectionBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"SelectedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"SelectionBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Grid>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition MinWidth=\"19\" Width=\"Auto\" />\n                            <ColumnDefinition Width=\"Auto\" />\n                            <ColumnDefinition Width=\"*\" />\n                        </Grid.ColumnDefinitions>\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"Auto\" />\n                            <RowDefinition />\n                        </Grid.RowDefinitions>\n                        <ToggleButton x:Name=\"Expander\" Style=\"{DynamicResource NuclearTreeViewItemToggleButton}\" IsChecked=\"{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}\" ClickMode=\"Press\" Background=\"{x:Null}\" BorderBrush=\"{x:Null}\" Foreground=\"{x:Null}\" />\n                        <Border Grid.Column=\"1\" x:Name=\"Selection_Border\" BorderThickness=\"1,1,1,1\" CornerRadius=\"3,3,3,3\">\n                            <Grid Width=\"Auto\" Height=\"Auto\">\n                                <Border x:Name=\"MainBorder\" Opacity=\"0.25\" Background=\"{DynamicResource NormalBrush}\" CornerRadius=\"2,2,2,2\"/>\n                                <Border x:Name=\"SelectionBorder\" Opacity=\"0\" Background=\"{DynamicResource SelectedBackgroundBrush}\" CornerRadius=\"2,2,2,2\"/>\n                                <Border x:Name=\"HoverBorder\" Opacity=\"0\" Background=\"{DynamicResource NormalBrush}\" CornerRadius=\"2,2,2,2\"/>\n                                <ContentPresenter x:Name=\"PART_Header\" ContentSource=\"Header\" d:LayoutOverrides=\"Width\" Height=\"Auto\" Margin=\"2,0,2,0\" />\n                            </Grid>\n                        </Border>\n                        <ItemsPresenter Grid.Column=\"1\" Grid.ColumnSpan=\"2\" Grid.Row=\"1\" x:Name=\"ItemsHost\" />\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsExpanded\" Value=\"false\">\n                            <Setter Property=\"Visibility\" Value=\"Collapsed\" TargetName=\"ItemsHost\" />\n                        </Trigger>\n                        <Trigger Property=\"HasItems\" Value=\"false\">\n                            <Setter Property=\"Visibility\" Value=\"Hidden\" TargetName=\"Expander\" />\n                        </Trigger>\n                        <Trigger Property=\"IsSelected\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource SelectedOff}\" x:Name=\"SelectedOn_BeginStoryboard1\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource SelectedOn}\" x:Name=\"SelectedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                        <MultiTrigger>\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"IsSelected\" Value=\"true\" />\n                                <Condition Property=\"IsSelectionActive\" Value=\"false\" />\n                            </MultiTrigger.Conditions>\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}\" />\n                            <Setter Property=\"Background\" TargetName=\"Selection_Border\" Value=\"{DynamicResource SelectedBackgroundBrush}\" />\n                            <Setter Property=\"Opacity\" TargetName=\"Selection_Border\" Value=\"0.5\" />\n                            <Setter Property=\"BorderBrush\" TargetName=\"Selection_Border\" Value=\"{DynamicResource NormalBorderBrush}\" />\n                        </MultiTrigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}\" />\n                        </Trigger>\n                        <MultiTrigger>\n                            <MultiTrigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </MultiTrigger.ExitActions>\n                            <MultiTrigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </MultiTrigger.EnterActions>\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"IsMouseOver\" SourceName=\"Selection_Border\" Value=\"True\" />\n                                <Condition Property=\"IsSelected\" Value=\"False\" />\n                            </MultiTrigger.Conditions>\n                        </MultiTrigger>\n                        <MultiTrigger>\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"IsSelected\" Value=\"true\" />\n                                <Condition Property=\"IsMouseOver\" Value=\"true\" SourceName=\"Selection_Border\" />\n                            </MultiTrigger.Conditions>\n                            <Setter Property=\"Background\" TargetName=\"Selection_Border\" Value=\"{DynamicResource SelectedBackgroundBrush}\" />\n                            <Setter Property=\"Opacity\" TargetName=\"Selection_Border\" Value=\"0.8\" />\n                            <Setter Property=\"BorderBrush\" TargetName=\"Selection_Border\" Value=\"{DynamicResource NormalBorderBrush}\" />\n                        </MultiTrigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n    <Style x:Key=\"ButtonFocusVisual\">\n        <Setter Property=\"Control.Template\">\n            <Setter.Value>\n                <ControlTemplate>\n                    <Rectangle SnapsToDevicePixels=\"true\" Margin=\"2\" Stroke=\"Black\" StrokeDashArray=\"1 2\" StrokeThickness=\"1\" />\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <LinearGradientBrush x:Key=\"ButtonNormalBackground\" EndPoint=\"0,1\" StartPoint=\"0,0\">\n        <GradientStop Color=\"#F3F3F3\" Offset=\"0\" />\n        <GradientStop Color=\"#EBEBEB\" Offset=\"0.5\" />\n        <GradientStop Color=\"#DDDDDD\" Offset=\"0.5\" />\n        <GradientStop Color=\"#CDCDCD\" Offset=\"1\" />\n    </LinearGradientBrush>\n    <SolidColorBrush x:Key=\"ButtonNormalBorder\" Color=\"#FF707070\" />\n\n    <Style TargetType=\"{x:Type ToggleButton}\">\n        <Setter Property=\"FocusVisualStyle\" Value=\"{StaticResource ButtonFocusVisual}\" />\n        <Setter Property=\"Background\" Value=\"{StaticResource ButtonNormalBackground}\" />\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ButtonNormalBorder}\" />\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Center\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\" />\n        <Setter Property=\"Padding\" Value=\"1\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ToggleButton}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"0.5\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"CheckedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"CheckedBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"0.5\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"CheckedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"CheckedBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"Pressed\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"Pressed\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Grid x:Name=\"grid\">\n\n                        <Border x:Name=\"Border\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\" Background=\"{DynamicResource NormalBrush}\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" CornerRadius=\"3,3,3,3\" />\n                        <Border x:Name=\"CheckedBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\" Background=\"{DynamicResource SelectedBackgroundBrush}\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" CornerRadius=\"3,3,3,3\" Opacity=\"0\" />\n                        <Border x:Name=\"HoverBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" CornerRadius=\"3,3,3,3\" Opacity=\"0\" Background=\"{DynamicResource HoverBrush}\" />\n                        <Border x:Name=\"HoverShineBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" CornerRadius=\"3,3,3,3\" Opacity=\"0\" Background=\"{DynamicResource HoverShineBrush}\" />\n                        <Border x:Name=\"Pressed\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\" BorderBrush=\"{DynamicResource PressedBorderBrush}\" CornerRadius=\"3,3,3,3\" Opacity=\"0\" Background=\"{DynamicResource PressedBrush}\" />\n                        <Rectangle Opacity=\"1\" Stroke=\"{x:Null}\" RadiusX=\"3\" RadiusY=\"3\" Margin=\"2,2,2,2\" VerticalAlignment=\"Stretch\" Height=\"Auto\" x:Name=\"Shine\">\n                            <Rectangle.Fill>\n                                <LinearGradientBrush EndPoint=\"0.5,0.971\" StartPoint=\"0.5,0.042\">\n                                    <GradientStop Color=\"#26FFFFFF\" Offset=\"0\" />\n                                    <GradientStop Color=\"#00FFFFFF\" Offset=\"1\" />\n                                    <GradientStop Color=\"#26FFFFFF\" Offset=\"0.467\" />\n                                    <GradientStop Color=\"#00FFFFFF\" Offset=\"0.475\" />\n                                </LinearGradientBrush>\n                            </Rectangle.Fill>\n                        </Rectangle>\n\n                        <ContentPresenter SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\" RecognizesAccessKey=\"True\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Margin=\"4,4,4,4\" />\n                    </Grid>\n\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                        <Trigger Property=\"IsPressed\" Value=\"True\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOff}\" x:Name=\"PressedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOn}\" x:Name=\"PressedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                        <Trigger Property=\"IsKeyboardFocused\" Value=\"true\"/>\n                        <Trigger Property=\"IsChecked\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource CheckedOff}\" x:Name=\"CheckedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource CheckedOn}\" x:Name=\"CheckedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Foreground\" Value=\"#ADADAD\" />\n                            <Setter Property=\"Background\" TargetName=\"Border\" Value=\"{DynamicResource DisabledBackgroundBrush}\"/>\n                            <Setter Property=\"BorderBrush\" TargetName=\"Border\" Value=\"{DynamicResource DisabledBorderBrush}\"/>\n                            <Setter Property=\"Opacity\" TargetName=\"grid\" Value=\"0.5\"/>\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n        <Style.Triggers>\n            <Trigger Property=\"IsChecked\" Value=\"True\">\n                <Setter Property=\"Foreground\">\n                    <Setter.Value>\n                        <SolidColorBrush Color=\"{DynamicResource BlackColor}\" />\n                    </Setter.Value>\n                </Setter>\n            </Trigger>\n        </Style.Triggers>\n    </Style>\n\n    <BorderGapMaskConverter x:Key=\"BorderGapMaskConverter\" />\n    <Style TargetType=\"{x:Type GroupBox}\">\n        <Setter Property=\"BorderBrush\" Value=\"#D5DFE5\" />\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type GroupBox}\">\n                    <Grid SnapsToDevicePixels=\"true\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"6\" />\n                            <ColumnDefinition Width=\"Auto\" />\n                            <ColumnDefinition Width=\"*\" />\n                            <ColumnDefinition Width=\"6\" />\n                        </Grid.ColumnDefinitions>\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"Auto\" />\n                            <RowDefinition Height=\"Auto\" />\n                            <RowDefinition Height=\"*\" />\n                            <RowDefinition Height=\"6\" />\n                        </Grid.RowDefinitions>\n                        <Border Grid.ColumnSpan=\"4\" Grid.RowSpan=\"4\" Background=\"{DynamicResource LightBrush}\" CornerRadius=\"4,4,4,4\" BorderThickness=\"1,1,1,1\" />\n                        <Border Grid.ColumnSpan=\"4\" Grid.Row=\"1\" Grid.RowSpan=\"3\" BorderThickness=\"1,1,1,1\" CornerRadius=\"4\" BorderBrush=\"{DynamicResource NormalBorderBrush}\">\n                            <Border.OpacityMask>\n                                <MultiBinding Converter=\"{StaticResource BorderGapMaskConverter}\" ConverterParameter=\"7\">\n                                    <Binding Path=\"ActualWidth\" ElementName=\"Header\" />\n                                    <Binding Path=\"ActualWidth\" RelativeSource=\"{RelativeSource Self}\" />\n                                    <Binding Path=\"ActualHeight\" RelativeSource=\"{RelativeSource Self}\" />\n                                </MultiBinding>\n                            </Border.OpacityMask>\n                            <Border BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"3\">\n                                <Border.BorderBrush>\n                                    <SolidColorBrush Color=\"{DynamicResource MainColor}\" />\n                                </Border.BorderBrush>\n                                <Border BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2\">\n                                    <Border.BorderBrush>\n                                        <SolidColorBrush Color=\"{DynamicResource MainColor}\" />\n                                    </Border.BorderBrush>\n                                </Border>\n                            </Border>\n                        </Border>\n                        <Border Grid.Column=\"0\" Grid.ColumnSpan=\"4\" Grid.Row=\"1\" Grid.RowSpan=\"3\" Background=\"{TemplateBinding Background}\" BorderBrush=\"Transparent\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"4\" />\n                        <Border Grid.ColumnSpan=\"4\" Grid.RowSpan=\"2\" Background=\"{DynamicResource NormalBrush}\" BorderThickness=\"1,1,1,0\" CornerRadius=\"2,2,0,0\" x:Name=\"Main\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" />\n                        <Rectangle Opacity=\"1\" Stroke=\"{x:Null}\" RadiusX=\"3\" RadiusY=\"3\" VerticalAlignment=\"Stretch\" Height=\"Auto\" x:Name=\"Shine\" Grid.ColumnSpan=\"4\" Grid.RowSpan=\"2\" Margin=\"1,1,1,1\">\n                            <Rectangle.Fill>\n                                <LinearGradientBrush EndPoint=\"0.5,0.971\" StartPoint=\"0.5,0.042\">\n                                    <GradientStop Color=\"#26FFFFFF\" Offset=\"0\" />\n                                    <GradientStop Color=\"#00FFFFFF\" Offset=\"1\" />\n                                    <GradientStop Color=\"#26FFFFFF\" Offset=\"0.467\" />\n                                    <GradientStop Color=\"#00FFFFFF\" Offset=\"0.475\" />\n                                </LinearGradientBrush>\n                            </Rectangle.Fill>\n                        </Rectangle>\n\n                        <Border x:Name=\"Header\" Grid.Column=\"1\" Grid.Row=\"0\" Grid.RowSpan=\"2\" Padding=\"3,1,3,0\">\n                            <ContentPresenter SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\" ContentSource=\"Header\" RecognizesAccessKey=\"True\" Margin=\"0,4,0,4\" />\n                        </Border>\n\n                        <ContentPresenter SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\" Margin=\"{TemplateBinding Padding}\" Grid.Column=\"1\" Grid.ColumnSpan=\"2\" Grid.Row=\"2\" />\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Foreground\">\n            <Setter.Value>\n                <SolidColorBrush Color=\"{DynamicResource WhiteColor}\" />\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n    <SolidColorBrush x:Key=\"ListBorder\" Color=\"#828790\" />\n    <Style x:Key=\"{x:Static GridView.GridViewScrollViewerStyleKey}\" TargetType=\"{x:Type ScrollViewer}\">\n        <Setter Property=\"Focusable\" Value=\"false\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ScrollViewer}\">\n                    <Grid SnapsToDevicePixels=\"true\" Background=\"{TemplateBinding Background}\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"*\" />\n                            <ColumnDefinition Width=\"Auto\" />\n                        </Grid.ColumnDefinitions>\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"*\" />\n                            <RowDefinition Height=\"Auto\" />\n                        </Grid.RowDefinitions>\n                        <DockPanel Margin=\"{TemplateBinding Padding}\">\n                            <ScrollViewer Focusable=\"false\" DockPanel.Dock=\"Top\" HorizontalScrollBarVisibility=\"Hidden\" VerticalScrollBarVisibility=\"Hidden\">\n                                <GridViewHeaderRowPresenter SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\" Margin=\"2,0,2,0\" AllowsColumnReorder=\"{Binding Path=TemplatedParent.View.AllowsColumnReorder, RelativeSource={RelativeSource TemplatedParent}}\" ColumnHeaderContainerStyle=\"{Binding Path=TemplatedParent.View.ColumnHeaderContainerStyle, RelativeSource={RelativeSource TemplatedParent}}\" ColumnHeaderContextMenu=\"{Binding Path=TemplatedParent.View.ColumnHeaderContextMenu, RelativeSource={RelativeSource TemplatedParent}}\" ColumnHeaderTemplate=\"{Binding Path=TemplatedParent.View.ColumnHeaderTemplate, RelativeSource={RelativeSource TemplatedParent}}\" ColumnHeaderTemplateSelector=\"{Binding Path=TemplatedParent.View.ColumnHeaderTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}\" ColumnHeaderToolTip=\"{Binding Path=TemplatedParent.View.ColumnHeaderToolTip, RelativeSource={RelativeSource TemplatedParent}}\" Columns=\"{Binding Path=TemplatedParent.View.Columns, RelativeSource={RelativeSource TemplatedParent}}\" />\n\n                            </ScrollViewer>\n                            <ScrollContentPresenter SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\" x:Name=\"PART_ScrollContentPresenter\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" CanContentScroll=\"{TemplateBinding CanContentScroll}\" KeyboardNavigation.DirectionalNavigation=\"Local\" />\n                        </DockPanel>\n                        <ScrollBar Visibility=\"{TemplateBinding ComputedHorizontalScrollBarVisibility}\" Cursor=\"Arrow\" x:Name=\"PART_HorizontalScrollBar\" Grid.Row=\"1\" Orientation=\"Horizontal\" ViewportSize=\"{TemplateBinding ViewportWidth}\" Maximum=\"{TemplateBinding ScrollableWidth}\" Minimum=\"0.0\" Value=\"{Binding Path=HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}\" />\n                        <ScrollBar Visibility=\"{TemplateBinding ComputedVerticalScrollBarVisibility}\" Cursor=\"Arrow\" x:Name=\"PART_VerticalScrollBar\" Grid.Column=\"1\" Orientation=\"Vertical\" ViewportSize=\"{TemplateBinding ViewportHeight}\" Maximum=\"{TemplateBinding ScrollableHeight}\" Minimum=\"0.0\" Value=\"{Binding Path=VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}\" />\n                        <DockPanel Grid.Column=\"1\" Grid.Row=\"1\" Background=\"{Binding Path=Background, ElementName=PART_VerticalScrollBar}\" LastChildFill=\"false\">\n                            <Rectangle Visibility=\"{TemplateBinding ComputedVerticalScrollBarVisibility}\" Width=\"1\" Fill=\"White\" DockPanel.Dock=\"Left\" />\n                            <Rectangle Visibility=\"{TemplateBinding ComputedHorizontalScrollBarVisibility}\" Height=\"1\" Fill=\"White\" DockPanel.Dock=\"Top\" />\n                        </DockPanel>\n                    </Grid>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style TargetType=\"{x:Type ListView}\">\n        <Setter Property=\"Background\" Value=\"{DynamicResource {x:Static SystemColors.WindowBrushKey}}\" />\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource ListBorder}\" />\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\n        <Setter Property=\"Foreground\" Value=\"#FF042271\" />\n        <Setter Property=\"ScrollViewer.HorizontalScrollBarVisibility\" Value=\"Auto\" />\n        <Setter Property=\"ScrollViewer.VerticalScrollBarVisibility\" Value=\"Auto\" />\n        <Setter Property=\"ScrollViewer.CanContentScroll\" Value=\"true\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ListView}\">\n                    <Border x:Name=\"Bd\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"0,0,0,0\" BorderBrush=\"{DynamicResource DefaultedBorderBrush}\" Background=\"{DynamicResource ControlBackgroundBrush}\">\n\n                        <ScrollViewer Padding=\"{TemplateBinding Padding}\" Style=\"{DynamicResource {x:Static GridView.GridViewScrollViewerStyleKey}}\">\n                            <ItemsPresenter SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\" />\n                        </ScrollViewer>\n                    </Border>\n\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsGrouping\" Value=\"true\">\n                            <Setter Property=\"ScrollViewer.CanContentScroll\" Value=\"false\" />\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Background\" TargetName=\"Bd\" Value=\"{DynamicResource {x:Static SystemColors.ControlBrushKey}}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style x:Key=\"ListViewItemFocusVisual\">\n        <Setter Property=\"Control.Template\">\n            <Setter.Value>\n                <ControlTemplate>\n                    <Rectangle Stroke=\"#8E6EA6F5\" StrokeThickness=\"1\" RadiusX=\"2\" RadiusY=\"2\" />\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n    <Style TargetType=\"{x:Type ListViewItem}\">\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"FocusVisualStyle\" Value=\"{StaticResource ListViewItemFocusVisual}\" />\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"BorderBrush\" Value=\"Transparent\" />\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\n        <Setter Property=\"Margin\" Value=\"0,0,0,1\" />\n        <Setter Property=\"Padding\" Value=\"5,2,5,2\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ListViewItem}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                        <Storyboard x:Key=\"SelectedOn\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"SelectedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                        <Storyboard x:Key=\"SelectedOff\">\n\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"SelectedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.4000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n\n                        </Storyboard>\n                        <Storyboard x:Key=\"FocussedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"FocussedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"FocusVisualElement\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Border SnapsToDevicePixels=\"true\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"2\" x:Name=\"border\">\n\n                        <Grid Margin=\"2,0,2,0\">\n                            <Rectangle x:Name=\"Background\" IsHitTestVisible=\"False\" Opacity=\"0.25\" Fill=\"{StaticResource NormalBrush}\" RadiusX=\"1\" RadiusY=\"1\"/>\n                            <Rectangle x:Name=\"HoverRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource NormalBrush}\" RadiusX=\"1\" RadiusY=\"1\"/>\n                            <Rectangle x:Name=\"SelectedRectangle\" IsHitTestVisible=\"False\" Opacity=\"0\" Fill=\"{StaticResource SelectedBackgroundBrush}\" RadiusX=\"1\" RadiusY=\"1\"/>\n                            <GridViewRowPresenter SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\" Margin=\"0,2,0,2\" VerticalAlignment=\"Stretch\" />\n                        </Grid>\n\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsSelected\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource SelectedOff}\" x:Name=\"SelectedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource SelectedOn}\" x:Name=\"SelectedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n\n                        </Trigger>\n                        <MultiTrigger>\n                            <MultiTrigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </MultiTrigger.ExitActions>\n                            <MultiTrigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </MultiTrigger.EnterActions>\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"IsMouseOver\" Value=\"True\" />\n                                <Condition Property=\"Selector.IsSelected\" Value=\"False\" />\n                            </MultiTrigger.Conditions>\n\n                        </MultiTrigger>\n                        <MultiTrigger>\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"Selector.IsSelected\" Value=\"True\" />\n                                <Condition Property=\"IsMouseOver\" Value=\"True\" />\n                            </MultiTrigger.Conditions>\n\n                        </MultiTrigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource DisabledForegroundBrush}\" />\n                            <Setter Property=\"Fill\" TargetName=\"Background\" Value=\"{DynamicResource DisabledBackgroundBrush}\"/>\n                        </Trigger>\n                        <MultiTrigger>\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"IsSelected\" Value=\"true\" />\n                                <Condition Property=\"Selector.IsSelectionActive\" Value=\"false\" />\n                            </MultiTrigger.Conditions>\n\n\n                        </MultiTrigger>\n\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n        <Style.Triggers>\n            <Trigger Property=\"Selector.IsSelected\" Value=\"True\">\n                <Setter Property=\"Foreground\">\n                    <Setter.Value>\n                        <SolidColorBrush Color=\"{DynamicResource BlackColor}\" />\n                    </Setter.Value>\n                </Setter>\n            </Trigger>\n        </Style.Triggers>\n    </Style>\n\n\n    <Style x:Key=\"GridViewColumnHeaderGripper\" TargetType=\"{x:Type Thumb}\">\n        <Setter Property=\"Canvas.Right\" Value=\"-8.5\" />\n        <Setter Property=\"Width\" Value=\"18\" />\n        <Setter Property=\"Height\" Value=\"{Binding Path=ActualHeight, RelativeSource={RelativeSource TemplatedParent}}\" />\n        <Setter Property=\"Padding\" Value=\"0,3,0,4\" />\n        <Setter Property=\"Background\" Value=\"{DynamicResource LightBrush}\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type Thumb}\">\n                    <Border Padding=\"{TemplateBinding Padding}\">\n                        <Rectangle HorizontalAlignment=\"Center\" Width=\"0.5\">\n                            <Rectangle.Fill>\n                                <SolidColorBrush Color=\"{DynamicResource WhiteColor}\" />\n                            </Rectangle.Fill>\n                        </Rectangle>\n                    </Border>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style x:Key=\"{x:Type GridViewColumnHeader}\" TargetType=\"{x:Type GridViewColumnHeader}\">\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Center\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\" />\n        <Setter Property=\"Background\" Value=\"{DynamicResource LightBrush}\" />\n        <Setter Property=\"Padding\" Value=\"2,0,2,0\" />\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type GridViewColumnHeader}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HoverOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"HoverOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"PressedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"PressedBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Grid Margin=\"0,1,0,1\">\n                        <Grid>\n\n                            <Border x:Name=\"Main\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\" Background=\"{DynamicResource NormalBrush}\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" CornerRadius=\"0,0,0,0\" />\n                            <Rectangle Opacity=\"1\" Stroke=\"{x:Null}\" RadiusX=\"0\" RadiusY=\"0\" VerticalAlignment=\"Stretch\" Height=\"Auto\" x:Name=\"Shine\" Fill=\"{DynamicResource ShineBrush}\"/>\n                            <Border x:Name=\"HoverBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\" Background=\"{DynamicResource HoverBrush}\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" CornerRadius=\"0,0,0,0\" Opacity=\"0\" />\n                            <Border x:Name=\"HoverShineBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\" Background=\"{DynamicResource HoverShineBrush}\" BorderBrush=\"{DynamicResource NormalBorderBrush}\" CornerRadius=\"0,0,0,0\" Opacity=\"0\" />\n                            <Border x:Name=\"PressedBorder\" BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\" Background=\"{DynamicResource PressedBrush}\" BorderBrush=\"{DynamicResource PressedBorderBrush}\" CornerRadius=\"0,0,0,0\" Opacity=\"0\" />\n\n                            <Border BorderThickness=\"{TemplateBinding BorderThickness}\" Padding=\"{TemplateBinding Padding}\">\n                                <Border.BorderBrush>\n                                    <SolidColorBrush Color=\"{DynamicResource WhiteColor}\"/>\n                                </Border.BorderBrush>\n                                <ContentPresenter VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" RecognizesAccessKey=\"True\" Margin=\"2,2,2,2\" />\n                            </Border>\n                        </Grid>\n                        <Canvas>\n                            <Thumb x:Name=\"PART_HeaderGripper\" Style=\"{StaticResource GridViewColumnHeaderGripper}\" Margin=\"0,0,7,0\" Width=\"Auto\" HorizontalAlignment=\"Stretch\" />\n                        </Canvas>\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsMouseOver\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOff}\" x:Name=\"HoverOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HoverOn}\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                        <Trigger Property=\"IsPressed\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOff}\" x:Name=\"PressedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource PressedOn}\" x:Name=\"PressedOn_BeginStoryboard\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                        <Trigger Property=\"Height\" Value=\"Auto\">\n                            <Setter Property=\"MinHeight\" Value=\"20\" />\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}\" />\n                        </Trigger>\n                        <Trigger Property=\"Role\" Value=\"Padding\">\n                            <Setter TargetName=\"PART_HeaderGripper\" Property=\"Visibility\" Value=\"Collapsed\" />\n                        </Trigger>\n                        <Trigger Property=\"Role\" Value=\"Floating\">\n                            <Setter TargetName=\"PART_HeaderGripper\" Property=\"Visibility\" Value=\"Collapsed\" />\n                            <Setter Property=\"Background\" Value=\"Yellow\" />\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource MouseOverBrush}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n    <Style x:Key=\"{x:Static ToolBar.ButtonStyleKey}\" TargetType=\"{x:Type Button}\" BasedOn=\"{x:Null}\">\n        <Setter Property=\"FocusVisualStyle\" Value=\"{DynamicResource NuclearButtonFocusVisual}\" />\n        <Setter Property=\"Background\" Value=\"{DynamicResource NormalBrush}\" />\n        <Setter Property=\"BorderBrush\" Value=\"{DynamicResource NormalBorderBrush}\" />\n        <Setter Property=\"Template\" Value=\"{DynamicResource ButtonTemplate}\" />\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"FontSize\" Value=\"10\"/>\n        <Setter Property=\"MinHeight\" Value=\"18\"/>\n        <Setter Property=\"MinWidth\" Value=\"50\"/>\n    </Style>\n\n    <Style x:Key=\"{x:Static ToolBar.CheckBoxStyleKey}\" TargetType=\"{x:Type CheckBox}\">\n        <Setter Property=\"FontSize\" Value=\"10\"/>\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"true\" />\n        <Setter Property=\"FocusVisualStyle\" Value=\"{DynamicResource CheckBoxFocusVisual}\" />\n        <Setter Property=\"Background\" Value=\"{DynamicResource NormalBrush}\" />\n        <Setter Property=\"BorderBrush\" Value=\"{DynamicResource NormalBorderBrush}\" />\n        <Setter Property=\"Template\" Value=\"{DynamicResource CheckBoxTemplate}\" />\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n    </Style>\n\n    <Style x:Key=\"{x:Static ToolBar.RadioButtonStyleKey}\" TargetType=\"{x:Type RadioButton}\">\n        <Setter Property=\"FontSize\" Value=\"10\"/>\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"true\" />\n        <Setter Property=\"FocusVisualStyle\" Value=\"{DynamicResource RadioButtonFocusVisual}\" />\n        <Setter Property=\"Background\" Value=\"{DynamicResource NormalBrush}\" />\n        <Setter Property=\"BorderBrush\" Value=\"{DynamicResource NormalBorderBrush}\" />\n        <Setter Property=\"Template\" Value=\"{DynamicResource RadioButtonTemplate}\" />\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Style.Triggers>\n            <Trigger Property=\"IsEnabled\" Value=\"False\">\n                <Setter Property=\"Foreground\">\n                    <Setter.Value>\n                        <SolidColorBrush Color=\"{DynamicResource TopGradientSelectColor}\" />\n                    </Setter.Value>\n                </Setter>\n            </Trigger>\n        </Style.Triggers>\n    </Style>\n\n    <Style x:Key=\"{x:Static ToolBar.ComboBoxStyleKey}\" TargetType=\"{x:Type ComboBox}\">\n        <Setter Property=\"FontSize\" Value=\"10\"/>\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"true\" />\n        <Setter Property=\"Template\" Value=\"{DynamicResource ComboBoxTemplate}\" />\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n    </Style>\n\n    <Style x:Key=\"{x:Static ToolBar.TextBoxStyleKey}\" TargetType=\"{x:Type TextBox}\">\n        <Setter Property=\"FontSize\" Value=\"10\"/>\n        <Setter Property=\"KeyboardNavigation.TabNavigation\" Value=\"None\" />\n        <Setter Property=\"FocusVisualStyle\" Value=\"{x:Null}\" />\n        <Setter Property=\"AllowDrop\" Value=\"true\" />\n        <Setter Property=\"Template\" Value=\"{DynamicResource TextBoxTemplate}\" />\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"Background\" Value=\"{DynamicResource ControlBackgroundBrush}\"/>\n        <Setter Property=\"BorderBrush\" Value=\"#FF000000\"/>\n    </Style>\n\n\n    <LinearGradientBrush x:Key=\"ToolBarHorizontalBackground\" EndPoint=\"0,1\" StartPoint=\"0,0\">\n        <GradientStop Color=\"#FFFFFF\" Offset=\"0\"/>\n        <GradientStop Color=\"#FFFBFF\" Offset=\"0.5\"/>\n        <GradientStop Color=\"#F7F7F7\" Offset=\"1\"/>\n    </LinearGradientBrush>\n    <LinearGradientBrush x:Key=\"ToolBarToggleButtonHorizontalBackground\" EndPoint=\"0,1\" StartPoint=\"0,0\">\n        <GradientStop Color=\"#ECECEC\" Offset=\"0\"/>\n        <GradientStop Color=\"#DDDDDD\" Offset=\"0.5\"/>\n        <GradientStop Color=\"#A0A0A0\" Offset=\"1\"/>\n    </LinearGradientBrush>\n    <SolidColorBrush x:Key=\"ToolBarButtonHover\" Color=\"{StaticResource MainColor}\" />\n    <SolidColorBrush x:Key=\"ToolBarGripper\" Color=\"#C6C3C6\"/>\n    <Style x:Key=\"ToolBarHorizontalOverflowButtonStyle\" TargetType=\"{x:Type ToggleButton}\">\n        <Setter Property=\"Background\" Value=\"{StaticResource ToolBarToggleButtonHorizontalBackground}\"/>\n        <Setter Property=\"MinHeight\" Value=\"0\"/>\n        <Setter Property=\"MinWidth\" Value=\"0\"/>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ToggleButton}\">\n                    <Border SnapsToDevicePixels=\"true\" x:Name=\"Bd\" CornerRadius=\"0,0,0,0\" Background=\"{DynamicResource LightBrush}\">\n                        <Canvas SnapsToDevicePixels=\"true\" HorizontalAlignment=\"Right\" Margin=\"7,2,2,2\" VerticalAlignment=\"Bottom\" Width=\"6\" Height=\"7\">\n                            <Path Stroke=\"White\" Data=\"M 1 1.5 L 6 1.5\"/>\n                            <Path Stroke=\"{TemplateBinding Foreground}\" Data=\"M 0 0.5 L 5 0.5\"/>\n                            <Path Fill=\"White\" Data=\"M 0.5 4 L 6.5 4 L 3.5 7 Z\"/>\n                            <Path Fill=\"{TemplateBinding Foreground}\" Data=\"M -0.5 3 L 5.5 3 L 2.5 6 Z\"/>\n                        </Canvas>\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsMouseOver\" Value=\"true\">\n                            <Setter Property=\"Background\" TargetName=\"Bd\" Value=\"{DynamicResource MouseOverBrush}\"/>\n                        </Trigger>\n                        <Trigger Property=\"IsKeyboardFocused\" Value=\"true\">\n                            <Setter Property=\"Background\" TargetName=\"Bd\" Value=\"{StaticResource ToolBarButtonHover}\"/>\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Foreground\" Value=\"{StaticResource ToolBarGripper}\"/>\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <SolidColorBrush x:Key=\"ToolBarSubMenuBackground\" Color=\"#FFFDFDFD\"/>\n    <SolidColorBrush x:Key=\"ToolBarMenuBorder\" Color=\"#FFFFFFFF\"/>\n    <Style x:Key=\"ToolBarThumbStyle\" TargetType=\"{x:Type Thumb}\">\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type Thumb}\">\n                    <Border SnapsToDevicePixels=\"True\" Background=\"Transparent\" Padding=\"{TemplateBinding Padding}\" CornerRadius=\"0,0,0,0\">\n                        <Rectangle>\n                            <Rectangle.Fill>\n                                <DrawingBrush TileMode=\"Tile\" Viewbox=\"0,0,4,4\" ViewboxUnits=\"Absolute\" Viewport=\"0,0,4,4\" ViewportUnits=\"Absolute\">\n                                    <DrawingBrush.Drawing>\n                                        <DrawingGroup>\n                                            <GeometryDrawing Brush=\"White\" Geometry=\"M 1 1 L 1 3 L 3 3 L 3 1 z\"/>\n                                            <GeometryDrawing Brush=\"{StaticResource ToolBarGripper}\" Geometry=\"M 0 0 L 0 2 L 2 2 L 2 0 z\"/>\n                                        </DrawingGroup>\n                                    </DrawingBrush.Drawing>\n                                </DrawingBrush>\n                            </Rectangle.Fill>\n                        </Rectangle>\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsMouseOver\" Value=\"true\">\n                            <Setter Property=\"Cursor\" Value=\"SizeAll\"/>\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <LinearGradientBrush x:Key=\"ToolBarToggleButtonVerticalBackground\" EndPoint=\"1,0\" StartPoint=\"0,0\">\n        <GradientStop Color=\"#ECECEC\" Offset=\"0\"/>\n        <GradientStop Color=\"#DDDDDD\" Offset=\"0.5\"/>\n        <GradientStop Color=\"#A0A0A0\" Offset=\"1\"/>\n    </LinearGradientBrush>\n    <Style x:Key=\"ToolBarVerticalOverflowButtonStyle\" TargetType=\"{x:Type ToggleButton}\">\n        <Setter Property=\"Background\" Value=\"{StaticResource ToolBarToggleButtonVerticalBackground}\"/>\n        <Setter Property=\"MinHeight\" Value=\"0\"/>\n        <Setter Property=\"MinWidth\" Value=\"0\"/>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ToggleButton}\">\n                    <Border SnapsToDevicePixels=\"true\" x:Name=\"Bd\" Background=\"{TemplateBinding Background}\" CornerRadius=\"0,0,3,3\">\n                        <Canvas SnapsToDevicePixels=\"true\" HorizontalAlignment=\"Right\" Margin=\"2,7,2,2\" VerticalAlignment=\"Bottom\" Width=\"7\" Height=\"6\">\n                            <Path Stroke=\"White\" Data=\"M 1.5 1 L 1.5 6\"/>\n                            <Path Stroke=\"{TemplateBinding Foreground}\" Data=\"M 0.5 0 L 0.5 5\"/>\n                            <Path Fill=\"White\" Data=\"M 3.5 0.5 L 7 3.5 L 4 6.5 Z\"/>\n                            <Path Fill=\"{TemplateBinding Foreground}\" Data=\"M 3 -0.5 L 6 2.5 L 3 5.5 Z\"/>\n                        </Canvas>\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsMouseOver\" Value=\"true\">\n                            <Setter Property=\"Background\" TargetName=\"Bd\" Value=\"{StaticResource ToolBarButtonHover}\"/>\n                        </Trigger>\n                        <Trigger Property=\"IsKeyboardFocused\" Value=\"true\">\n                            <Setter Property=\"Background\" TargetName=\"Bd\" Value=\"{StaticResource ToolBarButtonHover}\"/>\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Foreground\" Value=\"{StaticResource ToolBarGripper}\"/>\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <LinearGradientBrush x:Key=\"ToolBarVerticalBackground\" EndPoint=\"1,0\" StartPoint=\"0,0\">\n        <GradientStop Color=\"#FFFFFF\" Offset=\"0\"/>\n        <GradientStop Color=\"#FFFBFF\" Offset=\"0.5\"/>\n        <GradientStop Color=\"#F7F7F7\" Offset=\"1\"/>\n    </LinearGradientBrush>\n    <Style TargetType=\"{x:Type ToolBar}\">\n        <Setter Property=\"Background\" Value=\"{StaticResource ToolBarHorizontalBackground}\"/>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ToolBar}\">\n                    <Grid SnapsToDevicePixels=\"true\" Margin=\"3,1,1,1\" x:Name=\"Grid\">\n                        <Grid HorizontalAlignment=\"Right\" x:Name=\"OverflowGrid\">\n                            <ToggleButton IsEnabled=\"{TemplateBinding HasOverflowItems}\" FocusVisualStyle=\"{x:Null}\" x:Name=\"OverflowButton\" Style=\"{StaticResource ToolBarHorizontalOverflowButtonStyle}\" ClickMode=\"Press\" IsChecked=\"{Binding Path=IsOverflowOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}\"/>\n                            <Popup Focusable=\"false\" AllowsTransparency=\"true\" IsOpen=\"{Binding Path=IsOverflowOpen, RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Bottom\" PopupAnimation=\"{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}\" StaysOpen=\"False\" x:Name=\"OverflowPopup\">\n                                <Border x:Name=\"Shdw\">\n                                    <Border BorderThickness=\"1,1,1,1\" Background=\"{DynamicResource LightBrush}\" BorderBrush=\"{DynamicResource LightBrush}\">\n                                        <ToolBarOverflowPanel Focusable=\"true\" SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\" FocusVisualStyle=\"{x:Null}\" Margin=\"2\" x:Name=\"PART_ToolBarOverflowPanel\" WrapWidth=\"200\" KeyboardNavigation.DirectionalNavigation=\"Cycle\" KeyboardNavigation.TabNavigation=\"Cycle\"/>\n                                    </Border>\n                                </Border>\n                            </Popup>\n                        </Grid>\n                        <Border Margin=\"0,0,11,0\" x:Name=\"MainPanelBorder\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"0,0,0,0\" Padding=\"{TemplateBinding Padding}\" Background=\"{DynamicResource NormalBorderBrush}\">\n                            <Grid>\n\n                                <DockPanel KeyboardNavigation.TabIndex=\"1\" KeyboardNavigation.TabNavigation=\"Local\">\n                                    <Thumb Padding=\"6,5,1,6\" Margin=\"-3,-1,0,0\" x:Name=\"ToolBarThumb\" Style=\"{StaticResource ToolBarThumbStyle}\" Width=\"10\"/>\n                                    <ContentPresenter SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\" HorizontalAlignment=\"Center\" Margin=\"4,0,4,0\" x:Name=\"ToolBarHeader\" VerticalAlignment=\"Center\" ContentSource=\"Header\"/>\n                                    <ToolBarPanel SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\" Margin=\"0,1,2,2\" x:Name=\"PART_ToolBarPanel\" IsItemsHost=\"true\" Background=\"{DynamicResource NormalBrush}\"/>\n                                </DockPanel>\n                                <Rectangle IsHitTestVisible=\"False\" Opacity=\"0.15\" VerticalAlignment=\"Top\" Height=\"13.995\" Grid.ColumnSpan=\"1\" Margin=\"0,0,2,0\">\n                                    <Rectangle.Fill>\n                                        <SolidColorBrush Color=\"{DynamicResource WhiteColor}\"/>\n                                    </Rectangle.Fill>\n                                </Rectangle>\n                            </Grid>\n                        </Border>\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsOverflowOpen\" Value=\"true\">\n                            <Setter Property=\"IsEnabled\" TargetName=\"ToolBarThumb\" Value=\"false\"/>\n                        </Trigger>\n                        <Trigger Property=\"Header\" Value=\"{x:Null}\">\n                            <Setter Property=\"Visibility\" TargetName=\"ToolBarHeader\" Value=\"Collapsed\"/>\n                        </Trigger>\n                        <Trigger Property=\"ToolBarTray.IsLocked\" Value=\"true\">\n                            <Setter Property=\"Visibility\" TargetName=\"ToolBarThumb\" Value=\"Collapsed\"/>\n                        </Trigger>\n                        <Trigger Property=\"HasDropShadow\" SourceName=\"OverflowPopup\" Value=\"true\">\n                            <Setter Property=\"Margin\" TargetName=\"Shdw\" Value=\"0,0,5,5\"/>\n                            <Setter Property=\"SnapsToDevicePixels\" TargetName=\"Shdw\" Value=\"true\"/>\n                            <Setter Property=\"Background\" TargetName=\"Shdw\" Value=\"#71000000\"/>\n                        </Trigger>\n                        <Trigger Property=\"Orientation\" Value=\"Vertical\">\n                            <Setter Property=\"Margin\" TargetName=\"Grid\" Value=\"1,3,1,1\"/>\n                            <Setter Property=\"Style\" TargetName=\"OverflowButton\" Value=\"{StaticResource ToolBarVerticalOverflowButtonStyle}\"/>\n                            <Setter Property=\"Height\" TargetName=\"ToolBarThumb\" Value=\"10\"/>\n                            <Setter Property=\"Width\" TargetName=\"ToolBarThumb\" Value=\"Auto\"/>\n                            <Setter Property=\"Margin\" TargetName=\"ToolBarThumb\" Value=\"-1,-3,0,0\"/>\n                            <Setter Property=\"Padding\" TargetName=\"ToolBarThumb\" Value=\"5,6,6,1\"/>\n                            <Setter Property=\"Margin\" TargetName=\"ToolBarHeader\" Value=\"0,0,0,4\"/>\n                            <Setter Property=\"Margin\" TargetName=\"PART_ToolBarPanel\" Value=\"1,0,2,2\"/>\n                            <Setter Property=\"DockPanel.Dock\" TargetName=\"ToolBarThumb\" Value=\"Top\"/>\n                            <Setter Property=\"DockPanel.Dock\" TargetName=\"ToolBarHeader\" Value=\"Top\"/>\n                            <Setter Property=\"HorizontalAlignment\" TargetName=\"OverflowGrid\" Value=\"Stretch\"/>\n                            <Setter Property=\"VerticalAlignment\" TargetName=\"OverflowGrid\" Value=\"Bottom\"/>\n                            <Setter Property=\"Placement\" TargetName=\"OverflowPopup\" Value=\"Right\"/>\n                            <Setter Property=\"Margin\" TargetName=\"MainPanelBorder\" Value=\"0,0,0,11\"/>\n                            <Setter Property=\"Background\" Value=\"{StaticResource ToolBarVerticalBackground}\"/>\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}\"/>\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n    </Style>\n\n</ResourceDictionary>\n\n\n\n"
  },
  {
    "path": "Procurement/Controls/ExpressionDarkGrid.xaml",
    "content": "﻿<!--\n// Copyright (c) Trevor Webster\n// This source is subject to the Microsoft Public License (Ms-PL).\n// Please see http://go.microsoft.com/fwlink/?LinkID=131993 for details.\n// All other rights reserved.\n-->\n<ResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n                    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n                    xmlns:themes=\"clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero\"\n                    xmlns:controls=\"clr-namespace:System.Windows.Controls;assembly=PresentationFramework\"\n                    xmlns:primitives=\"clr-namespace:System.Windows.Controls.Primitives;assembly=PresentationFramework\"\n                    xmlns:my=\"clr-namespace:Procurement\"\n                    xmlns:sys=\"clr-namespace:System;assembly=mscorlib\"\n                    >\n    <ResourceDictionary.MergedDictionaries>\n        <ResourceDictionary Source=\"ExpressionDarkGrid_brushes.xaml\" />\n    </ResourceDictionary.MergedDictionaries>\n\n\n\n    <!-- DataGridRow -->\n    <Style x:Key='RowStyle' TargetType=\"{x:Type controls:DataGridRow}\">\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"true\"/>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type controls:DataGridRow}\">\n                    <Border x:Name=\"DGR_Border\"\n                  Background=\"{TemplateBinding Background}\"\n                  BorderBrush=\"{TemplateBinding BorderBrush}\"\n                  BorderThickness=\"{TemplateBinding BorderThickness}\"\n                  SnapsToDevicePixels=\"True\">\n                        <primitives:SelectiveScrollingGrid>\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"Auto\"/>\n                                <ColumnDefinition Width=\"*\"/>\n                            </Grid.ColumnDefinitions>\n\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"*\"/>\n                                <RowDefinition Height=\"Auto\"/>\n                                <RowDefinition Height='Auto' />\n                            </Grid.RowDefinitions>\n                            <!--<Rectangle x:Name=\"Selected\" Margin=\"0\" Grid.RowSpan=\"2\" Grid.ColumnSpan=\"2\" \n                                   Fill=\"{StaticResource BtnOverFill}\" Stroke=\"{StaticResource selectedStroke}\" \n                                   Opacity=\"0\"/>\n                            <Rectangle x:Name=\"SelectedHighlight\" Margin=\"1\" Grid.RowSpan=\"2\" Grid.ColumnSpan=\"2\" \n                                   Stroke=\"#A0FFFFFF\" \n                                   Opacity=\"0\"/>-->\n                            <Rectangle x:Name=\"BackgroundRectangle\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"2\" \n                                       Fill=\"{StaticResource NormalBrush}\" Opacity=\"0.25\" />\n                            <Rectangle x:Name=\"SelectedRectangle\" Opacity=\"0\" \n                                       Fill=\"{StaticResource SelectedBackgroundBrush}\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"2\" />\n                            <Rectangle x:Name=\"HoverRectangle\" \n                                       Fill=\"{StaticResource NormalBrush}\" Opacity=\"0\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"2\" />\n                            <primitives:DataGridRowHeader Grid.RowSpan=\"2\"\n                                                        primitives:SelectiveScrollingGrid.SelectiveScrollingOrientation=\"Vertical\"                                       \n                                                        Visibility=\"{Binding RelativeSource={RelativeSource AncestorType={x:Type controls:DataGrid}}, \n                                Path=HeadersVisibility, \n                                Converter={x:Static controls:DataGrid.HeadersVisibilityConverter},\n                                ConverterParameter={x:Static controls:DataGridHeadersVisibility.Row}}\"/>\n                            <primitives:DataGridCellsPresenter Grid.Column=\"1\"\n                                            ItemsPanel=\"{TemplateBinding ItemsPanel}\"\n                                            SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\"/>\n                            <primitives:DataGridDetailsPresenter Grid.Column=\"1\" Grid.Row=\"1\"\n                                                               x:Name='DetailsPresenter' \n                                                               primitives:SelectiveScrollingGrid.SelectiveScrollingOrientation=\"{Binding RelativeSource={RelativeSource AncestorType={x:Type controls:DataGrid}}, Path=AreRowDetailsFrozen, Converter={x:Static controls:DataGrid.RowDetailsScrollingConverter}, ConverterParameter={x:Static controls:SelectiveScrollingOrientation.Vertical}}\"                                                                                                                         \n                                                               Visibility=\"{TemplateBinding DetailsVisibility}\"                                                               \n                                                               />\n                            <!--<Rectangle Height=\"1\" HorizontalAlignment=\"Stretch\" \n                                       x:Name=\"BottomGridLine\" \n                                       Fill=\"{StaticResource HorizontalVerticalGridLinesBrush}\" \n                                       Grid.Column=\"1\" Grid.Row=\"2\" />-->\n                            <Rectangle Height=\"1\" HorizontalAlignment=\"Stretch\" x:Name=\"BottomGridLine\" Grid.Column=\"1\" Grid.Row=\"2\" />\n                        </primitives:SelectiveScrollingGrid>\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                            <Trigger.EnterActions>\n                                <BeginStoryboard>\n                                    <Storyboard>\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\" />\n                                        </DoubleAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </BeginStoryboard>\n                            </Trigger.EnterActions>\n                            <Trigger.ExitActions>\n                                <BeginStoryboard>\n                                    <Storyboard>\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\" />\n                                        </DoubleAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </BeginStoryboard>\n                            </Trigger.ExitActions>\n                        </Trigger>\n                        <Trigger Property='IsSelected' Value='True'>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard>\n                                    <Storyboard>\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"SelectedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\" />\n                                        </DoubleAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </BeginStoryboard>\n                            </Trigger.EnterActions>\n                            <Trigger.ExitActions>\n                                <BeginStoryboard>\n                                    <Storyboard>\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"SelectedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\" />\n                                        </DoubleAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </BeginStoryboard>\n                            </Trigger.ExitActions>\n                            <!--<Setter Property=\"DetailsVisibility\" Value=\"Visible\" />-->\n                        </Trigger>\n                        <MultiTrigger >\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"IsMouseOver\" Value=\"True\" />\n                                <Condition Property=\"IsSelected\" Value=\"True\" />\n                            </MultiTrigger.Conditions>\n                            <MultiTrigger.EnterActions>\n                                <BeginStoryboard>\n                                    <Storyboard>\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.5\" />\n                                        </DoubleAnimationUsingKeyFrames>\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"SelectedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\" />\n                                        </DoubleAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </BeginStoryboard>\n                            </MultiTrigger.EnterActions>\n                            <MultiTrigger.ExitActions>\n                                <BeginStoryboard>\n                                    <Storyboard>\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\" />\n                                        </DoubleAnimationUsingKeyFrames>\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"SelectedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\" />\n                                        </DoubleAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </BeginStoryboard>\n                            </MultiTrigger.ExitActions>\n                        </MultiTrigger>\n                        <!--<MultiTrigger >\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"IsMouseOver\" Value=\"True\" />\n                                <Condition Property=\"IsSelected\" Value=\"False\" />\n                            </MultiTrigger.Conditions>\n                            <MultiTrigger.EnterActions>\n                                <BeginStoryboard>\n                                    <Storyboard>\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.5\" />\n                                        </DoubleAnimationUsingKeyFrames>\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"SelectedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"1\" />\n                                        </DoubleAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </BeginStoryboard>\n                            </MultiTrigger.EnterActions>\n                            <MultiTrigger.ExitActions>\n                                <BeginStoryboard>\n                                    <Storyboard>\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"HoverRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\" />\n                                        </DoubleAnimationUsingKeyFrames>\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"SelectedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\" />\n                                        </DoubleAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </BeginStoryboard>\n                            </MultiTrigger.ExitActions>\n                        </MultiTrigger>-->\n                        <MultiTrigger>\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"IsSelected\" Value=\"True\" />\n                                <Condition Property=\"IsFocused\" Value=\"False\" />\n                            </MultiTrigger.Conditions>\n                            <MultiTrigger.EnterActions>\n                                <BeginStoryboard>\n                                    <Storyboard>\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"SelectedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0.6\" />\n                                        </DoubleAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </BeginStoryboard>\n                            </MultiTrigger.EnterActions>\n                            <MultiTrigger.ExitActions>\n                                <BeginStoryboard>\n                                    <Storyboard>\n                                        <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Duration=\"00:00:00.0010000\" Storyboard.TargetName=\"SelectedRectangle\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                            <SplineDoubleKeyFrame KeyTime=\"00:00:00\" Value=\"0\" />\n                                        </DoubleAnimationUsingKeyFrames>\n                                    </Storyboard>\n                                </BeginStoryboard>\n                            </MultiTrigger.ExitActions>\n                        </MultiTrigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <!--DataGridCell-->\n    <Style x:Key='CellStyle' TargetType=\"{x:Type controls:DataGridCell}\" >\n        <Setter Property=\"Foreground\" Value=\"{StaticResource ThemeForegroundBrush}\" />\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\" />\n        <Setter Property=\"Cursor\" Value=\"Arrow\" />\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\n        <!--<Setter Property=\"BorderThickness\" Value=\"1\" />-->\n        <!--Padding hack-->\n        <Setter Property=\"Padding\" Value=\"2 5 2 5\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type controls:DataGridCell}\">\n                    <Grid x:Name=\"Root\" Background=\"{TemplateBinding Background}\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"*\" />\n                            <ColumnDefinition Width=\"Auto\" />\n                        </Grid.ColumnDefinitions>\n                        <Rectangle HorizontalAlignment=\"Stretch\" x:Name=\"FocusVisual\" VerticalAlignment=\"Stretch\" IsHitTestVisible=\"false\" Opacity=\"0\" Fill=\"{StaticResource DisabledBackgroundBrush}\" Stroke=\"{StaticResource GlyphBrush}\" StrokeThickness=\"1\" />\n                        <ContentPresenter Margin=\"{TemplateBinding Padding}\" HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\" VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\" Content=\"{TemplateBinding Content}\" ContentTemplate=\"{TemplateBinding ContentTemplate}\" Cursor=\"{TemplateBinding Cursor}\"/>\n                        <Rectangle x:Name=\"RightGridLine\" VerticalAlignment=\"Stretch\" Width=\"1\" Grid.Column=\"1\" />\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsSelected\" Value=\"True\">\n                            <Setter Property='Opacity' TargetName='FocusVisual' Value='0.8' />\n                            <!--<Setter Property=\"BorderThickness\" Value=\"1\" />-->\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"IsSelected\" \n                Value=\"{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=controls:DataGridRow}, Path=IsSelected, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}\"\n                />\n    </Style>\n    <!--DataGridColumnHeader-->\n    <Style x:Key=\"ColumnHeaderGripperStyle\" TargetType=\"{x:Type Thumb}\">\n        <Setter Property=\"Width\" Value=\"8\"/>\n        <Setter Property=\"Background\" Value=\"Transparent\"/>\n        <Setter Property=\"Cursor\" Value=\"SizeWE\"/>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type Thumb}\">\n                    <Border Padding=\"{TemplateBinding Padding}\"\n                    Background=\"{TemplateBinding Background}\"/>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <Style x:Key='ColumnHeaderStyle' TargetType='{x:Type primitives:DataGridColumnHeader}'>\n        <Setter Property=\"Foreground\" Value=\"#FFFFFFFF\" />\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\" />\n        <Setter Property=\"FontSize\" Value=\"10.5\" />\n        <Setter Property=\"FontWeight\" Value=\"Bold\" />\n        <Setter Property=\"IsTabStop\" Value=\"False\" />\n        <Setter Property=\"SeparatorBrush\" Value=\"#FFC9CACA\" />\n        <!--<Setter Property=\"Padding\" Value=\"4,4,5,4\" />-->\n        <Setter Property=\"Padding\" Value=\"4,6,5,6\"/>\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type primitives:DataGridColumnHeader}\">\n                    <Grid>\n                        <themes:DataGridHeaderBorder x:Name='HeaderBorder' \n                                                  SortDirection=\"{TemplateBinding SortDirection}\"\n                                                  IsHovered=\"{TemplateBinding IsMouseOver}\"\n                                                  IsPressed=\"{TemplateBinding IsPressed}\"\n                                                  IsClickable=\"{TemplateBinding CanUserSort}\"\n                                                  BorderThickness=\"0,0,1,1\"\n                                                  Background=\"{StaticResource NormalBrush}\"\n                                                  SeparatorVisibility=\"{TemplateBinding SeparatorVisibility}\"\n                                                  SeparatorBrush=\"#FFC9CACA\">\n                            <Grid Background='Transparent' >\n                                <Grid.ColumnDefinitions>\n                                    <ColumnDefinition Width='Auto' />\n                                    <ColumnDefinition Width='*' />\n                                </Grid.ColumnDefinitions>\n                                <Rectangle x:Name=\"BackgroundRectangle\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"2\" \n                                   Fill=\"{StaticResource NormalBrush}\" Stretch=\"Fill\" Stroke=\"{StaticResource NormalBorderBrush}\" StrokeThickness=\"1\" />\n                                <Rectangle x:Name=\"HoverRectangle\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"2\" Stretch=\"Fill\" \n                                   Fill=\"{StaticResource HoverBrush}\" Opacity=\"0\" />\n                                <ContentPresenter Grid.Column='0' \n                                                  SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\"\n                                                  VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"\n                                                  HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n                                                  Margin='{TemplateBinding Padding}'\n                                                  Cursor=\"{TemplateBinding Cursor}\"\n                                                  />\n                                <Rectangle x:Name=\"ShineRectangle\" Fill=\"{StaticResource ShineBrush}\" Stretch=\"Fill\" \n                                   Stroke=\"{StaticResource NormalBorderBrush}\" StrokeThickness=\"1\" Grid.ColumnSpan=\"2\" Grid.RowSpan=\"2\" />\n                                <!--<Rectangle x:Name=\"VerticalSeparator\" VerticalAlignment=\"Stretch\" Width=\"1\" Visibility=\"{TemplateBinding SeparatorVisibility}\" \n                                   Grid.Column=\"2\" Grid.RowSpan=\"2\" Fill=\"{TemplateBinding SeparatorBrush}\" />-->\n                                <Path HorizontalAlignment=\"Left\" x:Name=\"SortArrow\" VerticalAlignment=\"Center\" \n                                      Width=\"8\" Opacity=\"0\" RenderTransformOrigin=\".5,.5\" Grid.Column=\"1\" Grid.RowSpan=\"2\" Fill=\"#FFFFFFFF\" Stretch=\"Uniform\" Data=\"F1 M -5.215,6.099L 5.215,6.099L 0,0L -5.215,6.099 Z \">\n                                    <Path.RenderTransform>\n                                        <TransformGroup>\n                                            <ScaleTransform ScaleX=\".9\" ScaleY=\".9\" x:Name=\"SortIconTransform\" />\n                                        </TransformGroup>\n                                    </Path.RenderTransform>\n                                </Path>\n                            </Grid>\n                        </themes:DataGridHeaderBorder>\n                        <Thumb x:Name=\"PART_LeftHeaderGripper\"\n                   HorizontalAlignment=\"Left\"\n                   Style=\"{StaticResource ColumnHeaderGripperStyle}\"/>\n                        <Thumb x:Name=\"PART_RightHeaderGripper\"\n                   HorizontalAlignment=\"Right\"\n                   Style=\"{StaticResource ColumnHeaderGripperStyle}\"/>\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"SortDirection\" Value=\"Ascending\">\n                            <Setter TargetName=\"SortArrow\" Property=\"Opacity\" Value=\"1\" />\n                            <Setter TargetName=\"SortArrow\" Property=\"RenderTransform\">\n                                <Setter.Value>\n                                    <RotateTransform Angle=\"180\" />\n                                </Setter.Value>\n                            </Setter>\n                            <Setter TargetName=\"ShineRectangle\" Property=\"Opacity\" Value=\"1\" />\n                        </Trigger>\n                        <Trigger Property=\"SortDirection\" Value=\"Descending\">\n                            <Setter TargetName=\"SortArrow\" Property=\"Opacity\" Value=\"1\" />\n                            <Setter TargetName=\"ShineRectangle\" Property=\"Opacity\" Value=\"1\" />\n                        </Trigger>\n                        <Trigger Property='IsMouseOver' Value='True'>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard>\n                                    <Storyboard>\n                                        <DoubleAnimation BeginTime=\"00:00:00\" \n                                                         Duration=\"00:00:00.20000\"\n                                                         Storyboard.TargetName=\"HoverRectangle\" \n                                                         Storyboard.TargetProperty=\"(UIElement.Opacity)\" \n                                                         To='1.0'                                                         \n                                                         />\n                                    </Storyboard>\n                                </BeginStoryboard>\n                            </Trigger.EnterActions>\n                            <Trigger.ExitActions>\n                                <BeginStoryboard>\n                                    <Storyboard>\n                                        <DoubleAnimation BeginTime=\"00:00:00\" \n                                                         Duration=\"00:00:00.20000\"\n                                                         Storyboard.TargetName=\"HoverRectangle\" \n                                                         Storyboard.TargetProperty=\"(UIElement.Opacity)\" \n                                                         To='0'                                                         \n                                                         />\n                                    </Storyboard>\n                                </BeginStoryboard>\n                            </Trigger.ExitActions>\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n\n\n    </Style>\n\n    <!--DataGrid -->\n    <Style TargetType='{x:Type controls:DataGrid}'>\n        <Setter Property=\"Foreground\" Value=\"{StaticResource TextBrush}\" />\n        <Setter Property='ScrollViewer.CanContentScroll' Value='False' />\n        <Setter Property='AutoGenerateColumns' Value='False' />\n        <Setter Property=\"IsTabStop\" Value=\"True\" />\n        <Setter Property=\"RowBackground\" Value=\"{x:Null}\" />\n        <Setter Property=\"Background\" Value=\"{StaticResource ControlBackgroundBrush}\" />\n        <Setter Property=\"AlternatingRowBackground\" Value=\"#00FFFFFF\" />\n        <Setter Property=\"GridLinesVisibility\" Value=\"Vertical\" />\n        <Setter Property=\"HorizontalGridLinesBrush\" Value=\"#FFC9CACA\" />\n        <Setter Property=\"IsTabStop\" Value=\"True\" />\n        <Setter Property=\"VerticalGridLinesBrush\" Value=\"#FFC9CACA\" />\n        <Setter Property=\"BorderBrush\">\n            <Setter.Value>\n                <LinearGradientBrush EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\n                    <GradientStop Color=\"#FFA3AEB9\" Offset=\"0\" />\n                    <GradientStop Color=\"#FF8399A9\" Offset=\"0.375\" />\n                    <GradientStop Color=\"#FF718597\" Offset=\"0.375\" />\n                    <GradientStop Color=\"#FF617584\" Offset=\"1\" />\n                </LinearGradientBrush>\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"BorderThickness\" Value=\"1\" />\n        <Setter Property='SelectionUnit' Value='CellOrRowHeader' />\n        <Setter Property='SelectionMode' Value='Single' />\n        <Setter Property='IsReadOnly' Value='False' />\n        <Setter Property='CanUserAddRows' Value='True' />\n        <Setter Property='CanUserSortColumns' Value='True' />\n        <Setter Property='CanUserResizeRows' Value='False' />\n        <Setter Property='CanUserSortColumns' Value='True' />\n        <Setter Property='IsSynchronizedWithCurrentItem' Value='True'/>\n        <Setter Property=\"EnableRowVirtualization\" Value=\"True\" />\n        <Setter Property='CellStyle' Value='{StaticResource CellStyle}' />\n        <Setter Property='RowStyle' Value='{StaticResource RowStyle}' />\n        <Setter Property='RowDetailsVisibilityMode' Value='VisibleWhenSelected' />\n        <Setter Property='ColumnHeaderStyle' Value='{StaticResource ColumnHeaderStyle}' />\n        <Setter Property='VerticalAlignment' Value='Center' />\n        <Setter Property='FontFamily' Value='Verdana' />\n        <!--FontSize hack-->\n        <Setter Property='FontSize' Value='11' />\n    </Style>\n\n    <Style TargetType=\"{x:Type ContextMenu}\">\n        <Setter Property=\"Background\" Value=\"Black\" />\n        <Setter Property=\"OverridesDefaultStyle\" Value=\"True\"/>\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"true\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ContextMenu}\">\n                    <Border x:Name=\"Border\" Background=\"Black\" BorderThickness=\"1\">\n                        <Border.BorderBrush>\n                            <SolidColorBrush Color=\"#FFAB9066\" />\n                        </Border.BorderBrush>\n                        <StackPanel IsItemsHost=\"True\" KeyboardNavigation.DirectionalNavigation=\"Cycle\" />\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"HasDropShadow\" Value=\"true\">\n                            <Setter TargetName=\"Border\" Property=\"Padding\" Value=\"0,3,0,3\" />\n                            <Setter TargetName=\"Border\" Property=\"CornerRadius\" Value=\"4\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                    <ControlTemplate.Resources>\n                        <Color x:Key=\"SelectedBackgroundColor\"></Color>\n                    <Color x:Key=\"ControlMouseOverColor\"></Color>\n                    </ControlTemplate.Resources>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n        <Style.Triggers>\n            <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                <Setter Property=\"Background\" Value=\"Black\"/>\n            </Trigger>\n        </Style.Triggers>\n    </Style>\n\n    <Style TargetType=\"{x:Type MenuItem}\">\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"{Binding Path=HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"{Binding Path=VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}\" />\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource TextBrush}\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type MenuItem}\">\n                    <ControlTemplate.Resources>\n                        <Storyboard x:Key=\"HighlightedOn\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.1000000\" Value=\"1\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                        <Storyboard x:Key=\"HightlightedOff\">\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverShineBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                            <DoubleAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"HoverBorder\" Storyboard.TargetProperty=\"(UIElement.Opacity)\">\n                                <SplineDoubleKeyFrame KeyTime=\"00:00:00.3000000\" Value=\"0\"/>\n                            </DoubleAnimationUsingKeyFrames>\n                        </Storyboard>\n                    </ControlTemplate.Resources>\n                    <Border x:Name=\"Border\" BorderThickness=\"{TemplateBinding BorderThickness}\" CornerRadius=\"0,0,0,0\" Margin=\"3,2,3,2\">\n                        <Grid Margin=\"0,0,0,0\">\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition MinWidth=\"17\" Width=\"Auto\" SharedSizeGroup=\"MenuItemIconColumnGroup\" />\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"Auto\" SharedSizeGroup=\"MenuItemIGTColumnGroup\" />\n                                <ColumnDefinition Width=\"14\" />\n                            </Grid.ColumnDefinitions>\n                            <Border Grid.Column=\"0\" Grid.ColumnSpan=\"4\" Background=\"Black\" Opacity=\"0\" x:Name=\"HoverBorder\" CornerRadius=\"1,1,1,1\"/>\n                            <Border Grid.ColumnSpan=\"4\" Background=\"Black\" Opacity=\"0\" x:Name=\"HoverShineBorder\" CornerRadius=\"1,1,1,1\"/>\n                            <ContentPresenter Margin=\"4,0,6,0\" x:Name=\"Icon\" VerticalAlignment=\"Center\" ContentSource=\"Icon\" />\n                            <Grid Visibility=\"Hidden\" Margin=\"4,0,6,0\" x:Name=\"GlyphPanel\" VerticalAlignment=\"Center\">\n                                <Path x:Name=\"GlyphPanelpath\" VerticalAlignment=\"Center\" Fill=\"{TemplateBinding Foreground}\" Data=\"M0,2 L0,4.8 L2.5,7.4 L7.1,2.8 L7.1,0 L2.5,4.6 z\" FlowDirection=\"LeftToRight\" />\n                            </Grid>\n                            <ContentPresenter Grid.Column=\"1\" x:Name=\"HeaderHost\" RecognizesAccessKey=\"True\" ContentSource=\"Header\" Margin=\"2,1,2,1\" />\n                            <Grid Grid.Column=\"3\" Margin=\"4,0,6,0\" x:Name=\"ArrowPanel\" VerticalAlignment=\"Center\">\n                                <Path x:Name=\"ArrowPanelPath\" VerticalAlignment=\"Center\" Fill=\"{TemplateBinding Foreground}\" Data=\"M0,0 L0,8 L4,4 z\" />\n                            </Grid>\n                            <Popup IsOpen=\"{Binding Path=IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}\" Placement=\"Right\" x:Name=\"SubMenuPopup\" Focusable=\"false\" AllowsTransparency=\"true\" PopupAnimation=\"{DynamicResource {x:Static SystemParameters.MenuPopupAnimationKey}}\">\n                                <Grid x:Name=\"SubMenu\">\n                                    <Border x:Name=\"SubMenuBorder\" Background=\"{DynamicResource LightBrush}\" BorderThickness=\"1\" Opacity=\"0.8\">\n                                        <Border.BorderBrush>\n                                            <SolidColorBrush Color=\"{DynamicResource WhiteColor}\" />\n                                        </Border.BorderBrush>\n                                    </Border>\n                                    <StackPanel IsItemsHost=\"True\" KeyboardNavigation.DirectionalNavigation=\"Cycle\" />\n                                </Grid>\n                            </Popup>\n                        </Grid>\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"Role\" Value=\"TopLevelHeader\">\n                            <Setter Property=\"Margin\" Value=\"0,1,0,1\" />\n                            <Setter Property=\"Padding\" Value=\"6,3,6,3\" />\n                            <Setter Property=\"Grid.IsSharedSizeScope\" Value=\"true\" />\n                            <Setter Property=\"Placement\" Value=\"Bottom\" TargetName=\"SubMenuPopup\" />\n                            <Setter Property=\"Visibility\" Value=\"Collapsed\" TargetName=\"ArrowPanel\" />\n                        </Trigger>\n                        <Trigger Property=\"Role\" Value=\"TopLevelItem\">\n                            <Setter Property=\"Margin\" Value=\"0,1,0,1\" />\n                            <Setter Property=\"Padding\" Value=\"6,3,6,3\" />\n                            <Setter Property=\"Visibility\" Value=\"Collapsed\" TargetName=\"ArrowPanel\" />\n                        </Trigger>\n                        <Trigger Property=\"Role\" Value=\"SubmenuHeader\">\n                            <Setter Property=\"DockPanel.Dock\" Value=\"Top\" />\n                            <Setter Property=\"Padding\" Value=\"0,2,0,2\" />\n                            <Setter Property=\"Grid.IsSharedSizeScope\" Value=\"true\" />\n                        </Trigger>\n                        <Trigger Property=\"Role\" Value=\"SubmenuItem\">\n                            <Setter Property=\"DockPanel.Dock\" Value=\"Top\" />\n                            <Setter Property=\"Padding\" Value=\"0,2,0,2\" />\n                            <Setter Property=\"Visibility\" Value=\"Collapsed\" TargetName=\"ArrowPanel\" />\n                        </Trigger>\n                        <Trigger Property=\"IsSuspendingPopupAnimation\" Value=\"true\">\n                            <Setter Property=\"PopupAnimation\" Value=\"None\" TargetName=\"SubMenuPopup\" />\n                        </Trigger>\n                        <Trigger Property=\"Icon\" Value=\"{x:Null}\">\n                            <Setter Property=\"Visibility\" Value=\"Collapsed\" TargetName=\"Icon\" />\n                        </Trigger>\n                        <Trigger Property=\"IsChecked\" Value=\"true\">\n                            <Setter Property=\"Visibility\" Value=\"Visible\" TargetName=\"GlyphPanel\" />\n                            <Setter Property=\"Visibility\" Value=\"Collapsed\" TargetName=\"Icon\" />\n                        </Trigger>\n                        <Trigger Property=\"AllowsTransparency\" SourceName=\"SubMenuPopup\" Value=\"true\">\n                            <Setter Property=\"Margin\" Value=\"0,0,3,3\" TargetName=\"SubMenu\" />\n                            <Setter Property=\"SnapsToDevicePixels\" Value=\"true\" TargetName=\"SubMenu\" />\n                            <Setter Property=\"BitmapEffect\" Value=\"{DynamicResource PopupDropShadow}\" TargetName=\"SubMenuBorder\" />\n                        </Trigger>\n                        <Trigger Property=\"IsHighlighted\" Value=\"true\">\n                            <Trigger.ExitActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HightlightedOff}\" x:Name=\"HightlightedOff_BeginStoryboard\"/>\n                            </Trigger.ExitActions>\n                            <Trigger.EnterActions>\n                                <BeginStoryboard Storyboard=\"{StaticResource HighlightedOn}\"/>\n                            </Trigger.EnterActions>\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n</ResourceDictionary>\n    \n"
  },
  {
    "path": "Procurement/Controls/ExpressionDarkGrid_brushes.xaml",
    "content": "﻿<!--\n// Copyright (c) Trevor Webster\n// This source is subject to the Microsoft Public License (Ms-PL).\n// Please see http://go.microsoft.com/fwlink/?LinkID=131993 for details.\n// All other rights reserved.\n-->    \n    <ResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n                    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n                    xmlns:themes=\"clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero\"\n                    xmlns:controls=\"clr-namespace:System.Windows.Controls;assembly=PresentationFramework\"\n                    xmlns:primitives=\"clr-namespace:System.Windows.Controls.Primitives;assembly=PresentationFramework\"\n                    xmlns:my=\"clr-namespace:Procurement\"\n                    xmlns:sys=\"clr-namespace:System;assembly=mscorlib\"\n                    >\n    <!-- Theme -->\n    <LinearGradientBrush x:Key=\"ThemeBackgroundBrush\" StartPoint=\"0.5,1\" EndPoint=\"0.5,0\">\n        <GradientStop Color=\"#FF171717\" Offset=\"0\" />\n        <GradientStop Color=\"#FF0A0A0A\" Offset=\"1\" />\n    </LinearGradientBrush>\n    <SolidColorBrush x:Key=\"ThemeForegroundBrush\" Color=\"White\" />    \n\n    <!--EXPRESSION DARK VALUES FOR CHARTS-->\n    <Color x:Key=\"ExpressionTopGradientBrush1\">#FFB5B5B5</Color>\n    <Color x:Key=\"ExpressionBottomGradientBrush1\">#FF4C4C4C</Color>\n    <RadialGradientBrush x:Key=\"ExpressionPieDataPointBrush1\">\n        <RadialGradientBrush.RelativeTransform>\n            <TransformGroup>\n                <ScaleTransform CenterX=\"0.5\" CenterY=\"0.5\" ScaleX=\"2.09\" ScaleY=\"1.819\"/>\n                <SkewTransform CenterX=\"0.5\" CenterY=\"0.5\"/>\n                <RotateTransform CenterX=\"0.5\" CenterY=\"0.5\"/>\n                <TranslateTransform X=\"-0.425\" Y=\"-0.486\"/>\n            </TransformGroup>\n        </RadialGradientBrush.RelativeTransform>\n        <GradientStop Color=\"{StaticResource ExpressionTopGradientBrush1}\"/>\n        <GradientStop Color=\"{StaticResource ExpressionBottomGradientBrush1}\" Offset=\"1\"/>\n    </RadialGradientBrush>\n\n    <Color x:Key=\"ExpressionTopGradientBrush2\">#FFDCDCDC</Color>\n    <Color x:Key=\"ExpressionBottomGradientBrush2\">#FF757575</Color>\n    <RadialGradientBrush x:Key=\"ExpressionPieDataPointBrush2\">\n        <RadialGradientBrush.RelativeTransform>\n            <TransformGroup>\n                <ScaleTransform CenterX=\"0.5\" CenterY=\"0.5\" ScaleX=\"2.09\" ScaleY=\"1.819\"/>\n                <SkewTransform CenterX=\"0.5\" CenterY=\"0.5\"/>\n                <RotateTransform CenterX=\"0.5\" CenterY=\"0.5\"/>\n                <TranslateTransform X=\"-0.425\" Y=\"-0.486\"/>\n            </TransformGroup>\n        </RadialGradientBrush.RelativeTransform>\n        <GradientStop Color=\"{StaticResource ExpressionTopGradientBrush2}\"/>\n        <GradientStop Color=\"{StaticResource ExpressionBottomGradientBrush2}\" Offset=\"1\"/>\n    </RadialGradientBrush>\n\n    <Color x:Key=\"ExpressionTopGradientBrush3\">#FFF4F4F4</Color>\n    <Color x:Key=\"ExpressionBottomGradientBrush3\">#FFB7B7B7</Color>\n    <RadialGradientBrush x:Key=\"ExpressionPieDataPointBrush3\">\n        <RadialGradientBrush.RelativeTransform>\n            <TransformGroup>\n                <ScaleTransform CenterX=\"0.5\" CenterY=\"0.5\" ScaleX=\"2.09\" ScaleY=\"1.819\"/>\n                <SkewTransform CenterX=\"0.5\" CenterY=\"0.5\"/>\n                <RotateTransform CenterX=\"0.5\" CenterY=\"0.5\"/>\n                <TranslateTransform X=\"-0.425\" Y=\"-0.486\"/>\n            </TransformGroup>\n        </RadialGradientBrush.RelativeTransform>\n        <GradientStop Color=\"{StaticResource ExpressionTopGradientBrush3}\"/>\n        <GradientStop Color=\"{StaticResource ExpressionBottomGradientBrush3}\" Offset=\"1\"/>\n    </RadialGradientBrush>\n\n    <Color x:Key=\"ExpressionTopGradientBrush4\">#FFF4F4F4</Color>\n    <Color x:Key=\"ExpressionBottomGradientBrush4\">#FFA3A3A3</Color>\n    <RadialGradientBrush x:Key=\"ExpressionPieDataPointBrush4\">\n        <RadialGradientBrush.RelativeTransform>\n            <TransformGroup>\n                <ScaleTransform CenterX=\"0.5\" CenterY=\"0.5\" ScaleX=\"2.09\" ScaleY=\"1.819\"/>\n                <SkewTransform CenterX=\"0.5\" CenterY=\"0.5\"/>\n                <RotateTransform CenterX=\"0.5\" CenterY=\"0.5\"/>\n                <TranslateTransform X=\"-0.425\" Y=\"-0.486\"/>\n            </TransformGroup>\n        </RadialGradientBrush.RelativeTransform>\n        <GradientStop Color=\"{StaticResource ExpressionTopGradientBrush4}\"/>\n        <GradientStop Color=\"{StaticResource ExpressionBottomGradientBrush4}\" Offset=\"1\"/>\n    </RadialGradientBrush>\n\n    <!-- EXPRESSION DARK VALUES -->\n\n    <SolidColorBrush x:Key=\"TextBrush\" Color=\"#FFFFFFFF\" />\n    <Color x:Key=\"TextColor\">#FFFFFFFF</Color>\n    <SolidColorBrush x:Key=\"NormalBrush\" Color=\"#FF595959\" />\n    <SolidColorBrush x:Key=\"NormalBorderBrush\" Color=\"#FF333333\" />\n    <SolidColorBrush x:Key=\"HoverBrush\" Color=\"#FF393939\" />\n    <SolidColorBrush x:Key=\"GlyphBrush\" Color=\"#FFD1D1D1\" />\n\n    <LinearGradientBrush x:Key=\"PressedBrush\" EndPoint=\"0.5,0.971\" StartPoint=\"0.5,0.042\">\n        <GradientStop Color=\"#4C000000\" Offset=\"0\" />\n        <GradientStop Color=\"#26FFFFFF\" Offset=\"1\" />\n        <GradientStop Color=\"#4C000000\" Offset=\"0.467\" />\n        <GradientStop Color=\"#26FFFFFF\" Offset=\"0.479\" />\n    </LinearGradientBrush>\n\n\n    <SolidColorBrush x:Key=\"ControlBackgroundBrush\" Color=\"#FF333333\" />\n\n    <!--<LinearGradientBrush x:Key=\"SelectedBackgroundBrush\" EndPoint=\"0.5,1\" StartPoint=\"0.5,0\">\n        <GradientStop Color=\"#FFFFFFFF\"/>\n        <GradientStop Color=\"#FF737373\" Offset=\"1\"/>\n    </LinearGradientBrush>-->\n\n    <SolidColorBrush x:Key=\"SelectedBackgroundBrush\" Color=\"Black\" />\n\n    <SolidColorBrush x:Key=\"DisabledForegroundBrush\" Color=\"#888\" />\n    <SolidColorBrush x:Key=\"DisabledBackgroundBrush\" Color=\"#FF787878\" />\n    <SolidColorBrush x:Key=\"DisabledBorderBrush\" Color=\"#AAA\" />\n    <SolidColorBrush x:Key=\"WindowBackgroundBrush\" Color=\"#FF595959\" />\n\n    <!-- EXPRESSION COMMON VALUES -->\n\n    <LinearGradientBrush x:Key=\"ShineBrush\" EndPoint=\"0.5,0.971\" StartPoint=\"0.5,0.042\">\n        <GradientStop Color=\"#59FFFFFF\" Offset=\"0\" />\n        <GradientStop Color=\"#00FFFFFF\" Offset=\"1\" />\n        <GradientStop Color=\"#26FFFFFF\" Offset=\"0.467\" />\n        <GradientStop Color=\"#00FFFFFF\" Offset=\"0.475\" />\n    </LinearGradientBrush>\n\n    <LinearGradientBrush x:Key=\"HoverShineBrush\" EndPoint=\"0.5,0.971\" StartPoint=\"0.5,0.042\">\n        <GradientStop Color=\"#4CFFFFFF\" Offset=\"0\" />\n        <GradientStop Color=\"#26FFFFFF\" Offset=\"1\" />\n        <GradientStop Color=\"#26FFFFFF\" Offset=\"0.467\" />\n        <GradientStop Color=\"#00FFFFFF\" Offset=\"0.475\" />\n        <GradientStop Color=\"#00FFFFFF\" Offset=\"0.856\" />\n    </LinearGradientBrush>\n\n    <LinearGradientBrush x:Key=\"PressedBorderBrush\" EndPoint=\"0,1\" StartPoint=\"0,0\">\n        <GradientStop Color=\"#444\" Offset=\"0.0\" />\n        <GradientStop Color=\"#888\" Offset=\"1.0\" />\n    </LinearGradientBrush>\n\n\n\n\n</ResourceDictionary>"
  },
  {
    "path": "Procurement/Controls/ForumExport.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.Controls.ForumExport\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             xmlns:v=\"clr-namespace:Procurement.View\"\n             mc:Ignorable=\"d\" \n             d:DesignHeight=\"300\" d:DesignWidth=\"300\">\n    <UserControl.Resources>\n        <v:TabIDToStashControlConverter x:Key=\"tc\" />\n    </UserControl.Resources>\n    <Grid>\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"190\"/>\n            <ColumnDefinition Width=\"*\" />\n        </Grid.ColumnDefinitions>\n        <Border Grid.Column=\"0\" BorderBrush=\"#FF76591B\" BorderThickness=\"2\" Background=\"Black\">\n            <Grid>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"30\" />\n                    <RowDefinition Height=\"20\" />\n                    <RowDefinition Height=\"25\" />\n                    <RowDefinition Height=\"25\" />\n                    <RowDefinition Height=\"25\" />\n                    <RowDefinition Height=\"25\" />\n                    <RowDefinition />\n                </Grid.RowDefinitions>\n                <Label Content=\"Stash Tabs\" Grid.Row=\"0\"  Foreground=\"#FFAB9066\" FontSize=\"14\" FontWeight=\"Bold\"/>\n                <CheckBox Grid.Row=\"1\" Foreground=\"#FFAB9066\" Content=\"Select All\" Checked=\"ToggleAll\" Unchecked=\"ToggleAll\" Margin=\"10,0,0,0\"/>\n                <Button Grid.Row=\"2\" Content=\"Copy To Clipboard\" Height=\"22\" Width=\"159\" Style=\"{Binding}\" HorizontalAlignment=\"Left\" Margin=\"10,0,0,0\" Command=\"{Binding CopyCommand}\"/>\n                <ComboBox Grid.Row=\"3\" Height=\"22\"  Style=\"{Binding}\" HorizontalAlignment=\"Left\" Margin=\"10,0,0,0\" ItemsSource=\"{Binding AvailableTemplates}\" SelectedValue=\"{Binding CurrentTemplate, Mode=TwoWay}\"/>\n\n                <Button Grid.Row=\"4\" Content=\"Update Forum Thread\" Height=\"22\" Width=\"159\" Style=\"{Binding}\" HorizontalAlignment=\"Left\" Margin=\"10,0,0,0\" Command=\"{Binding PostToThreadCommand}\" IsEnabled=\"{Binding LoggedIn}\" />\n                <Button Grid.Row=\"5\" Content=\"Bump Forum Thread\" Height=\"22\" Width=\"159\" Style=\"{Binding}\" HorizontalAlignment=\"Left\" Margin=\"10,0,0,0\" Command=\"{Binding BumpThreadCommand}\"  IsEnabled=\"{Binding LoggedIn}\" />\n\n                <ScrollViewer Grid.Row=\"6\" HorizontalScrollBarVisibility=\"Hidden\" VerticalScrollBarVisibility=\"Auto\">\n                   <ItemsControl ItemsSource=\"{Binding StashItems}\" Margin=\"10,10,10,10\" x:Name=\"CheckBoxList\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Vertical\"/>\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                    <StackPanel>\n                                        <TextBlock Background=\"Black\" Foreground=\"#FFAB9066\" ToolTip=\"{Binding ., Converter={StaticResource tc}}\">\n                                            <CheckBox Tag=\"{Binding ID, Mode=OneTime}\" Checked=\"checkBox_Checked\" Unchecked=\"checkBox_Checked\" IsChecked=\"{Binding IsChecked, Mode=TwoWay}\" />\n                                            <Run Text=\"{Binding Name, Mode=OneTime}\" />\n                                        </TextBlock>\n                                </StackPanel>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n            </ScrollViewer>\n                \n            </Grid>\n        </Border>\n        <Border Grid.Column=\"1\" BorderBrush=\"#FF76591B\" BorderThickness=\"2\" Background=\"Black\" Margin=\"5,0,0,0\">\n            <TextBox Margin=\"5,5,5,5\" Text=\"{Binding Text}\" TextWrapping=\"Wrap\" VerticalScrollBarVisibility=\"Auto\" Background=\"Black\" Foreground=\"#FFAB9066\" BorderThickness=\"0\"/>\n        </Border>\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "Procurement/Controls/ForumExport.xaml.cs",
    "content": "﻿using System.Windows;\nusing System.Windows.Controls;\nusing Procurement.ViewModel;\n\nnamespace Procurement.Controls\n{\n    public partial class ForumExport : UserControl\n    {\n        bool toggleAll = false;\n        \n        public ForumExport()\n        {\n            InitializeComponent();\n            this.DataContext = new ForumExportViewModel();\n        }\n\n        void checkBox_Checked(object sender, RoutedEventArgs e)\n        {\n            ForumExportViewModel vm = this.DataContext as ForumExportViewModel;\n            CheckBox cb = sender as CheckBox;\n            vm.update(int.Parse(cb.Tag.ToString()), cb.IsChecked.Value, !toggleAll);\n        }\n\n        private void ToggleAll(object sender, RoutedEventArgs e)\n        {\n            toggleAll = true;\n            ForumExportViewModel vm = this.DataContext as ForumExportViewModel;\n            CheckBox cb = sender as CheckBox;\n            vm.ToggleAll(cb.IsChecked.Value);\n            toggleAll = false;\n            vm.updateText();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Controls/ForumExportTemplateReader.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Reflection;\nusing System.IO;\nusing POEApi.Infrastructure;\nusing System.ComponentModel;\n\nnamespace Procurement.Controls\n{\n    internal class ForumExportTemplateReader\n    {\n        private const string templateFileName = \"ForumExportTemplate.txt\";\n        private static string currentTemplateName;\n\n        internal static event PropertyChangedEventHandler OnTemplateReloaded;\n\n        internal static string GetTemplate(string templateName)\n        {\n            try\n            {\n                currentTemplateName = templateName ?? templateFileName;\n                string template = getTemplateFromDisk(templateName ?? templateFileName);\n\n                if (template != string.Empty)\n                {\n                    if (OnTemplateReloaded != null)\n                        OnTemplateReloaded(template, null);\n\n                    return template;\n                }\n\n                template = getDefaultTemplate();\n                saveTemplate(template);\n\n                if (OnTemplateReloaded != null)\n                    OnTemplateReloaded(template, null);\n\n                return template;\n            }\n            catch (System.Exception ex)\n            {\n                Logger.Log(ex);\n                var message = \"Failed to load ForumExportTemplate!\";\n                Logger.Log(message);\n                throw new Exception(message);\n            }\n        }\n\n        internal static void SaveTemplate(string Template)\n        {\n            saveTemplate(Template);\n        }\n\n        private static void saveTemplate(string defaultTemplate)\n        {\n            try\n            {\n                File.WriteAllText(currentTemplateName, defaultTemplate);\n            }\n            catch (System.Exception ex)\n            {\n                Logger.Log(ex);\n                Logger.Log(\"Failed saving ForumExportTemplate to disk!\");\n            }\n        }\n\n        private static string getDefaultTemplate()\n        {\n            using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(\"Procurement.ForumExportTemplate.txt\"))\n            using (var reader = new StreamReader(stream))\n            {\n                return reader.ReadToEnd();\n            }\n        }\n\n        private static string getTemplateFromDisk(string templateName)\n        {\n            if (!File.Exists(templateName))\n                return string.Empty;\n\n            return System.IO.File.ReadAllText(templateName);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Controls/ForumTemplate.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.Controls.ForumTemplate\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:v=\"clr-namespace:Procurement.View\"\n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             mc:Ignorable=\"d\" \n             d:DesignHeight=\"300\" d:DesignWidth=\"300\" Background=\"Black\">\n    <UserControl.Resources>\n        <ResourceDictionary Source=\"ExpressionDarkGrid.xaml\" />\n    </UserControl.Resources>\n    <Border Grid.Column=\"0\" BorderBrush=\"#FF76591B\" BorderThickness=\"2\" Background=\"Black\">\n        <Grid Width=\"950\">\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"*\" />\n            </Grid.RowDefinitions>\n            <Button Content=\"Save All Changes\" Style=\"{x:Null}\" Width=\"100\" Height=\"20\" Margin=\"0,0,0,5\" Click=\"Button_Click\" Grid.Row=\"0\"/>\n            <TextBox Name=\"TemplateText\" Margin=\"2,5,2,5\" Text=\"{Binding Text}\" TextWrapping=\"Wrap\" VerticalScrollBarVisibility=\"Auto\" Background=\"Black\" Foreground=\"#FFAB9066\" BorderThickness=\"0\" Grid.Row=\"1\"/>\n        </Grid>\n    </Border>\n</UserControl>\n"
  },
  {
    "path": "Procurement/Controls/ForumTemplate.xaml.cs",
    "content": "﻿using System.Windows.Controls;\nusing Procurement.ViewModel;\nusing System.Windows;\n\nnamespace Procurement.Controls\n{\n    public partial class ForumTemplate : UserControl\n    {\n        public ForumTemplate()\n        {\n            InitializeComponent();\n            this.DataContext = new ForumTemplateViewModel();\n            TemplateText.AcceptsReturn = true;\n            //DataObject.AddPastingHandler(TemplateText, new DataObjectPastingEventHandler(OnPaste));\n        }\n\n        private void Button_Click(object sender, System.Windows.RoutedEventArgs e)\n        {\n            (this.DataContext as ForumTemplateViewModel).Save();\n        }\n\n        private void OnPaste(object sender, DataObjectPastingEventArgs e)\n        {\n            var isText = e.SourceDataObject.GetDataPresent(System.Windows.DataFormats.Text, true);\n            if (!isText) \n                return;\n\n            var text = e.SourceDataObject.GetData(DataFormats.Text) as string;\n\n        }\n    }\n}"
  },
  {
    "path": "Procurement/Controls/FragmentStashTab.xaml",
    "content": "﻿<local:AbstractStashTabControl x:Class=\"Procurement.Controls.FragmentStashTab\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n             xmlns:local=\"clr-namespace:Procurement.Controls\"\n             mc:Ignorable=\"d\"\n             d:DesignHeight=\"592\" d:DesignWidth=\"591\" Height=\"592\" Width=\"591\"\n             d:DataContext=\"{d:DesignInstance local:FragmentStashViewModel}\">\n    <Border x:Name=\"LocalBorder\" BorderThickness=\"3\" CornerRadius=\"2\" BorderBrush=\"Aquamarine\">\n        <Border.Background>\n            <ImageBrush ImageSource=\"/Images/fragmentTab.png\" />\n        </Border.Background>\n        <Canvas>\n            <Grid Height=\"80\" Width=\"80\" Canvas.Left=\"82\" Canvas.Top=\"89\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"37*\" />\n                    <ColumnDefinition Width=\"7*\" />\n                    <ColumnDefinition Width=\"37*\" />\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"36*\" />\n                    <RowDefinition Height=\"5*\" />\n                    <RowDefinition Height=\"38*\" />\n                </Grid.RowDefinitions>\n\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Dusk}\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Dawn}\" Grid.Column=\"2\" Grid.Row=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Noon}\" Grid.Row=\"2\" Grid.Column=\"0\" />\n                <local:ItemDisplay Grid.Row=\"0\" Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Midnight}\" Grid.Column=\"2\" />\n            </Grid>\n\n            <Grid Height=\"80\" Width=\"80\" Canvas.Left=\"194\" Canvas.Top=\"89\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"37*\" />\n                    <ColumnDefinition Width=\"7*\" />\n                    <ColumnDefinition Width=\"37*\" />\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"36*\" />\n                    <RowDefinition Height=\"5*\" />\n                    <RowDefinition Height=\"38*\" />\n                </Grid.RowDefinitions>\n\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Volkuur}\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Eber}\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Inya}\" Grid.Row=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Yriel}\" Grid.Column=\"2\" Grid.Row=\"2\" />\n\n\n            </Grid>\n            <Grid Height=\"80\" Width=\"80\" Canvas.Left=\"308\" Canvas.Top=\"89\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"37*\" />\n                    <ColumnDefinition Width=\"7*\" />\n                    <ColumnDefinition Width=\"37*\" />\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"36*\" />\n                    <RowDefinition Height=\"5*\" />\n                    <RowDefinition Height=\"38*\" />\n                </Grid.RowDefinitions>\n\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Hydra}\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Phoenix}\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Chimera}\" Grid.Column=\"0\" Grid.Row=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Minotaur}\" Grid.Row=\"2\" Grid.Column=\"2\" />\n\n            </Grid>\n            <Grid Height=\"80\" Width=\"80\" Canvas.Left=\"422\" Canvas.Top=\"89\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"37*\" />\n                    <ColumnDefinition Width=\"7*\" />\n                    <ColumnDefinition Width=\"37*\" />\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"36*\" />\n                    <RowDefinition Height=\"5*\" />\n                    <RowDefinition Height=\"38*\" />\n                </Grid.RowDefinitions>\n\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Grief}\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Rage}\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Ignorance}\" Grid.Row=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding Hope}\" Grid.Column=\"2\" Grid.Row=\"2\" />\n            </Grid>\n\n            <local:ItemDisplay Canvas.Left=\"91\" Canvas.Top=\"222\"\n                               DataContext=\"{Binding DivineVessel}\" Height=\"56\" Width=\"33\" HeightScale=\"60.8523\" WidthScale=\"38.3388\" />\n\n            <Grid Height=\"80\" Width=\"209\" Canvas.Left=\"189\" Canvas.Top=\"212\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"37*\" />\n                    <ColumnDefinition Width=\"7*\" />\n                    <ColumnDefinition Width=\"35*\" />\n                    <ColumnDefinition Width=\"8*\" />\n                    <ColumnDefinition Width=\"37*\" />\n                    <ColumnDefinition Width=\"7*\" />\n                    <ColumnDefinition Width=\"36*\" />\n                    <ColumnDefinition Width=\"6*\" />\n                    <ColumnDefinition Width=\"36*\" />\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"36*\" />\n                    <RowDefinition Height=\"5*\" />\n                    <RowDefinition Height=\"38*\" />\n                </Grid.RowDefinitions>\n\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding ChayulaBreachstone}\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding TulBreachstone}\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding XophBreachstone}\" Grid.Column=\"4\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding EshBreachstone}\" Grid.Column=\"6\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding UulNetolBreachstone}\" Grid.Column=\"8\" />\n\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding ChayulaSplinter}\" Grid.Row=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\" Grid.Row=\"2\" Grid.Column=\"2\"\n                                   DataContext=\"{Binding TulSplinter}\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\" Grid.Row=\"2\" Grid.Column=\"4\"\n                                   DataContext=\"{Binding XophSplinter}\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\" Grid.Row=\"2\" Grid.Column=\"6\"\n                                   DataContext=\"{Binding EshSplinter}\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\" Grid.Row=\"2\" Grid.Column=\"8\"\n                                   DataContext=\"{Binding UulNetolSplinter}\" />\n\n            </Grid>\n\n            <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\" Canvas.Left=\"456\" Canvas.Top=\"233\"\n                               DataContext=\"{Binding Offering}\" />\n\n            <Grid Height=\"171\" Width=\"122\" Canvas.Left=\"84\" Canvas.Top=\"327\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"36*\" />\n                    <ColumnDefinition Width=\"7*\" />\n                    <ColumnDefinition Width=\"36*\" />\n                    <ColumnDefinition Width=\"6*\" />\n                    <ColumnDefinition Width=\"37*\" />\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"37*\" />\n                    <RowDefinition Height=\"6*\" />\n                    <RowDefinition Height=\"37*\" />\n                    <RowDefinition Height=\"7*\" />\n                    <RowDefinition Height=\"39*\" />\n                    <RowDefinition Height=\"6*\" />\n                    <RowDefinition Height=\"39*\" />\n                </Grid.RowDefinitions>\n\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding RustedBestiaryScarab}\" Grid.Row=\"0\" Grid.Column=\"0\"/>\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding PolishedBestiaryScarab}\" Grid.Row=\"0\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding GildedBestiaryScarab}\" Grid.Row=\"0\" Grid.Column=\"4\" />\n\n                <!-- Unconfirmed scarab type. -->\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding RustedReliquaryScarab}\" Grid.Row=\"2\" Grid.Column=\"0\"/>\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding PolishedReliquaryScarab}\" Grid.Row=\"2\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding GildedReliquaryScarab}\" Grid.Row=\"2\" Grid.Column=\"4\" />\n\n                <!-- Unconfirmed scarab type. -->\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding RustedTormentScarab}\" Grid.Row=\"4\" Grid.Column=\"0\"/>\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding PolishedTormentScarab}\" Grid.Row=\"4\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding GildedTormentScarab}\" Grid.Row=\"4\" Grid.Column=\"4\" />\n\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding RustedSulphiteScarab}\" Grid.Row=\"6\" Grid.Column=\"0\"/>\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding PolishedSulphiteScarab}\" Grid.Row=\"6\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding GildedSulphiteScarab}\" Grid.Row=\"6\" Grid.Column=\"4\" />\n            </Grid>\n            <Grid Height=\"172\" Width=\"122\" Canvas.Left=\"234\" Canvas.Top=\"327\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"36*\" />\n                    <ColumnDefinition Width=\"7*\" />\n                    <ColumnDefinition Width=\"36*\" />\n                    <ColumnDefinition Width=\"6*\" />\n                    <ColumnDefinition Width=\"37*\" />\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"37*\" />\n                    <RowDefinition Height=\"6*\" />\n                    <RowDefinition Height=\"37*\" />\n                    <RowDefinition Height=\"7*\" />\n                    <RowDefinition Height=\"39*\" />\n                    <RowDefinition Height=\"6*\" />\n                    <RowDefinition Height=\"39*\" />\n                </Grid.RowDefinitions>\n\n                <!-- Unconfirmed scarab type. -->\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding RustedAmbushScarab}\" Grid.Row=\"0\" Grid.Column=\"0\"/>\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding PolishedAmbushScarab}\" Grid.Row=\"0\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding GildedAmbushScarab}\" Grid.Row=\"0\" Grid.Column=\"4\" />\n\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding RustedShaperScarab}\" Grid.Row=\"2\" Grid.Column=\"0\"/>\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding PolishedShaperScarab}\" Grid.Row=\"2\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding GildedShaperScarab}\" Grid.Row=\"2\" Grid.Column=\"4\" />\n\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding RustedPerandusScarab}\" Grid.Row=\"4\" Grid.Column=\"0\"/>\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding PolishedPerandusScarab}\" Grid.Row=\"4\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding GildedPerandusScarab}\" Grid.Row=\"4\" Grid.Column=\"4\" />\n\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding RustedCartographyScarab}\" Grid.Row=\"6\" Grid.Column=\"0\"/>\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding PolishedCartographyScarab}\" Grid.Row=\"6\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding GildedCartographyScarab}\" Grid.Row=\"6\" Grid.Column=\"4\" />\n            </Grid>\n            <Grid Height=\"171\" Width=\"122\" Canvas.Left=\"382\" Canvas.Top=\"327\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"36*\" />\n                    <ColumnDefinition Width=\"7*\" />\n                    <ColumnDefinition Width=\"36*\" />\n                    <ColumnDefinition Width=\"6*\" />\n                    <ColumnDefinition Width=\"37*\" />\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"37*\" />\n                    <RowDefinition Height=\"6*\" />\n                    <RowDefinition Height=\"37*\" />\n                    <RowDefinition Height=\"7*\" />\n                    <RowDefinition Height=\"39*\" />\n                    <RowDefinition Height=\"6*\" />\n                    <RowDefinition Height=\"39*\" />\n                </Grid.RowDefinitions>\n\n                <!-- Unconfirmed scarab type. -->\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding RustedHarbingerScarab}\" Grid.Row=\"0\" Grid.Column=\"0\"/>\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding PolishedHarbingerScarab}\" Grid.Row=\"0\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding GildedHarbingerScarab}\" Grid.Row=\"0\" Grid.Column=\"4\" />\n\n                <!-- Unconfirmed scarab type. -->\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding RustedElderScarab}\" Grid.Row=\"2\" Grid.Column=\"0\"/>\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding PolishedElderScarab}\" Grid.Row=\"2\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding GildedElderScarab}\" Grid.Row=\"2\" Grid.Column=\"4\" />\n\n                <!-- Unconfirmed scarab type. -->\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding RustedDivinationScarab}\" Grid.Row=\"4\" Grid.Column=\"0\"/>\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding PolishedDivinationScarab}\" Grid.Row=\"4\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding GildedDivinationScarab}\" Grid.Row=\"4\" Grid.Column=\"4\" />\n\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding RustedBreachScarab}\" Grid.Row=\"6\" Grid.Column=\"0\"/>\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding PolishedBreachScarab}\" Grid.Row=\"6\" Grid.Column=\"2\" />\n                <local:ItemDisplay Style=\"{StaticResource FragmentItemStyle}\"\n                                   DataContext=\"{Binding GildedBreachScarab}\" Grid.Row=\"6\" Grid.Column=\"4\" />\n            </Grid>\n        </Canvas>\n    </Border>\n</local:AbstractStashTabControl>"
  },
  {
    "path": "Procurement/Controls/FragmentStashTab.xaml.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Windows.Controls;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procurement.Controls\n{\n    /// <summary>\n    ///     Interaction logic for FragmentStash.xaml\n    /// </summary>\n    public partial class FragmentStashTab : AbstractStashTabControl\n    {\n        private readonly FragmentStashViewModel viewModel;\n\n        public FragmentStashTab(int tabNumber) : base(tabNumber)\n        {\n            Refresh();\n\n            viewModel = new FragmentStashViewModel(TabItemsToViewModels);\n\n            DataContext = viewModel;\n\n            InitializeComponent();\n\n            SetPremiumTabBorderColour();\n\n            Ready = true;\n        }\n\n        public FragmentStashTab(int tabNumber, List<IFilter> list) : this(tabNumber)\n        {\n            Filters = list;\n        }\n\n        public override Border Border => LocalBorder;\n    }\n}"
  },
  {
    "path": "Procurement/Controls/Inventory.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.Controls.Inventory\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             mc:Ignorable=\"d\" \n             d:DesignHeight=\"519\" d:DesignWidth=\"600\" Height=\"519\" Width=\"600\">\n    <Grid x:Name=\"gridOuter\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"93\" />\n            <RowDefinition Height=\"239\" />\n        </Grid.RowDefinitions>\n        <Grid.Background>\n            <ImageBrush ImageSource=\"/Images/inventory.jpg\" />\n        </Grid.Background>\n        <!--<Border Grid.Row=\"0\" Height=\"93\" ></Border>-->\n        <Grid x:Name=\"grid\" Margin=\"1,0,1,3\" Height=\"236\" Width=\"568\" Grid.Row=\"1\">\n        </Grid>\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "Procurement/Controls/Inventory.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Media;\nusing POEApi.Model;\nusing Procurement.ViewModel;\n\nnamespace Procurement.Controls\n{\n    public partial class Inventory : UserControl\n    {\n        public Inventory()\n        {\n            InitializeComponent();\n            this.Loaded += new RoutedEventHandler(Inventory_Loaded);\n        }\n\n        public string Character\n        {\n            get { return (string)GetValue(CharacterProperty); }\n            set\n            {\n                SetValue(CharacterProperty, value);\n                render();\n            }\n        }\n\n        public static readonly DependencyProperty CharacterProperty =\n            DependencyProperty.Register(\"Character\", typeof(string), typeof(Inventory), new PropertyMetadata(OnCharacterChanged));\n\n        void Inventory_Loaded(object sender, RoutedEventArgs e)\n        {\n            if (initialized)\n                return;\n\n            refresh(ApplicationState.AccountName);\n        }\n\n        private void refresh(string accountName)\n        {\n            this.Invent = ApplicationState.Model.GetInventory(Character, false, accountName, ApplicationState.CurrentRealm).Where(i => i.InventoryId == \"MainInventory\").ToList();\n            inventByLocation = Invent.ToDictionary(item => new Tuple<int, int>(item.X, item.Y));\n            render();\n        }\n\n        public static void OnCharacterChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)\n        {\n            Inventory instance = d as Inventory;\n            if (instance.Invent == null)\n                return;\n\n            instance.initialized = false;\n            instance.refresh(ApplicationState.AccountName);\n        }\n\n        private bool initialized = false;\n\n        private Dictionary<Tuple<int, int>, Item> inventByLocation;\n        public List<Item> Invent { get; set; }\n\n        public string Filter\n        {\n            get { return (string)GetValue(FilterProperty); }\n            set \n            { \n                SetValue(FilterProperty, value);\n                render();\n            }\n        }\n\n        public static readonly DependencyProperty FilterProperty =\n            DependencyProperty.Register(\"Filter\", typeof(string), typeof(Inventory), null);\n\n        private void render()\n        {\n            const int columns = 12, rows = 5;\n\n            grid.ColumnDefinitions.Clear();\n            grid.RowDefinitions.Clear();\n            grid.Children.Clear();\n\n            for (int i = 0; i < columns; i++)\n            {\n                grid.ColumnDefinitions.Add(new ColumnDefinition());\n                for (int j = 0; j < rows; j++)\n                {\n                    if (i == 0)\n                        grid.RowDefinitions.Add(new RowDefinition());\n\n                    Grid childGrid = new Grid();\n                    childGrid.Margin = new Thickness(1);\n                    \n                    Tuple<int, int> currentKey = new Tuple<int, int>(i, j);\n\n                    if (!inventByLocation.ContainsKey(currentKey))\n                        continue;\n\n                    Item gearAtLocation = inventByLocation[currentKey];\n\n                    setBackround(childGrid, gearAtLocation);\n\n                    Border border = getBorder();\n                    childGrid.Children.Add(border);\n\n                    childGrid.Children.Add(getImage(gearAtLocation));\n\n                    Grid.SetColumn(childGrid, i);\n                    Grid.SetRow(childGrid, j);\n                    if (gearAtLocation.H > 1)\n                        Grid.SetRowSpan(childGrid, gearAtLocation.H);\n\n                    if (gearAtLocation.W > 1)\n                        Grid.SetColumnSpan(childGrid, gearAtLocation.W);\n\n                    grid.Children.Add(childGrid);\n                }\n            }\n\n            initialized = true;\n        }\n\n        private UIElement getImage(Item item)\n        {\n            return new ItemDisplay() { DataContext = new ItemDisplayViewModel(item) };\n        }\n\n        private Border getBorder()\n        {\n            Border b = new Border();\n            b.BorderBrush = Brushes.Transparent;\n            b.BorderThickness = new Thickness(1);\n            return b;\n        }\n\n        private void setBackround(Grid childGrid, Item item)\n        {\n            if (item is Gear && (item as Gear).Rarity != Rarity.Normal && (item as Gear).Explicitmods == null)\n                childGrid.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#88001D\"));\n            else\n                childGrid.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#21007F\"));\n\n            childGrid.Background.Opacity = 0.3;\n        }\n\n        private bool search(Item item)\n        {\n            if (string.IsNullOrEmpty(Filter))\n                return false;\n\n            return item.TypeLine.ToLower().Contains(Filter.ToLower()) || item.Name.ToLower().Contains(Filter.ToLower());\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Controls/ItemDisplay.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.Controls.ItemDisplay\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n             xmlns:viewModel=\"clr-namespace:Procurement.ViewModel\"\n             mc:Ignorable=\"d\" \n             d:DesignHeight=\"300\" d:DesignWidth=\"300\" Loaded=\"ItemDisplay_Loaded\" MouseRightButtonUp=\"ItemDisplay_MouseRightButtonUp\"\n             d:DataContext=\"{d:DesignInstance viewModel:ItemDisplayViewModel}\">\n    <UserControl.Resources>\n        <ResourceDictionary x:Key=\"ExpressionDarkGrid\" Source=\"ExpressionDarkGrid.xaml\" />\n    </UserControl.Resources>\n    <Grid>\n        <Border BorderBrush=\"{Binding ItemFilterBrush}\" BorderThickness=\"2\" >\n            <Grid x:Name=\"MainGrid\" Margin=\"-2\">\n\n            </Grid>\n        </Border>\n\n        <TextBlock HorizontalAlignment=\"Left\"\n                   FontFamily=\"../Resources/#Fontin SmallCaps\"\n                   FontWeight=\"Medium\"\n                   Foreground=\"White\"\n                   Text=\"{Binding StackSize}\"\n                   TextAlignment=\"Center\"\n                   TextWrapping=\"Wrap\"\n                   Visibility=\"{Binding IsStackSizeVisible,\n                               Converter={StaticResource bc},\n                               ConverterParameter=CollapseWhenFalse}\" />\n    </Grid>\n    \n    \n</UserControl>\n"
  },
  {
    "path": "Procurement/Controls/ItemDisplay.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Controls.Primitives;\nusing System.Windows.Input;\nusing System.Windows.Media;\nusing POEApi.Infrastructure;\nusing POEApi.Model;\nusing Procurement.Utility;\nusing Procurement.ViewModel;\n\nnamespace Procurement.Controls\n{\n    public partial class ItemDisplay : UserControl\n    {\n        private static readonly List<Popup> annoyed = new List<Popup>();\n        private bool contexted;\n        private Image itemImage;\n\n        private TextBlock textblock;\n        private ItemDisplayViewModel _viewModel;\n\n        public static readonly DependencyProperty HeightScaleProperty = DependencyProperty.Register(\n            \"HeightScale\", typeof(double?), typeof(ItemDisplay), new PropertyMetadata(null));\n\n        public double? HeightScale\n        {\n            get { return (double?) GetValue(HeightScaleProperty); }\n            set { SetValue(HeightScaleProperty, value); }\n        }\n\n        public static readonly DependencyProperty WidthScaleProperty = DependencyProperty.Register(\n            \"WidthScale\", typeof(double?), typeof(ItemDisplay), new PropertyMetadata(null));\n\n        public double? WidthScale\n        {\n            get { return (double?) GetValue(WidthScaleProperty); }\n            set { SetValue(WidthScaleProperty, value); }\n        }\n\n        public ItemDisplay()\n        {\n            InitializeComponent();\n        }\n\n        public ItemDisplayViewModel ViewModel\n        {\n            get { return _viewModel; }\n            set\n            {\n                _viewModel = value;\n\n                if (DataContext == null)\n                {\n                    DataContext = _viewModel;\n                }\n            }\n        }\n\n        public bool IsQuadStash { get; set; }\n\n        private void ItemDisplay_MouseRightButtonUp(object sender, MouseButtonEventArgs e)\n        {\n            if (!contexted)\n            {\n                itemImage.ContextMenu = getContextMenu();\n                contexted = true;\n            }\n\n            //Reset the export to pob button incase user needs to export again\n            (buyoutControl.DataContext as SetBuyoutViewModel).IsDataInClipboard = false;\n        }\n\n        public static void ClosePopups()\n        {\n            closeOthersButNot(new Popup());\n        }\n\n        private void ItemDisplay_Loaded(object sender, RoutedEventArgs e)\n        {\n            var vm = DataContext as ItemDisplayViewModel;\n            if (vm != null)\n            {\n                var i = vm.getImage();\n                itemImage = i;\n\n                if (vm.Item != null && vm.Item.IsGear && itemImage != null)\n                    RenderOptions.SetBitmapScalingMode(itemImage, BitmapScalingMode.NearestNeighbor);\n\n                if (i != null)\n                {\n                    //See: https://github.com/Stickymaddness/Procurement/issues/966\n                    if (HeightScale.HasValue && WidthScale.HasValue)\n                    {\n                        itemImage.Height = HeightScale.Value;\n                        itemImage.Width = WidthScale.Value;\n                    }\n\n                    MainGrid.Children.Add(i);\n\n                    if (vm.HasSocket)\n                    {\n                        BindSocketPopup(vm);\n                    }\n\n                    Height = i.Height;\n                    Width = i.Width;\n                }\n            }\n\n            Loaded -= ItemDisplay_Loaded;\n\n            resyncText();\n        }\n\n        private void resyncText()\n        {\n            var vm = DataContext as ItemDisplayViewModel;\n            if (vm != null)\n            {\n                var item = vm.Item;\n                if (item == null)\n                {\n                    return;\n                }\n\n                var pricingInfo = string.Empty;\n\n                if (!string.IsNullOrWhiteSpace(item.Id) && Settings.Buyouts.ContainsKey(item.Id))\n                {\n                    pricingInfo = Settings.Buyouts[item.Id].Buyout;\n\n                    if (pricingInfo == string.Empty)\n                    {\n                        pricingInfo = Settings.Buyouts[item.Id].Price;\n                    }\n                }\n\n                if (textblock != null)\n                {\n                    MainGrid.Children.Remove(textblock);\n                }\n\n                textblock = new TextBlock();\n                textblock.Text = pricingInfo;\n\n                if (item is Currency)\n                {\n                    textblock.VerticalAlignment = VerticalAlignment.Bottom;\n                }\n\n\n                textblock.IsHitTestVisible = false;\n                textblock.Margin = new Thickness(1, 1, 0, 0);\n                MainGrid.Children.Add(textblock);\n            }\n        }\n\n        private void BindSocketPopup(ItemDisplayViewModel vm)\n        {\n            UIElement socket = null;\n            var isKeyPressed = false;\n\n            Action DisplaySocket = () =>\n            {\n                if (socket == null)\n                {\n                    socket = vm.GetSocket(IsQuadStash);\n                }\n\n                if (!MainGrid.Children.Contains(socket))\n                {\n                    MainGrid.Children.Add(socket);\n                }\n            };\n\n            MainGrid.MouseEnter += (o, ev) => { DisplaySocket(); };\n\n            MainGrid.MouseLeave += (o, ev) =>\n            {\n                if (!isKeyPressed)\n                {\n                    MainGrid.Children.Remove(socket);\n                }\n            };\n\n            var mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();\n            mainWindow.KeyDown += (o, ev) =>\n            {\n                if (ev.SystemKey == Key.LeftAlt ||\n                    ev.SystemKey == Key.RightAlt)\n                {\n                    isKeyPressed = true;\n\n                    DisplaySocket();\n                }\n            };\n\n            mainWindow.KeyUp += (o, ev) =>\n            {\n                if ((Keyboard.GetKeyStates(Key.LeftAlt) == KeyStates.None || Keyboard.GetKeyStates(Key.LeftAlt) == KeyStates.Toggled) &&\n                    (Keyboard.GetKeyStates(Key.RightAlt) == KeyStates.None || Keyboard.GetKeyStates(Key.RightAlt) == KeyStates.Toggled))\n                {\n                    isKeyPressed = false;\n\n                    if (!MainGrid.IsMouseOver)\n                    {\n                        MainGrid.Children.Remove(socket);\n                    }\n                }\n            };\n        }\n\n        private SetBuyoutView buyoutControl;\n\n        private ContextMenu getContextMenu()\n        {\n            var vm = DataContext as ItemDisplayViewModel;\n            var item = vm.Item;\n\n            var menu = new ContextMenu();\n            menu.Background = Brushes.Black;\n\n            menu.Resources = Resources[\"ExpressionDarkGrid\"] as ResourceDictionary;\n\n            var setBuyout = new MenuItem();\n            setBuyout.StaysOpenOnClick = true;\n\n            buyoutControl = new SetBuyoutView(item);\n\n            if (Settings.Buyouts.ContainsKey(item.Id))\n            {\n                buyoutControl.SetBuyoutInfo(Settings.Buyouts[item.Id]);\n            }\n\n            setBuyout.Header = buyoutControl;\n            buyoutControl.Update += buyoutControl_Update;\n            buyoutControl.SaveImageClicked += buyoutControl_SaveImageClicked;\n            menu.Items.Add(setBuyout);\n\n            return menu;\n        }\n\n        private void buyoutControl_Update(ItemTradeInfo info)\n        {\n            updateBuyout(info);\n            Settings.SaveBuyouts();\n\n            resyncText();\n            itemImage.ContextMenu.IsOpen = false;\n        }\n\n        private void updateBuyout(ItemTradeInfo info)\n        {\n            var vm = DataContext as ItemDisplayViewModel;\n            var item = vm.Item;\n\n            if (info.IsEmpty)\n            {\n                Settings.Buyouts.Remove(item.Id);\n                return;\n            }\n\n            Settings.Buyouts[item.Id] = info;\n        }\n\n        private void buyoutControl_SaveImageClicked()\n        {\n            ItemHoverRenderer.SaveToDisk((DataContext as ItemDisplayViewModel).Item, Dispatcher);\n        }\n\n        private void buyoutView_SaveClicked(string amount, string orbType)\n        {\n            var abbreviation = CurrencyAbbreviationMap.Instance.FromCurrency(orbType);\n\n            var vm = DataContext as ItemDisplayViewModel;\n            var item = vm.Item;\n\n            Settings.Buyouts[item.Id].Buyout = string.Format(\"{0} {1}\", amount, abbreviation);\n            Settings.SaveBuyouts();\n\n            resyncText();\n        }\n\n        public static void closeOthersButNot(Popup current)\n        {\n            var others = annoyed.Where(p => p.IsOpen && !ReferenceEquals(current, p)).ToList();\n            Task.Factory.StartNew(() => others.ToList().ForEach(p => p.Dispatcher.Invoke(() => { p.IsOpen = false; })));\n        }\n    }\n}"
  },
  {
    "path": "Procurement/Controls/ItemHover.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.Controls.ItemHover\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n             xmlns:local=\"clr-namespace:Procurement.Controls\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n             xmlns:v=\"clr-namespace:Procurement.View\"\n             xmlns:vm=\"clr-namespace:Procurement.ViewModel\"\n             mc:Ignorable=\"d\">\n\n    <UserControl.Resources>\n        <SolidColorBrush x:Key=\"CraftedModBrush\">#B4B4FF</SolidColorBrush>\n\n        <v:VisibilityConverter x:Key=\"VisibilityConverter\" />\n        <v:ItemPropertyToFormattedRunConverter x:Key=\"pc\" />\n        <v:ItemRequirementToFormattedRunConverter x:Key=\"rc\" />\n        <v:ItemExplicitModsToFormattedRunConverter x:Key=\"ec\" />\n        <v:VisibilityConverter x:Key=\"bc\" />\n\n        <LinearGradientBrush x:Key=\"SeperatorBrush\" StartPoint=\"0,0\" EndPoint=\"1,0\">\n            <GradientStop Offset=\"0.25\" Color=\"#00808080\" />\n            <GradientStop Offset=\"0.50\" Color=\"#FF808080\" />\n            <GradientStop Offset=\"0.75\" Color=\"#00808080\" />\n        </LinearGradientBrush>\n\n        <LinearGradientBrush x:Key=\"ProphecySeperatorBrush\" StartPoint=\"0,0\" EndPoint=\"1,0\">\n            <GradientStop Offset=\"0.25\" Color=\"#00808080\" />\n            <GradientStop Offset=\"0.50\" Color=\"#881672\" />\n            <GradientStop Offset=\"0.75\" Color=\"#00808080\" />\n        </LinearGradientBrush>\n\n\n        <Style TargetType=\"{x:Type Paragraph}\">\n            <Setter Property=\"Margin\" Value=\"0\" />\n            <Setter Property=\"TextAlignment\" Value=\"Center\" />\n        </Style>\n\n        <Style TargetType=\"{x:Type TextBlock}\">\n            <Setter Property=\"Margin\" Value=\"0\" />\n            <Setter Property=\"TextAlignment\" Value=\"Center\" />\n        </Style>\n\n        <Style TargetType=\"{x:Type v:BindableRichTextBox}\">\n            <Setter Property=\"Background\" Value=\"Transparent\" />\n            <Setter Property=\"BorderBrush\" Value=\"Transparent\" />\n            <Setter Property=\"FontFamily\" Value=\"../Resources/#Fontin SmallCaps\" />\n        </Style>\n\n        <Style x:Key=\"ExperienceBarStyle\" TargetType=\"ProgressBar\">\n            <Setter Property=\"Minimum\" Value=\"0\" />\n            <Setter Property=\"Maximum\" Value=\"1\" />\n            <Setter Property=\"Margin\" Value=\"2\" />\n            <Setter Property=\"BorderBrush\" Value=\"LightGray\" />\n            <Setter Property=\"Foreground\" Value=\"DarkGoldenrod\" />\n            <Setter Property=\"Height\" Value=\"6\" />\n        </Style>\n\n    </UserControl.Resources>\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"Auto\" />\n        </Grid.ColumnDefinitions>\n        <DockPanel x:Name=\"grid\"\n                   Grid.Row=\"0\"\n                   Grid.Column=\"0\"\n                   Height=\"Auto\"\n                   LastChildFill=\"True\">\n            <local:ItemHoverHeader x:Name=\"ItemHeader\"\n                                   Content=\"{Binding}\"\n                                   DockPanel.Dock=\"Top\" />\n            <Border DockPanel.Dock=\"Bottom\">\n                <Border.Background>\n                    <SolidColorBrush Opacity=\"0.85\" Color=\"Black\" />\n                </Border.Background>\n                <StackPanel>\n\n                    <!--\n                      KNOWN ISSUES:\n                        - Different dividers between different parts of text are not styled differently.  Instead, the\n                          type of item determines what color the dividers will be.  Examples include: gems,\n                          phrophecies, and normal/magic/rare/unique items.\n                        - Items without DescriptionText will have an extra divider at the bottom of the ItemHover\n                          window.  I'm not sure of a good way to exclude it without complicated converters and/or lots\n                          of cascading if/else blocks.  But it looks like dividers are placed correctly between\n                          sections in all cases and all sections are being displayed.\n                        - Some sections, under some conditions, have extra space before or between lines.\n                    -->\n\n                    <TextBlock Width=\"{Binding Path=ActualWidth,\n                                               ElementName=ItemHeader,\n                                               Mode=OneWay}\"\n                        HorizontalAlignment=\"Center\"\n                        FontFamily=\"../Resources/#Fontin SmallCaps\"\n                        Foreground=\"White\"\n                        Padding=\"10 0 10 5\"\n                        Text=\"{Binding ItemLevel}\"\n                        TextAlignment=\"Center\"\n                        TextWrapping=\"Wrap\"\n                        Visibility=\"{Binding ItemLevel,\n                               Converter={StaticResource bc},\n                               ConverterParameter=CollapseWhenFalse}\" />\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Opacity=\"0.7\"\n                            Visibility=\"{Binding ItemLevel,\n                                                 Converter={StaticResource bc},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <ItemsControl ItemsSource=\"{Binding Properties}\" Padding=\"0 5 0 5\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Vertical\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <StackPanel>\n                                    <v:BindableRichTextBox\n                                        Width=\"{Binding Path=ActualWidth,\n                                                ElementName=ItemHeader,\n                                                Mode=OneWay}\"\n                                        Document=\"{Binding Converter={StaticResource pc}}\" />\n                                </StackPanel>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Opacity=\"0.7\"\n                            Visibility=\"{Binding Properties,\n                                                 Converter={StaticResource bc},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <v:BindableRichTextBox Width=\"{Binding Path=ActualWidth,\n                                                           ElementName=ItemHeader,\n                                                           Mode=OneWay}\"\n                        Document=\"{Binding Converter={StaticResource rc}}\"\n                        Padding=\"10 0 10 5\"\n                        Visibility=\"{Binding HasRequirements,\n                                                                Converter={StaticResource bc},\n                                                                ConverterParameter=CollapseWhenFalse}\" />\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Visibility=\"{Binding HasRequirements,\n                                                 Converter={StaticResource VisibilityConverter},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <TextBlock Width=\"{Binding Path=ActualWidth,\n                                               ElementName=ItemHeader,\n                                               Mode=OneWay}\"\n                        HorizontalAlignment=\"Center\"\n                        FontFamily=\"../Resources/#Fontin SmallCaps\"\n                        Foreground=\"Turquoise\"\n                        Padding=\"10 0 10 5\"\n                        Text=\"{Binding SecondaryDescriptionText}\"\n                        TextAlignment=\"Center\"\n                        TextWrapping=\"Wrap\"\n                        Visibility=\"{Binding SecondaryDescriptionText,\n                                                    Converter={StaticResource VisibilityConverter},\n                                                    ConverterParameter=CollapseWhenFalse}\" />\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Opacity=\"0.7\"\n                            Visibility=\"{Binding SecondaryDescriptionText,\n                                                 Converter={StaticResource bc},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <ItemsControl ItemsSource=\"{Binding EnchantMods}\"\n                                  Padding=\"10 0 10 5\"\n                                  Visibility=\"{Binding HasEnchantMods,\n                                                       Converter={StaticResource bc},\n                                                       ConverterParameter=CollapseWhenFalse}\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Vertical\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <StackPanel>\n                                    <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\"\n                                               Foreground=\"{StaticResource CraftedModBrush}\"\n                                               Text=\"{Binding}\"\n                                               TextAlignment=\"Center\"\n                                               TextWrapping=\"Wrap\" />\n                                </StackPanel>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Opacity=\"0.7\"\n                            Visibility=\"{Binding HasEnchantMods,\n                                                 Converter={StaticResource bc},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <ItemsControl ItemsSource=\"{Binding ImplicitMods}\"\n                                  Padding=\"10 0 10 5\"\n                                  Visibility=\"{Binding HasImplicitMods,\n                                                       Converter={StaticResource bc}}\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Vertical\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <StackPanel>\n                                    <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\"\n                                               Foreground=\"#FF8888FF\"\n                                               Text=\"{Binding}\"\n                                               TextAlignment=\"Center\"\n                                               TextWrapping=\"Wrap\" />\n                                </StackPanel>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Opacity=\"0.7\"\n                            Visibility=\"{Binding HasImplicitMods,\n                                                 Converter={StaticResource bc},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <ItemsControl ItemsSource=\"{Binding FracturedMods}\"\n                                  Padding=\"10 0 10 5\"\n                                  Visibility=\"{Binding HasFracturedMods,\n                                                       Converter={StaticResource bc},\n                                                       ConverterParameter=CollapseWhenFalse}\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Vertical\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <StackPanel>\n                                    <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\"\n                                               Foreground=\"#a29162\"\n                                               Text=\"{Binding}\"\n                                               TextAlignment=\"Center\"\n                                               TextWrapping=\"Wrap\" />\n                                </StackPanel>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n\n                    <ItemsControl ItemsSource=\"{Binding ExplicitMods}\"\n                                  Padding=\"10 0 10 5\"\n                                  Visibility=\"{Binding HasExplicitMods,\n                                                       Converter={StaticResource bc},\n                                                       ConverterParameter=CollapseWhenFalse}\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Vertical\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <StackPanel>\n                                    <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\"\n                                               Foreground=\"#FF8888FF\"\n                                               Text=\"{Binding}\"\n                                               TextAlignment=\"Center\"\n                                               TextWrapping=\"Wrap\" />\n                                </StackPanel>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n\n                    <ItemsControl ItemsSource=\"{Binding CraftedMods}\"\n                                  Padding=\"10 0 10 5\"\n                                  Visibility=\"{Binding HasCraftedMods,\n                                                       Converter={StaticResource bc},\n                                                       ConverterParameter=CollapseWhenFalse}\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Vertical\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <StackPanel>\n                                    <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\"\n                                               Foreground=\"{StaticResource CraftedModBrush}\"\n                                               Text=\"{Binding}\"\n                                               TextAlignment=\"Center\"\n                                               TextWrapping=\"Wrap\" />\n                                </StackPanel>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n\n                    <ItemsControl ItemsSource=\"{Binding VeiledMods}\"\n                                  Padding=\"10 0 10 5\"\n                                  Visibility=\"{Binding HasVeiledMods,\n                                                       Converter={StaticResource bc},\n                                                       ConverterParameter=CollapseWhenFalse}\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Vertical\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <StackPanel>\n                                    <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\"\n                                               Foreground=\"{StaticResource CraftedModBrush}\"\n                                               Text=\"{Binding}\"\n                                               TextAlignment=\"Center\"\n                                               TextWrapping=\"Wrap\" />\n                                </StackPanel>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n\n                    <!-- The pseudo-explicit property \"Mirrored\" should appear after any real explicit mods and any\n                         crafted mods.  It is mutually exclusive with being corrupted. -->\n                    <!-- TODO: Padding bug: there is extra padding between explicit mods, crafted mods, and the\n                               mirrored property is any two exist, due to the extra 5 padding below each. -->\n                    <TextBlock Width=\"{Binding Path=ActualWidth,\n                                               ElementName=ItemHeader,\n                                               Mode=OneWay}\"\n                        HorizontalAlignment=\"Center\"\n                        FontFamily=\"../Resources/#Fontin SmallCaps\"\n                        Foreground=\"#FF8888FF\"\n                        Padding=\"10 0 10 5\"\n                        Text=\"Mirrored\"\n                        TextAlignment=\"Center\"\n                        TextWrapping=\"Wrap\"\n                        Visibility=\"{Binding IsMirrored,\n                                                    Converter={StaticResource VisibilityConverter},\n                                                    ConverterParameter=CollapseWhenFalse}\" />\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Opacity=\"0.7\"\n                            Visibility=\"{Binding HasExplicitMods,\n                                                 Converter={StaticResource bc},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <ItemsControl ItemsSource=\"{Binding Microtransactions}\"\n                                  Padding=\"10 0 10 5\"\n                                  Visibility=\"{Binding HasMicrotransactions,\n                                                       Converter={StaticResource bc},\n                                                       ConverterParameter=CollapseWhenFalse}\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Vertical\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <StackPanel>\n                                    <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\"\n                                               Foreground=\"#FFAA9E82\"\n                                               Text=\"{Binding}\"\n                                               TextAlignment=\"Center\"\n                                               TextWrapping=\"Wrap\" />\n                                </StackPanel>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Opacity=\"0.7\"\n                            Visibility=\"{Binding HasMicrotransactions,\n                                                 Converter={StaticResource bc},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <TextBlock Width=\"{Binding Path=ActualWidth,\n                                               ElementName=ItemHeader,\n                                               Mode=OneWay}\"\n                        HorizontalAlignment=\"Center\"\n                        FontFamily=\"../Resources/#Fontin SmallCaps\"\n                        FontStyle=\"Italic\"\n                        Foreground=\"#9E6025\"\n                        Padding=\"10 0 10 5\"\n                        Text=\"{Binding FlavourText}\"\n                        TextAlignment=\"Center\"\n                        TextWrapping=\"Wrap\"\n                        Visibility=\"{Binding FlavourText,\n                               Converter={StaticResource bc},\n                               ConverterParameter=CollapseWhenFalse}\" />\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Visibility=\"{Binding FlavourText,\n                                                 Converter={StaticResource VisibilityConverter},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <TextBlock Width=\"{Binding Path=ActualWidth,\n                                               ElementName=ItemHeader,\n                                               Mode=OneWay}\"\n                        HorizontalAlignment=\"Center\"\n                        FontFamily=\"../Resources/#Fontin SmallCaps\"\n                        Foreground=\"White\"\n                        Padding=\"10 0 10 5\"\n                        Text=\"{Binding ProphecyText}\"\n                        TextAlignment=\"Center\"\n                        TextWrapping=\"Wrap\"\n                        Visibility=\"{Binding ProphecyText,\n                                                    Converter={StaticResource bc},\n                                                    ConverterParameter=CollapseWhenFalse}\" />\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource ProphecySeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Opacity=\"0.7\"\n                            Visibility=\"{Binding ProphecyText,\n                                                 Converter={StaticResource bc},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <TextBlock Width=\"{Binding Path=ActualWidth,\n                                               ElementName=ItemHeader,\n                                               Mode=OneWay}\"\n                        HorizontalAlignment=\"Center\"\n                        FontFamily=\"../Resources/#Fontin SmallCaps\"\n                        Foreground=\"#FF808080\"\n                        Padding=\"10 0 10 5\"\n                        Text=\"{Binding ProphecyDifficultyText}\"\n                        TextAlignment=\"Center\"\n                        TextWrapping=\"Wrap\"\n                        Visibility=\"{Binding ProphecyDifficultyText,\n                                                    Converter={StaticResource bc},\n                                                    ConverterParameter=CollapseWhenFalse}\" />\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource ProphecySeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Opacity=\"0.7\"\n                            Visibility=\"{Binding ProphecyDifficultyText,\n                                                 Converter={StaticResource bc},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <TextBlock Width=\"{Binding Path=ActualWidth,\n                                               ElementName=ItemHeader,\n                                               Mode=OneWay}\"\n                        HorizontalAlignment=\"Center\"\n                        FontFamily=\"../Resources/#Fontin SmallCaps\"\n                        Foreground=\"#960003\"\n                        Padding=\"10 0 10 5\"\n                        Text=\"Corrupted\"\n                        TextAlignment=\"Center\"\n                        TextWrapping=\"Wrap\"\n                        Visibility=\"{Binding IsCorrupted,\n                                                    Converter={StaticResource bc},\n                                                    ConverterParameter=CollapseWhenFalse}\" />\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Visibility=\"{Binding IsCorrupted,\n                                                 Converter={StaticResource VisibilityConverter},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <StackPanel Orientation=\"Vertical\"\n                                Visibility=\"{Binding IsGemProgressVisible,\n                                                 Converter={StaticResource VisibilityConverter},\n                                                 ConverterParameter=CollapseWhenFalse}\">\n                        <DockPanel Margin=\"10 0 10 5\">\n                            <Label DockPanel.Dock=\"Right\" FontFamily=\"../Resources/#Fontin SmallCaps\"\n                                   Content=\"{Binding ExperienceDenominator, FallbackValue=2}\" Foreground=\"White\" />\n                            <Label DockPanel.Dock=\"Right\" FontFamily=\"../Resources/#Fontin SmallCaps\" Content=\"/\"\n                                   Foreground=\"White\" />\n                            <Label DockPanel.Dock=\"Right\" FontFamily=\"../Resources/#Fontin SmallCaps\"\n                                   Content=\"{Binding ExperienceNumerator, FallbackValue=1}\" Foreground=\"White\" />\n                            <ProgressBar Style=\"{StaticResource ExperienceBarStyle}\"\n                                         Value=\"{Binding LevelExperienceProgress, FallbackValue=0.5}\"  />\n                        </DockPanel>\n\n                        <Border Margin=\"0 0 0 5\"\n                                BorderBrush=\"{StaticResource SeperatorBrush}\"\n                                BorderThickness=\"1\" />\n                    </StackPanel>\n\n                    <StackPanel Orientation=\"Vertical\" HorizontalAlignment=\"Center\"\n                                Visibility=\"{Binding IsIncubatorProgressVisible,\n                                                 Converter={StaticResource VisibilityConverter},\n                                                 ConverterParameter=CollapseWhenFalse}\">\n                        <Label HorizontalAlignment=\"Center\" FontFamily=\"../Resources/#Fontin SmallCaps\" Content=\"{Binding Incubating, StringFormat=Incubating {}, FallbackValue='Incubating Some Item'}\"\n                               Foreground=\"{StaticResource CraftedModBrush}\" />\n\n                        <ProgressBar Style=\"{StaticResource ExperienceBarStyle}\" Margin=\"10,0\"\n                                     Value=\"{Binding IncubatorProgress, FallbackValue=0.5, Mode=OneTime}\"  />\n                        <DockPanel Margin=\"10 0 10 5\" LastChildFill=\"True\">\n\n                            <Label DockPanel.Dock=\"Left\" FontFamily=\"../Resources/#Fontin SmallCaps\"\n                                   Content=\"{Binding IncubatorNumerator, FallbackValue=1}\" Foreground=\"White\" />\n                            <Label DockPanel.Dock=\"Left\" FontFamily=\"../Resources/#Fontin SmallCaps\" Content=\"/\"\n                                   Foreground=\"White\" />\n                            <Label DockPanel.Dock=\"Left\" FontFamily=\"../Resources/#Fontin SmallCaps\"\n                                   Content=\"{Binding IncubatorDenominator, FallbackValue=2}\" Foreground=\"White\" />\n                            \n                            <Label DockPanel.Dock=\"Right\" FontFamily=\"../Resources/#Fontin SmallCaps\" FontSize=\"9\" HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\"\n                                   Content=\"{Binding IncubationLevel}\" Foreground=\"Gray\" />\n                            \n                        </DockPanel>\n\n                        <Border Margin=\"0 0 0 5\"\n                                BorderBrush=\"{StaticResource SeperatorBrush}\"\n                                BorderThickness=\"1\" />\n                    </StackPanel>\n\n                    <TextBlock Width=\"{Binding Path=ActualWidth,\n                                               ElementName=ItemHeader,\n                                               Mode=OneWay}\"\n                        HorizontalAlignment=\"Center\"\n                        FontFamily=\"../Resources/#Fontin SmallCaps\"\n                        Foreground=\"Gray\"\n                        Padding=\"10 0 10 5\"\n                        Text=\"{Binding DescriptionText}\"\n                        TextAlignment=\"Center\"\n                        TextWrapping=\"Wrap\"\n                        Visibility=\"{Binding DescriptionText,\n                                                    Converter={StaticResource VisibilityConverter},\n                                                    ConverterParameter=CollapseWhenFalse}\" />\n                </StackPanel>\n            </Border>\n        </DockPanel>\n    </Grid>\n</UserControl>"
  },
  {
    "path": "Procurement/Controls/ItemHover.xaml.cs",
    "content": "﻿using System.Windows.Controls;\n\nnamespace Procurement.Controls\n{\n    public partial class ItemHover : UserControl\n    {\n        public ItemHover()\n        {\n            InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Controls/ItemHoverHeader.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.Controls.ItemHoverHeader\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             mc:Ignorable=\"d\" \n             xmlns:v=\"clr-namespace:Procurement.View\"\n             xmlns:local=\"clr-namespace:Procurement.Controls\"\n             xmlns:vm=\"clr-namespace:Procurement.ViewModel\"\n             d:DesignHeight=\"300\" d:DesignWidth=\"300\"\n             HorizontalContentAlignment=\"Stretch\"\n             VerticalContentAlignment=\"Stretch\">\n    <UserControl.Resources>\n\n        <Style TargetType=\"local:ItemHoverHeader\">\n            <Style.Resources>\n                <v:ItemToColorBrushConverter x:Key=\"vc\" />\n                <v:ItemPropertyToFormattedRunConverter x:Key=\"pc\" />\n                <v:ItemRequirementToFormattedRunConverter x:Key=\"rc\" />\n                <v:ItemExplicitModsToFormattedRunConverter x:Key=\"ec\" />\n\n                <DataTemplate DataType=\"{x:Type vm:UniqueGearItemHoverViewModel}\">\n                    <Border Background=\"{Binding Item, Converter={StaticResource vc}, ConverterParameter=0.3}\" HorizontalAlignment=\"Stretch\" >\n                        <Grid  MinWidth=\"200\" >\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"Auto\" />\n                                <RowDefinition Height=\"Auto\" />\n                            </Grid.RowDefinitions>\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"Auto\" />\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"Auto\" />\n                            </Grid.ColumnDefinitions>\n                            <Image HorizontalAlignment=\"Left\" Source=\"/Images/ItemHover/ItemHeaderUniqueLeft.png\" Grid.Column=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Source=\"/Images/ItemHover/ItemHeaderUniqueMiddle.png\" Grid.Column=\"1\" Grid.Row=\"0\" Grid.RowSpan=\"2\" Stretch=\"Fill\" Canvas.ZIndex=\"0\" />\n                            <Image HorizontalAlignment=\"Right\" Source=\"/Images/ItemHover/ItemHeaderUniqueRight.png\" Grid.Column=\"2\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <TextBlock Margin=\"0,5,0,0\"  Grid.Column=\"1\" Grid.Row=\"0\" FontFamily=\"../Resources/#Fontin SmallCaps\" Text=\"{Binding Name}\" FontSize=\"18\" Foreground=\"Orange\" Visibility=\"{Binding HasName, Converter={StaticResource bc}, ConverterParameter=CollapseWhenFalse}\" HorizontalAlignment=\"Center\"/>\n                            <TextBlock                   Grid.Column=\"1\" Grid.Row=\"1\" FontFamily=\"../Resources/#Fontin SmallCaps\" Text=\"{Binding TypeLine}\" FontSize=\"18\" Foreground=\"Orange\" HorizontalAlignment=\"Center\"/>\n                        </Grid>\n                    </Border>\n                </DataTemplate>\n                <DataTemplate DataType=\"{x:Type vm:RareGearItemHoverViewModel}\">\n                    <Border Background=\"{Binding Item, Converter={StaticResource vc}, ConverterParameter=0.3}\" HorizontalAlignment=\"Stretch\" >\n                        <Grid  MinWidth=\"200\" >\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"Auto\" />\n                                <RowDefinition Height=\"Auto\" />\n                            </Grid.RowDefinitions>\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"Auto\" />\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"Auto\" />\n                            </Grid.ColumnDefinitions>\n                            <Image HorizontalAlignment=\"Left\" Source=\"/Images/ItemHover/ItemHeaderRareLeft.png\" Grid.Column=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Style=\"{StaticResource ShaperElderAdornerImage}\" Grid.Column=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Source=\"/Images/ItemHover/ItemHeaderRareMiddle.png\" Grid.Column=\"1\" Grid.Row=\"0\" Grid.RowSpan=\"2\" Stretch=\"Fill\" Canvas.ZIndex=\"0\" />\n                            <Image HorizontalAlignment=\"Right\" Source=\"/Images/ItemHover/ItemHeaderRareRight.png\" Grid.Column=\"2\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Style=\"{StaticResource ShaperElderAdornerImage}\" HorizontalAlignment=\"Right\" Grid.Column=\"2\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <TextBlock  Margin=\"0,5,0,0\" FontFamily=\"../Resources/#Fontin SmallCaps\" Grid.Column=\"1\" Grid.Row=\"0\" Text=\"{Binding Name}\" FontSize=\"18\" Foreground=\"#F1FF77\"   Visibility=\"{Binding HasName, Converter={StaticResource bc}, ConverterParameter=CollapseWhenFalse}\" HorizontalAlignment=\"Center\"/>\n                            <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\" Grid.Column=\"1\" Grid.Row=\"1\" Text=\"{Binding TypeLine}\" FontSize=\"18\" Foreground=\"#F1FF77\"   HorizontalAlignment=\"Center\"/>\n                        </Grid>\n                    </Border>\n                </DataTemplate>\n                <DataTemplate DataType=\"{x:Type vm:MagicGearItemHoverViewModel}\">\n                    <Border Background=\"{Binding Item, Converter={StaticResource vc}, ConverterParameter=0.3}\" HorizontalAlignment=\"Stretch\" >\n                        <Grid  MinWidth=\"200\" >\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"Auto\" />\n                                <RowDefinition Height=\"Auto\" />\n                            </Grid.RowDefinitions>\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"Auto\" />\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"Auto\" />\n                            </Grid.ColumnDefinitions>\n                            <Image HorizontalAlignment=\"Left\" Source=\"/Images/ItemHover/ItemHeaderMagicLeft.png\" Grid.Column=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Style=\"{StaticResource ShaperElderAdornerImage}\" Grid.Column=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Source=\"/Images/ItemHover/ItemHeaderMagicMiddle.png\" Grid.Column=\"1\" Grid.Row=\"0\" Grid.RowSpan=\"2\" Stretch=\"Fill\" Canvas.ZIndex=\"0\" />\n                            <Image HorizontalAlignment=\"Right\" Source=\"/Images/ItemHover/ItemHeaderMagicRight.png\" Grid.Column=\"2\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Style=\"{StaticResource ShaperElderAdornerImage}\" HorizontalAlignment=\"Right\" Grid.Column=\"2\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <TextBlock Margin=\"0,5,0,0\" FontFamily=\"../Resources/#Fontin SmallCaps\" Grid.Column=\"1\" Grid.Row=\"0\" Text=\"{Binding Name}\" FontSize=\"18\" Foreground=\"#8888F1\"   Visibility=\"{Binding HasName, Converter={StaticResource bc}, ConverterParameter=CollapseWhenFalse}\" HorizontalAlignment=\"Center\"/>\n                            <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\" Grid.Column=\"1\" Grid.Row=\"1\" Text=\"{Binding TypeLine}\" FontSize=\"18\" Foreground=\"#8888F1\"   HorizontalAlignment=\"Center\"/>\n                        </Grid>\n                    </Border>\n                </DataTemplate>\n                <DataTemplate DataType=\"{x:Type vm:NormalGearItemHoverViewModel}\">\n                    <Border Background=\"{Binding Item, Converter={StaticResource vc}, ConverterParameter=0.3}\" HorizontalAlignment=\"Stretch\" >\n                        <Grid  MinWidth=\"200\" >\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"Auto\" />\n                                <RowDefinition Height=\"Auto\" />\n                            </Grid.RowDefinitions>\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"Auto\" />\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"Auto\" />\n                            </Grid.ColumnDefinitions>\n                            <Image HorizontalAlignment=\"Left\" Source=\"/Images/ItemHover/ItemHeaderWhiteLeft.png\" Grid.Column=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Style=\"{StaticResource ShaperElderAdornerImage}\" Grid.Column=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Source=\"/Images/ItemHover/ItemHeaderWhiteMiddle.png\" Grid.Column=\"1\" Grid.Row=\"0\" Grid.RowSpan=\"2\" Stretch=\"Fill\" Canvas.ZIndex=\"0\" />\n                            <Image HorizontalAlignment=\"Right\" Source=\"/Images/ItemHover/ItemHeaderWhiteRight.png\" Grid.Column=\"2\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Style=\"{StaticResource ShaperElderAdornerImage}\" HorizontalAlignment=\"Right\" Grid.Column=\"2\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <TextBlock Margin=\"0,5,0,0\"  FontFamily=\"../Resources/#Fontin SmallCaps\" Grid.Column=\"1\" Grid.Row=\"0\" Text=\"{Binding Name}\" FontSize=\"18\" Foreground=\"White\"   Visibility=\"{Binding HasName, Converter={StaticResource bc}, ConverterParameter=CollapseWhenFalse}\" HorizontalAlignment=\"Center\"/>\n                            <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\" Grid.Column=\"1\" Grid.Row=\"1\" Text=\"{Binding TypeLine}\" FontSize=\"18\" Foreground=\"White\"   HorizontalAlignment=\"Center\"/>\n                        </Grid>\n                    </Border>\n                </DataTemplate>\n                <DataTemplate DataType=\"{x:Type vm:CurrencyItemHoverViewModel}\">\n                    <Border Background=\"{Binding Item, Converter={StaticResource vc}, ConverterParameter=0.3}\" HorizontalAlignment=\"Stretch\" >\n                        <Grid  MinWidth=\"300\" >\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"Auto\" />\n                                <RowDefinition Height=\"Auto\" />\n                            </Grid.RowDefinitions>\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"Auto\" />\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"Auto\" />\n                            </Grid.ColumnDefinitions>\n                            <Image HorizontalAlignment=\"Left\" Source=\"/Images/ItemHover/ItemHeaderCurrencyLeft.png\" Grid.Column=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Source=\"/Images/ItemHover/ItemHeaderCurrencyMiddle.png\" Grid.Column=\"1\" Grid.Row=\"0\" Grid.RowSpan=\"2\" Stretch=\"Fill\" Canvas.ZIndex=\"0\" />\n                            <Image HorizontalAlignment=\"Right\" Source=\"/Images/ItemHover/ItemHeaderCurrencyRight.png\" Grid.Column=\"2\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <TextBlock Margin=\"0,5,0,0\"  FontFamily=\"../Resources/#Fontin SmallCaps\" Grid.Column=\"1\" Grid.Row=\"0\" Text=\"{Binding Name}\" FontSize=\"18\" Foreground=\"#AA9E82\" Visibility=\"{Binding HasName, Converter={StaticResource bc}, ConverterParameter=CollapseWhenFalse}\" HorizontalAlignment=\"Center\"/>\n                            <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\" Grid.Column=\"1\" Grid.Row=\"1\" Text=\"{Binding TypeLine}\" FontSize=\"18\" Foreground=\"White\"   HorizontalAlignment=\"Center\"/>\n                        </Grid>\n                    </Border>\n                </DataTemplate>\n                <DataTemplate DataType=\"{x:Type vm:GemItemHoverViewModel}\">\n                    <Border Background=\"{Binding Item, Converter={StaticResource vc}, ConverterParameter=0.3}\" HorizontalAlignment=\"Stretch\" >\n                        <Grid  MinWidth=\"300\" >\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"Auto\" />\n                                <RowDefinition Height=\"Auto\" />\n                            </Grid.RowDefinitions>\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"Auto\" />\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"Auto\" />\n                            </Grid.ColumnDefinitions>\n                            <Image HorizontalAlignment=\"Left\" Source=\"/Images/ItemHover/ItemHeaderGemLeft.png\" Grid.Column=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Source=\"/Images/ItemHover/ItemHeaderGemMiddle.png\" Grid.Column=\"1\" Grid.Row=\"0\" Grid.RowSpan=\"2\" Stretch=\"Fill\" Canvas.ZIndex=\"0\" />\n                            <Image HorizontalAlignment=\"Right\" Source=\"/Images/ItemHover/ItemHeaderGemRight.png\" Grid.Column=\"2\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <TextBlock Margin=\"0,5,0,0\"  FontFamily=\"../Resources/#Fontin SmallCaps\" Grid.Column=\"1\" Grid.Row=\"0\" Text=\"{Binding Name}\" FontSize=\"18\" Foreground=\"#19A29B\" Visibility=\"{Binding HasName, Converter={StaticResource bc}, ConverterParameter=CollapseWhenFalse}\" HorizontalAlignment=\"Center\"/>\n                            <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\" Grid.Column=\"1\" Grid.Row=\"1\" Text=\"{Binding TypeLine}\" FontSize=\"18\" Foreground=\"White\"   HorizontalAlignment=\"Center\"/>\n                        </Grid>\n                    </Border>\n                </DataTemplate>\n                <DataTemplate DataType=\"{x:Type vm:ItemHoverViewModel}\">\n                    <Border Background=\"{Binding Item, Converter={StaticResource vc}, ConverterParameter=0.3}\" >\n                        <Grid Margin=\"30,0,30,0\" MinWidth=\"200\">\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"Auto\" />\n                                <RowDefinition Height=\"Auto\" />\n                            </Grid.RowDefinitions>\n                            <TextBlock  Margin=\"0,5,0,0\" FontFamily=\"../Resources/#Fontin SmallCaps\" Grid.Row=\"0\" Text=\"{Binding Name}\" FontSize=\"20\" Foreground=\"{Binding Item, Converter={StaticResource vc}}\"   Visibility=\"{Binding HasName, Converter={StaticResource bc}, ConverterParameter=CollapseWhenFalse}\" HorizontalAlignment=\"Center\"/>\n                            <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\" Grid.Row=\"1\" Text=\"{Binding TypeLine}\" FontSize=\"20\" Foreground=\"White\"   HorizontalAlignment=\"Center\"/>\n                        </Grid>\n                    </Border>\n                </DataTemplate>\n                <DataTemplate DataType=\"{x:Type vm:ProphecyItemHoverViewModel}\">\n                    <Border Background=\"{Binding Item, Converter={StaticResource vc}, ConverterParameter=0.3}\" HorizontalAlignment=\"Stretch\" >\n                        <Grid  MinWidth=\"200\" >\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"Auto\" />\n                                <RowDefinition Height=\"Auto\" />\n                            </Grid.RowDefinitions>\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"Auto\" />\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"Auto\" />\n                            </Grid.ColumnDefinitions>\n                            <Image HorizontalAlignment=\"Left\" Source=\"/Images/ItemHover/ItemsHeaderProphecyLeft.png\" Grid.Column=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Source=\"/Images/ItemHover/ItemsHeaderProphecyMiddle.png\" Grid.Column=\"1\" Grid.Row=\"0\" Grid.RowSpan=\"2\" Stretch=\"Fill\" Canvas.ZIndex=\"0\" />\n                            <Image HorizontalAlignment=\"Right\" Source=\"/Images/ItemHover/ItemsHeaderProphecyRight.png\" Grid.Column=\"2\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <TextBlock Margin=\"0,5,0,0\"  Grid.Column=\"1\" Grid.Row=\"0\" FontFamily=\"../Resources/#Fontin SmallCaps\" Text=\"{Binding Name}\" FontSize=\"18\" Foreground=\"#B54BFF\" Visibility=\"{Binding HasName, Converter={StaticResource bc}, ConverterParameter=CollapseWhenFalse}\" HorizontalAlignment=\"Center\"/>\n                            <TextBlock                   Grid.Column=\"1\" Grid.Row=\"1\" FontFamily=\"../Resources/#Fontin SmallCaps\" Text=\"{Binding TypeLine}\" FontSize=\"18\" Foreground=\"#B54BFF\" HorizontalAlignment=\"Center\"/>\n                        </Grid>\n                    </Border>\n                </DataTemplate>\n                \n                <DataTemplate DataType=\"{x:Type vm:RelicGearItemHoverViewModel}\">\n                    <Border Background=\"{Binding Item, Converter={StaticResource vc}, ConverterParameter=0.3}\" HorizontalAlignment=\"Stretch\" >\n                        <Grid  MinWidth=\"200\" >\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"Auto\" />\n                                <RowDefinition Height=\"Auto\" />\n                            </Grid.RowDefinitions>\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"Auto\" />\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"Auto\" />\n                            </Grid.ColumnDefinitions>\n                            <Image HorizontalAlignment=\"Left\" Source=\"/Images/ItemHover/ItemHeaderRelicLeft.png\" Grid.Column=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Source=\"/Images/ItemHover/ItemHeaderRelicMiddle.png\" Grid.Column=\"1\" Grid.Row=\"0\" Grid.RowSpan=\"2\" Stretch=\"Fill\" Canvas.ZIndex=\"0\" />\n                            <Image HorizontalAlignment=\"Right\" Source=\"/Images/ItemHover/ItemHeaderRelicRight.png\" Grid.Column=\"2\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <TextBlock Margin=\"0,5,0,0\"  Grid.Column=\"1\" Grid.Row=\"0\" FontFamily=\"../Resources/#Fontin SmallCaps\" Text=\"{Binding Name}\" FontSize=\"18\" Foreground=\"#6AAD6A\" Visibility=\"{Binding HasName, Converter={StaticResource bc}, ConverterParameter=CollapseWhenFalse}\" HorizontalAlignment=\"Center\"/>\n                            <TextBlock                   Grid.Column=\"1\" Grid.Row=\"1\" FontFamily=\"../Resources/#Fontin SmallCaps\" Text=\"{Binding TypeLine}\" FontSize=\"18\" Foreground=\"#6AAD6A\" HorizontalAlignment=\"Center\"/>\n                        </Grid>\n                    </Border>\n                </DataTemplate>\n\n                <DataTemplate DataType=\"{x:Type vm:QuestItemHoverViewModel}\">\n                    <Border Background=\"{Binding Item, Converter={StaticResource vc}, ConverterParameter=0.3}\" HorizontalAlignment=\"Stretch\" >\n                        <Grid  MinWidth=\"200\" >\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"Auto\" />\n                                <RowDefinition Height=\"Auto\" />\n                            </Grid.RowDefinitions>\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"Auto\" />\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"Auto\" />\n                            </Grid.ColumnDefinitions>\n                            <Image HorizontalAlignment=\"Left\" Source=\"/Images/ItemHover/ItemHeaderQuestLeft.png\" Grid.Column=\"0\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <Image Source=\"/Images/ItemHover/ItemHeaderQuestMiddle.png\" Grid.Column=\"1\" Grid.Row=\"0\" Grid.RowSpan=\"2\" Stretch=\"Fill\" Canvas.ZIndex=\"0\" />\n                            <Image HorizontalAlignment=\"Right\" Source=\"/Images/ItemHover/ItemHeaderQuestRight.png\" Grid.Column=\"2\" Grid.Row=\"0\" Grid.RowSpan=\"2\" />\n                            <TextBlock Margin=\"0,5,0,0\"  Grid.Column=\"1\" Grid.Row=\"0\" FontFamily=\"../Resources/#Fontin SmallCaps\" Text=\"{Binding Name}\" FontSize=\"18\" Foreground=\"Lime\" Visibility=\"{Binding HasName, Converter={StaticResource bc}, ConverterParameter=CollapseWhenFalse}\" HorizontalAlignment=\"Center\"/>\n                            <TextBlock                   Grid.Column=\"1\" Grid.Row=\"1\" FontFamily=\"../Resources/#Fontin SmallCaps\" Text=\"{Binding TypeLine}\" FontSize=\"18\" Foreground=\"Lime\" HorizontalAlignment=\"Center\"/>\n                        </Grid>\n                    </Border>\n                </DataTemplate>\n            </Style.Resources>\n        </Style>\n    </UserControl.Resources>\n</UserControl>\n"
  },
  {
    "path": "Procurement/Controls/ItemHoverHeader.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Data;\nusing System.Windows.Documents;\nusing System.Windows.Input;\nusing System.Windows.Media;\nusing System.Windows.Media.Imaging;\nusing System.Windows.Navigation;\nusing System.Windows.Shapes;\n\nnamespace Procurement.Controls\n{\n    /// <summary>\n    /// Interaction logic for ItemHoverHeader.xaml\n    /// </summary>\n    public partial class ItemHoverHeader : UserControl\n    {\n        public ItemHoverHeader()\n        {\n            InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Controls/ItemHoverImage.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.Controls.ItemHoverImage\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n             xmlns:local=\"clr-namespace:Procurement.Controls\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n             xmlns:v=\"clr-namespace:Procurement.View\"\n             mc:Ignorable=\"d\">\n\n    <UserControl.Resources>\n        <v:VisibilityConverter x:Key=\"VisibilityConverter\" />\n        <v:ItemPropertyToFormattedRunConverter x:Key=\"pc\" />\n        <v:ItemRequirementToFormattedRunConverter x:Key=\"rc\" />\n        <v:ItemExplicitModsToFormattedRunConverter x:Key=\"ec\" />\n        <v:VisibilityConverter x:Key=\"bc\" />\n\n        <LinearGradientBrush x:Key=\"SeperatorBrush\" StartPoint=\"0,0\" EndPoint=\"1,0\">\n            <GradientStop Offset=\"0.25\" Color=\"#00808080\" />\n            <GradientStop Offset=\"0.50\" Color=\"#FF808080\" />\n            <GradientStop Offset=\"0.75\" Color=\"#00808080\" />\n        </LinearGradientBrush>\n\n        <Style TargetType=\"{x:Type Paragraph}\">\n            <Setter Property=\"Margin\" Value=\"0\" />\n            <Setter Property=\"TextAlignment\" Value=\"Center\" />\n        </Style>\n\n        <Style TargetType=\"{x:Type TextBlock}\">\n            <Setter Property=\"Margin\" Value=\"0\" />\n            <Setter Property=\"TextAlignment\" Value=\"Center\" />\n        </Style>\n\n        <Style TargetType=\"{x:Type v:BindableRichTextBox}\">\n            <Setter Property=\"Background\" Value=\"Transparent\" />\n            <Setter Property=\"BorderBrush\" Value=\"Transparent\" />\n            <Setter Property=\"FontFamily\" Value=\"../Resources/#Fontin SmallCaps\" />\n        </Style>\n\n    </UserControl.Resources>\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"Auto\" />\n        </Grid.ColumnDefinitions>\n        <DockPanel x:Name=\"grid\"\n                   Grid.Row=\"0\"\n                   Grid.Column=\"0\"\n                   Height=\"Auto\"\n                   LastChildFill=\"True\">\n            <local:ItemHoverHeader x:Name=\"ItemHeader\"\n                                   Content=\"{Binding}\"\n                                   DockPanel.Dock=\"Top\" />\n            <Border DockPanel.Dock=\"Bottom\">\n                <Border.Background>\n                    <SolidColorBrush Color=\"Black\" />\n                </Border.Background>\n                <StackPanel>\n\n                    <ItemsControl ItemsSource=\"{Binding Properties}\" Padding=\"0 5 0 5\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Vertical\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <StackPanel>\n                                    <v:BindableRichTextBox Width=\"{Binding Path=ActualWidth, ElementName=ItemHeader, Mode=OneWay}\" Document=\"{Binding Converter={StaticResource pc}}\" />\n                                </StackPanel>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Opacity=\"0.7\"\n                            Visibility=\"{Binding HasRequirements,\n                                                 Converter={StaticResource bc},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <v:BindableRichTextBox Width=\"{Binding Path=ActualWidth,\n                                                           ElementName=ItemHeader,\n                                                           Mode=OneWay}\"\n                                           Document=\"{Binding Converter={StaticResource rc}}\"\n                                           Padding=\"10 0 10 5\"\n                                           Visibility=\"{Binding HasRequirements,\n                                                                Converter={StaticResource bc},\n                                                                ConverterParameter=CollapseWhenFalse}\" />\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Visibility=\"{Binding SecondaryDescriptionText,\n                                                 Converter={StaticResource VisibilityConverter},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <TextBlock Width=\"{Binding Path=ActualWidth,\n                                               ElementName=ItemHeader,\n                                               Mode=OneWay}\"\n                               HorizontalAlignment=\"Center\"\n                               FontFamily=\"../Resources/#Fontin SmallCaps\"\n                               Foreground=\"Turquoise\"\n                               Padding=\"10 0 10 5\"\n                               Text=\"{Binding SecondaryDescriptionText}\"\n                               TextAlignment=\"Center\"\n                               TextWrapping=\"Wrap\"\n                               Visibility=\"{Binding SecondaryDescriptionText,\n                                                    Converter={StaticResource VisibilityConverter},\n                                                    ConverterParameter=CollapseWhenFalse}\" />\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Opacity=\"0.7\"\n                            Visibility=\"{Binding HasImplicitMods,\n                                                 Converter={StaticResource bc},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <ItemsControl ItemsSource=\"{Binding ImplicitMods}\"\n                                  Padding=\"10 0 10 5\"\n                                  Visibility=\"{Binding HasImplicitMods,\n                                                       Converter={StaticResource bc}}\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Vertical\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <StackPanel>\n                                    <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\"\n                                               Foreground=\"#FF8888FF\"\n                                               Text=\"{Binding}\"\n                                               TextAlignment=\"Center\"\n                                               TextWrapping=\"Wrap\" />\n                                </StackPanel>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Opacity=\"0.7\"\n                            Visibility=\"{Binding HasExplicitMods,\n                                                 Converter={StaticResource bc},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <ItemsControl ItemsSource=\"{Binding ExplicitMods}\"\n                                  Padding=\"10 0 10 5\"\n                                  Visibility=\"{Binding HasExplicitMods,\n                                                       Converter={StaticResource bc},\n                                                       ConverterParameter=CollapseWhenFalse}\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Vertical\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <StackPanel>\n                                    <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\"\n                                               Foreground=\"#FF8888FF\"\n                                               Text=\"{Binding}\"\n                                               TextAlignment=\"Center\"\n                                               TextWrapping=\"Wrap\" />\n                                </StackPanel>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Visibility=\"{Binding DescriptionText,\n                                                 Converter={StaticResource VisibilityConverter},\n                                                 ConverterParameter=CollapseWhenFalse}\" />\n\n                    <TextBlock Width=\"{Binding Path=ActualWidth,\n                                               ElementName=ItemHeader,\n                                               Mode=OneWay}\"\n                               HorizontalAlignment=\"Center\"\n                               FontFamily=\"../Resources/#Fontin SmallCaps\"\n                               Foreground=\"Gray\"\n                               Padding=\"10 0 10 5\"\n                               Text=\"{Binding DescriptionText}\"\n                               TextAlignment=\"Center\"\n                               TextWrapping=\"Wrap\"\n                               Visibility=\"{Binding DescriptionText,\n                                                    Converter={StaticResource VisibilityConverter},\n                                                    ConverterParameter=CollapseWhenFalse}\" />\n\n                    <ItemsControl ItemsSource=\"{Binding CraftedMods}\"\n                                  Padding=\"10 0 10 5\"\n                                  Visibility=\"{Binding HasCraftedMods,\n                                                       Converter={StaticResource bc},\n                                                       ConverterParameter=CollapseWhenFalse}\">\n                        <ItemsControl.ItemsPanel>\n                            <ItemsPanelTemplate>\n                                <StackPanel Orientation=\"Vertical\" />\n                            </ItemsPanelTemplate>\n                        </ItemsControl.ItemsPanel>\n                        <ItemsControl.ItemTemplate>\n                            <DataTemplate>\n                                <StackPanel>\n                                    <TextBlock FontFamily=\"../Resources/#Fontin SmallCaps\"\n                                               Foreground=\"#b4b4ff\"\n                                               Text=\"{Binding}\"\n                                               TextAlignment=\"Center\"\n                                               TextWrapping=\"Wrap\" />\n                                </StackPanel>\n                            </DataTemplate>\n                        </ItemsControl.ItemTemplate>\n                    </ItemsControl>                    \n                    \n                    <TextBlock Width=\"{Binding Path=ActualWidth,\n                                               ElementName=ItemHeader,\n                                               Mode=OneWay}\"\n                               HorizontalAlignment=\"Center\"\n                               FontFamily=\"../Resources/#Fontin SmallCaps\"\n                               Foreground=\"#960003\"\n                               Padding=\"10 0 10 5\"\n                               Text=\"Corrupted\"\n                               TextAlignment=\"Center\"\n                               TextWrapping=\"Wrap\"\n                               Visibility=\"{Binding IsCorrupted,\n                               Converter={StaticResource bc},\n                               ConverterParameter=CollapseWhenFalse}\" />\n\n                    <Border Margin=\"0 0 0 5\"\n                            BorderBrush=\"{StaticResource SeperatorBrush}\"\n                            BorderThickness=\"1\"\n                            Opacity=\"0.7\"\n                            Visibility=\"{Binding HasExplicitMods,\n                                                 Converter={StaticResource bc},\n                                                 ConverterParameter=CollapseWhenFalse}\" />                    \n                    \n                    <TextBlock Width=\"{Binding Path=ActualWidth,\n                                               ElementName=ItemHeader,\n                                               Mode=OneWay}\"\n                               HorizontalAlignment=\"Center\"\n                               FontFamily=\"../Resources/#Fontin SmallCaps\"\n                               Foreground=\"#FFFFFF\"\n                               Padding=\"10 0 10 5\"\n                               Text=\"Image generated with Procurement\"\n                               TextAlignment=\"Center\"\n                               TextWrapping=\"Wrap\"\n                               Visibility=\"Visible\" />\n\n                </StackPanel>\n            </Border>\n        </DockPanel>\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "Procurement/Controls/ItemHoverImage.xaml.cs",
    "content": "﻿using System.Windows.Controls;\n\nnamespace Procurement.Controls\n{\n    public partial class ItemHoverImage : UserControl\n    {\n        public ItemHoverImage()\n        {\n            InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Controls/LeagueSelection.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.Controls.LeagueSelection\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             mc:Ignorable=\"d\" \n             d:DesignHeight=\"300\" d:DesignWidth=\"300\" Height=\"32\" Width=\"356\">\n    <UserControl.Resources>\n        <ResourceDictionary Source=\"ExpressionDark.xaml\" />\n    </UserControl.Resources>\n    <Grid>\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"Auto\"/>\n            <ColumnDefinition Width=\"Auto\"/>\n        </Grid.ColumnDefinitions>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"28\" />\n        </Grid.RowDefinitions>\n        <Grid.Background>\n            <SolidColorBrush Color=\"Black\" Opacity=\"0.8\" />\n        </Grid.Background>\n        <Label Content=\"League Selection :\" Grid.Row=\"0\"  Foreground=\"#FFAB9066\" FontSize=\"14\" FontWeight=\"Bold\" Margin=\"6,5,4,0\"/>\n        <ComboBox ItemsSource=\"{Binding Leagues}\" Foreground=\"#FFAB9066\" SelectionChanged=\"ComboBox_SelectionChanged\" SelectedItem=\"{Binding CurrentLeague, Mode=OneTime}\" Margin=\"1,5,0,0\" Grid.Column=\"1\" HorizontalAlignment=\"Left\" Width=\"Auto\" />\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "Procurement/Controls/LeagueSelection.xaml.cs",
    "content": "﻿using Procurement.ViewModel;\nusing System.Linq;\nusing System.Windows.Controls;\n\nnamespace Procurement.Controls\n{\n    public partial class LeagueSelection : UserControl\n    {\n        public LeagueSelection()\n        {\n            InitializeComponent();\n        }\n\n        private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n        {\n            var cb = sender as ComboBox;\n\n            if (ApplicationState.CurrentLeague != null && !cb.IsLoaded)\n                return;\n\n            string league = cb.SelectedItem.ToString();\n            ApplicationState.CurrentLeague = league;\n            ScreenController.Instance.UpdateTrading();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Controls/RecipeResults.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.Controls.RecipeResults\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             xmlns:v=\"clr-namespace:Procurement.View\"\n             mc:Ignorable=\"d\">\n    <UserControl.Resources>\n        <v:TabIDToStashControlFiltered x:Key=\"tc\" />\n        <v:RecipeDescriptionConverter x:Key=\"rd\" />\n        <v:ResultMatchConverter x:Key=\"rmc\" />\n    </UserControl.Resources>\n    <Grid>\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"400\" />\n            <ColumnDefinition Width=\"*\" />\n        </Grid.ColumnDefinitions>\n        <Border Grid.Column=\"0\" BorderBrush=\"#FF76591B\" BorderThickness=\"2\" VerticalAlignment=\"Top\" Margin=\"7,10,0,0\" Background=\"Black\" Height=\"610\" Width=\"390\">\n            <ScrollViewer VerticalScrollBarVisibility=\"Auto\" HorizontalScrollBarVisibility=\"Hidden\">\n                <ItemsControl ItemsSource=\"{Binding Results}\">\n                    <ItemsControl.ItemsPanel>\n                        <ItemsPanelTemplate>\n                            <StackPanel Orientation=\"Vertical\"/>\n                        </ItemsPanelTemplate>\n                    </ItemsControl.ItemsPanel>\n                    <ItemsControl.ItemTemplate>\n                        <DataTemplate>\n                            <DataTemplate.Resources>\n                                <DataTemplate x:Key=\"nestedA\">\n                                    <Border Background=\"Black\" BorderBrush=\"#FFAB9066\" BorderThickness=\"1\">\n                                        <Grid>\n                                            <Grid.RowDefinitions>\n                                                <RowDefinition Height=\"30\"/>\n                                                <RowDefinition />\n                                                <RowDefinition />\n                                            </Grid.RowDefinitions>\n                                            <Grid.ColumnDefinitions>\n                                                <ColumnDefinition Width=\"50*\" />\n                                                <ColumnDefinition Width=\"50*\" />\n                                            </Grid.ColumnDefinitions>\n                                            <ContentControl Grid.Row=\"0\" Grid.ColumnSpan=\"2\" Content=\"{Binding PercentMatch, Converter={StaticResource rmc}}\" HorizontalAlignment=\"Stretch\" />\n                                            <ItemsControl ItemsSource=\"{Binding MatchedItems}\" Grid.Row=\"1\" Grid.Column=\"0\">\n                                                <ItemsControl.ItemsPanel>\n                                                    <ItemsPanelTemplate>\n                                                        <StackPanel Orientation=\"Vertical\"/>\n                                                    </ItemsPanelTemplate>\n                                                </ItemsControl.ItemsPanel>\n                                                <ItemsControl.ItemTemplate>\n                                                    <DataTemplate>\n                                                        <RadioButton Tag=\"{Binding }\" GroupName=\"Items\" Content=\"{Binding DescriptiveName}\" Foreground=\"#FFAB9066\" Checked=\"RadioButton_Checked\" Margin=\"5,0,0,0\" />\n                                                    </DataTemplate>\n                                                </ItemsControl.ItemTemplate>\n                                            </ItemsControl>\n                                            <ItemsControl ItemsSource=\"{Binding Missing}\" Grid.Row=\"2\" Grid.Column=\"0\" >\n                                                <ItemsControl.ItemsPanel>\n                                                    <ItemsPanelTemplate>\n                                                        <StackPanel Orientation=\"Vertical\"/>\n                                                    </ItemsPanelTemplate>\n                                                </ItemsControl.ItemsPanel>\n                                                <ItemsControl.ItemTemplate>\n                                                    <DataTemplate>\n                                                        <StackPanel>\n                                                            <Label Content=\"{Binding }\" Foreground=\"#FFAB9066\" />\n                                                        </StackPanel>\n                                                    </DataTemplate>\n                                                </ItemsControl.ItemTemplate>\n                                            </ItemsControl>\n                                        </Grid>\n                                    </Border>\n                                </DataTemplate>\n                            </DataTemplate.Resources>\n                            <Border Background=\"Black\" BorderBrush=\"#FFAB9066\" BorderThickness=\"1\">\n                                <Grid>\n                                    <Grid.RowDefinitions>\n                                        <RowDefinition />\n                                    </Grid.RowDefinitions>\n                                    <Expander IsExpanded=\"False\" Grid.Row=\"0\">\n                                        <Expander.Header>\n                                            <Label Content=\"{Binding Converter={StaticResource rd}}\" FontWeight=\"Bold\" FontSize=\"14\" Foreground=\"#FFAB9066\" />\n                                        </Expander.Header>\n                                        <ItemsControl ItemsSource=\"{Binding Value}\" Grid.Row=\"1\" ItemTemplate=\"{StaticResource nestedA}\">\n                                            <ItemsControl.ItemsPanel>\n                                                <ItemsPanelTemplate>\n                                                    <StackPanel Orientation=\"Vertical\"/>\n                                                </ItemsPanelTemplate>\n                                            </ItemsControl.ItemsPanel>\n                                        </ItemsControl>\n                                    </Expander>\n                                </Grid>\n                            </Border>\n                        </DataTemplate>\n                    </ItemsControl.ItemTemplate>\n                </ItemsControl>\n            </ScrollViewer>\n        </Border>\n        <ContentControl Grid.Column=\"1\" Content=\"{Binding SelectedItem, Converter={StaticResource tc}}\" VerticalAlignment=\"Top\" />\n    </Grid>\n</UserControl>"
  },
  {
    "path": "Procurement/Controls/RecipeResults.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Data;\nusing System.Windows.Documents;\nusing System.Windows.Input;\nusing System.Windows.Media;\nusing System.Windows.Media.Imaging;\nusing System.Windows.Navigation;\nusing System.Windows.Shapes;\nusing Procurement.ViewModel;\nusing POEApi.Model;\n\nnamespace Procurement.Controls\n{\n    /// <summary>\n    /// Interaction logic for RecipeResults.xaml\n    /// </summary>\n    public partial class RecipeResults : UserControl\n    {\n        public RecipeResults()\n        {\n            InitializeComponent();\n        }\n\n        private void RadioButton_Checked(object sender, RoutedEventArgs e)\n        {\n            RecipeResultViewModel vm = this.DataContext as RecipeResultViewModel;\n            RadioButton button = sender as RadioButton;\n            Item item = button.Tag as Item;\n            vm.RadioButtonSelected(item);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Controls/SetBuyoutView.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.Controls.SetBuyoutView\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             mc:Ignorable=\"d\" >\n    <UserControl.Resources>\n        <ResourceDictionary Source=\"/Procurement;component/Controls/ExpressionDark.xaml\" />\n    </UserControl.Resources>\n    <Grid Background=\"Black\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"30\"/>\n            <RowDefinition Height=\"30\"/>\n            <RowDefinition Height=\"40\"/>\n            <RowDefinition Height=\"30\"/>\n            <RowDefinition Height=\"60\"/>\n            <RowDefinition Height=\"40\"/>\n        </Grid.RowDefinitions>\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"100\" />\n            <ColumnDefinition Width=\"100\" />\n            <ColumnDefinition Width=\"120\" />\n        </Grid.ColumnDefinitions>\n\n        <!--Buyouts-->\n        <CheckBox Content=\"Buyout\" Grid.Row=\"0\" Foreground=\"#FFAB9066\" FontSize=\"14\" FontWeight=\"Bold\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" IsChecked=\"{Binding BuyoutInfo.Enabled, Mode=TwoWay}\"/>\n        <StackPanel Orientation=\"Horizontal\" Grid.Column=\"1\" Grid.Row=\"0\">\n            <TextBox  x:Name=\"BuyoutValue\" Height=\"25\" Width=\"50\" IsEnabled=\"{Binding BuyoutInfo.Enabled, Mode=TwoWay}\" Text=\"{Binding BuyoutInfo.Value}\"/>\n            <Button Content=\"+\"  Height=\"25\" Width=\"20\" Command=\"{Binding Path=BuyoutInfo.IncreaseValue}\" IsEnabled=\"{Binding BuyoutInfo.Enabled, Mode=TwoWay}\"/>\n            <Button Content=\"-\"  Height=\"25\" Width=\"20\" Command=\"{Binding Path=BuyoutInfo.DecreaseValue}\" IsEnabled=\"{Binding BuyoutInfo.Enabled, Mode=TwoWay}\"/>\n        </StackPanel>\n        <ComboBox Grid.Column=\"2\" Grid.Row=\"0\" Height=\"25\" x:Name=\"OrbType\" IsEnabled=\"{Binding BuyoutInfo.Enabled, Mode=TwoWay}\" ItemsSource=\"{Binding OrbTypes}\" SelectedItem=\"{Binding BuyoutInfo.Orb}\" />\n\n        <!--Current Offer-->\n        <CheckBox Content=\"Offer\" Grid.Row=\"1\" Foreground=\"#FFAB9066\" FontSize=\"14\" FontWeight=\"Bold\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" IsChecked=\"{Binding OfferInfo.Enabled, Mode=TwoWay}\"/>\n        <StackPanel Orientation=\"Horizontal\" Grid.Column=\"1\" Grid.Row=\"1\">\n            <TextBox  x:Name=\"CurrentOfferValue\" Height=\"25\" Width=\"50\" IsEnabled=\"{Binding OfferInfo.Enabled, Mode=TwoWay}\" Text=\"{Binding OfferInfo.Value}\"/>\n            <Button Content=\"+\"  Height=\"25\" Width=\"20\" Command=\"{Binding Path=OfferInfo.IncreaseValue}\" IsEnabled=\"{Binding OfferInfo.Enabled, Mode=TwoWay}\" />\n            <Button Content=\"-\"  Height=\"25\" Width=\"20\" Command=\"{Binding Path=OfferInfo.DecreaseValue}\" IsEnabled=\"{Binding OfferInfo.Enabled, Mode=TwoWay}\"/>\n        </StackPanel>\n        <ComboBox Grid.Column=\"2\" Grid.Row=\"1\" Height=\"25\" IsEnabled=\"{Binding OfferInfo.Enabled, Mode=TwoWay}\" ItemsSource=\"{Binding OrbTypes}\" SelectedItem=\"{Binding OfferInfo.Orb}\"/>\n\n        <!--Price-->\n        <CheckBox Content=\"Price\" Grid.Row=\"2\" Foreground=\"#FFAB9066\" FontSize=\"14\" FontWeight=\"Bold\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" IsChecked=\"{Binding PriceInfo.Enabled, Mode=TwoWay}\"/>\n        <StackPanel Orientation=\"Horizontal\" Grid.Column=\"1\" Grid.Row=\"2\">\n            <TextBox  x:Name=\"PriceValue\" Height=\"25\" Width=\"50\" IsEnabled=\"{Binding PriceInfo.Enabled, Mode=TwoWay}\" Text=\"{Binding PriceInfo.Value}\"/>\n            <Button Content=\"+\"  Height=\"25\" Width=\"20\" Command=\"{Binding Path=PriceInfo.IncreaseValue}\" IsEnabled=\"{Binding PriceInfo.Enabled, Mode=TwoWay}\"/>\n            <Button Content=\"-\"  Height=\"25\" Width=\"20\" Command=\"{Binding Path=PriceInfo.DecreaseValue}\" IsEnabled=\"{Binding PriceInfo.Enabled, Mode=TwoWay}\"/>\n        </StackPanel>\n        <ComboBox Grid.Column=\"2\" Grid.Row=\"2\" Height=\"25\" IsEnabled=\"{Binding PriceInfo.Enabled, Mode=TwoWay}\" ItemsSource=\"{Binding OrbTypes}\" SelectedItem=\"{Binding PriceInfo.Orb}\" />\n\n\n        <TextBlock Grid.Row=\"3\" Foreground=\"#FFAB9066\" Text=\"Notes:\" />\n\n        <TextBlock Grid.Row=\"3\" Foreground=\"#FFAB9066\" Text=\"POB Data copied to Clipboard\" Grid.Column=\"1\" Grid.ColumnSpan=\"2\" Visibility=\"{Binding IsDataInClipboard, Converter={StaticResource bc}}\"/>\n\n        <Button Content=\"Export to POB\" ToolTip=\"Copy item data to clipboard in Path of Building format\" \n                Grid.Column=\"2\" Height=\"25\" Command=\"{Binding PobDataGenerationCommand}\"  Grid.Row=\"3\" Visibility=\"{Binding IsDataInClipboard, Converter={StaticResource bc}, ConverterParameter=Invert}\"\n                Margin=\"2\"  HorizontalAlignment=\"Right\" Padding=\"1\"/>\n        <TextBox x:Name=\"Notes\" Grid.Row=\"4\" Grid.ColumnSpan=\"3\" Text=\"{Binding Notes}\" VerticalScrollBarVisibility=\"Auto\" KeyDown=\"TextBox_KeyDown\"/>\n\n        <Grid Grid.Row=\"5\" Grid.Column=\"0\" Grid.ColumnSpan=\"3\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"110\" />\n                <ColumnDefinition Width=\"5\" />\n                <ColumnDefinition Width=\"110\" />\n                <ColumnDefinition Width=\"5\" />\n                <ColumnDefinition Width=\"90\" />\n            </Grid.ColumnDefinitions>\n\n            <Button Content=\"Save\" Grid.Column=\"0\" Height=\"25\" Width=\"110\" Click=\"Save_Clicked\"/>\n            <Button Content=\"Save Image\" Grid.Column=\"2\" Height=\"25\" Width=\"110\" Click=\"SaveImage_Click\" HorizontalAlignment=\"Left\" />\n            <Button Content=\"Timestamp\" Grid.Column=\"4\" Height=\"25\" Width=\"90\" Click=\"Timestamp_Click\" HorizontalAlignment=\"Left\" />\n        </Grid>\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "Procurement/Controls/SetBuyoutView.xaml.cs",
    "content": "﻿using POEApi.Model;\nusing Procurement.ViewModel;\nusing System;\nusing System.Windows.Controls;\nusing System.Windows.Input;\n\nnamespace Procurement.Controls\n{\n    public partial class SetBuyoutView : UserControl\n    {\n        private SetBuyoutViewModel viewModel;\n\n        public SetBuyoutView(Item item)\n        {\n            InitializeComponent();\n\n            viewModel = new SetBuyoutViewModel(item);\n\n            this.DataContext = viewModel;\n        }\n\n        public event PricingInfoHandler Update;\n        public event SaveImageHandler SaveImageClicked;\n        public delegate void PricingInfoHandler(ItemTradeInfo info);\n        public delegate void SaveImageHandler();\n\n        public void Save_Clicked(object sender, System.Windows.RoutedEventArgs e)\n        {\n            Update(new ItemTradeInfo(viewModel.BuyoutInfo.GetSaveText(), viewModel.PriceInfo.GetSaveText(), viewModel.OfferInfo.GetSaveText(), viewModel.Notes));\n        }\n\n        public void SaveImage_Click(object sender, System.Windows.RoutedEventArgs e)\n        {\n            SaveImageClicked();\n        }\n\n        public void Timestamp_Click(object sender, System.Windows.RoutedEventArgs e)\n        {\n            this.Notes.Text += DateTime.Now + Environment.NewLine;\n        }\n\n        public void SetBuyoutInfo(ItemTradeInfo buyoutInfo)\n        {\n            viewModel.SetBuyoutInfo(buyoutInfo);\n        }\n\n        private void TextBox_KeyDown(object sender, KeyEventArgs e)\n        {\n            if (e.Key != Key.Enter)\n                return;\n\n            this.Notes.Text += Environment.NewLine;\n            this.Notes.CaretIndex = this.Notes.Text.Length;\n            e.Handled = true;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Controls/SetTabBuyoutView.xaml",
    "content": "﻿<Window x:Class=\"Procurement.Controls.SetTabBuyoutView\"\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n        Title=\"Set Tabwide Buyout\" WindowStyle=\"None\" ResizeMode=\"NoResize\" Width=\"340\" Height=\"90\">\n    <Window.Resources>\n        <ResourceDictionary Source=\"/Procurement;component/Controls/ExpressionDark.xaml\" />\n    </Window.Resources>\n    <Border BorderThickness=\"1\" BorderBrush=\"#FFAB9066\">\n    <Grid Background=\"Black\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"40\"/>\n            <RowDefinition Height=\"40\"/>\n        </Grid.RowDefinitions>\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"100\" />\n            <ColumnDefinition Width=\"100\" />\n            <ColumnDefinition Width=\"120\" />\n        </Grid.ColumnDefinitions>\n\n        <!--Buyouts-->\n        <CheckBox Content=\"Tab Buyout\" Grid.Row=\"0\" Foreground=\"#FFAB9066\" FontSize=\"14\" FontWeight=\"Bold\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" IsChecked=\"{Binding BuyoutInfo.Enabled, Mode=TwoWay}\"/>\n        <StackPanel Orientation=\"Horizontal\" Grid.Column=\"1\" Grid.Row=\"0\">\n            <TextBox  x:Name=\"BuyoutValue\" Height=\"25\" Width=\"50\" IsEnabled=\"{Binding BuyoutInfo.Enabled, Mode=TwoWay}\" Text=\"{Binding BuyoutInfo.Value}\"/>\n            <Button Content=\"+\"  Height=\"25\" Width=\"20\" Command=\"{Binding Path=BuyoutInfo.IncreaseValue}\" IsEnabled=\"{Binding BuyoutInfo.Enabled, Mode=TwoWay}\"/>\n            <Button Content=\"-\"  Height=\"25\" Width=\"20\" Command=\"{Binding Path=BuyoutInfo.DecreaseValue}\" IsEnabled=\"{Binding BuyoutInfo.Enabled, Mode=TwoWay}\"/>\n        </StackPanel>\n        <ComboBox Grid.Column=\"2\" Grid.Row=\"0\" Height=\"25\" x:Name=\"OrbType\" IsEnabled=\"{Binding BuyoutInfo.Enabled, Mode=TwoWay}\" ItemsSource=\"{Binding OrbTypes}\" SelectedItem=\"{Binding BuyoutInfo.Orb}\" />\n\n        <Grid Grid.Row=\"1\" Grid.Column=\"0\" Grid.ColumnSpan=\"3\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"160\" />\n                <ColumnDefinition Width=\"10\" />\n                <ColumnDefinition Width=\"160\" />\n            </Grid.ColumnDefinitions>\n\n            <Button Content=\"Save\" Grid.Column=\"0\" Height=\"25\" Width=\"150\" Click=\"Save_Clicked\"/>\n            <Button Content=\"Cancel\" Grid.Column=\"2\" Height=\"25\" Width=\"150\" Click=\"Cancel_Click\" HorizontalAlignment=\"Left\" />\n\n            </Grid>\n    </Grid>\n    </Border>\n</Window>\n"
  },
  {
    "path": "Procurement/Controls/SetTabBuyoutView.xaml.cs",
    "content": "﻿using Procurement.ViewModel;\nusing System.Windows;\nusing System.Windows.Input;\n\nnamespace Procurement.Controls\n{\n    public partial class SetTabBuyoutView : Window\n    {\n        public event TabwideBuyoutHandler Update;\n        public delegate void TabwideBuyoutHandler(PricingInfo buyoutInfo, string tabName);\n\n        private string tabName;\n\n        public SetTabBuyoutView(PricingInfo buyoutInfo, string tabName)\n        {\n            InitializeComponent();\n\n            var vm = new SetTabBuyoutViewModel();\n\n            if (buyoutInfo != null)\n                vm.BuyoutInfo = buyoutInfo;\n\n            this.DataContext = vm;\n            this.tabName = tabName;\n        }\n\n        protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)\n        {\n            base.OnMouseLeftButtonDown(e);\n            this.DragMove();\n        }\n\n        public void Save_Clicked(object sender, System.Windows.RoutedEventArgs e)\n        {\n            var vm = (this.DataContext as SetTabBuyoutViewModel);\n            Update(vm.BuyoutInfo, tabName);\n            this.Close();\n        }\n\n        public void Cancel_Click(object sender, System.Windows.RoutedEventArgs e)\n        {\n            this.Close();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Controls/StashTabControl.xaml",
    "content": "﻿<controls:AbstractStashTabControl x:Class=\"Procurement.Controls.StashTabControl\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n             xmlns:controls=\"clr-namespace:Procurement.Controls\"\n             mc:Ignorable=\"d\"\n             d:DesignHeight=\"592\" d:DesignWidth=\"591\" Height=\"592\" Width=\"591\">\n    \n        <Grid x:Name=\"gridOuter\">\n            <Grid.Background>\n                <ImageBrush ImageSource=\"/Images/stash-grid.jpg\" />\n            </Grid.Background>\n            <Border x:Name=\"LocalBorder\" BorderThickness=\"3\" CornerRadius=\"2\" BorderBrush=\"Transparent\">\n                <Grid x:Name=\"grid\" Margin=\"10, 10, 8, 10\" />\n            </Border>\n            \n        </Grid>\n\n</controls:AbstractStashTabControl>"
  },
  {
    "path": "Procurement/Controls/StashTabControl.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows.Controls;\nusing System.Windows.Media;\nusing System.Windows.Media.Imaging;\nusing POEApi.Model;\nusing Procurement.ViewModel;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procurement.Controls\n{\n    public partial class StashTabControl : AbstractStashTabControl\n    {\n        private const int NormalSpacing = 12;\n        private const int QuadSpacing = 24;\n        \n        public StashTabControl(int tabNumber) : base(tabNumber)\n        {\n            InitializeComponent();\n            Refresh();\n            Ready = true;\n\n            SetPremiumTabBorderColour();\n        }\n\n        public StashTabControl(int tabNumber, List<IFilter> list) : this(tabNumber)\n        {\n            Filters = list;\n        }\n\n        public override void ForceUpdate()\n        {\n            if (Ready == false && Stash == null)\n                Refresh();\n\n            base.ForceUpdate();\n        }\n\n        public override Border Border => LocalBorder;\n\n        public override void RefreshTab(string accountName)\n        {\n            base.RefreshTab(accountName);\n\n            Refresh();\n        }\n\n        public override void Refresh()\n        {\n            base.Refresh();\n\n            Render();\n        }\n\n        private void Render()\n        {\n            int columns = NormalSpacing, rows = NormalSpacing;\n\n            // Force divination card tabs to use quad tab spacing so there is enough room to show all the different\n            // cards.  A normal tab only has 144 slots, but there are >200 divination cards.\n            if (TabType == TabType.Quad || TabType == TabType.DivinationCard)\n            {\n                columns = QuadSpacing;\n                rows = QuadSpacing;\n\n                gridOuter.Background = new ImageBrush(new BitmapImage(new Uri(\"pack://application:,,,/Images/stash-quad-grid.png\")));\n            }\n\n            grid.ColumnDefinitions.Clear();\n            grid.RowDefinitions.Clear();\n            grid.Children.Clear();\n\n            for (var i = 0; i < columns; i++)\n            {\n                grid.ColumnDefinitions.Add(new ColumnDefinition());\n                for (var j = 0; j < rows; j++)\n                {\n                    if (i == 0)\n                    {\n                        grid.RowDefinitions.Add(new RowDefinition());\n                    }\n\n                    var childGrid = new Grid();\n\n                    var currentKey = new Tuple<int, int>(i, j);\n                    // Divination cards always have Y == 0, and X has a unique value for each type of card.  Map the\n                    // card's \"real\" location to a fake one on the grid, so it can be displayed.\n                    var stashLocation = TabType == TabType.DivinationCard ? new Tuple<int, int>(j * columns + i, 0) : currentKey;\n\n                    var keyItem = TabItemsToViewModels.Keys.FirstOrDefault(item => item.X == stashLocation.Item1\n                                                                             && item.Y == stashLocation.Item2);\n                    if (keyItem == null)\n                    {\n                        continue;\n                    }\n\n                    ItemDisplayViewModel itemViewModel = TabItemsToViewModels[keyItem];\n\n                    var itemDisplay = new ItemDisplay\n                    {\n                        ViewModel = itemViewModel,\n                        IsQuadStash = TabType == TabType.Quad || TabType == TabType.DivinationCard\n                    };\n\n                    childGrid.Children.Add(itemDisplay);\n\n                    SetBackground(childGrid, keyItem);\n                    \n                    Grid.SetColumn(childGrid, i);\n                    Grid.SetRow(childGrid, j);\n                    if (itemViewModel.Item.H > 1)\n                    {\n                        Grid.SetRowSpan(childGrid, itemViewModel.Item.H);\n                    }\n\n                    if (itemViewModel.Item.W > 1)\n                    {\n                        Grid.SetColumnSpan(childGrid, itemViewModel.Item.W);\n                    }\n\n                    grid.Children.Add(childGrid);\n                }\n            }\n\n            Ready = true;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/Controls/TabControlStyle.xaml",
    "content": "﻿<ResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n                    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\n\n    <Style x:Key=\"TabItemFocusVisual\">\n        <Setter Property=\"Control.Template\">\n            <Setter.Value>\n                <ControlTemplate>\n                    <Rectangle Margin=\"3,3,3,1\" SnapsToDevicePixels=\"true\" Stroke=\"{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}\" StrokeThickness=\"1\" StrokeDashArray=\"1 2\" />\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    <SolidColorBrush x:Key=\"TabControlNormalBorderBrush\" Color=\"#AA9072\" />\n    <SolidColorBrush x:Key=\"ButtonNormalBackground\" Color=\"#2D1D13\" />\n    <SolidColorBrush x:Key=\"TabItemHotBackground\" Color=\"#2D1D13\" />\n    <SolidColorBrush x:Key=\"TabItemSelectedBackground\" Color=\"#4E311F\" Opacity=\"0.3\" />\n    <SolidColorBrush x:Key=\"TabItemHotBorderBrush\" Color=\"#AA9072\" />\n    <SolidColorBrush x:Key=\"TabItemDisabledBackground\" Color=\"#F4F4F4\" />\n    <SolidColorBrush x:Key=\"TabItemDisabledBorderBrush\" Color=\"#FFC9C7BA\" />\n\n    <Style TargetType=\"{x:Type TabItem}\">\n        <Setter Property=\"FocusVisualStyle\" Value=\"{StaticResource TabItemFocusVisual}\" />\n        <Setter Property=\"Foreground\" Value=\"#E5C690\" />\n        <Setter Property=\"Padding\" Value=\"6,1,6,1\" />\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TabControlNormalBorderBrush}\" />\n        <Setter Property=\"Background\" Value=\"{StaticResource ButtonNormalBackground}\" />\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Stretch\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type TabItem}\">\n                    <Grid SnapsToDevicePixels=\"true\">\n                        <Border x:Name=\"Bd\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"0,0,0,0\" Background=\"{TemplateBinding Background}\" Padding=\"0,0,0,0\" >\n                            <ContentPresenter x:Name=\"Content\" ContentSource=\"Header\" HorizontalAlignment=\"{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}\" RecognizesAccessKey=\"True\" SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\" VerticalAlignment=\"{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}\" />\n                        </Border>\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsSelected\" Value=\"true\">\n                            <Setter Property=\"Panel.ZIndex\" Value=\"1\" />\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Background\" TargetName=\"Bd\" Value=\"{StaticResource TabItemDisabledBackground}\" />\n                            <Setter Property=\"BorderBrush\" TargetName=\"Bd\" Value=\"{StaticResource TabItemDisabledBorderBrush}\" />\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n    \n    <Style TargetType=\"{x:Type TabControl}\">\n        <Setter Property=\"Foreground\" Value=\"{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}\" />\n        <Setter Property=\"Padding\" Value=\"0,0,0,0\" />\n        <Setter Property=\"BorderThickness\" Value=\"0\" />\n        <Setter Property=\"BorderBrush\" Value=\"{StaticResource TabControlNormalBorderBrush}\" />\n        <Setter Property=\"Background\" Value=\"#F9F9F9\" />\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Center\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type TabControl}\">\n                    <Grid ClipToBounds=\"true\" SnapsToDevicePixels=\"true\" KeyboardNavigation.TabNavigation=\"Local\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition x:Name=\"ColumnDefinition0\" />\n                            <ColumnDefinition x:Name=\"ColumnDefinition1\" Width=\"0\" />\n                        </Grid.ColumnDefinitions>\n                        <Grid.RowDefinitions>\n                            <RowDefinition x:Name=\"RowDefinition0\" Height=\"Auto\" />\n                            <RowDefinition x:Name=\"RowDefinition1\" Height=\"*\" />\n                        </Grid.RowDefinitions>\n                        <TabPanel x:Name=\"HeaderPanel\" Grid.Column=\"0\" IsItemsHost=\"true\" Margin=\"2,2,2,0\" Grid.Row=\"0\" KeyboardNavigation.TabIndex=\"1\" Panel.ZIndex=\"1\" />\n                        <Border x:Name=\"ContentPanel\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"0\" Background=\"{TemplateBinding Background}\" Grid.Column=\"0\" KeyboardNavigation.DirectionalNavigation=\"Contained\" Grid.Row=\"1\" KeyboardNavigation.TabIndex=\"2\" KeyboardNavigation.TabNavigation=\"Local\">\n                            <ContentPresenter x:Name=\"PART_SelectedContentHost\" ContentSource=\"SelectedContent\" Margin=\"0,0,0,0\" SnapsToDevicePixels=\"{TemplateBinding SnapsToDevicePixels}\" />\n                        </Border>\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"TabStripPlacement\" Value=\"Bottom\">\n                            <Setter Property=\"Grid.Row\" TargetName=\"HeaderPanel\" Value=\"1\" />\n                            <Setter Property=\"Grid.Row\" TargetName=\"ContentPanel\" Value=\"0\" />\n                            <Setter Property=\"Height\" TargetName=\"RowDefinition0\" Value=\"*\" />\n                            <Setter Property=\"Height\" TargetName=\"RowDefinition1\" Value=\"Auto\" />\n                            <Setter Property=\"Margin\" TargetName=\"HeaderPanel\" Value=\"0,0,0,0\" />\n                        </Trigger>\n                        <Trigger Property=\"TabStripPlacement\" Value=\"Left\">\n                            <Setter Property=\"Grid.Row\" TargetName=\"HeaderPanel\" Value=\"0\" />\n                            <Setter Property=\"Grid.Row\" TargetName=\"ContentPanel\" Value=\"0\" />\n                            <Setter Property=\"Grid.Column\" TargetName=\"HeaderPanel\" Value=\"0\" />\n                            <Setter Property=\"Grid.Column\" TargetName=\"ContentPanel\" Value=\"1\" />\n                            <Setter Property=\"Width\" TargetName=\"ColumnDefinition0\" Value=\"Auto\" />\n                            <Setter Property=\"Width\" TargetName=\"ColumnDefinition1\" Value=\"*\" />\n                            <Setter Property=\"Height\" TargetName=\"RowDefinition0\" Value=\"*\" />\n                            <Setter Property=\"Height\" TargetName=\"RowDefinition1\" Value=\"0\" />\n                            <Setter Property=\"Margin\" TargetName=\"HeaderPanel\" Value=\"0,0,0,0\" />\n                        </Trigger>\n                        <Trigger Property=\"TabStripPlacement\" Value=\"Right\">\n                            <Setter Property=\"Grid.Row\" TargetName=\"HeaderPanel\" Value=\"0\" />\n                            <Setter Property=\"Grid.Row\" TargetName=\"ContentPanel\" Value=\"0\" />\n                            <Setter Property=\"Grid.Column\" TargetName=\"HeaderPanel\" Value=\"1\" />\n                            <Setter Property=\"Grid.Column\" TargetName=\"ContentPanel\" Value=\"0\" />\n                            <Setter Property=\"Width\" TargetName=\"ColumnDefinition0\" Value=\"*\" />\n                            <Setter Property=\"Width\" TargetName=\"ColumnDefinition1\" Value=\"Auto\" />\n                            <Setter Property=\"Height\" TargetName=\"RowDefinition0\" Value=\"*\" />\n                            <Setter Property=\"Height\" TargetName=\"RowDefinition1\" Value=\"0\" />\n                            <Setter Property=\"Margin\" TargetName=\"HeaderPanel\" Value=\"0,0,0,0\" />\n                        </Trigger>\n                        <Trigger Property=\"IsEnabled\" Value=\"false\">\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n    <Style TargetType=\"{x:Type ToolTip}\">\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type ToolTip}\">\n                    <ContentPresenter />\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n\n\n</ResourceDictionary>"
  },
  {
    "path": "Procurement/Controls/TradeSettings.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.Controls.BuyoutSettings\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             mc:Ignorable=\"d\" \n             d:DesignHeight=\"500\" d:DesignWidth=\"800\">\n    <Border Grid.Column=\"0\" BorderBrush=\"#FF76591B\" BorderThickness=\"2\" Background=\"Black\">\n        <Grid Width=\"950\">\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"45\" />\n                <RowDefinition Height=\"25\" />\n                <RowDefinition Height=\"25\" />\n                <RowDefinition Height=\"25\" />\n                <RowDefinition Height=\"28\" />\n                <RowDefinition Height=\"25\" />\n                <RowDefinition Height=\"50\" />\n                <RowDefinition Height=\"45\" />\n                <RowDefinition Height=\"25\" />\n                <RowDefinition Height=\"30\" />\n                <RowDefinition Height=\"35\" />\n                <RowDefinition Height=\"*\" />\n            </Grid.RowDefinitions>\n\n            <Label Grid.Row=\"0\" Content=\"Buyout Settings\" Foreground=\"#FFAB9066\" FontSize=\"14\" FontWeight=\"Bold\" Margin=\"0, 10, 0, 0\"/>\n            \n            <CheckBox Grid.Row=\"1\" Foreground=\"#FFAB9066\" IsChecked=\"{Binding EmbedBuyouts}\" Content=\"Embed Buyouts\" HorizontalAlignment=\"Left\" Margin=\"0,2,0,0\" />\n\n            <CheckBox Grid.Row=\"2\" Foreground=\"#FFAB9066\" IsChecked=\"{Binding BuyoutItemsOnlyVisibleInBuyoutsTag}\" Content=\"Buyouts items only visible in buyouts tag\" HorizontalAlignment=\"Left\" Margin=\"0,2,0,0\" />\n\n            <CheckBox Grid.Row=\"3\" Foreground=\"#FFAB9066\" IsChecked=\"{Binding OnlyDisplayBuyouts}\" Content=\"Only display items with buyout\" HorizontalAlignment=\"Left\" Margin=\"0,2,0,0\" />\n    \n            <Grid Grid.Row=\"4\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"100\"/>\n                    <ColumnDefinition Width=\"100\"/>\n                </Grid.ColumnDefinitions>\n\n                <Label Grid.Column=\"0\" Content=\"Thread Id\" Foreground=\"#FFAB9066\" FontSize=\"12\" />\n                <TextBox Height=\"22\" Width=\"100\" Grid.Column=\"1\" Text=\"{Binding ThreadId}\"  HorizontalAlignment=\"Left\"  />\n            </Grid>\n            <Grid Grid.Row=\"5\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"100\"/>\n                    <ColumnDefinition Width=\"800\"/>\n                </Grid.ColumnDefinitions>\n\n                <Label Grid.Column=\"0\" Content=\"Thread Title\" Foreground=\"#FFAB9066\" FontSize=\"12\" />\n                <TextBox Height=\"22\" Width=\"720\" Grid.Column=\"1\" Text=\"{Binding ThreadTitle}\"  HorizontalAlignment=\"Left\" />\n            </Grid>\n\n            <Button Grid.Row=\"6\" Content=\"Save Thread Settings\" Style=\"{Binding}\" Height=\"22\" Width=\"120\" HorizontalAlignment=\"Left\" Margin=\"10,0,0,0\" Command=\"{Binding SaveCommand}\"/>\n\n            <Label Grid.Row=\"7\" Foreground=\"#FFAB9066\" FontSize=\"12\" Margin=\"0, 0, 0, 0\">\n                <TextBlock>\n                    Enter your personal poe.trade URL and Procurement will automatically refresh your online status for you as long as it remains open. Online mode only.<LineBreak/>You can get your URL by sending a PM to 'poexyzis' on the game forums. (<Hyperlink Click=\"Hyperlink_Click\">http://www.pathofexile.com/private-messages/compose/to/poexyzis</Hyperlink>)\n                </TextBlock>\n            </Label>\n            <Grid Grid.Row=\"8\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"100\"/>\n                    <ColumnDefinition Width=\"800\"/>\n                </Grid.ColumnDefinitions>\n\n                <Label Grid.Column=\"0\" Content=\"Poe.trade URL\" Foreground=\"#FFAB9066\" FontSize=\"12\" />\n                <TextBox Height=\"22\" Width=\"720\" Grid.Column=\"1\" Text=\"{Binding PoeTradeRefreshUrl}\" IsEnabled=\"{Binding LoggedIn}\" HorizontalAlignment=\"Left\" />\n            </Grid>\n            \n            <CheckBox Grid.Row=\"9\" Foreground=\"#FFAB9066\" IsChecked=\"{Binding PoeTradeRefreshEnabled}\" IsEnabled=\"{Binding LoggedIn}\" Content=\"Enable automatic poe.trade online refresh\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Bottom\" Margin=\"0,2,0,0\" />\n\n            <Button Grid.Row=\"10\" Content=\"Save Poe.Trade Settings\" Style=\"{Binding}\" IsEnabled=\"{Binding LoggedIn}\" Height=\"22\" Width=\"145\" HorizontalAlignment=\"Left\" Margin=\"10,0,0,0\" Command=\"{Binding SaveRefreshCommand}\" VerticalAlignment=\"Bottom\"/>\n            \n        </Grid>\n    </Border>\n</UserControl>\n"
  },
  {
    "path": "Procurement/Controls/TradeSettings.xaml.cs",
    "content": "﻿using Procurement.ViewModel;\nusing System.Windows.Controls;\nusing System.Diagnostics;\n\nnamespace Procurement.Controls\n{\n    public partial class BuyoutSettings : UserControl\n    {\n        public BuyoutSettings()\n        {\n            InitializeComponent();\n            this.DataContext = new TradeSettingsViewModel();\n        }\n\n        private void Hyperlink_Click(object sender, System.Windows.RoutedEventArgs e)\n        {\n            Process.Start(\"http://www.pathofexile.com/private-messages/compose/to/poexyzis\");\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ForumExportTemplate.txt",
    "content": "﻿Welcome to my shop! (Last Updated {LastUpdated}),\n\nPlease message me here or ingame if something catches your eye. My IGN is {IGN}.\n\n[spoiler=\"          Breachstones        \"]\n{Breachstone}\n[/spoiler]\n[spoiler=\"          Leaguestones        \"]\n{Leaguestone}\n[/spoiler]\n[spoiler=\"          Prophecies          \"]\n{Prophecies}\n[/spoiler]\n[spoiler=\"          Essences          \"]\n{Essence}\n[/spoiler]\n[spoiler=\"          Divination Card          \"]\n{DivinationCard}\n[/spoiler]\n[spoiler=\"          Abyss Jewels          \"]\n{AbyssJewels}\n[/spoiler]\n[spoiler=\"          Jewels          \"]\n{NormalJewel}{MagicJewel}{RareJewel}{UniqueJewel}\n[/spoiler]\n[spoiler=\"          Talismans          \"]\n{NormalTalisman}{MagicTalisman}{RareTalisman}{UniqueTalisman}\n[/spoiler]\n[spoiler=\"          Uniques          \"]\n{Uniques}\n[/spoiler]\n[spoiler=\"          5-Links          \"]\n{5Link}\n[/spoiler]\n[spoiler=\"          6-Links          \"]\n{6Link}\n[/spoiler]\n[spoiler=\"          Maps          \"]\n[spoiler=\"          Map Fragments          \"]\n{VaalFragments}\n{VaalUberFragments}\n{ProphecyFragments}\n{AtlasFragments}\n[/spoiler]\n[spoiler=\"          Tier 1 - 5          \"]\n{Tier1Maps}{Tier2Maps}{Tier3Maps}{Tier4Maps}{Tier5Maps}\n[/spoiler]\n[spoiler=\"          Tier 6 - 10          \"]\n{Tier6Maps}{Tier7Maps}{Tier8Maps}{Tier9Maps}{Tier10Maps}\n[/spoiler]\n[spoiler=\"          Tier 11 - 15          \"]\n{Tier11Maps}{Tier12Maps}{Tier13Maps}{Tier14Maps}{Tier15Maps}\n[/spoiler]\n[spoiler=\"          Tier 16          \"]\n{Tier16Maps}\n[/spoiler]\n[/spoiler]\n[spoiler=\"          Gems          \"]\n[spoiler=\"          Quality Gems          \"]\n[spoiler=\"          Quality Gems 1-5      \"]\n{Quality1Gems}{Quality2Gems}{Quality3Gems}{Quality4Gems}{Quality5Gems}\n[/spoiler]\n[spoiler=\"          Quality Gems 6-10     \"]\n{Quality6Gems}{Quality7Gems}{Quality8Gems}{Quality9Gems}{Quality10Gems}\n[/spoiler]\n[spoiler=\"          Quality Gems 11-15    \"]\n{Quality11Gems}{Quality12Gems}{Quality13Gems}{Quality14Gems}{Quality15Gems}\n[/spoiler]\n[spoiler=\"          Quality Gems 16-20    \"]\n{Quality16Gems}{Quality17Gems}{Quality18Gems}{Quality19Gems}{Quality20Gems}\n[/spoiler]\n[spoiler=\"          Quality Gems 21-23    \"]\n{Quality21Gems}{Quality22Gems}{Quality23Gems}\n[/spoiler]\n[/spoiler]\n[spoiler=\"          Drop Only Gems          \"]\n{DropOnlyGems}\n[/spoiler]\n[spoiler=\"          Popular Gems          \"]\n{PopularGems}\n[/spoiler]\n[spoiler=\"          Aura Gems          \"]\n{AuraGems}\n[/spoiler]\n[spoiler=\"          Curse Gems          \"]\n{CurseGems}\n[/spoiler]\n[spoiler=\"          Support Gems          \"]\n{SupportGems}\n[/spoiler]\n[spoiler=\"          Leveled Gems          \"]\n{Level2Gems}{Level3Gems}{Level4Gems}{Level5Gems}{Level6Gems}{Level7Gems}{Level8Gems}{Level9Gems}{Level10Gems}{Level11Gems}{Level12Gems}{Level13Gems}{Level14Gems}{Level15Gems}{Level16Gems}{Level17Gems}{Level18Gems}{Level19Gems}{Level20Gems}{Level21Gems}\n[/spoiler]\n[spoiler=\"          Vaal Gems          \"]\n{VaalGems}\n[/spoiler]\n[/spoiler]\n[spoiler=\"          Dual Res Gear          \"]\n{DualRes}\n[/spoiler]\n[spoiler=\"          Tri Res Gear          \"]\n{TripRes}\n[/spoiler]\n[spoiler=\"          IIR/IIQ Gear          \"]\n{MagicFind}\n[/spoiler]\n[spoiler=\"          Weapons and Armor          \"]\n[spoiler=\"          Armor                                 \"]\n[spoiler=\"          Helms          \"]\n{RareHelmet}\n[/spoiler]\n[spoiler=\"          Amulets          \"]\n{RareAmulet}\n[/spoiler]\n[spoiler=\"          Chest Armor          \"]\n{RareChest}\n[/spoiler]\n[spoiler=\"          Rings          \"]\n{RareRing}\n[/spoiler]\n[spoiler=\"          Belts          \"]\n{RareBelt}\n[/spoiler]\n[spoiler=\"          Boots          \"]\n{RareBoots}\n[/spoiler]\n[spoiler=\"          Gloves          \"]\n{RareGloves}\n[/spoiler]\n[/spoiler]\n[spoiler=\"          Shields          \"]\n{RareShield}\n[/spoiler]\n[spoiler=\"          Swords, Axes & Maces          \"]\n{RareSword}\n{RareAxe}\n{RareMace}\n[/spoiler]\n[spoiler=\"          Daggers          \"]\n{RareDagger}\n[/spoiler]\n[spoiler=\"          Claws          \"]\n{RareClaw}\n[/spoiler]\n[spoiler=\"          Bows & Quivers          \"]\n{RareBow}\n{RareQuiver}\n[/spoiler]\n[spoiler=\"          Wands, Sceptres & Staves          \"]\n{RareWand}\n{RareSceptre}\n{RareStaff}\n[/spoiler]\n[/spoiler]\n[spoiler=\"          Flasks          \"]\n[spoiler=\"          Normal          \"]\n{NormalFlask}\n[/spoiler]\n[spoiler=\"          Magic          \"]\n{MagicFlask}\n[/spoiler]\n[spoiler=\"          Unique          \"]\n{UniqueFlask} \n[/spoiler]\n[/spoiler]\n[spoiler=\"          Currency          \"]\n{Currency} \n[/spoiler]\n[spoiler=\"          Divine Vessels          \"]\n{DivineVessel}\n[/spoiler]\n[spoiler=\"          Offering to the Goddess          \"]\n{Offering}\n[/spoiler]\n[spoiler=\"          Scarabs          \"]\n{Scarab}\n[/spoiler]\n[spoiler=\"          Fossils          \"]\n{Fossil}\n[/spoiler]\n[spoiler=\"          Resonators          \"]\n{Resonator}\n[/spoiler]\n[spoiler=\"          Captured Beasts          \"]\n{FullBestiaryOrbs}\n[/spoiler]\n\nThanks for visiting!\n\n[url=https://github.com/Stickymaddness/Procurement/][img]http://i.imgur.com/ZHBMImo.png[/img][/url]\n\n"
  },
  {
    "path": "Procurement/Interfaces/IStashControl.cs",
    "content": "using System.Collections.Generic;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procurement.Interfaces\n{\n    public interface IStashControl\n    {\n        void RefreshTab(string accountName);\n        int TabNumber { get; set; }\n        int ItemsMatchingFiltersCount { get; set; }\n        List<IFilter> Filters { get; set; }\n\n        void ForceUpdate();\n    }\n}"
  },
  {
    "path": "Procurement/MainWindow.xaml",
    "content": "﻿<Window x:Class=\"Procurement.MainWindow\"\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n        xmlns:v=\"clr-namespace:Procurement.View\"\n        xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n        xmlns:viewModel=\"clr-namespace:Procurement.ViewModel\"\n        mc:Ignorable=\"d\"\n        Height=\"1000\" Width=\"1100\" Background=\"Transparent\" AllowsTransparency=\"True\" WindowStyle=\"None\" ResizeMode=\"NoResize\" WindowStartupLocation=\"CenterScreen\" Icon=\"/Procurement;component/Images/Procurement.ico\" UseLayoutRounding=\"True\"\n        d:DataContext=\"{d:DesignInstance viewModel:ScreenController }\">\n    <Window.Resources>\n        <v:VisibilityConverter x:Key=\"vc\" />\n        <Style TargetType=\"Button\" BasedOn=\"{StaticResource ImageButton}\" />\n    </Window.Resources>\n    <Grid Height=\"1000\" Width=\"1100\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"{Binding HeaderHeight}\" />\n            <RowDefinition Height=\"692\"/>\n            <RowDefinition Height=\"{Binding FooterHeight}\" />\n        </Grid.RowDefinitions>\n\n\n        <Grid x:Name=\"Header\" Margin=\"1,0,-1,0\" Visibility=\"{Binding FullMode, Converter={StaticResource vc}}\">\n            <Grid.Background>\n                <ImageBrush ImageSource=\"/Procurement;component/Images/header.png\"/>\n            </Grid.Background>\n        </Grid>\n\n        <Grid Grid.Row=\"1\" x:Name=\"MainGrid\">\n            <Grid.Background>\n                <ImageBrush ImageSource=\"/Procurement;component/Images/main.png\"/>\n            </Grid.Background>\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"58\"/>\n                <RowDefinition />\n            </Grid.RowDefinitions>\n\n\n            <Grid  Grid.Row=\"0\" VerticalAlignment=\"Top\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"880\"/>\n                    <ColumnDefinition Width=\"273\"/>\n                </Grid.ColumnDefinitions>\n                <Grid Grid.Column=\"0\" Visibility=\"{Binding ButtonsVisible, Converter={StaticResource bc}}\">\n                    <Grid.ColumnDefinitions>\n                        <ColumnDefinition Width=\"108\"/>\n                        <ColumnDefinition Width=\"128\"/>\n                        <ColumnDefinition Width=\"128\"/>\n                        <ColumnDefinition Width=\"253\" x:Name=\"ButtonSpacer\"/>\n                        <ColumnDefinition Width=\"129\"/>\n                        <ColumnDefinition Width=\"134\"/>\n                    </Grid.ColumnDefinitions>\n                    <Grid.RowDefinitions>\n                        <RowDefinition Height=\"12\"/>\n                        <RowDefinition />\n                    </Grid.RowDefinitions>\n\n                    <Button Grid.Column=\"1\" Grid.Row=\"2\" Width=\"120\" Height=\"42\" HorizontalAlignment=\"Left\" Command=\"{Binding MenuButtonCommand}\" CommandParameter=\"StashView\">\n                        <Image>\n                            <Image.Style>\n                                <Style TargetType=\"{x:Type Image}\">\n                                    <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_stash.png\"/>\n                                    <Style.Triggers>\n                                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                            <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_select_stash.png\"/>\n                                        </Trigger>\n                                    </Style.Triggers>\n                                </Style>\n                            </Image.Style>\n                        </Image>\n                    </Button>\n\n                    <Button Grid.Column=\"2\" Grid.Row=\"2\" Width=\"120\" Height=\"42\" HorizontalAlignment=\"Left\" Command=\"{Binding MenuButtonCommand}\" CommandParameter=\"Inventory\">\n                        <Image>\n                            <Image.Style>\n                                <Style TargetType=\"{x:Type Image}\">\n                                    <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_inventory.png\"/>\n                                    <Style.Triggers>\n                                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                            <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_select_inventory.png\"/>\n                                        </Trigger>\n                                    </Style.Triggers>\n                                </Style>\n                            </Image.Style>\n                        </Image>\n                    </Button>\n\n                    <Button Grid.Column=\"3\" Grid.Row=\"2\" Width=\"120\" Height=\"42\" HorizontalAlignment=\"Left\" Command=\"{Binding MenuButtonCommand}\" CommandParameter=\"Trading\">\n                        <Image>\n                            <Image.Style>\n                                <Style TargetType=\"{x:Type Image}\">\n                                    <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_trading.png\"/>\n                                    <Style.Triggers>\n                                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                            <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_selected_trading.png\"/>\n                                        </Trigger>\n                                    </Style.Triggers>\n                                </Style>\n                            </Image.Style>\n                        </Image>\n                    </Button>\n\n                    <Button Grid.Column=\"4\" Grid.Row=\"2\" Width=\"120\" Height=\"42\" HorizontalAlignment=\"Left\" Command=\"{Binding MenuButtonCommand}\" CommandParameter=\"Settings\">\n                        <Image>\n                            <Image.Style>\n                                <Style TargetType=\"{x:Type Image}\">\n                                    <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_settings.png\"/>\n                                    <Style.Triggers>\n                                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                            <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_selected_settings.png\"/>\n                                        </Trigger>\n                                    </Style.Triggers>\n                                </Style>\n                            </Image.Style>\n                        </Image>\n                    </Button>\n\n                    <Button Grid.Column=\"5\" Grid.Row=\"2\" Width=\"120\" Height=\"42\" HorizontalAlignment=\"Left\" Command=\"{Binding MenuButtonCommand}\" CommandParameter=\"Recipes\">\n                        <Image>\n                            <Image.Style>\n                                <Style TargetType=\"{x:Type Image}\">\n                                    <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_recipes.png\"/>\n                                    <Style.Triggers>\n                                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                            <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_recipes_hover.png\"/>\n                                        </Trigger>\n                                    </Style.Triggers>\n                                </Style>\n                            </Image.Style>\n                        </Image>\n                    </Button>\n\n\n                </Grid>\n                <Grid Grid.Column=\"1\" Visibility=\"Visible\" x:Name=\"WindowControls\">\n                    <Grid.ColumnDefinitions>\n                        <ColumnDefinition Width=\"61\"/>\n                        <ColumnDefinition Width=\"129\"/>\n                        <ColumnDefinition Width=\"83*\" />\n                    </Grid.ColumnDefinitions>\n\n                    <Grid.RowDefinitions>\n                        <RowDefinition Height=\"12\"/>\n                        <RowDefinition />\n                    </Grid.RowDefinitions>\n\n                    <Button Grid.Column=\"0\" Grid.Row=\"2\" Width=\"49\" Height=\"42\" HorizontalAlignment=\"Left\" Click=\"minimize_Click\" >\n                        <Image>\n                            <Image.Style>\n                                <Style TargetType=\"{x:Type Image}\">\n                                    <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_min.png\"/>\n                                    <Style.Triggers>\n                                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                            <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_min_hover.png\"/>\n                                        </Trigger>\n                                    </Style.Triggers>\n                                </Style>\n                            </Image.Style>\n                        </Image>\n                    </Button>\n\n                    <Button Grid.Column=\"1\" Grid.Row=\"2\" Width=\"49\" Height=\"42\" HorizontalAlignment=\"Left\" Click=\"exit_Click\">\n                        <Image>\n                            <Image.Style>\n                                <Style TargetType=\"{x:Type Image}\">\n                                    <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_close.png\"/>\n                                    <Style.Triggers>\n                                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                            <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_close_hover.png\"/>\n                                        </Trigger>\n                                    </Style.Triggers>\n                                </Style>\n                            </Image.Style>\n                        </Image>\n                    </Button>\n\n                </Grid>\n            </Grid>\n\n            <ContentPresenter Grid.Row=\"1\" Content=\"{Binding SelectedView}\" />\n\n        </Grid>\n\n        <Grid x:Name=\"Footer\" Grid.Row=\"2\" Margin=\"7,0,-7,0\" Visibility=\"{Binding FullMode, Converter={StaticResource vc}}\">\n            <Grid.Background>\n                <ImageBrush ImageSource=\"/Procurement;component/Images/footer.png\"/>\n            </Grid.Background>\n        </Grid>\n\n    </Grid>\n</Window>\n"
  },
  {
    "path": "Procurement/MainWindow.xaml.cs",
    "content": "﻿using POEApi.Model;\nusing Procurement.Controls;\nusing Procurement.ViewModel;\nusing System.Windows;\nusing System.Windows.Input;\nusing System.Windows.Media;\nusing System.Windows.Interop;\nusing System;\n\nnamespace Procurement\n{\n    public partial class MainWindow : Window\n    {\n        private static readonly int WM_SYSKEYDOWN = 0x0104;\n        private static readonly int VK_MENU = 0x12;\n\n        public MainWindow()\n        {\n            InitializeComponent();\n            this.Title = ApplicationState.Version;\n            ScreenController.Create();\n\n            DataContext = ScreenController.Instance;\n\n            this.MouseLeftButtonDown += new MouseButtonEventHandler(MainWindow_MouseLeftButtonDown);\n\n            Loaded += (o, e) =>\n            {\n                // Hook the window procedure\n                var source = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);\n                source.AddHook(new HwndSourceHook(WndProc));\n            };\n\n            initLayout();\n        }\n\n        private void initLayout()\n        {\n            if (Settings.UserSettings[\"MinimalMode\"] == \"false\")\n                return;\n\n            this.Height = 720;\n            this.ResizeMode = ResizeMode.CanMinimize;\n            this.WindowStyle = WindowStyle.SingleBorderWindow;\n            this.AllowsTransparency = false;\n            this.MainGrid.Background = Brushes.Black;\n            this.WindowControls.Visibility = Visibility.Hidden;\n            this.ButtonSpacer.Width = new GridLength(128);\n        }\n\n        void MainWindow_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)\n        {\n            ItemDisplay.ClosePopups();\n            DragMove();\n        }\n\n        private void minimize_Click(object sender, RoutedEventArgs e)\n        {\n            WindowState = System.Windows.WindowState.Minimized;\n        }\n\n        private void exit_Click(object sender, RoutedEventArgs e)\n        {\n            Application.Current.Shutdown();\n        }\n\n        private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)\n        {\n            // Disables the ALT key\n            if ((msg == WM_SYSKEYDOWN) && (wParam.ToInt32() == VK_MENU))\n            {\n                handled = true;\n            }\n\n            return IntPtr.Zero;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Procurement.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProductVersion>8.0.30703</ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{9369113D-A68F-4FE9-B301-D00C5176666A}</ProjectGuid>\n    <OutputType>WinExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Procurement</RootNamespace>\n    <AssemblyName>Procurement</AssemblyName>\n    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>\n    <TargetFrameworkProfile>\n    </TargetFrameworkProfile>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <WarningLevel>4</WarningLevel>\n    <IsWebBootstrapper>false</IsWebBootstrapper>\n    <PublishUrl>publish\\</PublishUrl>\n    <Install>true</Install>\n    <InstallFrom>Disk</InstallFrom>\n    <UpdateEnabled>false</UpdateEnabled>\n    <UpdateMode>Foreground</UpdateMode>\n    <UpdateInterval>7</UpdateInterval>\n    <UpdateIntervalUnits>Days</UpdateIntervalUnits>\n    <UpdatePeriodically>false</UpdatePeriodically>\n    <UpdateRequired>false</UpdateRequired>\n    <MapFileExtensions>true</MapFileExtensions>\n    <ApplicationRevision>0</ApplicationRevision>\n    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>\n    <UseApplicationTrust>false</UseApplicationTrust>\n    <BootstrapperEnabled>true</BootstrapperEnabled>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|x86' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <Prefer32Bit>false</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|x86' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>none</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <Prefer32Bit>false</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup>\n    <StartupObject>\n    </StartupObject>\n  </PropertyGroup>\n  <PropertyGroup>\n    <ApplicationIcon>Images\\Procurement.ico</ApplicationIcon>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Google.Protobuf, Version=3.8.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604\" />\n    <Reference Include=\"PresentationFramework.Aero\" />\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Drawing\" />\n    <Reference Include=\"System.Windows.Controls.Input.Toolkit, Version=3.5.40128.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\WPFToolkit.3.5.50211.1\\lib\\System.Windows.Controls.Input.Toolkit.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Windows.Controls.Layout.Toolkit, Version=3.5.40128.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\WPFToolkit.3.5.50211.1\\lib\\System.Windows.Controls.Layout.Toolkit.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"System.Xaml\">\n      <RequiredTargetFramework>4.0</RequiredTargetFramework>\n    </Reference>\n    <Reference Include=\"WindowsBase\" />\n    <Reference Include=\"PresentationCore\" />\n    <Reference Include=\"PresentationFramework\" />\n    <Reference Include=\"WPFToolkit, Version=3.5.40128.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\WPFToolkit.3.5.50211.1\\lib\\WPFToolkit.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"ApplicationState.cs\" />\n    <Compile Include=\"Controls\\AbstractStashTabControl.cs\" />\n    <Compile Include=\"Controls\\EssenceStashTab.xaml.cs\">\n      <DependentUpon>EssenceStashTab.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\CurrencyStashTab.xaml.cs\">\n      <DependentUpon>CurrencyStashTab.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\FragmentStashTab.xaml.cs\">\n      <DependentUpon>FragmentStashTab.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Utility\\ClientLogFileEventArgs.cs\" />\n    <Compile Include=\"Utility\\ClientLogFileWatcher.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\FossilFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\FracturedItemFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\IncubatorFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ResonatorFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\SynthesisedItemFilter.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\SimpleVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ItemFilterUpdater.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\LoreweaveRecipe.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\VaalOrbRecipe.cs\" />\n    <Compile Include=\"ViewModel\\TabViewModel\\FragmentStashViewModel.cs\" />\n    <Compile Include=\"RelayCommand.cs\" />\n    <Compile Include=\"ViewModel\\TabViewModel\\EssenceStashViewModel.cs\" />\n    <Compile Include=\"ViewModel\\TabViewModel\\CurrencyStashViewModel.cs\" />\n    <Compile Include=\"Interfaces\\IStashControl.cs\" />\n    <Compile Include=\"Controls\\SetTabBuyoutView.xaml.cs\">\n      <DependentUpon>SetTabBuyoutView.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\TradeSettings.xaml.cs\">\n      <DependentUpon>TradeSettings.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\Category.cs\" />\n    <Compile Include=\"Controls\\CharacterSelector.xaml.cs\">\n      <DependentUpon>CharacterSelector.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\Equipped.xaml.cs\">\n      <DependentUpon>Equipped.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\ForumExport.xaml.cs\">\n      <DependentUpon>ForumExport.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\ForumExportTemplateReader.cs\" />\n    <Compile Include=\"Controls\\ForumTemplate.xaml.cs\">\n      <DependentUpon>ForumTemplate.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\Inventory.xaml.cs\">\n      <DependentUpon>Inventory.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\ItemDisplay.xaml.cs\">\n      <DependentUpon>ItemDisplay.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\ItemHover.xaml.cs\">\n      <DependentUpon>ItemHover.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\ItemHoverHeader.xaml.cs\">\n      <DependentUpon>ItemHoverHeader.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\ItemHoverImage.xaml.cs\">\n      <DependentUpon>ItemHoverImage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\LeagueSelection.xaml.cs\">\n      <DependentUpon>LeagueSelection.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\RecipeResults.xaml.cs\">\n      <DependentUpon>RecipeResults.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Controls\\SetBuyoutView.xaml.cs\">\n      <DependentUpon>SetBuyoutView.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainWindow.xaml.cs\">\n      <DependentUpon>MainWindow.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Utility\\AlphaHittestedImage.cs\" />\n    <Compile Include=\"Utility\\CharacterTabInjector.cs\" />\n    <Compile Include=\"Utility\\ExportPreferenceManager.cs\" />\n    <Compile Include=\"Utility\\ItemHoverRenderer.cs\" />\n    <Compile Include=\"Utility\\PoeTradeOnlineHelper.cs\" />\n    <Compile Include=\"Utility\\StashHelper.cs\" />\n    <Compile Include=\"Utility\\VersionChecker.cs\" />\n    <Compile Include=\"ViewModel\\AdvancedSearchCategory.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\AccurayFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\CraftedModFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\CurrencyFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\DamageChaos.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\DivineVesselFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ElderItemFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\EnchantModFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\EssenceFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\FatedUniqueBaseTypesFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\FatedUniquePropheciesFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\FatedUniquesFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\FatedUniqueTargetsFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\FullBestiaryOrbFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\GearSearchFilters.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\GemLevelFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\IncreasedDamageFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\IncursionVialsFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\LeagestoneFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\LifeLeech.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ManaLeechFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\MapFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\MirroredItemFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\MovementSpeed.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\MultipleVeiledModsFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\PercentEnergyShieldFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\PercentLifeFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ProphecyFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ShaperItemFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\SixBlueSockets.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\SixGreenSockets.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\SixLink.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\SixRedSockets.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\SocketColourFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\UnknownItemFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ScarabFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\VeiledModFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\VeiledPrefixFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\VeiledSuffixFilter.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\SimpleVisitors.cs\" />\n    <Compile Include=\"ViewModel\\ObservableBase.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\MatchedSet.cs\" />\n    <Compile Include=\"ViewModel\\SetTabBuyoutViewModel.cs\" />\n    <Compile Include=\"ViewModel\\TabViewModel\\CommonTabViewModel.cs\" />\n    <Compile Include=\"ViewModel\\TabViewModel\\TabContent.cs\" />\n    <Compile Include=\"ViewModel\\TabViewModel\\TabFactory.cs\" />\n    <Compile Include=\"ViewModel\\TabViewModel\\TabVisuals.cs\" />\n    <Compile Include=\"ViewModel\\TradeSettingsViewModel.cs\" />\n    <Compile Include=\"ViewModel\\Cache\\BitmapCache.cs\" />\n    <Compile Include=\"ViewModel\\DisplayModeStrategy\\DisplayModeFactory.cs\" />\n    <Compile Include=\"ViewModel\\DisplayModeStrategy\\DisplayModeStrategyBase.cs\" />\n    <Compile Include=\"ViewModel\\DisplayModeStrategy\\IDisplayModeStrategy.cs\" />\n    <Compile Include=\"ViewModel\\DisplayModeStrategy\\NamePlusValueStrategy.cs\" />\n    <Compile Include=\"ViewModel\\DisplayModeStrategy\\StringFormatStrategy.cs\" />\n    <Compile Include=\"ViewModel\\DisplayModeStrategy\\ValuesPlusNameStrategy.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\EnergyShieldFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\IncreasedPhysicalDamageFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ManaFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ManaRegenFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\CharacterAttributeFilters.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\OrStatFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\PhysicalDamageFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\StatFilterBase.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\TypeLineFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\VaalFragmentFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\VaalUberFragmentFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ProphecyFragmentFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\AtlasFragmentFilter.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\TypeLineVisitor.cs\" />\n    <Compile Include=\"ViewModel\\PricingInfo.cs\" />\n    <Compile Include=\"ViewModel\\SetBuyoutViewModel.cs\" />\n    <Compile Include=\"ViewModel\\TabInfo.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\FilterGroup.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\AllElementalResistances.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\AllGemsFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\AllMicrotransactions.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\AndFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\AttackSpeed.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\AuraGemsFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\BuyoutFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\CastSpeed.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\CategoryManager.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ChaosResistance.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ColdResistance.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\CorruptedGemFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\CritChanceFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\GlobalCritMultiplierFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\CurseGemFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\DamageCold.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\DamageFire.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\DamageLightning.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\DamageTriple.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\DropOnlyGemFilter.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\DualRes.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ExplicitModBase.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\FireResistance.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\FiveLink.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\FourLink.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\GearTypeFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\GemCategoryFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\GlobalCritChanceFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ItemQuantityFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ItemRarityFilter.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\LeveledGemFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\LifeFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\LifeRegenFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\LightningResistance.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\Link.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\MagicRarity.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\MapLevelFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\OneHandedFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\OrFilter.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\PopularGemsFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\RarityFilter.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\QualityGemFilter.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\RareRarity.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\ResistanceBase.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\SixSocketFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\SpellDamageFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\StatFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\SupportGemsFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\TripleResistance.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\UniqueRarity.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\NormalRarity.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\XHandFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\IFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ItemFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\ForumExport\\TwoHandedFilter.cs\" />\n    <Compile Include=\"ViewModel\\Filters\\UserSearchFilter.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportViewModel.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\ExplicitModVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\GemVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\LeveledGemVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\LinksVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\MultipleBuyoutVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\SingleBuyoutVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\GearVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\IGNVistior.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\IVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\LastUpdatedVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\MagicFindVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\MapVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\QualityGemVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\StashVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\VisitorBase.cs\" />\n    <Compile Include=\"ViewModel\\ForumExportVisitors\\XHandedVisitor.cs\" />\n    <Compile Include=\"ViewModel\\ForumTemplateViewModel.cs\" />\n    <Compile Include=\"ViewModel\\InventoryViewModel.cs\" />\n    <Compile Include=\"ViewModel\\ItemHoverViewModel.cs\" />\n    <Compile Include=\"Controls\\StashTabControl.xaml.cs\">\n      <DependentUpon>StashTabControl.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"ViewModel\\ItemDisplayViewModel.cs\" />\n    <Compile Include=\"ViewModel\\ItemHoverViewModelFactory.cs\" />\n    <Compile Include=\"ViewModel\\LoginWindowViewModel.cs\" />\n    <Compile Include=\"ViewModel\\MainPageViewModel.cs\" />\n    <Compile Include=\"ViewModel\\RecipeResultViewModel.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\ArmourersScrapRecipe.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\BlacksmithsWhetstoneRecipe.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\CartographersChiselRecipe.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\ChromaticRecipe.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\GCPRecipe.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\GlassblowersBaubleRecipe.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\MinimumQualityRecipe.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\RareSetRecipe.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\Recipe.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\RecipeManager.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\RecipeResult.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\SameBaseTypeRecipe.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\SameNameRecipe.cs\" />\n    <Compile Include=\"ViewModel\\ScreenController.cs\" />\n    <Compile Include=\"ViewModel\\SettingsViewModel.cs\" />\n    <Compile Include=\"ViewModel\\TabViewModel\\StashViewModel.cs\" />\n    <Compile Include=\"ViewModel\\StatusController.cs\" />\n    <Compile Include=\"ViewModel\\TradingViewModel.cs\" />\n    <Compile Include=\"View\\AboutView.xaml.cs\">\n      <DependentUpon>AboutView.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"View\\BindableRichTextBox.cs\" />\n    <Compile Include=\"View\\Block.xaml.cs\">\n      <DependentUpon>Block.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"View\\Converters\\CharacterToImageConverter.cs\" />\n    <Compile Include=\"View\\Converters\\CharacterToLevelConverter.cs\" />\n    <Compile Include=\"View\\Converters\\CurrencyCraftingSlotScalingConverter.cs\" />\n    <Compile Include=\"View\\Converters\\FilterListToNameConverter.cs\" />\n    <Compile Include=\"View\\Converters\\ItemDisplayConverter.cs\" />\n    <Compile Include=\"View\\Converters\\ItemExplicitModsToFormattedRunConverter.cs\" />\n    <Compile Include=\"View\\Converters\\ItemPropertyToFormattedRunConverter.cs\" />\n    <Compile Include=\"View\\Converters\\ItemRequirementToFormattedRunConverter.cs\" />\n    <Compile Include=\"View\\Converters\\ItemToColorBrushConverter.cs\" />\n    <Compile Include=\"View\\Converters\\ItemToItemHoverSymbolPath.cs\" />\n    <Compile Include=\"View\\Converters\\ItemToItemHoverSymbolVisibility.cs\" />\n    <Compile Include=\"View\\Converters\\ObjectInListMultiConverter.cs\" />\n    <Compile Include=\"View\\Converters\\RecipeDescriptionConverter.cs\" />\n    <Compile Include=\"View\\Converters\\ResultMatchConverter.cs\" />\n    <Compile Include=\"View\\Converters\\TabIDToStashControlConverter.cs\" />\n    <Compile Include=\"View\\InventoryView.xaml.cs\">\n      <DependentUpon>InventoryView.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"View\\IViewModel.cs\" />\n    <Compile Include=\"View\\LoadingAnimation.xaml.cs\">\n      <DependentUpon>LoadingAnimation.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"View\\LoginView.xaml.cs\">\n      <DependentUpon>LoginView.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"View\\RecipeView.xaml.cs\">\n      <DependentUpon>RecipeView.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"View\\RefreshView.xaml.cs\">\n      <DependentUpon>RefreshView.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"View\\SettingsView.xaml.cs\">\n      <DependentUpon>SettingsView.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"View\\StashView.xaml.cs\">\n      <DependentUpon>StashView.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"View\\TradingView.xaml.cs\">\n      <DependentUpon>TradingView.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"View\\VisibilityConverter.cs\" />\n    <Compile Include=\"View\\VisualTreeHelper.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\">\n      <SubType>Code</SubType>\n    </Compile>\n    <Compile Include=\"Properties\\Resources.Designer.cs\">\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n      <DependentUpon>Resources.resx</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\Settings.Designer.cs\">\n      <AutoGen>True</AutoGen>\n      <DependentUpon>Settings.settings</DependentUpon>\n      <DesignTimeSharedInput>True</DesignTimeSharedInput>\n    </Compile>\n    <EmbeddedResource Include=\"Properties\\Resources.resx\">\n      <Generator>ResXFileCodeGenerator</Generator>\n      <LastGenOutput>Resources.Designer.cs</LastGenOutput>\n    </EmbeddedResource>\n    <None Include=\"app.config\" />\n    <None Include=\"packages.config\" />\n    <None Include=\"Properties\\Settings.settings\">\n      <Generator>SettingsSingleFileGenerator</Generator>\n      <LastGenOutput>Settings.Designer.cs</LastGenOutput>\n    </None>\n    <AppDesigner Include=\"Properties\\\" />\n    <Resource Include=\"Resources\\fontin-regular-webfont.ttf\" />\n    <Resource Include=\"Resources\\fontin-smallcaps-webfont.ttf\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Page Include=\"Controls\\EssenceStashTab.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Controls\\CurrencyStashTab.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\FragmentStashTab.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\SetTabBuyoutView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\TradeSettings.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\CharacterSelector.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\ExpressionDark.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\Equipped.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Controls\\ExpressionDarkGrid.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\ExpressionDarkGrid_brushes.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"Controls\\ForumExport.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\ForumTemplate.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\Inventory.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\ItemDisplay.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\ItemHover.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\ItemHoverHeader.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\ItemHoverImage.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\LeagueSelection.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\RecipeResults.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\SetBuyoutView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\StashTabControl.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"Controls\\TabControlStyle.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"MainWindow.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"View\\AboutView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"View\\Block.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"View\\InventoryView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"View\\LoadingAnimation.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"View\\LoginView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"View\\RecipeView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"View\\RefreshView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"View\\SettingsView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"View\\StashView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n    <Page Include=\"View\\TradingView.xaml\">\n      <SubType>Designer</SubType>\n      <Generator>MSBuild:Compile</Generator>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\POEApi.Infrastructure\\POEApi.Infrastructure.csproj\">\n      <Project>{2F0E4301-694B-4A26-80D8-D57042DA9D6F}</Project>\n      <Name>POEApi.Infrastructure</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\POEApi.Model\\POEApi.Model.csproj\">\n      <Project>{9841DD07-224D-4534-B9D1-F934C1D7BC73}</Project>\n      <Name>POEApi.Model</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\POEApi.Transport\\POEApi.Transport.csproj\">\n      <Project>{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}</Project>\n      <Name>POEApi.Transport</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <BootstrapperPackage Include=\".NETFramework,Version=v4.0,Profile=Client\">\n      <Visible>False</Visible>\n      <ProductName>Microsoft .NET Framework 4 Client Profile %28x86 and x64%29</ProductName>\n      <Install>true</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Net.Client.3.5\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>\n      <Install>false</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Net.Framework.3.5.SP1\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework 3.5 SP1</ProductName>\n      <Install>false</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Windows.Installer.3.1\">\n      <Visible>False</Visible>\n      <ProductName>Windows Installer 3.1</ProductName>\n      <Install>true</Install>\n    </BootstrapperPackage>\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\Procurement.ico\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\footer.png\" />\n    <Resource Include=\"Images\\header.png\" />\n    <Resource Include=\"Images\\main.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\equiped.jpg\" />\n    <Resource Include=\"Images\\stash-grid.jpg\" />\n    <Resource Include=\"Images\\inventory.jpg\" />\n    <Resource Include=\"Images\\character-background.png\" />\n    <Resource Include=\"Images\\mainscreen.png\" />\n    <Resource Include=\"Images\\Sir Marauder.png\" />\n    <Resource Include=\"Images\\Sir Marauder bw.jpg\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\buttons\\btn_about.png\" />\n    <Resource Include=\"Images\\buttons\\btn_contacts.png\" />\n    <Resource Include=\"Images\\buttons\\btn_inventory.png\" />\n    <Resource Include=\"Images\\buttons\\btn_selected_about.png\" />\n    <Resource Include=\"Images\\buttons\\btn_selected_contacts.png\" />\n    <Resource Include=\"Images\\buttons\\btn_selected_settings.png\" />\n    <Resource Include=\"Images\\buttons\\btn_selected_trading.png\" />\n    <Resource Include=\"Images\\buttons\\btn_select_inventory.png\" />\n    <Resource Include=\"Images\\buttons\\btn_select_stash.png\" />\n    <Resource Include=\"Images\\buttons\\btn_settings.png\" />\n    <Resource Include=\"Images\\buttons\\btn_stash.png\" />\n    <Resource Include=\"Images\\buttons\\btn_trading.png\" />\n    <Resource Include=\"Images\\buttons\\btn_login.png\" />\n    <Resource Include=\"Images\\buttons\\btn_login_hover.png\" />\n    <Resource Include=\"Images\\buttons\\btn_offline.png\" />\n    <Resource Include=\"Images\\buttons\\btn_offline_hover.png\" />\n    <Resource Include=\"Images\\buttons\\btn_exit.png\" />\n    <Resource Include=\"Images\\buttons\\btn_selected_exit.png\" />\n    <Resource Include=\"Images\\buttons\\btn_close.png\" />\n    <Resource Include=\"Images\\buttons\\btn_close_hover.png\" />\n    <Resource Include=\"Images\\buttons\\btn_min.png\" />\n    <Resource Include=\"Images\\buttons\\btn_min_hover.png\" />\n    <Resource Include=\"Images\\buttons\\btn_recipes.png\" />\n    <Resource Include=\"Images\\buttons\\btn_recipes_hover.png\" />\n    <Resource Include=\"Images\\buttons\\donate-hover.png\" />\n    <Resource Include=\"Images\\buttons\\donate.png\" />\n    <Resource Include=\"Images\\buttons\\about-button-hover.png\" />\n    <Resource Include=\"Images\\buttons\\about-button.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\TabControl\\leftbutton-hover.png\" />\n    <Resource Include=\"Images\\TabControl\\leftbutton.png\" />\n    <Resource Include=\"Images\\TabControl\\rightbutton.png\" />\n    <Resource Include=\"Images\\TabControl\\rightbutton_hover.png\" />\n    <Resource Include=\"Images\\TabControl\\stash-dropdown.png\" />\n    <Resource Include=\"Images\\TabControl\\stash-dropdown-hover.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\Avatars\\templar.png\" />\n    <Resource Include=\"Images\\Avatars\\marauder.png\" />\n    <Resource Include=\"Images\\Avatars\\ranger.png\" />\n    <Resource Include=\"Images\\Avatars\\shadow.png\" />\n    <Resource Include=\"Images\\Avatars\\witch.png\" />\n    <Resource Include=\"Images\\Avatars\\duelist.png\" />\n    <Resource Include=\"Images\\Avatars\\scion.png\" />\n    <Resource Include=\"Images\\Avatars\\ascendant.png\" />\n    <Resource Include=\"Images\\Avatars\\assassin.png\" />\n    <Resource Include=\"Images\\Avatars\\berserker.png\" />\n    <Resource Include=\"Images\\Avatars\\champion.png\" />\n    <Resource Include=\"Images\\Avatars\\chieftain.png\" />\n    <Resource Include=\"Images\\Avatars\\deadeye.png\" />\n    <Resource Include=\"Images\\Avatars\\elementalist.png\" />\n    <Resource Include=\"Images\\Avatars\\gladiator.png\" />\n    <Resource Include=\"Images\\Avatars\\guardian.png\" />\n    <Resource Include=\"Images\\Avatars\\hierophant.png\" />\n    <Resource Include=\"Images\\Avatars\\inquisitor.png\" />\n    <Resource Include=\"Images\\Avatars\\juggernaut.png\" />\n    <Resource Include=\"Images\\Avatars\\necromancer.png\" />\n    <Resource Include=\"Images\\Avatars\\occultist.png\" />\n    <Resource Include=\"Images\\Avatars\\pathfinder.png\" />\n    <Resource Include=\"Images\\Avatars\\raider.png\" />\n    <Resource Include=\"Images\\Avatars\\saboteur.png\" />\n    <Resource Include=\"Images\\Avatars\\slayer.png\" />\n    <Resource Include=\"Images\\Avatars\\trickster.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderWhiteLeft.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderWhiteMiddle.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderWhiteRight.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderCurrencyLeft.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderCurrencyMiddle.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderCurrencyRight.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderGemLeft.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderGemMiddle.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderGemRight.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderMagicLeft.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderMagicMiddle.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderMagicRight.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderQuestLeft.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderQuestMiddle.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderQuestRight.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderRareLeft.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderRareMiddle.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderRareRight.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderUniqueLeft.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderUniqueMiddle.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderUniqueRight.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\Sockets\\blue.png\" />\n    <Resource Include=\"Images\\Sockets\\green.png\" />\n    <Resource Include=\"Images\\Sockets\\red.png\" />\n    <Resource Include=\"Images\\Sockets\\white.png\" />\n    <Resource Include=\"Images\\Sockets\\white-socketed.png\" />\n    <Resource Include=\"Images\\Sockets\\blue-socketed.png\" />\n    <Resource Include=\"Images\\Sockets\\green-socketed.png\" />\n    <Resource Include=\"Images\\Sockets\\red-socketed.png\" />\n    <Resource Include=\"Images\\Sockets\\blue-socketed-white.png\" />\n    <Resource Include=\"Images\\Sockets\\green-socketed-white.png\" />\n    <Resource Include=\"Images\\Sockets\\red-socketed-white.png\" />\n    <Resource Include=\"Images\\Sockets\\white-socketed-white.png\" />\n    <Resource Include=\"Images\\Sockets\\link-horizontal.png\" />\n    <Resource Include=\"Images\\Sockets\\link-vertical.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <EmbeddedResource Include=\"ForumExportTemplate.txt\">\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </EmbeddedResource>\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\ItemHover\\ItemsHeaderProphecyLeft.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemsHeaderProphecyMiddle.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemsHeaderProphecyRight.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderRelicLeft.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderRelicMiddle.png\" />\n    <Resource Include=\"Images\\ItemHover\\ItemHeaderRelicRight.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\currencyTab.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\essenceTab.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\circleQuestion.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\Sockets\\abyssal-socketed.png\" />\n    <Resource Include=\"Images\\Sockets\\abyssal.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\stash-quad-grid.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\ItemHover\\ElderIconAdorner.png\" />\n    <Resource Include=\"Images\\ItemHover\\ShaperIconAdorner.png\" />\n    <Resource Include=\"Images\\ItemHover\\VeiledIconAdorner.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\fragmentTab.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Resource Include=\"Images\\ItemHover\\FracturedIconAdorner.png\" />\n    <Resource Include=\"Images\\ItemHover\\SynthesisedIconAdorner.png\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <PropertyGroup>\n    <PostBuildEvent>copy /Y \"$(SolutionDir)LICENSE\" \"$(TargetDir)LICENSE\"\ncopy /Y \"$(SolutionDir)README.md\" \"$(TargetDir)README.md\"</PostBuildEvent>\n  </PropertyGroup>\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.\n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Procurement/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Resources;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\nusing System.Windows;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"Procurement\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"Procurement\")]\n[assembly: AssemblyCopyright(\"Artistic License 2.0\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n//In order to begin building localizable applications, set \n//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file\n//inside a <PropertyGroup>.  For example, if you are using US english\n//in your source files, set the <UICulture> to en-US.  Then uncomment\n//the NeutralResourceLanguage attribute below.  Update the \"en-US\" in\n//the line below to match the UICulture setting in the project file.\n\n//[assembly: NeutralResourcesLanguage(\"en-US\", UltimateResourceFallbackLocation.Satellite)]\n\n\n[assembly: ThemeInfo(\n    ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located\n    //(used if a resource is not found in the page, \n    // or application resource dictionaries)\n    ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located\n    //(used if a resource is not found in the page, \n    // app, or any theme specific resource dictionaries)\n)]\n\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.29.2.0\")]\n[assembly: AssemblyFileVersion(\"1.29.2.0\")]\n"
  },
  {
    "path": "Procurement/Properties/Resources.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.42000\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace Procurement.Properties {\r\n    using System;\r\n    \r\n    \r\n    /// <summary>\r\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\r\n    /// </summary>\r\n    // This class was auto-generated by the StronglyTypedResourceBuilder\r\n    // class via a tool like ResGen or Visual Studio.\r\n    // To add or remove a member, edit your .ResX file then rerun ResGen\r\n    // with the /str option, or rebuild your VS project.\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"4.0.0.0\")]\r\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    internal class Resources {\r\n        \r\n        private static global::System.Resources.ResourceManager resourceMan;\r\n        \r\n        private static global::System.Globalization.CultureInfo resourceCulture;\r\n        \r\n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\r\n        internal Resources() {\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Returns the cached ResourceManager instance used by this class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Resources.ResourceManager ResourceManager {\r\n            get {\r\n                if (object.ReferenceEquals(resourceMan, null)) {\r\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"Procurement.Properties.Resources\", typeof(Resources).Assembly);\r\n                    resourceMan = temp;\r\n                }\r\n                return resourceMan;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Overrides the current thread's CurrentUICulture property for all\r\n        ///   resource lookups using this strongly typed resource class.\r\n        /// </summary>\r\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r\n        internal static global::System.Globalization.CultureInfo Culture {\r\n            get {\r\n                return resourceCulture;\r\n            }\r\n            set {\r\n                resourceCulture = value;\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized string similar to .\r\n        /// </summary>\r\n        internal static string AppFont {\r\n            get {\r\n                return ResourceManager.GetString(\"AppFont\", resourceCulture);\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Byte[].\r\n        /// </summary>\r\n        internal static byte[] fontin_regular_webfont {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"fontin_regular_webfont\", resourceCulture);\r\n                return ((byte[])(obj));\r\n            }\r\n        }\r\n        \r\n        /// <summary>\r\n        ///   Looks up a localized resource of type System.Byte[].\r\n        /// </summary>\r\n        internal static byte[] fontin_smallcaps_webfont {\r\n            get {\r\n                object obj = ResourceManager.GetObject(\"fontin_smallcaps_webfont\", resourceCulture);\r\n                return ((byte[])(obj));\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "Procurement/Properties/Resources.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"AppFont\" xml:space=\"preserve\">\n    <value />\n  </data>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"fontin_regular_webfont\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>..\\Resources\\fontin-regular-webfont.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"fontin_smallcaps_webfont\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>..\\Resources\\fontin-smallcaps-webfont.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n</root>"
  },
  {
    "path": "Procurement/Properties/Settings.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\r\n// <auto-generated>\r\n//     This code was generated by a tool.\r\n//     Runtime Version:4.0.30319.42000\r\n//\r\n//     Changes to this file may cause incorrect behavior and will be lost if\r\n//     the code is regenerated.\r\n// </auto-generated>\r\n//------------------------------------------------------------------------------\r\n\r\nnamespace Procurement.Properties {\r\n    \r\n    \r\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator\", \"14.0.0.0\")]\r\n    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {\r\n        \r\n        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));\r\n        \r\n        public static Settings Default {\r\n            get {\r\n                return defaultInstance;\r\n            }\r\n        }\r\n    }\r\n}\r\n"
  },
  {
    "path": "Procurement/Properties/Settings.settings",
    "content": "﻿<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"uri:settings\" CurrentProfile=\"(Default)\">\n  <Profiles>\n    <Profile Name=\"(Default)\" />\n  </Profiles>\n  <Settings />\n</SettingsFile>"
  },
  {
    "path": "Procurement/RelayCommand.cs",
    "content": "using System;\nusing System.Diagnostics;\nusing System.Windows.Input;\n\nnamespace Procurement.View.ViewModel\n{\n    public class RelayCommand : ICommand\n    {\n        #region Fields\n\n        readonly Action<object> execute;\n        readonly Predicate<object> canExecute;\n\n        #endregion\n\n        #region Constructors\n\n        public RelayCommand(Action<object> execute)\n            : this(execute, null)\n        {\n        }\n\n        public RelayCommand(Action<object> execute, Predicate<object> canExecute)\n        {\n            if (execute == null)\n                throw new ArgumentNullException(\"execute\");\n\n            this.execute = execute;\n            this.canExecute = canExecute;\n        }\n        #endregion\n\n        #region ICommand Members\n\n        [DebuggerStepThrough]\n        public bool CanExecute(object parameter)\n        {\n            return canExecute == null ? true : canExecute(parameter);\n        }\n\n        public event EventHandler CanExecuteChanged\n        {\n            add { CommandManager.RequerySuggested += value; }\n            remove { CommandManager.RequerySuggested -= value; }\n        }\n\n        public void Execute(object parameter)\n        {\n            execute(parameter);\n        }\n\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Procurement/Utility/AlphaHittestedImage.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing System.Windows.Media;\nusing System.Windows.Media.Imaging;\nusing Image = System.Windows.Controls.Image;\n\nnamespace Procurement.Utility\n{\n    public class AlphaHittestedImage : Image\n    {\n        protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)\n        {\n            var alpha = GetAlphaColor(hitTestParameters.HitPoint);\n            if (alpha == 0)\n                return null;\n\n            return base.HitTestCore(hitTestParameters);\n        }\n\n        private byte GetAlphaColor(Point hitPoint)\n        {\n            var image = (BitmapImage)Source;\n            int stride = (image.PixelWidth * image.Format.BitsPerPixel + 7) / 8;\n            var pixels = new byte[image.PixelHeight * stride];\n\n            image.CopyPixels(pixels, stride, 0);\n\n            int index = (int)hitPoint.Y * stride + 4 * (int)hitPoint.X;\n\n            if (pixels.Length <= index)\n                return 0;\n\n            return pixels[index];\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Utility/CharacterTabInjector.cs",
    "content": "﻿using System.Linq;\nusing POEApi.Infrastructure;\nusing POEApi.Model;\nusing System.Collections.Generic;\nusing System;\n\nnamespace Procurement.Utility\n{\n    public class CharacterInventory\n    {\n        public Character Character { get; set; }\n        public List<Item> Inventory { get; set; }\n\n        public CharacterInventory(Character character, List<Item> inventory)\n        {\n            Character = character;\n            Inventory = inventory;\n        }\n    }\n    \n    public class CharacterTabInjector\n    {\n        // TODO(20190613): Dynamically determine what URLs to use, based on data for other [real] tabs.\n        private const string tabImageCenter = @\"https://web.poecdn.com/gen/image/WzIzLDEseyJ0IjoibSIsImMiOi0xMzQ4NzU2Nn1d/4470380632/Stash_TabL.png\";\n        private const string tabImageLeft = @\"https://web.poecdn.com/gen/image/WzIzLDEseyJ0IjoibCIsImMiOi0xMzQ4NzU2Nn1d/0ce8f75b7c/Stash_TabL.png\";\n        private const string tabImageRight = @\"https://web.poecdn.com/gen/image/WzIzLDEseyJ0IjoiciIsImMiOi0xMzQ4NzU2Nn1d/b85f086896/Stash_TabL.png\";\n\n        private List<CharacterInventory> characterInventories;\n\n        public CharacterTabInjector()\n        {\n            characterInventories = new List<CharacterInventory>();\n        }\n\n        public void Add(Character character, List<Item> inventory)\n        {\n            characterInventories.Add(new CharacterInventory(character, inventory));\n        }\n\n        internal void Inject()\n        {\n            foreach (var poison in characterInventories)\n                inject(poison.Character, poison.Inventory);\n        }\n        \n        private void inject(Character character, IEnumerable<Item> inventory)\n        {\n            ApplicationState.Stash[character.League].NumberOfTabs++;\n\n            var tabID = getTabID(character);\n            var inventoryID = tabID + 1;\n\n            List<Item> characterItems = CharacterStashBuilder.GetCharacterStashItems(character.Name, inventory, inventoryID);\n\n            Tab characterTab = new Tab\n            {\n                IsFakeTab = true,\n                Name = character.Name,\n                i = tabID,\n                srcC = tabImageCenter,\n                srcL = tabImageLeft,\n                srcR = tabImageRight,\n\n            };\n\n            ApplicationState.Stash[character.League].AddCharacterTab(characterTab, characterItems);\n        }\n\n        private static int getTabID(Character character)\n        {\n            try\n            {\n                return ApplicationState.Stash[character.League].Tabs.OrderByDescending(t => t.i).First().i + 1;\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(string.Format(\"Error getting tabId for character {0} in league '{1}', exception details: {2}\", character.Name, character.League, ex.ToString()));\n                return ApplicationState.Stash[character.League].NumberOfTabs;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Utility/ClientLogFileEventArgs.cs",
    "content": "﻿using System;\n\nnamespace Procurement.Utility\n{\n    public class ClientLogFileEventArgs : EventArgs\n    {\n        public DateTime EventDateTime { get; private set; }\n        public long EventTimestamp { get; private set; }\n        public string LocationEntered { get; private set; }\n\n        public ClientLogFileEventArgs(DateTime eventDateTime, long eventTimestamp, string locationEntered)\n        {\n            EventDateTime = eventDateTime;\n            EventTimestamp = eventTimestamp;\n            LocationEntered = locationEntered;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Utility/ClientLogFileWatcher.cs",
    "content": "﻿using POEApi.Infrastructure;\nusing POEApi.Model;\nusing System;\nusing System.IO;\nusing System.Linq;\nusing System.Text.RegularExpressions;\n\nnamespace Procurement.Utility\n{\n    class ClientLogFileWatcher\n    {\n        private const string _clientLogFileLocationConfigName = \"ClientLogFileLocation\";\n        private const string _enableClientLogFileMonitoringConfigName = \"EnableClientLogFileMonitoring\";\n        private const int _clientLogFilePollingIntervalMilliseconds = 30000;  // 30 seconds\n\n        private static ClientLogFileWatcher _instance;\n        public static ClientLogFileWatcher Instance\n        {\n            get\n            {\n                if (_instance == null)\n                    _instance = new ClientLogFileWatcher();\n\n                return _instance;\n            }\n        }\n\n        protected static FileSystemWatcher FileWatcher\n        {\n            get;\n            private set;\n        }\n\n        public delegate void ClientLogFileEventHandler(ClientLogFileWatcher sender, ClientLogFileEventArgs e);\n        public static event ClientLogFileEventHandler ClientLogFileChanged;\n\n        public DateTime LastDateTimeSeen\n        {\n            get;\n            protected set;\n        }\n\n        public long LastTimestampSeen\n        {\n            get;\n            protected set;\n        }\n\n        public long LastFileSizeSeen\n        {\n            get;\n            protected set;\n        }\n\n        protected System.Timers.Timer PollingTimer\n        {\n            get;\n            set;\n        }\n\n        protected Regex LocationChangedRegex\n        {\n            get;\n            set;\n        }\n\n        protected void Initialize()\n        {\n            if (!Settings.UserSettings.Keys.Contains(_clientLogFileLocationConfigName))\n                return;\n            string fullFilePath = Settings.UserSettings[_clientLogFileLocationConfigName];\n            if (string.IsNullOrWhiteSpace(fullFilePath))\n                return;\n\n            if (FileWatcher == null)\n            {\n                FileWatcher = new FileSystemWatcher();\n                FileWatcher.Path = Path.GetDirectoryName(fullFilePath);\n                FileWatcher.Filter = Path.GetFileName(fullFilePath);\n                FileWatcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size | NotifyFilters.LastAccess;\n\n                FileWatcher.Changed += OnFileChanged;\n            }\n\n            if (PollingTimer == null)\n            {\n                PollingTimer = new System.Timers.Timer();\n                PollingTimer.Elapsed += (s, e) => { ReadClientLogFile(); };\n                PollingTimer.Interval = _clientLogFilePollingIntervalMilliseconds;\n            }\n\n            // Regex to catch lines formatted like:\n            //   2019/06/21 19:16:37 245842781 aa1 [INFO Client 19844] : You have entered Sunspire Hideout.\n            LocationChangedRegex = new Regex(\n                @\"(\\d{4}/\\d{2}/\\d{2} \\d{2}:\\d{2}:\\d{2}) (\\d+) [^ .]* \\[.*\\] : You have entered (.*).$\",\n                RegexOptions.Compiled);\n        }\n\n        internal void Start()\n        {\n            if (!Settings.UserSettings.Keys.Contains(_enableClientLogFileMonitoringConfigName))\n                return;\n            var enabled = Convert.ToBoolean(Settings.UserSettings[_enableClientLogFileMonitoringConfigName]);\n            if (!enabled)\n                return;\n\n            if (FileWatcher == null)\n                Initialize();\n\n            FileWatcher.EnableRaisingEvents = true;\n\n            if (!PollingTimer.Enabled)\n                PollingTimer.Start();\n        }\n\n        internal void Stop()\n        {\n            if (FileWatcher != null)\n                FileWatcher.EnableRaisingEvents = false;\n\n            PollingTimer.Stop();\n        }\n\n        protected void ReadClientLogFile()\n        {\n            lock (Instance)\n            {\n                try\n                {\n                    using (Stream stream = new FileStream(Settings.UserSettings[_clientLogFileLocationConfigName],\n                        FileMode.Open, FileAccess.Read, FileShare.ReadWrite))\n                    using (var reader = new StreamReader(stream))\n                    {\n                        // Quit early if the log file is no longer than the last time we read it.\n                        if (reader.BaseStream.Length <= Instance.LastFileSizeSeen)\n                        {\n                            Instance.LastFileSizeSeen = reader.BaseStream.Length;\n                            return;\n                        }\n\n                        reader.BaseStream.Seek(Instance.LastFileSizeSeen, System.IO.SeekOrigin.Begin);\n\n                        DateTime eventTime = Instance.LastDateTimeSeen;\n                        long eventTimestamp = Instance.LastTimestampSeen;\n                        string line, location;\n                        while ((line = reader.ReadLine()) != null)\n                        {\n                            Match match = LocationChangedRegex.Match(line);\n                            if (!match.Success)\n                                continue;\n\n                            eventTime = DateTime.ParseExact(match.Groups[1].Value, \"yyyy/MM/dd HH:mm:ss\",\n                                System.Globalization.CultureInfo.InvariantCulture);\n                            if (!long.TryParse(match.Groups[2].Value, out eventTimestamp))\n                            {\n                                Logger.Log(string.Format(\"Failed to parse event timestamp from string '{0}'.\",\n                                    match.Groups[2].Value));\n                            }\n                            location = match.Groups[3].Value;\n\n                            if ((DateTime.Now - eventTime).TotalSeconds > 600 ||\n                                eventTime < Instance.LastDateTimeSeen)\n                            {\n                                continue;\n                            }\n\n                            ClientLogFileChanged?.Invoke(Instance,\n                                new ClientLogFileEventArgs(eventTime, eventTimestamp, location));\n                        }\n\n                        Instance.LastDateTimeSeen = eventTime;\n                        Instance.LastTimestampSeen = eventTimestamp;\n                        Instance.LastFileSizeSeen = reader.BaseStream.Length;\n                    }\n                }\n                catch (IOException ex)\n                {\n                    Logger.Log(string.Format(\"Failed to open config log file: {0}\", ex.ToString()));\n                }\n            }\n        }\n\n        protected static void OnFileChanged(object source, FileSystemEventArgs e)\n        {\n            Instance.ReadClientLogFile();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Utility/ExportPreferenceManager.cs",
    "content": "﻿using POEApi.Infrastructure;\nusing Procurement.ViewModel;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Xml.Linq;\n\nnamespace Procurement.Utility\n{\n    internal class ExportPreferenceManager\n    {\n        private const string FILENAME = \"tabprefs.xml\";\n        private Dictionary<string, List<int>> leagueSelectedTabs;\n        private XElement xmlDoc;\n\n        private List<int> selectedTabs\n        {\n            get\n            {\n                if (!leagueSelectedTabs.ContainsKey(ApplicationState.CurrentLeague))\n                    leagueSelectedTabs[ApplicationState.CurrentLeague] = new List<int>();\n\n                return leagueSelectedTabs[ApplicationState.CurrentLeague];\n            }\n        }\n\n        internal ExportPreferenceManager()\n        {\n            leagueSelectedTabs = new Dictionary<string, List<int>>();\n            leagueSelectedTabs.Add(ApplicationState.CurrentLeague, new List<int>());\n\n            loadPreferences();\n        }\n\n        internal List<int> SetTabsAndGetsSelected(List<TabInfo> tabs)\n        {\n            try\n            {\n                foreach (var tab in tabs)\n                    if (selectedTabs.Contains(tab.ID))\n                        tab.IsChecked = true;\n\n                return selectedTabs;\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Error setting selected tabs: \" + ex.ToString());                \n                return new List<int>();\n            }\n        }\n\n        internal void UpdateTabSelection(TabInfo tabInfo)\n        {\n            try\n            {\n                if (tabInfo.IsChecked && !selectedTabs.Contains(tabInfo.ID))\n                    selectedTabs.Add(tabInfo.ID);\n\n                if (!tabInfo.IsChecked && selectedTabs.Contains(tabInfo.ID))\n                    selectedTabs.Remove(tabInfo.ID);\n\n                savePreferences();\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Error updating tab selection: \" + ex.ToString());\n            }\n        }\n\n        private void savePreferences()\n        {\n            try\n            {\n                xmlDoc.RemoveNodes();\n\n                foreach (var set in leagueSelectedTabs)\n                    foreach (var id in set.Value)\n                        xmlDoc.Add(new XElement(\"TabPreference\", new XAttribute(\"League\", set.Key), new XAttribute(\"Id\", id)));\n\n                xmlDoc.Save(FILENAME);\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Error saving tab preferences: \" + ex.ToString());\n            }\n        }\n\n        private void loadPreferences()\n        {\n            try\n            {\n                if (!File.Exists(FILENAME))\n                {\n                    this.xmlDoc = new XElement(\"TabPreferences\");\n                    return;\n                }\n\n                this.xmlDoc = XElement.Load(FILENAME);\n\n                var prefs = xmlDoc.Elements(\"TabPreference\");\n\n                foreach (var league in prefs.Select(x => x.Attribute(\"League\").Value).Distinct())\n                    if (!leagueSelectedTabs.ContainsKey(league))\n                        leagueSelectedTabs[league] = new List<int>();\n\n                foreach (var preference in prefs)\n                {\n                    if (!leagueSelectedTabs.ContainsKey(preference.Attribute(\"League\").Value))\n                        leagueSelectedTabs[preference.Attribute(\"League\").Value] = new List<int>();\n\n                    leagueSelectedTabs[preference.Attribute(\"League\").Value].Add(Convert.ToInt32(preference.Attribute(\"Id\").Value));\n                }\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Error loading tab preferences: \" + ex.ToString());\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Utility/ItemHoverRenderer.cs",
    "content": "﻿using Microsoft.Win32;\nusing POEApi.Infrastructure;\nusing POEApi.Model;\nusing Procurement.Controls;\nusing Procurement.ViewModel;\nusing System;\nusing System.IO;\nusing System.Windows;\nusing System.Windows.Media;\nusing System.Windows.Media.Imaging;\nusing System.Windows.Threading;\n\nnamespace Procurement.Utility\n{\n    internal class ItemHoverRenderer\n    {\n        private const string SAVE_LOCATION = \"Saved Gear Images\";\n\n        internal static void SaveToDisk(Item item, Dispatcher dispatcher)\n        {\n            try\n            {\n                createSaveFolder();\n\n                SaveFileDialog saveDialog = new SaveFileDialog();\n\n                saveDialog.InitialDirectory = string.Format(\"{0}\\\\{1}\", Environment.CurrentDirectory, SAVE_LOCATION);\n                saveDialog.FileName = string.Format(\"{0} - {1}.png\", item.Name, DateTime.Now.ToString(\"dd-MM-yyyy-HH-mm-ss\"));\n                saveDialog.Filter = \"png files (*.png)|*.png|All files (*.*)|*.*\";\n                saveDialog.FilterIndex = 2;\n                saveDialog.RestoreDirectory = true;\n\n                var result = saveDialog.ShowDialog();\n\n                if (!result.HasValue || !result.Value)\n                    return;\n\n                var itemHover = new ItemHoverImage() { DataContext = ItemHoverViewModelFactory.Create(item) };\n\n                itemHover.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));\n                itemHover.Arrange(new Rect(itemHover.DesiredSize));\n\n                dispatcher.Invoke(DispatcherPriority.Loaded, new Action(() => { }));\n\n                RenderTargetBitmap renderTarget = new RenderTargetBitmap((int)(itemHover.ActualWidth * 1.24), (int)(itemHover.ActualHeight * 1.24), 120, 120, PixelFormats.Pbgra32);\n                renderTarget.Render(itemHover);\n\n                BitmapEncoder encoder = new PngBitmapEncoder();\n                encoder.Frames.Add(BitmapFrame.Create(renderTarget));\n\n                createSaveFolder();\n\n                using (var fileStream = File.OpenWrite(saveDialog.FileName))\n                {\n                    encoder.Save(fileStream);\n                }\n\n                MessageBox.Show(\"Image saved\", item.Name + \" saved\", MessageBoxButton.OK, MessageBoxImage.Information);\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Unable to save hover-image to disk : \" + ex.ToString());\n                MessageBox.Show(\"Error saving image, error logged to DebugInfo.log\", \"Error\", MessageBoxButton.OK, MessageBoxImage.Error);\n            }\n        }\n\n        private static void createSaveFolder()\n        {\n            if (!Directory.Exists(SAVE_LOCATION))\n                Directory.CreateDirectory(SAVE_LOCATION);\n        }\n\n        private static bool displaySaveDialog()\n        {\n            SaveFileDialog saveDialog = new SaveFileDialog();\n\n            saveDialog.Filter = \"png files (*.png)|*.png|All files (*.*)|*.*\";\n            saveDialog.FilterIndex = 2;\n            saveDialog.RestoreDirectory = true;\n\n            var result = saveDialog.ShowDialog();\n\n            return result.HasValue && result.Value;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Utility/PoeTradeOnlineHelper.cs",
    "content": "﻿using POEApi.Infrastructure;\nusing POEApi.Model;\nusing System;\nusing System.Collections.Specialized;\nusing System.Diagnostics;\nusing System.Net;\nusing System.Runtime.InteropServices;\nusing System.Timers;\nusing System.Windows;\nusing System.Linq;\n\nnamespace Procurement.Utility\n{\n    class PoeTradeOnlineHelper\n    {\n\n        private static PoeTradeOnlineHelper instance;\n        private Timer refreshTimer;\n        private Uri refreshUri;\n\n        private const double TWO_MINUTES = 120000;\n\n        [DllImport(\"user32.dll\")]\n        private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);\n\n        [StructLayout(LayoutKind.Sequential)]\n        private struct LASTINPUTINFO\n        {\n            public static readonly int SizeOf = Marshal.SizeOf(typeof(LASTINPUTINFO));\n            [MarshalAs(UnmanagedType.U4)]\n            public UInt32 cbSize;\n            [MarshalAs(UnmanagedType.U4)]\n            public UInt32 dwTime;\n        }\n\n        private PoeTradeOnlineHelper()\n        {\n            refreshTimer = new Timer();\n            refreshTimer.Elapsed += (s, e) => { RefreshOnlineStatus(); };\n            refreshTimer.Interval = TWO_MINUTES;\n        }\n\n        public static PoeTradeOnlineHelper Instance\n        {\n            get\n            {\n                if (instance == null)\n                    instance = new PoeTradeOnlineHelper();\n\n                return instance;\n            }\n        }\n\n        private bool currentlyOnline;\n        private void RefreshOnlineStatus()\n        {\n            try\n            {\n                Func<Process, bool> IsPoE = c => c.MainWindowTitle.Contains(\"Path of Exile\") || c.ProcessName.Contains(\"PathOfExile\") || c.ProcessName.Contains(\"PathOfExile_x64\");\n                var idleTime = GetIdleTime();\n\n                if (idleTime >= TimeSpan.FromMinutes(10) || !Process.GetProcesses().Any(IsPoE))\n                {\n                    // Prevent from spamming poe.trade\n                    if (currentlyOnline)\n                        SetOffline();\n\n                    // User is AFK or PoE is not running.\n                    currentlyOnline = false;\n                    return;\n                }\n\n                SetOnline();\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Error refreshing online/offline status in PoeTradeOnlineHelper: \" + ex);\n            }\n        }\n\n        private void SetOnline()\n        {\n            using (var client = new WebClient())\n            {\n                var data = new NameValueCollection();\n                client.UploadValuesAsync(refreshUri, \"POST\", data);\n                currentlyOnline = true;\n            }\n        }\n\n        private void SetOffline()\n        {\n            using (var client = new WebClient())\n            {\n                var offlineUri = new Uri(refreshUri.OriginalString + \"/offline\");\n                var data = new NameValueCollection();\n                client.UploadValuesAsync(offlineUri, \"POST\", data);\n            }\n        }\n\n        private TimeSpan GetIdleTime()\n        {\n            var inputInfo = new LASTINPUTINFO()\n            {\n                cbSize = (uint)Marshal.SizeOf(typeof(LASTINPUTINFO)),\n                dwTime = 0\n            };\n            GetLastInputInfo(ref inputInfo);\n            // Allow for TickCount wrap-around.\n            return TimeSpan.FromMilliseconds(unchecked(Environment.TickCount - (int)inputInfo.dwTime));\n        }\n\n        internal void Start()\n        {\n            try\n            {\n                var enabled = Convert.ToBoolean(Settings.UserSettings[\"PoeTradeRefreshEnabled\"]);\n\n                if (!enabled || refreshTimer.Enabled)\n                    return;\n\n                var poeTradeUrl = Settings.UserSettings[\"PoeTradeRefreshUrl\"];\n                refreshUri = new Uri(poeTradeUrl);\n\n                refreshTimer.Start();\n                RefreshOnlineStatus();\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Error starting PoeTradeOnlineHelper: \" + ex);\n                MessageBox.Show(\"Error refreshing poe.trade online status, ensure you have a valid url entered.\", \"Error Starting PoeTradeOnlineHelper\", MessageBoxButton.OK, MessageBoxImage.Error);\n            }\n        }\n\n        internal void Stop()\n        {\n            refreshTimer.Stop();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/Utility/StashHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Media.Imaging;\nusing POEApi.Model;\nusing POEApi.Infrastructure;\n\nnamespace Procurement.Utility\n{\n    internal class StashHelper\n    {\n        private static Dictionary<string, CroppedBitmap> imageCache = new Dictionary<string, CroppedBitmap>();\n        private const int _tabImageDefaultVisibleHeight = 26;\n\n        internal static Image GenerateTabImage(Tab tab, bool mouseOver)\n        {\n            // The images for the pieces of the tabs fetched from the API have the normal and selected (here, referred\n            // to as being moused-over) versions stacked vertically.  If we are building the image of the selected tab,\n            // we want to use the lower half of the image, so use an offset based on the height that is visible.\n            int offset = mouseOver ? _tabImageDefaultVisibleHeight : 0;\n\n            string key = tab.srcL + tab.srcC + tab.srcR + tab.Name + mouseOver.ToString();\n\n            if (!imageCache.ContainsKey(key))\n                buildImage(tab, offset, key);\n\n            Image img = new Image();\n            img.Source = imageCache[key];\n            img.Tag = tab;\n\n            return img;\n        }\n\n        private static void buildImage(Tab tab, int offset, string key)\n        {\n            System.Drawing.Bitmap finalImage = null;\n            var images = new List<System.Drawing.Bitmap>();\n\n            try\n            {\n                System.Drawing.Font font = new System.Drawing.Font(ApplicationState.FontCollection.Families[0], 11);\n                int width = 0;\n                int height = 0;\n                int count = 0;\n                float middleWidth = 0;\n                foreach (Stream stream in ApplicationState.Model.GetImage(tab))\n                {\n                    System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(stream);\n\n                    if (count == 1)\n                    {\n                        using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(new System.Drawing.Bitmap(200, 200)))\n                        {\n                            System.Drawing.SizeF measured = g.MeasureString(tab.Name, font);\n                            width += (int)measured.Width;\n                            middleWidth = measured.Width;\n                        }\n                    }\n                    else\n                    {\n                        width += bitmap.Width;\n                    }\n                    height = bitmap.Height > height ? bitmap.Height : height;\n                    images.Add(bitmap);\n                    count++;\n                }\n\n                finalImage = new System.Drawing.Bitmap(width, height);\n                using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(finalImage))\n                {\n                    //set background color\n                    g.Clear(System.Drawing.Color.Transparent);\n\n                    //go through each image and draw it on the final image\n                    int woffset = 0;\n                    count = 0;\n                    foreach (System.Drawing.Bitmap image in images)\n                    {\n                        int iwidth = image.Width;\n                        if (count == 1)\n                            iwidth = (int)middleWidth;\n                        g.DrawImage(image, new System.Drawing.Rectangle(woffset, 0, iwidth, image.Height));\n                        woffset += iwidth;\n                        if (count == 1)\n                            woffset -= 3; //The right image didn't align, similar to forums\n                        count++;\n                    }\n\n                    g.DrawString(tab.Name, font, System.Drawing.Brushes.Yellow, images[0].Width - 2, 6); //Top\n                    g.DrawString(tab.Name, font, System.Drawing.Brushes.Yellow, images[0].Width - 2, 32); //Mouse over version\n                }\n\n                using (MemoryStream stream = new MemoryStream())\n                {\n                    finalImage.Save(stream, System.Drawing.Imaging.ImageFormat.Png);\n                    stream.Position = 0;\n                    var bitmap = new BitmapImage();\n                    bitmap.BeginInit();\n                    bitmap.StreamSource = stream;\n                    bitmap.CacheOption = BitmapCacheOption.OnLoad;\n                    bitmap.EndInit();\n\n                    BitmapImage bitmapclone = (BitmapImage)bitmap.Clone();\n                    bitmap = null;\n\n                    Int32Rect croppingRectangle = new Int32Rect();\n                    if (offset + _tabImageDefaultVisibleHeight > bitmapclone.Height)\n                    {\n                        // Something unexpected happened when fetching the tab images or piecing together the bitmap,\n                        // as the final image is not as tall as expected.  This can happen when we fail to retrieve all\n                        // of the parts of the tab image, since the replacement image is not tall enough.  In this\n                        // case, do not use a positive offset, and make sure we do not go beyond the final image's\n                        // height.\n                        int truncatedHeight = Math.Min(_tabImageDefaultVisibleHeight, (int)bitmapclone.Height);\n                        croppingRectangle = new Int32Rect(0, 0, (int)bitmapclone.Width, truncatedHeight);\n                    }\n                    else\n                    {\n                        croppingRectangle = new Int32Rect(0, offset, (int)bitmapclone.Width,\n                            _tabImageDefaultVisibleHeight);\n                    }\n                    imageCache.Add(key, new CroppedBitmap(bitmapclone, croppingRectangle));\n                }\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(string.Format(\"Error while building tab image for tab {0} with key {1}: {2}\", tab.Name,\n                    key, ex.ToString()));\n\n                if (finalImage != null)\n                    finalImage.Dispose();\n\n                throw;\n            }\n            finally\n            {\n                foreach (System.Drawing.Bitmap image in images)\n                    image.Dispose();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Procurement/Utility/VersionChecker.cs",
    "content": "﻿using POEApi.Infrastructure;\nusing POEApi.Model;\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Net;\nusing System.Windows;\n\nnamespace Procurement.Utility\n{\n    internal class VersionChecker\n    {\n        private const string VERSION_URL = @\"https://raw.githubusercontent.com/Stickymaddness/Procurement/master/latest-release.txt\";\n        public static void CheckForUpdates()\n        {\n#if DEBUG\n#else\n            try\n            {\n                if (bool.Parse(Settings.UserSettings[\"CheckForUpdates\"]) == false)\n                    return;\n\n                using (WebClient client = new WebClient())\n                {\n                    client.DownloadStringAsync(new Uri(VERSION_URL));\n                    client.DownloadStringCompleted += client_DownloadStringCompleted;\n                }\n            }\n            catch (KeyNotFoundException)\n            {\n                MessageBox.Show(\"Unable to check for updates as the CheckForUpdates setting is missing from your settings file.\", \"Error\", MessageBoxButton.OK, MessageBoxImage.Warning);\n            }\n            catch (Exception ex)\n            {\n                handleException(ex);\n            }\n#endif\n        }\n\n        private static void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)\n        {\n            try\n            {\n                string[] updateInfo = e.Result.Split(',');\n\n                updateInfo[0] = updateInfo[0].Replace(\"Procurement \", \"\");\n                var appVersion = ApplicationState.Version.Replace(\"Procurement \", \"\");\n                var currentVersion = new Version(appVersion);\n                var latestVersion = new Version(updateInfo[0]);\n\n                if (currentVersion >= latestVersion || MessageBox.Show(\"A new version of Procurement is available! Would you like to download now? (Opens in browser)\", \"Update Available\", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)\n                    return;\n\n                Process.Start(updateInfo[1]);\n            }\n            catch (Exception ex)\n            {\n                handleException(ex);\n            }\n        }\n\n        private static void handleException(Exception ex)\n        {\n            Logger.Log(ex.ToString());\n            MessageBox.Show(\"Error checking for updates, details logged to DebugInfo.log\", \"Error\", MessageBoxButton.OK, MessageBoxImage.Error);\n        }\n    }\n}"
  },
  {
    "path": "Procurement/View/AboutView.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.View.AboutView\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             mc:Ignorable=\"d\" \n             Height=\"630\" Width=\"1012\">\n    <Grid x:Name=\"ViewContent\" Width=\"990\">\n        <Border BorderBrush=\"#FF76591B\" BorderThickness=\"2\" VerticalAlignment=\"Top\" Background=\"Black\" Margin=\"5, 15, 0, 0\" Height=\"600\">\n            <Grid>\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"505\"/>\n                    <ColumnDefinition Width=\"15\" />\n                    <ColumnDefinition Width=\"*\" />\n                </Grid.ColumnDefinitions>\n                <Grid Grid.Column=\"0\">\n                    <Grid.RowDefinitions>\n                        <RowDefinition Height=\"485\"/>\n                        <RowDefinition Height=\"25\"/>\n                        <RowDefinition />\n                    </Grid.RowDefinitions>\n                    <Image Grid.Row=\"0\" Source=\"/Procurement;component/Images/Sir%20Marauder%20bw.jpg\" Width=\"504\" Height=\"483\"/>\n                    <Label Grid.Row=\"1\" Content=\"Created By :\" Foreground=\"#FFAB9066\" FontSize=\"12\" FontWeight=\"Bold\"/>\n                    <Label Grid.Row=\"1\" Content=\"                      Stickymaddness             \" Foreground=\"#FFAB9066\" FontSize=\"22\" FontWeight=\"DemiBold\" HorizontalAlignment=\"Center\" Margin=\"60,19,60,6\" Grid.RowSpan=\"2\" />\n                </Grid>\n                <Grid Grid.Column=\"2\" VerticalAlignment=\"Top\" Margin=\"30,0,6,0\">\n                    <Grid.RowDefinitions>\n                        <RowDefinition />\n                        <RowDefinition Height=\"15\" />\n                        <RowDefinition Height=\"100\"/>\n                        <RowDefinition Height=\"100\"/>\n                        <RowDefinition Height=\"320\"/>\n                    </Grid.RowDefinitions>\n                    \n                    <Label x:Name=\"Version\" Grid.Row=\"0\" Foreground=\"#FFAB9066\" FontSize=\"18\" FontWeight=\"UltraBold\"/>\n                    <StackPanel Grid.Row=\"2\" >\n                        <TextBlock Foreground=\"#FFAB9066\" TextWrapping=\"Wrap\" FontSize=\"14\" Text=\"This open source software is provided free of charge!\" />\n                        <TextBlock />\n                        <TextBlock Foreground=\"#FFAB9066\" TextWrapping=\"Wrap\" FontSize=\"14\" Text=\"For the latest updates, bug reports or feature requests, please visit : https://github.com/Stickymaddness/Procurement\" />\n                    </StackPanel>\n                    \n                    <StackPanel Grid.Row=\"3\">\n                        <TextBlock Foreground=\"#FFAB9066\" TextWrapping=\"Wrap\" FontSize=\"14\" Text=\"If you'd like to buy me a beer, you can do so here:\" />\n\n                        <Button Style=\"{StaticResource ImageButton}\" HorizontalAlignment=\"Left\" Click=\"DonateButton_Click\" Height=\"47\" Width=\"147\" Margin=\"0,15,0,0\">\n                            <Image>\n                                <Image.Style>\n                                    <Style TargetType=\"{x:Type Image}\">\n                                        <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/donate.png\"/>\n                                        <Style.Triggers>\n                                            <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                                <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/donate-hover.png\"/>\n                                            </Trigger>\n                                        </Style.Triggers>\n                                    </Style>\n                                </Image.Style>\n                            </Image>\n                        </Button>\n\n\n                    </StackPanel>\n                    \n                    <StackPanel Grid.Row=\"4\" VerticalAlignment=\"Bottom\">\n                        <TextBlock Foreground=\"#FFAB9066\" TextWrapping=\"Wrap\" Text=\"Legal :\" FontSize=\"11\" />\n                        <TextBlock />\n                        <TextBlock Foreground=\"#FFAB9066\" TextWrapping=\"Wrap\" Text=\"Path Of Exile, the Path Of Exile logo and all related artwork used in this application are Copyright © Grinding Gear Games. For further information please visit:                     http://www.pathofexile.com\" FontSize=\"11\" />\n                        <TextBlock FontSize=\"11\" />\n                        <TextBlock Foreground=\"#FFAB9066\" TextWrapping=\"Wrap\" Text=\"This work is licensed under Artistic License 2.0.  See the included LICENSE file for full details.\" />\n                    </StackPanel>\n                </Grid>\n            </Grid>\n        </Border>\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "Procurement/View/AboutView.xaml.cs",
    "content": "﻿using System.Windows.Controls;\n\nnamespace Procurement.View\n{\n    public partial class AboutView : UserControl, IView\n    {\n        public AboutView()\n        {\n            InitializeComponent();\n            this.Version.Content = ApplicationState.Version;\n        }\n\n        public new Grid Content\n        {\n            get { return this.ViewContent; }\n        }\n\n        private void DonateButton_Click(object sender, System.Windows.RoutedEventArgs e)\n        {\n            System.Diagnostics.Process.Start(\"https://sites.google.com/site/poeprocurement/\");            \n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/BindableRichTextBox.cs",
    "content": "﻿using System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Documents;\n\nnamespace Procurement.View\n{\n    public class BindableRichTextBox : RichTextBox\n    {\n        public static readonly DependencyProperty DocumentProperty = DependencyProperty.Register(\"Document\", typeof(FlowDocument), typeof(BindableRichTextBox), new FrameworkPropertyMetadata(null, new PropertyChangedCallback(OnDocumentChanged)));\n\n        public new FlowDocument Document\n        {\n            get\n            {\n                return (FlowDocument)this.GetValue(DocumentProperty);\n            }\n\n            set\n            {\n                this.SetValue(DocumentProperty, value);\n            }\n        }\n\n        public static void OnDocumentChanged(DependencyObject obj,\n            DependencyPropertyChangedEventArgs args)\n        {\n            RichTextBox rtb = (RichTextBox)obj;\n            rtb.Document = args.NewValue as FlowDocument ?? new FlowDocument();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/Block.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.View.Block\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    Height=\"Auto\" Width=\"Auto\">\n    <Grid x:Name=\"LayoutRoot\">\n        <Path Fill=\"#FF5482A1\" Stretch=\"Fill\" RenderTransformOrigin=\"0.5,4.3689\" Data=\"M291.15499,85.897525 C291.15499,85.897525 301.88917,85.87921 301.88917,85.87921 301.88917,85.87921 300.38339,94.355061 300.38339,94.355061 300.38339,94.355061 292.85366,94.355042 292.85366,94.355042 292.85366,94.355042 291.15499,85.897525 291.15499,85.897525 z\"/>\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "Procurement/View/Block.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Data;\nusing System.Windows.Documents;\nusing System.Windows.Input;\nusing System.Windows.Media;\nusing System.Windows.Media.Imaging;\nusing System.Windows.Navigation;\nusing System.Windows.Shapes;\n\nnamespace Procurement.View\n{\n    /// <summary>\n    /// Interaction logic for Block.xaml\n    /// </summary>\n    public partial class Block : UserControl\n    {\n        public Block()\n        {\n            InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/Converters/CharacterToImageConverter.cs",
    "content": "﻿using System;\nusing System.Windows.Data;\nusing System.Windows.Media.Imaging;\nusing POEApi.Model;\n\nnamespace Procurement.View\n{\n    public class CharacterToImageConverter : IValueConverter\n    {\n\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            string avatarFormat = \"pack://application:,,,/Images/Avatars/{0}.png\";\n            string avatar = (value as Character).Class;\n\n            var bitmap = new BitmapImage(new Uri(string.Format(avatarFormat, avatar), UriKind.Absolute));\n            bitmap.CacheOption = BitmapCacheOption.OnLoad;\n            bitmap.Freeze();\n\n            return bitmap;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/Converters/CharacterToLevelConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing POEApi.Model;\n\nnamespace Procurement.View\n{\n    public class CharacterToLevelConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            Character c = value as Character;\n            return string.Format(\"Level {0} {1}\", c.Level, c.Class);\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/Converters/CurrencyCraftingSlotScalingConverter.cs",
    "content": "﻿using POEApi.Model;\nusing System;\nusing System.Globalization;\nusing System.Windows.Data;\n\nnamespace Procurement.View\n{\n    public class CurrencyCraftingSlotScalingConverter : IValueConverter\n    {\n        private const double WidthScale = 38.3388;\n        private const double HeightScale = 38.89066666666667;\n\n        private const string Width = \"width\";\n        private const string Height = \"height\";\n\n        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)\n        {\n            Item item = value as Item;\n\n            if (item == null)\n                return 0;\n\n            if (parameter?.ToString() == Width)\n                return item.W * WidthScale;\n\n            if (parameter?.ToString() == Height)\n                return item.H * HeightScale;\n\n            return 47; // 1h1w\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)\n        {\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/Converters/FilterListToNameConverter.cs",
    "content": "﻿using System.Windows.Data;\nusing System.Collections.Generic;\nusing Procurement.ViewModel.Filters;\nusing System.Linq;\n\nnamespace Procurement.View\n{\n    public class FilterListToNameConverter : IValueConverter\n    {\n        public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            IEnumerable<IFilter> filters = (IEnumerable<IFilter>)value;\n            return string.Join(\", \", filters.Select(f => f.Keyword).ToArray());\n        }\n\n        public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new System.NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/Converters/ItemDisplayConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing POEApi.Model;\nusing Procurement.Controls;\nusing Procurement.ViewModel;\n\nnamespace Procurement.View\n{\n    public class ItemDisplayConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            Item item = value as Item;\n            return new ItemDisplay() { DataContext = new ItemDisplayViewModel(item) };\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/Converters/ItemExplicitModsToFormattedRunConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing POEApi.Model;\nusing System.Windows.Documents;\nusing Procurement.ViewModel;\nusing System.Windows.Media;\nusing System.Windows;\n\nnamespace Procurement.View\n{\n    public class ItemExplicitModsToFormattedRunConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            string mod = value as string;\n            return new FlowDocument(new Paragraph(new Run(mod) { Foreground = new SolidColorBrush { Color = Color.FromArgb(0xFF, 0x88, 0x88, 0xFF)}, BaselineAlignment = BaselineAlignment.Center }));\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n\n"
  },
  {
    "path": "Procurement/View/Converters/ItemPropertyToFormattedRunConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing POEApi.Model;\nusing System.Windows.Documents;\nusing Procurement.ViewModel;\nusing System.Windows.Media;\n\nnamespace Procurement.View\n{\n    public class ItemPropertyToFormattedRunConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            Property property = value as Property;\n            return new FlowDocument(DisplayModeFactory.Create(property).Get());\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/Converters/ItemRequirementToFormattedRunConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing POEApi.Model;\nusing System.Windows.Documents;\nusing Procurement.ViewModel;\nusing System.Windows.Media;\nusing System.Windows;\n\nnamespace Procurement.View\n{\n    public class ItemRequirementToFormattedRunConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            var viewModel = value as ItemHoverViewModel;\n\n            if (viewModel == null || !viewModel.HasRequirements)\n            {\n                return null;\n            }\n\n            var paragraph = new Paragraph();\n\n            foreach (var requirement in viewModel.Requirements)\n            {\n                var runs = new List<Run>\n                {\n                    new Run(requirement.Name) {Foreground = Brushes.Gray},\n                    new Run(\" \") {Foreground = Brushes.Gray},\n                    new Run(requirement.Value) {Foreground = Brushes.White}\n                };\n\n                if (!requirement.NameFirst)\n                    runs.Reverse();\n\n                if (paragraph.Inlines.Count > 0)\n                {\n                    paragraph.Inlines.Add(new Run(\", \") { Foreground = Brushes.Gray });\n                }\n\n                paragraph.Inlines.AddRange(runs);\n            }\n\n            paragraph.Inlines.InsertBefore(paragraph.Inlines.FirstInline, new Run(\"Requires \") { Foreground = Brushes.Gray });\n\n            return new FlowDocument(paragraph);\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/Converters/ItemToColorBrushConverter.cs",
    "content": "﻿using System;\nusing System.Globalization;\nusing System.Windows.Data;\nusing System.Windows.Media;\n\nusing POEApi.Model;\n\nnamespace Procurement.View\n{\n    public class ItemToColorBrushConverter : IValueConverter\n    {\n        private static readonly Color NormalItemColor = Colors.White;\n\n        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)\n        {\n            Gear gear = value as Gear;\n            double opacity = 1;\n            if(parameter != null)\n                opacity = double.Parse(parameter.ToString(), CultureInfo.InvariantCulture);\n            if(gear != null)\n            {\n                switch(gear.Rarity)\n                {\n                    case Rarity.Normal:\n                        return new SolidColorBrush(NormalItemColor) {Opacity = opacity};\n                    case Rarity.Magic:\n                        return new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#8888F1\")) { Opacity = opacity };\n                    case Rarity.Rare:\n                        return new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#F1FF77\")) { Opacity = opacity };\n                    case Rarity.Unique:\n                        return new SolidColorBrush(Colors.Orange) {Opacity = opacity};\n                    case Rarity.Relic:\n                        return new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#6AAD6A\")) { Opacity = opacity};\n                }\n            }\n\n            Currency currency = value as Currency;\n            if(currency != null)\n                return new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#FFDF8E\")) {Opacity = opacity};\n\n            Gem gem = value as Gem;\n            if(gem != null)\n                return new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#1BA29B\")) {Opacity = opacity};\n\n            Map map = value as Map;\n            if(map != null)\n                return new SolidColorBrush(Colors.PaleGreen) {Opacity = opacity};\n\n            Prophecy prophecy = value as Prophecy;\n            if(prophecy != null)\n                return new SolidColorBrush(Colors.Purple) { Opacity = opacity };\n\n            //This was throwing an exception and killing the application - this is not ideal - I will default to normal item color when handle=ing new types\n            return new SolidColorBrush(NormalItemColor) {Opacity = opacity};\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}"
  },
  {
    "path": "Procurement/View/Converters/ItemToItemHoverSymbolPath.cs",
    "content": "﻿using System;\nusing System.Globalization;\nusing System.Windows.Data;\nusing System.Windows.Media;\nusing POEApi.Model;\n\nnamespace Procurement.View\n{\n    public class ItemToItemHoverSymbolPath : IValueConverter\n    {\n        private static readonly Color NormalItemColor = Colors.White;\n\n        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)\n        {\n            var item = value as Item;\n            if (item == null)\n            {\n                return \"\";\n            }\n\n            if (item.Shaper)\n            {\n                return \"/Images/ItemHover/ShaperIconAdorner.png\";\n            }\n            if (item.Elder)\n            {\n                return \"/Images/ItemHover/ElderIconAdorner.png\";\n            }\n            if (item.VeiledMods?.Count > 0)\n            {\n                return \"/Images/ItemHover/VeiledIconAdorner.png\";\n            }\n            if (item.Synthesised)\n            {\n                return \"/Images/ItemHover/SynthesisedIconAdorner.png\";\n            }\n            if (item.Fractured)\n            {\n                return \"/Images/ItemHover/FracturedIconAdorner.png\";\n            }\n\n            return \"\";\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}"
  },
  {
    "path": "Procurement/View/Converters/ItemToItemHoverSymbolVisibility.cs",
    "content": "﻿using System;\nusing System.Globalization;\nusing System.Windows;\nusing System.Windows.Data;\nusing System.Windows.Media;\nusing POEApi.Model;\n\nnamespace Procurement.View\n{\n    public class ItemToItemHoverSymbolVisibility : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)\n        {\n            var item = value as Item;\n            if (item == null)\n            {\n                return Visibility.Collapsed;\n            }\n\n            if (item.Shaper || item.Elder || item.VeiledMods?.Count > 0 || item.Synthesised || item.Fractured)\n            {\n                return Visibility.Visible;\n            }\n\n            return Visibility.Collapsed;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}"
  },
  {
    "path": "Procurement/View/Converters/ObjectInListMultiConverter.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\n\nnamespace Procurement.View\n{\n    class ObjectInListMultiConverter : IMultiValueConverter\n    {\n        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)\n        {\n            IList subset = values[1] as IList;\n            Nullable<bool> result = subset.Contains(values[0]);\n            return result;\n        }\n\n        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/Converters/RecipeDescriptionConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows.Data;\nusing Procurement.ViewModel.Recipes;\n\nnamespace Procurement.View\n{\n    public class RecipeDescriptionConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            KeyValuePair<string, List<RecipeResult>> item = (KeyValuePair<string, List<RecipeResult>>)value;\n            int numCompleteResults = item.Value.Count(i => i.PercentMatch == 100);\n            return string.Format(\"{0} ({1}/{2} Results)\", item.Key, numCompleteResults, item.Value.Count);\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/Converters/ResultMatchConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing System.Windows.Controls;\nusing System.Windows.Media;\nusing System.Windows;\nusing System.Windows.Documents;\n\nnamespace Procurement.View\n{\n    public class ResultMatchConverter : IValueConverter\n    {\n        private static Dictionary<string, List<GradientStop>> gradientStops;\n        public ResultMatchConverter()\n        {\n            if (gradientStops == null)\n            {\n                gradientStops = new Dictionary<string, List<GradientStop>>();\n                gradientStops.Add(\"Perfect\", new List<GradientStop>());\n                gradientStops.Add(\"Partial\", new List<GradientStop>());\n\n                gradientStops[\"Perfect\"].Add(new GradientStop((Color)ColorConverter.ConvertFromString(\"#002D19\"), 0));\n                gradientStops[\"Perfect\"].Add(new GradientStop((Color)ColorConverter.ConvertFromString(\"#004C2A\"), 0.5));\n                gradientStops[\"Perfect\"].Add(new GradientStop((Color)ColorConverter.ConvertFromString(\"#007F46\"), 1));\n\n                gradientStops[\"Partial\"].Add(new GradientStop((Color)ColorConverter.ConvertFromString(\"#260C00\"), 0));\n                gradientStops[\"Partial\"].Add(new GradientStop((Color)ColorConverter.ConvertFromString(\"#913700\"), 0.5));\n                gradientStops[\"Partial\"].Add(new GradientStop((Color)ColorConverter.ConvertFromString(\"#CE5200\"), 1));\n            }\n        }\n\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            decimal match = (decimal)value;\n\n            Border border = new Border();\n            border.BorderThickness = new System.Windows.Thickness(1);\n            border.Background = getBrush(match);\n\n            TextBlock tb = new TextBlock();\n            tb.FontSize = 14;\n            tb.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#FFAB9066\"));\n            tb.Background = Brushes.Transparent;\n            tb.Inlines.Add(new Bold(new Run(string.Format(\"Match Percentage: {0}\", match.ToString(\"0.00\")))));\n            tb.VerticalAlignment = VerticalAlignment.Center;\n\n            border.Child = tb;\n\n            return border;\n        }\n\n        private LinearGradientBrush getBrush(decimal match)\n        {\n            List<GradientStop> stops = match >= 100 ? gradientStops[\"Perfect\"] : gradientStops[\"Partial\"];\n            return new LinearGradientBrush(new GradientStopCollection(stops), new Point(0, 0), new Point(1, 0));\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/Converters/TabIDToStashControlConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Data;\nusing POEApi.Model;\nusing Procurement.Controls;\nusing Procurement.Utility;\nusing Procurement.ViewModel.Filters;\nusing Procurement.ViewModel;\n\nnamespace Procurement.View\n{\n    public class TabIDToStashControlConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            TabInfo item = value as TabInfo;\n            Grid g = new Grid();\n            Tab tab = ApplicationState.Stash[ApplicationState.CurrentLeague].Tabs.Find(t => t.i == item.ID);\n            var tabControl = TabFactory.GenerateTab(tab, new List<IFilter>());\n            g.Children.Add(tabControl);\n            return g;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n\n    public class TabIDToStashControlFiltered : IValueConverter\n    {\n        public static Dictionary<string, Grid> cache;\n\n        //Todo: Get this to handle the premium tabs\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            if (value == null)\n                return null;\n\n            cache = cache ?? new Dictionary<string, Grid>();\n\n            Item item = value as Item;\n            string key = getKey(item);\n            if (cache.ContainsKey(key))\n                return cache[key];\n\n            int inventoryId = int.Parse(item.InventoryId.Replace(\"Stash\", \"\")) - 1;\n            Grid g = new Grid();\n\n            Tab tab = ApplicationState.Stash[ApplicationState.CurrentLeague].Tabs.Find(t => t.i == inventoryId);\n            var tabControl = TabFactory.GenerateTab(tab, new List<IFilter>() {new ItemFilter(item)});\n            Image tabImage = getImage(tab, true);\n\n\n            RowDefinition imageRow = new RowDefinition();\n            imageRow.Height = new GridLength(26);\n            g.RowDefinitions.Add(imageRow);\n            g.RowDefinitions.Add(new RowDefinition());\n            tabImage.SetValue(Grid.RowProperty, 0);\n            tabControl.SetValue(Grid.RowProperty, 1);\n            g.Children.Add(tabImage);\n            g.Children.Add(tabControl);\n            cache.Add(key, g);\n\n            tabControl.ForceUpdate();\n            return g;\n        }\n\n        private string getKey(Item item)\n        {\n            return string.Concat(item.InventoryId, \":\", item.X, \":\", item.Y, \":\", ApplicationState.CurrentLeague);\n                    \n        }\n\n        private Image getImage(Tab tab, bool mouseOver)\n        {\n            return StashHelper.GenerateTabImage(tab, mouseOver);\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}"
  },
  {
    "path": "Procurement/View/IViewModel.cs",
    "content": "﻿using System.Windows.Controls;\n\nnamespace Procurement.View\n{\n    public interface IView\n    {\n        Grid Content { get; }\n    }\n}"
  },
  {
    "path": "Procurement/View/InventoryView.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.View.InventoryView\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             xmlns:poe=\"clr-namespace:Procurement.Controls\"\n             mc:Ignorable=\"d\" \n             Height=\"630\" Width=\"1012\">\n    <UserControl.Resources>\n        <Style TargetType=\"{x:Type TabItem}\">\n            <Setter Property=\"Template\">\n                <Setter.Value>\n                    <ControlTemplate TargetType=\"{x:Type TabItem}\">\n                        <ControlTemplate.Triggers>\n                            <Trigger Property=\"IsSelected\" Value=\"True\">\n                                <Setter Property=\"Foreground\" Value=\"#E7C892\" />\n                            </Trigger>\n                            <Trigger Property=\"IsSelected\" Value=\"False\">\n                                <Setter Property=\"Foreground\" Value=\"#795D42\" />\n                            </Trigger>\n                        </ControlTemplate.Triggers>\n                        <Grid>\n                            <Border \n                                  Name=\"Border\"\n                                  Background=\"#2D1C13\"\n                                  BorderBrush=\"Black\" \n                                  BorderThickness=\"1,1,1,1\" \n                                  CornerRadius=\"6,6,0,0\" >\n                                <ContentPresenter x:Name=\"ContentSite\"\n                    VerticalAlignment=\"Center\"\n                    HorizontalAlignment=\"Center\"\n                    ContentSource=\"Header\"\n                    Margin=\"12,2,12,2\"/>\n                            </Border>\n                        </Grid>\n                    </ControlTemplate>\n                </Setter.Value>\n            </Setter>\n        </Style>\n    </UserControl.Resources>\n       <Grid x:Name=\"ViewContent\" Width=\"1012\">\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"Auto\"/>\n            <ColumnDefinition Width=\"Auto\"/>\n        </Grid.ColumnDefinitions>\n        <Border Grid.Column=\"0\" BorderBrush=\"#FF76591B\" BorderThickness=\"2\" VerticalAlignment=\"Top\" Background=\"Black\" Margin=\"25, 15, 0, 0\">\n            <TabControl Grid.Column=\"1\" VerticalAlignment=\"Top\" Background=\"Transparent\"  Margin=\"8,8,8,8\">\n                <TabItem Header=\"Equipped Gear\">\n                    <poe:Equipped Character=\"{Binding Character}\" />\n                </TabItem>\n                <TabItem Header=\"Inventory\">\n                    <poe:Inventory Character=\"{Binding Character}\" />\n                </TabItem>\n            </TabControl>\n        </Border>\n        <Grid Grid.Column=\"1\" VerticalAlignment=\"Top\">\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\"/>\n            </Grid.RowDefinitions>\n            <Border Grid.Row=\"1\" BorderBrush=\"#FF76591B\" BorderThickness=\"2\" VerticalAlignment=\"Top\" Background=\"Black\" Margin=\"5, 15, 0, 0\" Width=\"327\">\n                <Grid>\n                    <Grid.RowDefinitions>\n                        <RowDefinition />\n                        <RowDefinition />\n                    </Grid.RowDefinitions>                             \n                    <Label Content=\"Character Selection\" Grid.Row=\"0\"  Foreground=\"#FFAB9066\" FontSize=\"14\" FontWeight=\"Bold\"/>\n                    <ScrollViewer Grid.Row=\"1\" HorizontalAlignment=\"Left\" VerticalScrollBarVisibility=\"Auto\" HorizontalScrollBarVisibility=\"Disabled\" Height=\"543\">\n                        <poe:CharacterSelector Characters=\"{Binding Characters}\" Margin=\"5,5,5,5\" />\n                    </ScrollViewer>\n                </Grid>\n            </Border>\n        </Grid>\n    </Grid>\n</UserControl>"
  },
  {
    "path": "Procurement/View/InventoryView.xaml.cs",
    "content": "﻿using System.Windows.Controls;\nusing Procurement.ViewModel;\n\nnamespace Procurement.View\n{\n    public partial class InventoryView : IView\n    {\n        public InventoryView()\n        {\n            InitializeComponent();\n            this.DataContext = new InventoryViewModel(this);\n        }\n\n        public new Grid Content\n        {\n            get { return this.ViewContent; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/ItemExplicitModsToFormattedRunConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing POEApi.Model;\nusing System.Windows.Documents;\nusing Procurement.ViewModel;\nusing System.Windows.Media;\nusing System.Windows;\n\nnamespace Procurement.View\n{\n    public class ItemExplicitModsToFormattedRunConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            string mod = value as string;\n            return new FlowDocument(new Paragraph(new Run(mod) { Foreground = Brushes.Turquoise, FontWeight = FontWeights.Bold, BaselineAlignment = BaselineAlignment.Center }));\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n\n"
  },
  {
    "path": "Procurement/View/ItemPropertyToFormattedRunConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing POEApi.Model;\nusing System.Windows.Documents;\nusing Procurement.ViewModel;\nusing System.Windows.Media;\n\nnamespace Procurement.View\n{\n    public class ItemPropertyToFormattedRunConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            Property property = value as Property;\n            return new FlowDocument(DisplayModeFactory.Create(property).Get());\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/ItemRequirementToFormattedRunConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing POEApi.Model;\nusing System.Windows.Documents;\nusing Procurement.ViewModel;\nusing System.Windows.Media;\nusing System.Windows;\n\nnamespace Procurement.View\n{\n    public class ItemRequirementToFormattedRunConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            Requirement requirement = value as Requirement;\n\n            Run name = new Run(requirement.Name) { Foreground = Brushes.Gray };\n            Run v = new Run(requirement.Value) { Foreground = Brushes.White, FontWeight = FontWeights.Bold };\n\n            Paragraph paragraph = new Paragraph();\n\n            List<Run> runs = new List<Run>();\n            runs.Add(name);\n            runs.Add(new Run(\" \") { Foreground = Brushes.Gray });\n            runs.Add(v);\n\n            if (!requirement.NameFirst)\n                runs.Reverse();\n\n            paragraph.Inlines.Add(new Run(\"Requires \") { Foreground = Brushes.Gray });\n            paragraph.Inlines.AddRange(runs);\n\n            return new FlowDocument(paragraph);\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/ItemToColorBrushConverter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Data;\nusing POEApi.Model;\nusing System.Windows.Media;\n\nnamespace Procurement.View\n{\n    public class ItemToColorBrushConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            Gear gear = value as Gear;\n            double opacity = 1;\n            if (parameter != null)\n                opacity = double.Parse(parameter.ToString());\n            if (gear != null)\n            {\n                switch (gear.Quality)\n                {\n                    case Quality.White:\n                        return new SolidColorBrush(Colors.White) { Opacity = opacity };\n                    case Quality.Magic:\n                        return new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#8888F1\")) { Opacity = opacity };\n                    case Quality.Rare:\n                        return new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#F1FF77\")) { Opacity = opacity };\n                    case Quality.Legendary:\n                        return new SolidColorBrush(Colors.Orange) { Opacity = opacity };\n                }\n            }\n\n            Currency currency = value as Currency;\n            if (currency != null)\n                return new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#FFDF8E\")) { Opacity = opacity };\n\n            Gem gem = value as Gem;\n            if (gem != null)\n                return new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#1BA29B\")) { Opacity = opacity };\n\n            Map map = value as Map;\n            if (map != null)\n                return new SolidColorBrush(Colors.PaleGreen) { Opacity = opacity };\n\n            throw new NotImplementedException();\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/LoadingAnimation.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.View.LoadingAnimation\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"clr-namespace:Procurement.View\"\n    Height=\"Auto\" Width=\"Auto\">\n    <UserControl.Resources>\n        <Storyboard x:Key=\"ProgressAnimation\" RepeatBehavior=\"Forever\">\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#8E000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#00000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block17\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#8E000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"Black\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block16\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#8E000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#EF000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block15\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#8E000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#E2000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block14\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#8E000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#D3000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block13\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#8E000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#C6000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block12\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#8E000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#B7000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block11\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#8E000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#AA000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block10\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#8E000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#23000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#9B000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block9\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#91000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block8\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#91000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#7F000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block7\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#91000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#72000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block6\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#91000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#63000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block5\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#91000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#56000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block4\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#91000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#3D000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block3\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#91000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#26000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block2\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#0C000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#91000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#19000000\"/>\n            </ColorAnimationUsingKeyFrames>\n            <ColorAnimationUsingKeyFrames BeginTime=\"00:00:00\" Storyboard.TargetName=\"block1\" Storyboard.TargetProperty=\"(UIElement.OpacityMask).(SolidColorBrush.Color)\">\n                <SplineColorKeyFrame KeyTime=\"00:00:00\" Value=\"#00000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.2290000\" Value=\"Black\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.4590000\" Value=\"#EF000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.6880000\" Value=\"#E2000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:00.9180000\" Value=\"#D3000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.1470000\" Value=\"#C6000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.3760000\" Value=\"#B7000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.6060000\" Value=\"#AA000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:01.8350000\" Value=\"#9B000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.0650000\" Value=\"#8E000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.2940000\" Value=\"#7F000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.5240000\" Value=\"#72000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.7530000\" Value=\"#63000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:02.9820000\" Value=\"#56000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.2120000\" Value=\"#3D000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.4410000\" Value=\"#26000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.6710000\" Value=\"#19000000\"/>\n                <SplineColorKeyFrame KeyTime=\"00:00:03.9000000\" Value=\"#0C000000\"/>\n            </ColorAnimationUsingKeyFrames>\n        </Storyboard>\n    </UserControl.Resources>\n    <UserControl.Triggers>\n        <EventTrigger RoutedEvent=\"FrameworkElement.Loaded\">\n            <BeginStoryboard x:Name=\"ProgressAnimation_BeginStoryboard\" Storyboard=\"{StaticResource ProgressAnimation}\"/>\n        </EventTrigger>\n    </UserControl.Triggers>\n\n    <Canvas x:Name=\"LayoutRoot\" VerticalAlignment=\"Top\" Height=\"88\" Width=\"88\">\n        <TextBlock Text=\"Loading...\" TextWrapping=\"Wrap\" Canvas.Left=\"20.069\" Canvas.Top=\"36.214\" Foreground=\"#FF4E748E\"/>\n        <Grid Width=\"10.734\" Height=\"10.004\" Canvas.Left=\"38.614\" Canvas.Top=\"0.331\">\n            <local:Block x:Name=\"block\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#00000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"180\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block1\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#0C000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform ScaleX=\"0.99999999999999989\" ScaleY=\"0.99999999999999989\"/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"-160\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block2\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#19000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"-140\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block3\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#26000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform ScaleX=\"0.99999999999999989\" ScaleY=\"0.99999999999999989\"/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"-119.99999999999999\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block4\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#3D000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform ScaleX=\"0.99999999999999989\" ScaleY=\"0.99999999999999989\"/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"-100\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block5\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#56000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform ScaleX=\"0.99999999999999989\" ScaleY=\"0.99999999999999989\"/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"-80\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block6\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#64000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"-59.999999999999993\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block7\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#72000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform ScaleX=\"0.99999999999999989\" ScaleY=\"0.99999999999999989\"/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"-40\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block8\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#80000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"-19.999999999999996\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block9\" OpacityMask=\"#8E000000\" RenderTransformOrigin=\"0.5,4.3689\" VerticalAlignment=\"Top\" Height=\"10.004\"/>\n            <local:Block x:Name=\"block11\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#AA000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform ScaleX=\"0.99999999999999989\" ScaleY=\"0.99999999999999989\"/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"40\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block12\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#B8000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"59.999999999999993\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block13\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#C6000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform ScaleX=\"0.99999999999999989\" ScaleY=\"0.99999999999999989\"/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"80\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block14\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#D4000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform ScaleX=\"0.99999999999999989\" ScaleY=\"0.99999999999999989\"/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"100\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block15\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#E2000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform ScaleX=\"0.99999999999999989\" ScaleY=\"0.99999999999999989\"/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"119.99999999999999\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block16\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#F0000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"140\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block17\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"Black\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform ScaleX=\"0.99999999999999989\" ScaleY=\"0.99999999999999989\"/>\n                        <SkewTransform/>\n                        <RotateTransform Angle=\"160\"/>\n                        <TranslateTransform/>\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n            <local:Block x:Name=\"block10\" RenderTransformOrigin=\"0.5,4.3689\" OpacityMask=\"#9C000000\" VerticalAlignment=\"Top\" Height=\"10.004\">\n                <local:Block.RenderTransform>\n                    <TransformGroup>\n                        <ScaleTransform />\n                        <SkewTransform />\n                        <RotateTransform Angle=\"19.999999999999996\" />\n                        <TranslateTransform />\n                    </TransformGroup>\n                </local:Block.RenderTransform>\n            </local:Block>\n        </Grid>\n    </Canvas>\n</UserControl>\n"
  },
  {
    "path": "Procurement/View/LoadingAnimation.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Data;\nusing System.Windows.Documents;\nusing System.Windows.Input;\nusing System.Windows.Media;\nusing System.Windows.Media.Imaging;\nusing System.Windows.Navigation;\nusing System.Windows.Shapes;\n\nnamespace Procurement.View\n{\n    /// <summary>\n    /// Interaction logic for LoadingAnimation.xaml\n    /// </summary>\n    public partial class LoadingAnimation : UserControl\n    {\n        public LoadingAnimation()\n        {\n            InitializeComponent();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/LoginView.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.View.LoginView\"\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n        xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n        xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n        xmlns:viewModel=\"clr-namespace:Procurement.ViewModel\"\n        mc:Ignorable=\"d\"\n        Height=\"600\" Width=\"1012\" d:DataContext=\"{d:DesignInstance viewModel:LoginWindowViewModel}\">\n    <UserControl.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"../Controls/ExpressionDark.xaml\" />\n            </ResourceDictionary.MergedDictionaries>\n            <SolidColorBrush x:Key=\"TextForecolourBrush\">LightGray</SolidColorBrush>\n            <Style TargetType=\"Button\" BasedOn=\"{StaticResource ImageButton}\" />\n        </ResourceDictionary>\n        \n    </UserControl.Resources>\n\n    <Grid x:Name=\"ViewContent\">\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"35*\"/>\n            <ColumnDefinition Width=\"65*\"/>\n        </Grid.ColumnDefinitions>\n\n        <Image Grid.Column=\"0\" Width=\"282\" Height=\"577\" Source=\"/Procurement;component/Images/Sir Marauder.png\" />\n\n        <Grid Grid.Column=\"1\">\n            <Grid.RowDefinitions>\n                <RowDefinition />\n                <RowDefinition />\n            </Grid.RowDefinitions>\n            <Grid Grid.Row=\"0\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"100\"/>\n                    <ColumnDefinition />\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"60\"/>\n                    <RowDefinition Height=\"35\"/>\n                    <RowDefinition Height=\"35\"/>\n                    <RowDefinition Height=\"30\"/>\n                    <RowDefinition Height=\"30\"/>\n                    <RowDefinition Height=\"100\"/>\n                </Grid.RowDefinitions>\n\n                <Label x:Name=\"lblEmail\" Content=\"Alias\" Grid.Row=\"1\" Grid.Column=\"0\" FontFamily=\"../Resources/#Fontin\" Foreground=\"{StaticResource TextForecolourBrush}\" FontSize=\"14\" VerticalAlignment=\"Top\" ></Label>\n                <Label x:Name=\"lblPassword\" Content=\"Session ID\" Grid.Row=\"2\" Grid.Column=\"0\" FontFamily=\"../Resources/#Fontin\" Foreground=\"{StaticResource TextForecolourBrush}\" FontSize=\"14\" VerticalAlignment=\"Top\" ></Label>\n                <Label Content=\"Realm\" Grid.Row=\"3\" Grid.Column=\"0\" FontFamily=\"../Resources/#Fontin\" Foreground=\"{StaticResource TextForecolourBrush}\" FontSize=\"14\" VerticalAlignment=\"Top\" ></Label>\n\n                <TextBox Name=\"txtLogin\" Text=\"{Binding Email}\" Grid.Row=\"1\" Grid.Column=\"1\" Height=\"22\" Width=\"330\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Background=\"Black\" BorderBrush=\"#FF76591B\" Foreground=\"{StaticResource TextForecolourBrush}\" SelectionBrush=\"#FFCABE9F\"></TextBox>\n                <PasswordBox Name=\"txtPassword\" Grid.Row=\"2\" Grid.Column=\"1\" Height=\"22\" Width=\"330\" Background=\"Black\" BorderBrush=\"#FF76591B\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\"  Foreground=\"{StaticResource TextForecolourBrush}\" SelectionBrush=\"#FFCABE9F\"/>\n                <ComboBox Grid.Row=\"3\" Grid.Column=\"1\" Height=\"22\" Width=\"330\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\"\n                          ItemsSource=\"{Binding AvailableRealms}\" SelectedValue=\"{Binding SelectedRealm}\" />\n\n                <Grid Grid.Row=\"4\" Grid.Column=\"1\">\n                    <Grid.ColumnDefinitions>\n                        <ColumnDefinition Width=\"90\"/>\n                        <ColumnDefinition Width=\"90\"/>\n                        <ColumnDefinition Width=\"159\"/>\n                        <ColumnDefinition />\n                    </Grid.ColumnDefinitions>\n\n                    <Button Grid.Column=\"0\" Name=\"LoginButton\" Width=\"85\" HorizontalAlignment=\"Left\" Click=\"Login_Click\" IsDefault=\"True\" Margin=\"0,2,0,1\">\n                        <Image>\n                            <Image.Style>\n                                <Style TargetType=\"{x:Type Image}\">\n                                    <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_login.png\"/>\n                                    <Style.Triggers>\n                                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                            <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_login_hover.png\"/>\n                                        </Trigger>\n                                    </Style.Triggers>\n                                </Style>\n                            </Image.Style>\n                        </Image>\n                    </Button>\n\n                    <Button Grid.Column=\"1\" Name=\"OfflineButton\" Width=\"85\" HorizontalAlignment=\"Left\" Click=\"Offline_Click\" Margin=\"0,2,0,1\">\n                        <Image>\n                            <Image.Style>\n                                <Style TargetType=\"{x:Type Image}\">\n                                    <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_offline.png\"/>\n                                    <Style.Triggers>\n                                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                            <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/btn_offline_hover.png\"/>\n                                        </Trigger>\n                                    </Style.Triggers>\n                                </Style>\n                            </Image.Style>\n                        </Image>\n                    </Button>\n                    <Grid Grid.Column=\"2\" HorizontalAlignment=\"Left\" Height=\"30\" VerticalAlignment=\"Top\" Width=\"149\" Margin=\"25,0,0,0\" Grid.ColumnSpan=\"2\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"Auto\"/>\n                            <ColumnDefinition Width=\"Auto\"/>\n                        </Grid.ColumnDefinitions>\n                        <CheckBox x:Name=\"forceRefresh\" Content=\"Refresh on Login\"  VerticalAlignment=\"Center\" IsChecked=\"{Binding ForceRefresh}\"\n                              Foreground=\"{StaticResource TextForecolourBrush}\" FontSize=\"12\" FontWeight=\"Bold\" HorizontalAlignment=\"Left\"\n                              Width=\"Auto\">\n                            <CheckBox.ToolTip>\n                                <ToolTip>\n                                    <TextBlock Text=\"If unchecked, only missing tabs are downloaded.\" />\n                                </ToolTip>\n                            </CheckBox.ToolTip>\n                        </CheckBox>\n                    </Grid>\n                </Grid>\n                <Grid Grid.Row=\"5\" Grid.Column=\"1\">\n                    <Grid.ColumnDefinitions>\n                        <ColumnDefinition Width=\"180\"/>\n                        <ColumnDefinition Width=\"159\"/>\n                        <ColumnDefinition />\n                    </Grid.ColumnDefinitions>\n                </Grid>\n            </Grid>\n\n            <Grid Grid.Row=\"1\">\n                <RichTextBox Name=\"StatusBox\" Width=\"641\" HorizontalAlignment=\"Left\" Margin=\"2,-74,0,30\" Background=\"Black\" BorderBrush=\"#FF93732D\" Focusable=\"True\" Foreground=\"{StaticResource TextForecolourBrush}\" FontFamily=\"Consolas\" BorderThickness=\"1\" IsReadOnly=\"True\" VerticalScrollBarVisibility=\"Hidden\" />\n            </Grid>\n        </Grid>\n\n    </Grid>\n</UserControl>\n\n"
  },
  {
    "path": "Procurement/View/LoginView.xaml.cs",
    "content": "﻿using System.Windows;\nusing System.Windows.Controls;\nusing Procurement.ViewModel;\nusing System.Windows.Media;\nusing System;\n\nnamespace Procurement.View\n{\n    public partial class LoginView : UserControl, IView\n    {\n        public LoginView()\n        {\n            InitializeComponent();\n            this.DataContext = new LoginWindowViewModel(this);\n        }\n\n        public new Grid Content\n        {\n            get { return this.ViewContent; }\n        }\n\n        private void Login_Click(object sender, RoutedEventArgs e)\n        {\n            (this.DataContext as LoginWindowViewModel).Login(false);\n        }\n\n        private void Offline_Click(object sender, RoutedEventArgs e)\n        {\n            (this.DataContext as LoginWindowViewModel).Login(true);\n        }\n\n        private void sessionidQ_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)\n        {\n            // Since DragMove() called by MouseLeftButtonDown of MainWindow may cause System.InvalidOperationException, the notice of a mouse event is stopped here.\n            // Moreover, it is also a problem that a mouse event is blocked by DragMove() and MouseLeftButtonUp is not called. \n            e.Handled = true;\n        }\n\n        private void sessionidQ_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)\n        {\n            e.Handled = true;\n\n            (this.DataContext as LoginWindowViewModel).NavigateHowToSessionIDwiki();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/RecipeView.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.View.RecipeView\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             xmlns:poe=\"clr-namespace:Procurement.Controls\"\n             mc:Ignorable=\"d\" \n             Height=\"630\" Width=\"1012\">\n    <Grid x:Name=\"ViewContent\" Width=\"1012\">\n        <poe:RecipeResults />\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "Procurement/View/RecipeView.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Data;\nusing System.Windows.Documents;\nusing System.Windows.Input;\nusing System.Windows.Media;\nusing System.Windows.Media.Imaging;\nusing System.Windows.Navigation;\nusing System.Windows.Shapes;\nusing Procurement.ViewModel;\n\nnamespace Procurement.View\n{\n    /// <summary>\n    /// Interaction logic for RecipeView.xaml\n    /// </summary>\n    public partial class RecipeView : UserControl, IView\n    {\n        public RecipeView()\n        {\n            InitializeComponent();\n            this.DataContext = new RecipeResultViewModel();\n        }\n\n        public new Grid Content\n        {\n            get { return this.ViewContent; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/RefreshView.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.View.RefreshView\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             mc:Ignorable=\"d\" \n             Height=\"630\" Width=\"1012\">\n    <Grid x:Name=\"ViewContent\" Width=\"990\">\n        <RichTextBox Height=\"600\" Name=\"StatusBox\" HorizontalAlignment=\"Left\" Background=\"Black\" BorderBrush=\"#FF93732D\" Focusable=\"True\" Foreground=\"#FFAB9066\" FontFamily=\"Consolas\" BorderThickness=\"1\" IsReadOnly=\"True\" VerticalScrollBarVisibility=\"Hidden\" />\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "Procurement/View/RefreshView.xaml.cs",
    "content": "﻿using POEApi.Infrastructure;\nusing POEApi.Infrastructure.Events;\nusing POEApi.Model.Events;\nusing Procurement.ViewModel;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\n\nnamespace Procurement.View\n{\n    public partial class RefreshView : UserControl\n    {\n        private StatusController statusController;\n\n        public RefreshView()\n        {\n            InitializeComponent();\n        }\n\n        public void RefreshAllTabs()\n        {\n            RefreshTabs(true);\n        }\n\n        public void RefreshUsedTabs()\n        {\n            RefreshTabs(false);\n        }\n\n        public void RefreshTabs(bool refreshAllTabs)\n        {\n            statusController = new StatusController(StatusBox, 140);\n\n            CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();\n            CancellationToken cancellationToken = cancellationTokenSource.Token;\n\n            Task task = Task.Factory.StartNew(() =>\n            {\n                try\n                {\n                    ApplicationState.Model.StashLoading += model_StashLoading;\n                    ApplicationState.Model.Throttled += model_Throttled;\n                    var stash = ApplicationState.Stash[ApplicationState.CurrentLeague];\n                    if (refreshAllTabs)\n                    {\n                        stash.RefreshAll(ApplicationState.Model, ApplicationState.CurrentLeague,\n                            ApplicationState.AccountName, ApplicationState.CurrentRealm);\n                    }\n                    else\n                    {\n                        stash.RefreshUsedTabs(ApplicationState.Model, ApplicationState.CurrentLeague,\n                            ApplicationState.AccountName, ApplicationState.CurrentRealm);\n                    }\n                    ApplicationState.Model.StashLoading -= model_StashLoading;\n                    ApplicationState.Model.Throttled -= model_Throttled;\n                }\n                catch (Exception ex)\n                {\n                    Logger.Log(\"Exception bulk refreshing tabs: \" + ex.ToString());\n                    MessageBox.Show(\"Error encountered during refreshing tabs; error details logged to DebugInfo.log\",\n                        \"Error refreshing tabs\", MessageBoxButton.OK, MessageBoxImage.Error);\n                }\n                finally\n                {\n                    ScreenController.Instance.ReloadStash();\n                    ScreenController.Instance.RefreshRecipeScreen();\n                    ScreenController.Instance.UpdateTrading();\n                }\n            });\n        }\n\n        private void model_StashLoading(POEApi.Model.POEModel sender, POEApi.Model.Events.StashLoadedEventArgs e)\n        {\n            update(\"Loading \" + ApplicationState.CurrentLeague + \" Stash Tab \" + (e.StashID + 1) + \"...\", e);\n        }\n\n        void model_Throttled(object sender, ThottledEventArgs e)\n        {\n            if (e.WaitTime.TotalSeconds > 4)\n                update(string.Format(\"GGG Server request limit hit, throttling activated. Please wait {0} seconds\",\n                    e.WaitTime.Seconds), new POEEventArgs(POEEventState.BeforeEvent));\n        }\n\n        private void update(string message, POEEventArgs e)\n        {\n            if (e.State == POEEventState.BeforeEvent)\n            {\n                statusController.DisplayMessage(message);\n                return;\n            }\n\n            statusController.Ok();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/SettingsView.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.View.SettingsView\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             xmlns:v=\"clr-namespace:Procurement.View\"\n             mc:Ignorable=\"d\" \n             Height=\"630\" Width=\"1012\">\n    <UserControl.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <ResourceDictionary Source=\"/Procurement;component/Controls/ExpressionDarkGrid.xaml\" />\n                <ResourceDictionary Source=\"/Procurement;component/Controls/ExpressionDark.xaml\" />\n            </ResourceDictionary.MergedDictionaries>\n\n            <Style TargetType=\"Button\" BasedOn=\"{StaticResource ImageButton}\" />\n        </ResourceDictionary>\n    </UserControl.Resources>\n    <Grid x:Name=\"ViewContent\" Width=\"1012\">\n        <Grid.Resources>\n            <v:VisibilityConverter x:Key=\"vc\" />\n            <v:ObjectInListMultiConverter x:Key=\"oil\" />\n        </Grid.Resources>\n\n        <Grid Margin=\"15,-8,15,0\">\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"150\"/>\n                <RowDefinition Height=\"2\"/>\n                <RowDefinition Height=\"470\"/>\n            </Grid.RowDefinitions>\n            <Border Grid.Row=\"0\" BorderBrush=\"#FF76591B\" BorderThickness=\"2\" Grid.Column=\"2\" Background=\"Black\" Margin=\"0,15,0,0\">\n                <Grid>\n                    <Grid.ColumnDefinitions>\n                        <ColumnDefinition Width=\"250\"/>\n                        <ColumnDefinition Width=\"350\"/>\n                        <ColumnDefinition Width=\"250\"/>\n                    </Grid.ColumnDefinitions>\n                    <Grid.RowDefinitions>\n                        <RowDefinition />\n                        <RowDefinition />\n                        <RowDefinition />\n                        <RowDefinition />\n                    </Grid.RowDefinitions>\n                    <Label Grid.Row=\"0\" Grid.Column=\"0\"  Grid.ColumnSpan=\"2\" Content=\"User Settings\" Foreground=\"#FFAB9066\" FontSize=\"14\" FontWeight=\"Bold\"/>\n\n                    <Label Grid.Row=\"1\" Grid.Column=\"0\"  Grid.ColumnSpan=\"2\" Content=\"Favourite League\" Foreground=\"#FFAB9066\" />\n                    <ComboBox Grid.Row=\"1\" Grid.Column=\"1\" Foreground=\"#FFAB9066\" SelectedItem=\"{Binding CurrentLeague}\" ItemsSource=\"{Binding Leagues}\" Width=\"250\" Height=\"20\" HorizontalAlignment=\"Left\"/>\n\n                    <Label Grid.Row=\"2\" Grid.Column=\"0\"  Grid.ColumnSpan=\"2\" Content=\"Favourite Character\" Foreground=\"#FFAB9066\" />\n                    <ComboBox Grid.Row=\"2\" Grid.Column=\"1\" Foreground=\"#FFAB9066\" SelectedItem=\"{Binding CurrentCharacter}\" ItemsSource=\"{Binding Characters}\" Width=\"250\" Height=\"20\" HorizontalAlignment=\"Left\"/>\n\n                    <Label Grid.Row=\"3\" Grid.Column=\"0\"  Grid.ColumnSpan=\"2\" Content=\"Compact Mode\" Foreground=\"#FFAB9066\" />\n                    <CheckBox Grid.Row=\"3\" Grid.Column=\"1\" Foreground=\"#FFAB9066\" IsChecked=\"{Binding CompactMode}\" HorizontalAlignment=\"Left\" Margin=\"0,2,0,0\" />\n\n                    <Button Grid.Column=\"3\" Grid.Row=\"1\"  Width=\"85\" Height=\"28\" HorizontalAlignment=\"Left\" Click=\"AboutButton_Click\">\n                        <Image>\n                            <Image.Style>\n                                <Style TargetType=\"{x:Type Image}\">\n                                    <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/about-button.png\"/>\n                                    <Style.Triggers>\n                                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                            <Setter Property=\"Source\" Value=\"/Procurement;component/Images/buttons/about-button-hover.png\"/>\n                                        </Trigger>\n                                    </Style.Triggers>\n                                </Style>\n                            </Image.Style>\n                        </Image>\n                    </Button>\n                </Grid>\n            </Border>\n\n            <Border Grid.Row=\"2\" BorderBrush=\"#FF76591B\" BorderThickness=\"2\" Grid.Column=\"2\" Background=\"Black\">\n                <Grid>                    \n                    <Grid.RowDefinitions>\n                        <RowDefinition Height=\"30\"/>\n                        <RowDefinition Height=\"*\" />\n                    </Grid.RowDefinitions>\n                    <Grid.ColumnDefinitions>\n                        <ColumnDefinition Width=\"*\"/>\n                        <ColumnDefinition Width=\"*\"/>\n                    </Grid.ColumnDefinitions>\n\n                    <Grid Grid.Row=\"0\" >\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition />\n                            <ColumnDefinition />\n                            <ColumnDefinition />\n                        </Grid.ColumnDefinitions>\n                        <Label Grid.Column=\"0\" Content=\"Currency Ratios\" Foreground=\"#FFAB9066\" FontSize=\"14\" FontWeight=\"Bold\"/>\n                    </Grid>\n\n                    <DataGrid Grid.Row=\"1\" Name=\"CurrencyGrid\" Background=\"Black\" ItemsSource=\"{Binding CurrencyRatios}\" SelectionMode=\"Single\" AutoGenerateColumns=\"False\" RowEditEnding=\"CurrencyGrid_RowEditEnding\" Width=\"460\" HorizontalAlignment=\"Left\" Margin=\"5,0,0,0\" BorderThickness=\"0\" VerticalScrollBarVisibility=\"Auto\" HorizontalScrollBarVisibility=\"Hidden\">\n                        <DataGrid.Columns>\n                            <DataGridTextColumn Header=\"Name\" Binding=\"{Binding OrbType}\" IsReadOnly=\"True\" Width=\"150\" Foreground=\"#FFAB9066\"/>\n                            <DataGridTextColumn Header=\"OrbAmount\" Binding=\"{Binding OrbAmount, Mode=TwoWay, ValidatesOnExceptions=True, UpdateSourceTrigger=PropertyChanged}\" IsReadOnly=\"False\" Width=\"150\" Foreground=\"#FFAB9066\"  />\n                            <DataGridTextColumn Header=\"ChaosAmount\" Binding=\"{Binding ChaosAmount, Mode=TwoWay, ValidatesOnExceptions=True, UpdateSourceTrigger=PropertyChanged}\" IsReadOnly=\"False\" Width=\"150\" Foreground=\"#FFAB9066\"/>\n                        </DataGrid.Columns>\n                    </DataGrid>\n\n                    <Grid Grid.Row=\"0\" Grid.Column=\"1\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition />\n                            <ColumnDefinition />\n                            <ColumnDefinition />\n                        </Grid.ColumnDefinitions>\n                        <Label Grid.Column=\"0\" Content=\"Characters and Leagues\" Foreground=\"#FFAB9066\" FontSize=\"14\" FontWeight=\"Bold\" Margin=\"-8,0,0,0\"/>\n                    </Grid>\n\n                    <Grid Grid.Row=\"1\" Grid.Column=\"1\">\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"20\"/>\n                            <RowDefinition Height=\"200\"/>\n                            <RowDefinition Height=\"28\"/>\n                            <RowDefinition Height=\"180\"/>\n                        </Grid.RowDefinitions>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"*\"/>\n                            <ColumnDefinition Width=\"*\"/>\n                        </Grid.ColumnDefinitions>\n\n                        <CheckBox Grid.Row=\"0\" Grid.Column=\"0\" IsChecked=\"{Binding DownloadOnlyMyCharacters, Mode=TwoWay, ValidatesOnExceptions=True,UpdateSourceTrigger=PropertyChanged}\" Content=\"Download Only Selected Characters\" Foreground=\"#FFAB9066\"/>\n                        <CheckBox Grid.Row=\"0\" Grid.Column=\"1\" IsChecked=\"{Binding DownloadOnlyMyLeagues, Mode=TwoWay, ValidatesOnExceptions=True,UpdateSourceTrigger=PropertyChanged}\" Content=\"Download Only Selected Leagues\" Foreground=\"#FFAB9066\"/>\n\n                        <TreeView Grid.Row=\"1\" Grid.Column=\"0\" Grid.ColumnSpan=\"2\"  Background=\"Black\" ItemsSource=\"{Binding AllCharactersByLeague}\" SelectedValuePath=\"Value\" BorderBrush=\"#FF76591B\" Width=\"442\" Margin=\"-50,0,0,0\">\n                            <TreeView.ItemTemplate>\n                                <HierarchicalDataTemplate ItemsSource=\"{Binding Value}\">\n                                    <CheckBox Margin=\"0,0,4,0\" Checked=\"LeagueCheckBox_Checked\" Unchecked=\"LeagueCheckBox_Unchecked\">\n                                        <CheckBox.Content>\n                                            <TextBlock Foreground=\"#FFAB9066\" Text=\"{Binding Key}\" />\n                                        </CheckBox.Content>\n                                        <CheckBox.IsChecked>\n                                            <MultiBinding  Mode=\"OneWay\" Converter=\"{StaticResource oil}\">\n                                                <Binding Path=\"Key\" />\n                                                <Binding RelativeSource=\"{RelativeSource FindAncestor, AncestorType={x:Type TreeView}}\" Path=\"DataContext.MyLeagues\" />\n                                            </MultiBinding>\n                                        </CheckBox.IsChecked>\n                                    </CheckBox>\n                                \n                                    <HierarchicalDataTemplate.ItemTemplate>\n                                        <DataTemplate>\n                                            <CheckBox Margin=\"0,0,4,0\" Checked=\"CharacterCheckBox_Checked\" Unchecked=\"CharacterCheckBox_Unchecked\">\n                                                <CheckBox.Content>\n                                                    <TextBlock Foreground=\"#FFAB9066\" Text=\"{Binding }\" />\n                                                </CheckBox.Content>\n                                                <CheckBox.IsChecked>\n                                                    <MultiBinding  Mode=\"OneWay\" Converter=\"{StaticResource oil}\">\n                                                        <Binding />\n                                                        <Binding RelativeSource=\"{RelativeSource FindAncestor, AncestorType={x:Type TreeView}}\" Path=\"DataContext.MyCharacters\" />\n                                                    </MultiBinding>\n                                                </CheckBox.IsChecked>\n                                            </CheckBox>\n                                         </DataTemplate>\n                                    </HierarchicalDataTemplate.ItemTemplate>\n                                </HierarchicalDataTemplate>\n                            </TreeView.ItemTemplate>\n                        </TreeView>\n\n                        <Label Grid.Row=\"2\" Grid.Column=\"0\" Content=\"Exclude tabs from Recipe results\" Foreground=\"#FFAB9066\" FontSize=\"14\" FontWeight=\"Bold\" Margin=\"-8,0,0,0\"/>\n\n                        <Border Grid.Row=\"3\" Grid.Column=\"0\" Grid.ColumnSpan=\"2\"  Background=\"Black\" BorderBrush=\"#FF76591B\" BorderThickness=\"1\" Width=\"442\" Margin=\"-50,0,0,0\">\n                        <ScrollViewer HorizontalScrollBarVisibility=\"Hidden\" VerticalScrollBarVisibility=\"Auto\" BorderBrush=\"#FF76591B\" >\n                            <ItemsControl ItemsSource=\"{Binding StashTabs}\" Margin=\"10,10,10,10\" x:Name=\"CheckBoxList\">\n                                    <ItemsControl.ItemsPanel>\n                                        <ItemsPanelTemplate>\n                                            <StackPanel Orientation=\"Vertical\"/>\n                                        </ItemsPanelTemplate>\n                                    </ItemsControl.ItemsPanel>\n                                    <ItemsControl.ItemTemplate>\n                                        <DataTemplate>\n                                            <StackPanel>\n                                                <CheckBox Tag=\"{Binding Name, Mode=OneTime}\" IsChecked=\"{Binding IsChecked, Mode=TwoWay}\" Checked=\"recipeTab_Checked\" Unchecked=\"recipeTab_Unchecked\" Content=\"{Binding Name, Mode=OneTime}\" Foreground=\"#FFAB9066\" />\n                                            </StackPanel>\n                                        </DataTemplate>\n                                    </ItemsControl.ItemTemplate>\n                                </ItemsControl>\n                            </ScrollViewer>\n                        </Border>\n                    </Grid>                   \n                </Grid>\n            </Border>\n        </Grid>\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "Procurement/View/SettingsView.xaml.cs",
    "content": "﻿using System.Windows.Controls;\nusing Procurement.ViewModel;\nusing POEApi.Model;\nusing System.Windows;\n\nnamespace Procurement.View\n{\n    public partial class SettingsView : UserControl, IView\n    {\n        public SettingsView()\n        {\n            InitializeComponent();\n            this.DataContext = new SettingsViewModel(this);\n        }\n\n        public new Grid Content\n        {\n            get { return this.ViewContent; }\n        }\n\n        private void CurrencyGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)\n        {\n            Settings.Save();\n        }\n\n        private void AboutButton_Click(object sender, RoutedEventArgs e)\n        {\n            ScreenController.Instance.LoadView(new AboutView());\n        }\n\n        private void LeagueCheckBox_Checked(object sender, RoutedEventArgs e)\n        {\n            string leagueName = ((sender as CheckBox).Content as TextBlock).Text;\n            (DataContext as SettingsViewModel).AddDownloadLeague(leagueName);\n        }\n\n        private void LeagueCheckBox_Unchecked(object sender, RoutedEventArgs e)\n        {\n            string characterName = ((sender as CheckBox).Content as TextBlock).Text;\n            (DataContext as SettingsViewModel).RemoveDownloadLeague(characterName);\n        }\n\n        private void CharacterCheckBox_Checked(object sender, RoutedEventArgs e)\n        {\n            string characterName = ((sender as CheckBox).Content as TextBlock).Text;\n            (DataContext as SettingsViewModel).AddDownloadCharacter(characterName);\n        }\n\n        private void CharacterCheckBox_Unchecked(object sender, RoutedEventArgs e)\n        {\n            string characterName = ((sender as CheckBox).Content as TextBlock).Text;\n            (DataContext as SettingsViewModel).RemoveDownloadCharacter(characterName);\n        }\n\n        private void recipeTab_Checked(object sender, RoutedEventArgs e)\n        {\n            (DataContext as SettingsViewModel).RecipeTabChecked((sender as CheckBox).Tag.ToString());            \n        }\n\n        private void recipeTab_Unchecked(object sender, RoutedEventArgs e)\n        {\n            (DataContext as SettingsViewModel).RecipeTabUnchecked((sender as CheckBox).Tag.ToString());\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/StashView.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.View.StashView\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             xmlns:poe=\"clr-namespace:Procurement.Controls\"\n             xmlns:toolkit=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit\"\n             xmlns:viewModel=\"clr-namespace:Procurement.ViewModel\"\n             mc:Ignorable=\"d\" \n             Height=\"630\" Width=\"1012\" d:DataContext=\"{d:DesignInstance viewModel:StashViewModel}\">\n    <UserControl.Resources>\n        <SolidColorBrush x:Key=\"TabControlNormalBorderBrush\" Color=\"#AA9072\" />\n        <SolidColorBrush x:Key=\"ButtonNormalBackground\" Color=\"#2D1D13\" />\n        <SolidColorBrush x:Key=\"TextForecolour\" Color=\"#FFAB9066\"/>\n        <SolidColorBrush x:Key=\"BorderBrush\" Color=\"#FF76591B\"/>\n        <Style TargetType=\"{x:Type TabItem}\" x:Key=\"NonImages\">\n            <Setter Property=\"Template\">\n                <Setter.Value>\n                    <ControlTemplate TargetType=\"{x:Type TabItem}\">\n                        <ControlTemplate.Triggers>\n                            <Trigger Property=\"IsSelected\" Value=\"True\">\n                                <Setter Property=\"Foreground\" Value=\"#E7C892\" />\n                            </Trigger>\n                            <Trigger Property=\"IsSelected\" Value=\"False\">\n                                <Setter Property=\"Foreground\" Value=\"#795D42\" />\n                            </Trigger>\n                        </ControlTemplate.Triggers>\n                        <Grid>\n                            <Border \n                                  Name=\"Border\"\n                                  Background=\"#2D1C13\"\n                                  BorderBrush=\"Black\" \n                                  BorderThickness=\"1,1,1,1\" \n                                  CornerRadius=\"6,6,0,0\" >\n                                <ContentPresenter x:Name=\"ContentSite\"\n                    VerticalAlignment=\"Center\"\n                    HorizontalAlignment=\"Center\"\n                    ContentSource=\"Header\"\n                    Margin=\"12,2,12,2\"/>\n                            </Border>\n                        </Grid>\n                    </ControlTemplate>\n                </Setter.Value>\n            </Setter>\n        </Style>\n    </UserControl.Resources>\n    <Grid x:Name=\"ViewContent\" Width=\"1012\">\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"600\" />\n            <ColumnDefinition Width=\"10\" />\n            <ColumnDefinition Width=\"370\" />\n            <ColumnDefinition Width=\"32*\" />\n        </Grid.ColumnDefinitions>\n\n        <TabControl Background=\"Transparent\" Width=\"600\" BorderBrush=\"Transparent\" VerticalAlignment=\"Top\" x:Name=\"tabControl\" HorizontalAlignment=\"Left\" Template=\"{DynamicResource TabControlControlTemplate1}\" Style=\"{Binding /}\" Grid.ColumnSpan=\"2\" Margin=\"4,3,0,0\">\n            <TabControl.Resources>\n                <Style x:Key=\"TabScrollerRepeatButtonStyle\" TargetType=\"{x:Type RepeatButton}\">\n                    <Setter Property=\"Template\">\n                        <Setter.Value>\n                            <ControlTemplate>\n                                <Border Background=\"Transparent\">\n                                    <ContentPresenter HorizontalAlignment=\"Center\" VerticalAlignment=\"Center\" Content=\"{TemplateBinding ContentControl.Content}\"/>\n                                </Border>\n                            </ControlTemplate>\n                        </Setter.Value>\n                    </Setter>\n                </Style>\n\n                <ControlTemplate x:Key=\"TabControlControlTemplate1\" TargetType=\"{x:Type TabControl}\">\n                    <Grid x:Name=\"Grid\" KeyboardNavigation.TabNavigation=\"Local\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition x:Name=\"ColumnDefinition0\"/>\n                            <ColumnDefinition x:Name=\"ColumnDefinition1\" Width=\"0\"/>\n                        </Grid.ColumnDefinitions>\n                        <Grid.RowDefinitions>\n                            <RowDefinition x:Name=\"RowDefinition0\" Height=\"Auto\"/>\n                            <RowDefinition x:Name=\"RowDefinition1\" Height=\"*\"/>\n                        </Grid.RowDefinitions>\n                        <Border Grid.Row=\"1\" Grid.Column=\"0\" x:Name=\"ContentPanel\" BorderBrush=\"#FFD0CEBF\" BorderThickness=\"0,0,0,0\" KeyboardNavigation.TabIndex=\"2\" KeyboardNavigation.TabNavigation=\"Local\" KeyboardNavigation.DirectionalNavigation=\"Contained\">\n                            <Border x:Name=\"Border\" BorderBrush=\"{TemplateBinding BorderBrush}\" BorderThickness=\"0\">\n                                <Border Background=\"{TemplateBinding Background}\" x:Name=\"Border1\">\n                                    <ContentPresenter DataContext=\"{x:Null}\" Margin=\"0,0,0,0\" x:Name=\"PART_SelectedContentHost\" Content=\"{TemplateBinding SelectedContent}\" ContentTemplate=\"{TemplateBinding SelectedContentTemplate}\" ContentTemplateSelector=\"{TemplateBinding SelectedContentTemplateSelector}\" ContentSource=\"SelectedContent\"/>\n                                </Border>\n                            </Border>\n                        </Border>\n                        <ScrollViewer x:Name=\"HeaderPanel\" Grid.Row=\"0\" Grid.Column=\"0\" PreviewMouseWheel=\"HeaderPanel_OnPreviewMouseWheel\" HorizontalAlignment=\"Stretch\" VerticalAlignment=\"Stretch\" Margin=\"0,0,0,0\" HorizontalScrollBarVisibility=\"Hidden\" VerticalScrollBarVisibility=\"Disabled\">\n                            <ScrollViewer.Style>\n                                <Style TargetType=\"{x:Type ScrollViewer}\">\n                                    <Setter Property=\"Template\">\n                                        <Setter.Value>\n                                            <ControlTemplate>\n                                                <Grid Margin=\"8,0,8,0\" Grid.Row=\"0\" Grid.Column=\"0\" x:Name=\"HeaderPanel\">\n                                                    <Grid.ColumnDefinitions>\n                                                        <ColumnDefinition Width=\"25\"/>\n                                                        <ColumnDefinition Width=\"*\"/>\n                                                        <ColumnDefinition Width=\"25\"/>\n                                                        <ColumnDefinition Width=\"25\"/>\n                                                    </Grid.ColumnDefinitions>\n                                                    <Grid.RowDefinitions>\n                                                        <RowDefinition Height=\"26\"/>\n                                                    </Grid.RowDefinitions>\n\n                                                    <RepeatButton Grid.Column=\"0\" Command=\"ScrollBar.PageLeftCommand\" Background=\"Transparent\" Style=\"{StaticResource TabScrollerRepeatButtonStyle}\">\n                                                        <Image>\n                                                            <Image.Style>\n                                                                <Style TargetType=\"{x:Type Image}\">\n                                                                    <Setter Property=\"Source\" Value=\"/Procurement;component/Images/TabControl/leftbutton.png\"/>\n                                                                    <Style.Triggers>\n                                                                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                                                            <Setter Property=\"Source\" Value=\"/Procurement;component/Images/TabControl/leftbutton-hover.png\"/>\n                                                                        </Trigger>\n                                                                    </Style.Triggers>\n                                                                </Style>\n                                                            </Image.Style>\n                                                        </Image>\n                                                    </RepeatButton>\n\n                                                    <ScrollContentPresenter Grid.Column=\"1\" Content=\"{TemplateBinding ScrollViewer.Content}\" />\n                                                    <RepeatButton Grid.Column=\"2\" Command=\"ScrollBar.PageRightCommand\" Background=\"Transparent\" Style=\"{StaticResource TabScrollerRepeatButtonStyle}\">\n                                                        <Image>\n                                                            <Image.Style>\n                                                                <Style TargetType=\"{x:Type Image}\">\n                                                                    <Setter Property=\"Source\" Value=\"/Procurement;component/Images/TabControl/rightbutton.png\"/>\n                                                                    <Style.Triggers>\n                                                                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                                                            <Setter Property=\"Source\" Value=\"/Procurement;component/Images/TabControl/rightbutton_hover.png\"/>\n                                                                        </Trigger>\n                                                                    </Style.Triggers>\n                                                                </Style>\n                                                            </Image.Style>\n                                                        </Image>\n                                                    </RepeatButton>\n                                                    <Button Style=\"{StaticResource ImageButton}\" Grid.Column=\"3\" Command=\"{Binding GetTabs}\" Background=\"{StaticResource TabControlNormalBorderBrush}\" Foreground=\"#E5C690\" CommandParameter=\"{Binding RelativeSource={RelativeSource Self} }\">\n                                                        <Grid>\n                                                            <Image>\n                                                                <Image.Style>\n                                                                    <Style TargetType=\"{x:Type Image}\">\n                                                                        <Setter Property=\"Source\" Value=\"/Procurement;component/Images/TabControl/stash-dropdown.png\"/>\n                                                                        <Style.Triggers>\n                                                                            <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                                                                <Setter Property=\"Source\" Value=\"/Procurement;component/Images/TabControl/stash-dropdown-hover.png\"/>\n                                                                            </Trigger>\n                                                                        </Style.Triggers>\n                                                                    </Style>\n                                                                </Image.Style>\n                                                            </Image>\n                                                        </Grid>\n                                                    </Button>\n                                                </Grid>\n                                            </ControlTemplate>\n                                        </Setter.Value>\n                                    </Setter>\n                                </Style>\n                            </ScrollViewer.Style>\n                            <StackPanel IsItemsHost=\"true\" Orientation=\"Horizontal\" Background=\"{x:Null}\" KeyboardNavigation.TabIndex=\"1\" />\n                        </ScrollViewer>\n                    </Grid>\n                </ControlTemplate>\n            </TabControl.Resources>\n        </TabControl>\n\n        <Grid Grid.Column=\"2\" VerticalAlignment=\"Top\">\n            <Grid>\n                <Grid.RowDefinitions>\n                    <RowDefinition />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"*\" />\n                    <RowDefinition Height=\"25px\" />\n                </Grid.RowDefinitions>\n                <Border Grid.Row=\"0\" BorderBrush=\"{StaticResource BorderBrush}\" BorderThickness=\"2\" Background=\"Black\" Margin=\"0,10,0,0\" Padding=\"0,5,0,7\">\n                    <Grid Margin=\"5,0,11,0\" HorizontalAlignment=\"Left\">\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"33\"/>\n                            <RowDefinition Height=\"33\"/>\n                        </Grid.RowDefinitions>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"Auto\"/>\n                        </Grid.ColumnDefinitions>\n                        <poe:LeagueSelection Margin=\"0,0,0,1\" Width=\"Auto\" />\n                        <Grid Margin=\"0,3,0,0\" Grid.Row=\"1\" HorizontalAlignment=\"Left\" Width=\"347\">\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"Auto\" />\n                                <ColumnDefinition Width=\"*\"/>\n                            </Grid.ColumnDefinitions>\n                            <Label Content=\"Search :\" Foreground=\"{StaticResource TextForecolour}\" RenderTransformOrigin=\"0.5,0.5\" HorizontalContentAlignment=\"Right\" Margin=\"1,1,0,1\">\n                                <Label.RenderTransform>\n                                    <TransformGroup>\n                                        <ScaleTransform/>\n                                        <SkewTransform AngleY=\"0.382\"/>\n                                        <RotateTransform/>\n                                        <TranslateTransform Y=\"0.242\"/>\n                                    </TransformGroup>\n                                </Label.RenderTransform>\n                            </Label>\n                            <toolkit:AutoCompleteBox x:Name=\"autoComplete\" MinimumPopulateDelay=\"100\" MinimumPrefixLength=\"2\" FilterMode=\"Contains\" Background=\"Black\" Text=\"{Binding Filter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\" BorderBrush=\"{StaticResource BorderBrush}\" Foreground=\"{StaticResource TextForecolour}\" ItemsSource=\"{Binding AvailableItems}\" Margin=\"0,4,-1,2\" RenderTransformOrigin=\"0.498,0.438\" Grid.Column=\"1\" />\n                        </Grid>\n                    </Grid>\n                </Border>\n\n                <TabControl Grid.Row=\"1\" Grid.Column=\"2\" >\n                    <TabItem Header=\"Currency Breakdown    \" Style=\"{StaticResource NonImages}\">\n                        <Border BorderBrush=\"{StaticResource BorderBrush}\" BorderThickness=\"2\" VerticalAlignment=\"Top\" Background=\"Black\" Margin=\"0,0,0,0\">\n                            <StackPanel>\n                                <Label Content=\"Currency Breakdown\" Foreground=\"{StaticResource TextForecolour}\" FontSize=\"14\" FontWeight=\"Bold\"/>\n                                <Grid Margin=\"5,5,5,5\"  Grid.IsSharedSizeScope=\"True\">\n                                    <Grid.ColumnDefinitions>\n                                        <ColumnDefinition Width=\"Auto\" SharedSizeGroup=\"FirstCol\"/>\n                                        <ColumnDefinition Width=\"Auto\"/>\n                                    </Grid.ColumnDefinitions>\n                                    <Grid.RowDefinitions>\n                                        <RowDefinition Height=\"Auto\" />\n                                        <RowDefinition Height=\"Auto\" />\n                                    </Grid.RowDefinitions>\n\n                                    <TextBlock Foreground=\"{StaticResource TextForecolour}\" Text=\"{Binding Total, Mode=OneWay}\" />\n\n                                    <TextBlock  Grid.Row=\"0\" Grid.Column=\"1\" Foreground=\"{StaticResource TextForecolour}\" Text=\"{Binding TotalOrbValue, FallbackValue=44, Mode=OneWay}\" />\n                                    <ItemsControl Grid.Column=\"0\" Grid.ColumnSpan=\"2\" Grid.Row=\"1\" ItemsSource=\"{Binding TotalDistibution}\" >\n                                        <ItemsControl.ItemsPanel>\n                                            <ItemsPanelTemplate >\n                                                <StackPanel Orientation=\"Vertical\"/>\n                                            </ItemsPanelTemplate>\n                                        </ItemsControl.ItemsPanel>\n                                        <ItemsControl.ItemTemplate>\n                                            <DataTemplate>\n                                                <Border BorderThickness=\"1\">\n                                                    <Border.Style>\n                                                    <Style TargetType=\"Border\">\n                                                        <Setter Property=\"BorderBrush\" Value=\"Transparent\"/>\n                                                        <Style.Triggers>\n                                                            <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                                                                <Setter Property=\"BorderBrush\" Value=\"#FFAB9066\" />\n                                                            </Trigger>\n                                                        </Style.Triggers>\n                                                    </Style>\n                                                    </Border.Style>\n                                                    <Grid Height=\"Auto\">\n                                                        <Grid.ColumnDefinitions>\n                                                            <ColumnDefinition Width=\"Auto\" SharedSizeGroup=\"FirstCol\"/>\n                                                            <ColumnDefinition Width=\"Auto\" />\n                                                        </Grid.ColumnDefinitions>\n                                                        <TextBlock Foreground=\"{StaticResource TextForecolour}\" Text=\"{Binding Key, Mode=OneWay}\" FontWeight=\"Bold\"/>\n\n                                                        <TextBlock Grid.Column=\"1\" Foreground=\"{StaticResource TextForecolour}\" Text=\"{Binding Value, Mode=OneWay, StringFormat=0.00}\" />\n                                                    </Grid>\n                                                </Border>\n                                            </DataTemplate>\n                                        </ItemsControl.ItemTemplate>\n                                    </ItemsControl>\n                                </Grid>\n                            </StackPanel>\n                        </Border>\n                    </TabItem>\n                    <TabItem Header=\"Advanced Search\" Style=\"{StaticResource NonImages}\">\n                        <Border BorderBrush=\"{StaticResource BorderBrush}\" BorderThickness=\"2\" VerticalAlignment=\"Top\" Background=\"Black\" Margin=\"0,0,0,0\">\n                            <StackPanel>\n                                <StackPanel Orientation=\"Horizontal\" Background=\"Black\" Margin=\"0, 5, 0, 8\">\n                                    <Label Content=\"Filter :\" Foreground=\"{StaticResource TextForecolour}\"/>\n                                    <TextBox Name=\"AdvancedSearchFilter\" Width=\"270\" Height=\"23\" Foreground=\"{StaticResource TextForecolour}\" Background=\"Black\" KeyUp=\"AdvancedSearchFilter_KeyUp\"/>\n                                </StackPanel>\n                                <ScrollViewer VerticalScrollBarVisibility=\"Visible\" CanContentScroll=\"True\" Height=\"416\">\n                                    <Grid>\n                                        <StackPanel>\n                                            <CheckBox Content=\"None\" Foreground=\"{StaticResource TextForecolour}\" Checked=\"CheckBox_Checked\" />\n                                            <ItemsControl ItemsSource=\"{Binding AvailableCategories}\" Name=\"AdvancedSearchItemControl\">\n                                                <ItemsControl.ItemsPanel>\n                                                    <ItemsPanelTemplate>\n                                                        <StackPanel Orientation=\"Vertical\"/>\n                                                    </ItemsPanelTemplate>\n                                                </ItemsControl.ItemsPanel>\n                                                <ItemsControl.ItemTemplate>\n                                                    <DataTemplate>\n                                                        <CheckBox Content=\"{Binding Key}\" Foreground=\"{StaticResource TextForecolour}\" Checked=\"CheckBox_Checked\" Unchecked=\"CheckBox_Checked\" IsChecked=\"{Binding IsChecked}\" Visibility=\"{Binding IsVisibleString}\">\n                                                            <CheckBox.ToolTip>\n                                                                <Border Background=\"Black\" BorderBrush=\"#FFAB9066\" BorderThickness=\"1\">\n                                                                    <TextBlock Text=\"{Binding Value}\" Foreground=\"{StaticResource TextForecolour}\" />\n                                                                </Border>\n                                                            </CheckBox.ToolTip>\n                                                        </CheckBox>\n                                                    </DataTemplate>\n                                                </ItemsControl.ItemTemplate>\n                                            </ItemsControl>\n                                        </StackPanel>\n                                    </Grid>\n                                </ScrollViewer>\n                            </StackPanel>\n                        </Border>\n                    </TabItem>\n                    <TabItem Header=\"Gems\" Height=\"22\" Margin=\"-1,0,2,0\" Width=\"91\" Style=\"{StaticResource NonImages}\">\n                        <Border BorderBrush=\"{StaticResource BorderBrush}\" BorderThickness=\"2\" VerticalAlignment=\"Top\" Background=\"Black\" Margin=\"0,0,0,0\">\n                            <ScrollViewer VerticalScrollBarVisibility=\"Visible\" CanContentScroll=\"True\" Height=\"455\">\n                                <Grid>\n                                    <ItemsControl ItemsSource=\"{Binding GemDistribution}\">\n                                        <ItemsControl.ItemTemplate>\n                                            <DataTemplate>\n                                                <Grid Height=\"Auto\">\n                                                    <RichTextBox Background=\"Black\" BorderBrush=\"Transparent\" IsReadOnly=\"True\" SelectionBrush=\"Transparent\">\n                                                        <FlowDocument>\n                                                            <Paragraph>\n                                                                <Bold>\n                                                                    <Run Foreground=\"{StaticResource TextForecolour}\" Text=\"{Binding Key, Mode=OneWay}\"></Run>\n                                                                </Bold>\n                                                                <Run Foreground=\"{StaticResource TextForecolour}\" Text=\": \"></Run>\n                                                                <Run Foreground=\"{StaticResource TextForecolour}\" Text=\"{Binding Value, Mode=OneWay, StringFormat=0}\"></Run>\n                                                            </Paragraph>\n                                                        </FlowDocument>\n                                                    </RichTextBox>\n                                                </Grid>\n                                            </DataTemplate>\n                                        </ItemsControl.ItemTemplate>\n                                    </ItemsControl>\n                                </Grid>\n                            </ScrollViewer>\n                        </Border>\n                    </TabItem>\n                </TabControl>\n\n\n                <StackPanel Grid.Row=\"2\">\n                    <Button Style=\"{x:Null}\" Content=\"Refresh All Tabs\" Margin=\"2,2,2,0\" Command=\"{Binding RefreshCommand}\"\n                            IsEnabled=\"{Binding LoggedIn}\" />\n                    <Button Style=\"{x:Null}\" Content=\"Refresh Used Tabs\" Margin=\"2,2,2,0\" Command=\"{Binding RefreshUsedCommand}\"\n                            IsEnabled=\"{Binding LoggedIn}\" />\n                </StackPanel>\n            </Grid>\n        </Grid>\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "Procurement/View/StashView.xaml.cs",
    "content": "﻿using System.Windows.Controls;\nusing System.Windows.Input;\nusing Procurement.ViewModel;\n\nnamespace Procurement.View\n{\n    public partial class StashView : UserControl, IView\n    {\n        public StashView()\n        {\n            InitializeComponent();\n            this.DataContext = new StashViewModel(this);\n        }\n\n        public new Grid Content\n        {\n            get { return this.ViewContent; }\n        }\n\n        private void CheckBox_Checked(object sender, System.Windows.RoutedEventArgs e)\n        {\n            var vm = this.DataContext as StashViewModel;\n\n            if (vm == null)\n                return;\n\n            var cb = sender as CheckBox;\n            if (cb.Content.ToString() == \"None\" && cb.IsChecked.Value)\n            {\n                foreach (var item in VisualTreeHelper.GetVisualChildren<CheckBox>(cb.Parent))\n                    item.IsChecked = false;\n\n                return;\n            }\n\n            vm.SetCategoryFilter(cb.Content.ToString(), cb.IsChecked);\n        }\n\n        private void AdvancedSearchFilter_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)\n        {\n            var vm = this.DataContext as StashViewModel;\n\n            if (vm == null)\n                return;\n\n            var cb = sender as TextBox;\n\n            foreach (AdvancedSearchCategory category in AdvancedSearchItemControl.ItemsSource)\n            {\n                if (category.Key.ToLower().Contains(cb.Text.ToLower()))\n                {\n                    category.IsVisible = true;\n                }\n                else\n                {\n                    category.IsVisible = false;\n                }\n            }\n\n            AdvancedSearchItemControl.Items.Refresh();\n        }\n\n        private void HeaderPanel_OnPreviewMouseWheel(object sender, MouseWheelEventArgs e)\n        {\n            var scv = (ScrollViewer)sender;\n            if (scv == null)\n            {\n                return;\n            }\n\n            if (e.Delta > 0)\n            {\n                scv.PageLeft();\n            }\n            else\n            {\n                scv.PageRight();\n            }\n\n            e.Handled = true;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/TradingView.xaml",
    "content": "﻿<UserControl x:Class=\"Procurement.View.TradingView\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" \n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" \n             xmlns:poe=\"clr-namespace:Procurement.Controls\"\n             mc:Ignorable=\"d\" \n             Height=\"600\" Width=\"990\">\n    <UserControl.Resources>\n        <SolidColorBrush x:Key=\"TabControlNormalBorderBrush\" Color=\"#AA9072\" />\n        <SolidColorBrush x:Key=\"ButtonNormalBackground\" Color=\"#2D1D13\" />\n        <Style TargetType=\"{x:Type TabItem}\" x:Key=\"NonImages\">\n            <Setter Property=\"Template\">\n                <Setter.Value>\n                    <ControlTemplate TargetType=\"{x:Type TabItem}\">\n                        <ControlTemplate.Triggers>\n                            <Trigger Property=\"IsSelected\" Value=\"True\">\n                                <Setter Property=\"Foreground\" Value=\"#E7C892\" />\n                            </Trigger>\n                            <Trigger Property=\"IsSelected\" Value=\"False\">\n                                <Setter Property=\"Foreground\" Value=\"#795D42\" />\n                            </Trigger>\n                        </ControlTemplate.Triggers>\n                        <Grid>\n                            <Border \n                                  Name=\"Border\"\n                                  Background=\"#2D1C13\"\n                                  BorderBrush=\"Black\" \n                                  BorderThickness=\"1,1,1,1\" \n                                  CornerRadius=\"6,6,0,0\" >\n                                <ContentPresenter x:Name=\"ContentSite\"\n                    VerticalAlignment=\"Center\"\n                    HorizontalAlignment=\"Center\"\n                    ContentSource=\"Header\"\n                    Margin=\"12,2,12,2\"/>\n                            </Border>\n                        </Grid>\n                    </ControlTemplate>\n                </Setter.Value>\n            </Setter>\n        </Style>\n    </UserControl.Resources>\n    <Grid x:Name=\"ViewContent\" Width=\"990\">\n        <TabControl>\n            <TabItem Header=\"Forum Export\" Style=\"{StaticResource NonImages}\">\n                <poe:ForumExport />\n            </TabItem>\n            <TabItem Header=\"Forum Template\" Style=\"{StaticResource NonImages}\">\n                <poe:ForumTemplate />\n            </TabItem>\n            <TabItem Header=\"Trade Settings\" Style=\"{StaticResource NonImages}\">\n                <poe:BuyoutSettings />\n            </TabItem>\n        </TabControl>\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "Procurement/View/TradingView.xaml.cs",
    "content": "﻿using System.Windows.Controls;\nusing Procurement.ViewModel;\n\nnamespace Procurement.View\n{\n    public partial class TradingView : UserControl, IView\n    {\n        public TradingView()\n        {\n            InitializeComponent();\n            this.DataContext = new TradingViewModel();\n        }\n\n        public new Grid Content\n        {\n            get { return this.ViewContent; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/VisibilityConverter.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Data;\n\nnamespace Procurement.View\n{\n    public class VisibilityConverter : IValueConverter\n    {\n        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            var result = Visibility.Visible;\n\n            if (value == null)\n            {\n                result = Visibility.Hidden;\n            }\n            else\n            {\n                var str = value as string;\n\n                if (str != null)\n                {\n                    result = str.Length > 0 ? Visibility.Visible : Visibility.Hidden;\n                }\n                else\n                {\n                    var enumerable = value as IEnumerable;\n\n                    if (enumerable != null)\n                    {\n                        result = enumerable.Cast<object>().Any() ? Visibility.Visible : Visibility.Hidden;\n                    }\n                    else  if (value is int)\n                    {\n                        result = ((int)value) > 0 ? Visibility.Visible : Visibility.Hidden;\n                    }\n                    else if (value is double)\n                    {\n                        result = ((double)value) > 0 ? Visibility.Visible : Visibility.Hidden;\n                    }\n                    else if (value is bool)\n                    {\n                        result = ((bool) value) ? Visibility.Visible : Visibility.Hidden;\n\n                        if (parameter != null && parameter.ToString() == \"Invert\")\n                        {\n                            if (result == Visibility.Visible)\n                                result = Visibility.Collapsed;\n                            if (result == Visibility.Hidden)\n                                result = Visibility.Visible;\n                        }\n                    }\n                }\n            }\n\n            if (parameter != null && parameter.ToString() == \"CollapseWhenFalse\" && result == Visibility.Hidden)\n            {\n                result = Visibility.Collapsed;\n            }\n\n            return result;\n        }\n\n        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)\n        {\n            throw new NotImplementedException();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/View/VisualTreeHelper.cs",
    "content": "﻿using System.Windows;\nusing System.Collections.ObjectModel;\npublic static class VisualTreeHelper\n{\n    /// <summary>\n    /// Get visual tree children of a type\n    /// </summary>\n    /// <typeparam name=\"T\">Visual tree children type</typeparam>\n    /// <param name=\"visual\">A DependencyObject reference</param>\n    /// <param name=\"children\">A collection of one visual tree children type</param>\n    private static void GetVisualChildren<T>(DependencyObject current, Collection<T> children) where T : DependencyObject\n    {\n        if (current != null)\n        {\n            if (current.GetType() == typeof(T))\n            {\n                children.Add((T)current);\n            }\n\n            for (int i = 0; i < System.Windows.Media.VisualTreeHelper.GetChildrenCount(current); i++)\n            {\n                GetVisualChildren<T>(System.Windows.Media.VisualTreeHelper.GetChild(current, i), children);\n            }\n        }\n    }\n\n    /// <summary>\n    /// Get visual tree children of a type\n    /// </summary>\n    /// <typeparam name=\"T\">Visaul tree children type</typeparam>\n    /// <param name=\"visual\">A DependencyObject reference</param>\n    /// <returns>Returns a collection of one visual tree children type</returns>\n    public static Collection<T> GetVisualChildren<T>(DependencyObject current) where T : DependencyObject\n    {\n        if (current == null)\n        {\n            return null;\n        }\n\n        Collection<T> children = new Collection<T>();\n\n        GetVisualChildren<T>(current, children);\n\n        return children;\n    }\n\n    /// <summary>\n    /// Get the first visual child from a FrameworkElement Template\n    /// </summary>\n    /// <typeparam name=\"P\">FrameworkElement type</typeparam>\n    /// <typeparam name=\"T\">FrameworkElement type</typeparam>\n    /// <param name=\"p\">A FrameworkElement typeof P</param>\n    /// <returns>Returns a FrameworkElement visual child typeof T if found one; returns null otherwise</returns>\n    public static T GetVisualChild<T, P>(P templatedParent)\n        where T : FrameworkElement\n        where P : FrameworkElement\n    {\n        Collection<T> children = VisualTreeHelper.GetVisualChildren<T>(templatedParent);\n\n        foreach (T child in children)\n        {\n            if (child.TemplatedParent == templatedParent)\n            {\n                return child;\n            }\n        }\n\n        return null;\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/AdvancedSearchCategory.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel\n{\n    public class AdvancedSearchCategory\n    {\n        public AdvancedSearchCategory(string key, string value)\n        {\n            this.Key = key;\n            this.Value = value;\n            this.IsChecked = false;\n            this.IsVisible = true;\n        }\n\n        public string Key { get; set; }\n        public string Value { get; set; }\n        public bool IsChecked { get; set; }\n        public bool IsVisible { get; set; }\n        public System.Windows.Visibility IsVisibleString\n        {\n            get\n            {\n                return IsVisible ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed; \n            }\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Cache/BitmapCache.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing System.Windows.Media;\nusing System.Windows.Media.Imaging;\n\nnamespace Procurement.ViewModel.Cache\n{\n    public class BitmapCache\n    {\n        private readonly Func<string, Stream> _imageRetriveFunc;\n        private readonly Dictionary<string, BitmapImage> _cache = new Dictionary<string, BitmapImage>();\n\n        public int ImageCount\n        {\n            get { return _cache.Count; }\n        }\n\n        public BitmapCache(Func<string, Stream> imageRetriveFunc)\n        {\n            _imageRetriveFunc = imageRetriveFunc;\n        }\n\n        public BitmapImage this[string imageUrl]\n        {\n            get\n            {\n                BitmapImage bitmap;\n\n                if (_cache.TryGetValue(imageUrl, out bitmap))\n                {\n                    return bitmap;\n                }\n\n                bitmap = CreateBitmapImage(_imageRetriveFunc(imageUrl));\n\n                _cache[imageUrl] = bitmap;\n\n                return bitmap;\n            }\n        }\n\n        public BitmapImage GetByLocalUrl(string url)\n        {\n            BitmapImage bitmap;\n\n            if (_cache.TryGetValue(url, out bitmap))\n            {\n                return bitmap;\n            }\n\n            bitmap = CreateBitmapImage(url);\n\n            _cache[url] = bitmap;\n\n            return bitmap;\n        }\n\n        private static BitmapImage CreateBitmapImage(Stream stream)\n        {\n            var bitmap = new BitmapImage();\n\n            bitmap.BeginInit();\n            bitmap.StreamSource = stream;\n            bitmap.CacheOption = BitmapCacheOption.OnLoad;\n            bitmap.EndInit();\n            bitmap.Freeze();\n\n            return bitmap;\n        }\n\n        private static BitmapImage CreateBitmapImage(string url)\n        {\n            var bitmap = new BitmapImage();\n\n            bitmap.BeginInit();\n            bitmap.UriSource = new Uri(url, UriKind.Absolute);\n            bitmap.CacheOption = BitmapCacheOption.OnLoad;\n            bitmap.EndInit();\n            bitmap.Freeze();\n\n            return bitmap;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/DisplayModeStrategy/DisplayModeFactory.cs",
    "content": "﻿using System;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel\n{\n    internal static class DisplayModeFactory\n    {\n        public static IDisplayModeStrategy Create(Property property)\n        {\n            switch (property.DisplayMode)\n            {\n                case 0:\n                    return new NamePlusValueStrategy(property);\n                case 1:\n                    return new ValuesPlusNameStrategy(property);\n                case 2:\n                case 3:\n                    return new StringFormatStrategy(property);\n            }\n            throw new NotImplementedException(\"DispalyMode Factory, I have no idea what I am doing\");\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/DisplayModeStrategy/DisplayModeStrategyBase.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Windows.Documents;\nusing System.Windows.Media;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel\n{\n    internal abstract class DisplayModeStrategyBase : IDisplayModeStrategy\n    {\n        protected Dictionary<int, SolidColorBrush> displayColorMappings;\n        protected Property property { get; set; }\n        public DisplayModeStrategyBase(Property property)\n        {\n            this.property = property;\n            displayColorMappings = new Dictionary<int, SolidColorBrush>();\n            displayColorMappings.Add(0, Brushes.White);\n            displayColorMappings.Add(1, new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#8888F1\")));\n            displayColorMappings.Add(4, new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#960003\"))); //Red fire\n            displayColorMappings.Add(5, new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#2943c6\"))); //Blue cold\n            displayColorMappings.Add(6, new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#f2bc01\"))); //Yellow lightning\n            displayColorMappings.Add(7, new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#D02090\"))); //Pink chaos\n            displayColorMappings.Add(8, new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#FFFFFF\"))); //Imprint White\n            displayColorMappings.Add(9, new SolidColorBrush((Color)ColorConverter.ConvertFromString(\"#FFFFFF\"))); //White\n        }\n\n        public abstract Block Get();\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/DisplayModeStrategy/IDisplayModeStrategy.cs",
    "content": "﻿using System.Windows.Documents;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel\n{\n    internal interface IDisplayModeStrategy\n    {\n        Block Get();\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/DisplayModeStrategy/NamePlusValueStrategy.cs",
    "content": "﻿using System.Windows;\nusing System.Windows.Documents;\nusing System.Windows.Media;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel\n{\n    internal class NamePlusValueStrategy : DisplayModeStrategyBase\n    {\n        public NamePlusValueStrategy(Property property)\n            : base(property)\n        { }\n\n        public override Block Get()\n        {\n            Paragraph ret = new Paragraph(new Run(property.Name) { Foreground = Brushes.Gray });\n         \n            for (int i = 0; i < property.Values.Count; i++)\n            {\n                ret.Inlines.Add(new Run(\" \" + (property.Values[i].Item1)) { Foreground = base.displayColorMappings[property.Values[i].Item2]});\n                if (i != property.Values.Count - 1)\n                    ret.Inlines.Add(new Run(\", \") { Foreground = Brushes.Gray });\n            }\n\n            return ret;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/DisplayModeStrategy/StringFormatStrategy.cs",
    "content": "﻿using System.Windows;\nusing System.Windows.Documents;\nusing System.Windows.Media;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel\n{\n    internal class StringFormatStrategy : DisplayModeStrategyBase\n    {\n        public StringFormatStrategy(Property property)\n            : base(property)\n        { }\n\n        public override Block Get()\n        {\n            Paragraph ret = new Paragraph();\n\n            var parts = property.Name.Split('%');\n            ret.Inlines.Add(new Run(parts[0]) { Foreground = Brushes.Gray });\n            ret.Inlines.Add(new Run(property.Values[0].Item1) { Foreground = Brushes.White } );\n\n            // Heist contracts (and possibly other items now, too) appear to\n            // have only one part parsed from the property.\n            if (parts.Length == 1)\n                return ret;\n\n            ret.Inlines.Add(new Run(parts[1].Substring(1)) { Foreground = Brushes.Gray });\n\n            if (property.Values.Count == 1)\n                return ret;\n\n            ret.Inlines.Add(new Run(property.Values[1].Item1) { Foreground = Brushes.White } );\n            ret.Inlines.Add(new Run(parts[2].Substring(1)) { Foreground = Brushes.Gray });\n\n            return ret;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/DisplayModeStrategy/ValuesPlusNameStrategy.cs",
    "content": "﻿using System.Windows;\nusing System.Windows.Documents;\nusing System.Windows.Media;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel\n{\n    class ValuesPlusNameStrategy : DisplayModeStrategyBase\n    {\n        public ValuesPlusNameStrategy(Property property)\n            : base(property)\n        { }\n\n        public override Block Get()\n        {\n            Paragraph ret = new Paragraph(new Run(property.Values[0].Item1) { Foreground = Brushes.Gray });\n            if (property.Values.Count > 0)\n                ret.Inlines.Add(new Run(\" \" + property.Name) { Foreground = Brushes.White});\n\n            return ret;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/FilterGroup.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters\n{\n    public enum FilterGroup\n    {\n        Microtransactions,\n        Resistances,\n        Rarity,\n        Links,\n        MagicFind,\n        Gems,\n        Default,\n        Damage,\n        Attacks,\n        Level,\n        Crit,\n        CharacterAttributes,\n        MapFragments,\n        GearTypes,\n        SocketColour\n    };\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/AccurayFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class AccurayFilter : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Attacks; }\n        }\n\n        public AccurayFilter()\n            : base(\"Increased Accuracy\", \"Increased Accuracy\", \"Accuracy\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/AllElementalResistances.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters\n{\n    internal class AllElementalResistances : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Resistances; }\n        }\n\n        public AllElementalResistances()\n            : base(\"All elemental Resistances\", \"All elemental Resistances\", \"to all Elemental Resistances\")\n        { }\n    }\n}\n\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/AllGemsFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class AllGemsFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"All gems\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Any and all gems\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Gems; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear != null && gear.SocketedItems.Any(x => Applicable(x)))\n                return true;\n\n            return item is Gem;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/AllMicrotransactions.cs",
    "content": "﻿using POEApi.Model;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class AllMicrotransactions : IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Microtransactions; }\n        }\n\n        public string Keyword\n        {\n            get { return \"All microtransactions\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Returns all items with Microtransactions\"; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            if (item.Microtransactions.Count > 0)\n                return true;\n\n            var gear = item as Gear;\n\n            if (gear != null && gear.SocketedItems.Any(x => Applicable(x)))\n                return true;\n\n            return false;\n        }\n\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/AndFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Procurement.ViewModel.Filters;\n\npublic class AndFilter : IFilter\n{\n    public FilterGroup Group\n    {\n        get { return FilterGroup.Default; }\n    }\n\n    List<IFilter> filters;\n\n    public AndFilter(params IFilter[] filters)\n    {\n        this.filters = new List<IFilter>();\n        this.filters.AddRange(filters);\n    }\n\n    public bool CanFormCategory\n    {\n        get { return false; }\n    }\n\n    public string Keyword\n    {\n        get { return string.Join(Environment.NewLine, filters.Select(f => f.Keyword).ToArray()); }\n    }\n\n    public string Help\n    {\n        get { return string.Join(Environment.NewLine, filters.Select(f => f.Help).ToArray()); }\n    }\n\n    public bool Applicable(POEApi.Model.Item item)\n    {\n        return filters.All(filter => filter.Applicable(item));\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/AtlasFragmentFilter.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters\n{\n    public class AtlasFragmentFilter : TypeLineFilter\n    {\n        public AtlasFragmentFilter()\n            : base(\"Fragment of the Hydra\", \"Fragment of the Phoenix\", \"Fragment of the Minotaur\", \"Fragment of the Chimera\")\n        { }\n        public override bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public override string Keyword\n        {\n            get { return \"Atlas Fragments\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Atlas Fragments\"; }\n        }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.MapFragments; }\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/AttackSpeed.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class AttackSpeed : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Attacks; }\n        }\n\n        public AttackSpeed()\n            : base(\"Increased Attack Speed\", \"Increased Attack Speed\", \"Increased Attack Speed\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/AuraGemsFilter.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters\n{\n    internal class AuraGemsFilter : GemCategoryFilter\n    {\n        public AuraGemsFilter()\n            : base(\"aura\")\n        { }\n\n        public override string Keyword\n        {\n            get { return \"Aura Gems\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Gems that buff the player with an aura\"; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/BuyoutFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class BuyoutFilter : IFilter\n    {\n        private string buyoutValue;\n        public BuyoutFilter(string buyoutValue)\n        {\n            this.buyoutValue = buyoutValue;\n        }\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return string.Empty; }\n        }\n\n        public string Help\n        {\n            get { return \"Returns all items with matching buyout set\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            bool isItemBuyout = false;\n            bool isItemPriced = false;\n            bool isTabBuyout = false;\n\n            if (Settings.Buyouts.ContainsKey(item.Id))\n            {\n                var itemInfo = Settings.Buyouts[item.Id];\n\n                isItemBuyout = itemInfo.Buyout.ToLower() == buyoutValue.ToLower();\n                isItemPriced = itemInfo.Price.ToLower() == buyoutValue.ToLower();\n            }\n\n            isTabBuyout = Settings.TabsBuyouts.ContainsKey(ApplicationState.Stash[ApplicationState.CurrentLeague].GetTabNameByInventoryId(item.InventoryId));\n\n            return isItemBuyout || isItemPriced  || isTabBuyout;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/CastSpeed.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class CastSpeed : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Attacks; }\n        }\n\n        public CastSpeed()\n            : base(\"Increased Cast Speed\", \"Increased Cast Speed\", \"Increased Cast Speed\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/CategoryManager.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Reflection;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public static class CategoryManager\n    {\n        private static Dictionary<string, IEnumerable<IFilter>> categories;\n        private static List<IFilter> availableFilters;\n\n        static CategoryManager()\n        {\n            categories = new Dictionary<string, IEnumerable<IFilter>>();\n            availableFilters = getAvailableFilters();\n\n            initializeBaseCategories();\n            initializeUserCategories();\n        }\n\n        public static List<AdvancedSearchCategory> GetAvailableCategories()\n        {\n            List<AdvancedSearchCategory> advancedSearchCategories = new List<AdvancedSearchCategory>();\n            foreach (var category in categories)\n            {\n                advancedSearchCategories.Add(new AdvancedSearchCategory(category.Key, string.Join(Environment.NewLine, category.Value.Select(filter => filter.Help))));\n            }\n\n            return advancedSearchCategories;\n        }\n\n        public static IEnumerable<IFilter> GetCategory(string category)\n        {\n            return categories[category];\n        }\n\n        private static void initializeUserCategories()\n        {\n            //For Testing and Illustration\n            categories.Add(\"Craftables\", new List<IFilter>() { new NormalRarity(), new OrFilter(new FourLink(), new FiveLink()) });\n        }\n\n        public static List<IFilter> GetAvailableFilters()\n        {\n            availableFilters = availableFilters ?? getAvailableFilters();\n            return availableFilters;\n        }\n        private static List<IFilter> getAvailableFilters()\n        {\n            return Assembly.GetExecutingAssembly().GetTypes()\n                                                  .Where(t => !(t.IsAbstract || t.IsInterface) && typeof(IFilter).IsAssignableFrom(t) && t.Name != typeof(OrFilter).Name)\n                                                  .Where(t => t.GetConstructor(new Type[] { }) != null)\n                                                  .OrderBy(t => t.Name)\n                                                  .Select(t => Activator.CreateInstance(t) as IFilter)\n                                                  .OrderBy(i => i.Group)\n                                                  .ThenBy(i => i.Keyword)\n                                                  .ToList();\n        }\n\n        private static void initializeBaseCategories()\n        {\n            availableFilters.ForEach(f => categories.Add(f.Keyword, new List<IFilter>() { f }));\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ChaosResistance.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters\n{\n    internal class ChaosResistance : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Resistances; }\n        }\n\n        public ChaosResistance()\n            : base(\"Chaos Resistance\", \"Chaos Resistance\", \"to Chaos Resistance\")\n        { }\n    }\n}\n\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/CharacterAttributeFilters.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    class StrengthFilter : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.CharacterAttributes; }\n        }\n\n        public StrengthFilter()\n            : base(\"Increased Strength\", \"Strength\", \"Strength\")\n        { }\n    }\n\n\n    class IntelligenceFilter : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.CharacterAttributes; }\n        }\n\n        public IntelligenceFilter()\n            : base(\"Increased Intelligence\", \"Intelligence\", \"Intelligence\")\n        { }\n    }\n\n    class DexterityFilter : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.CharacterAttributes; }\n        }\n\n        public DexterityFilter()\n            : base(\"Increased Dexterity\", \"Increased Dexterity\", \"Dexterity\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ColdResistance.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters\n{\n    internal class ColdResistance : OrStatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Resistances; }\n        }\n\n        public ColdResistance()\n            : base(\"Cold Resistance\", \"Cold Resistance\", \"to Cold Resistance\", \"to Fire and Cold Resistances\", \"to Cold and Lightning Resistances\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/CorruptedGemFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters\n{\n    internal class CorruptedGemFilter : IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Gems; }\n        }\n\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Corrupted Gems\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Corrupted Gems\"; }\n        }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear != null && gear.SocketedItems.Any(x => Applicable(x)))\n                return true;\n\n            Gem gem = item as Gem;\n            if (gem == null)\n                return false;\n\n            return gem.Corrupted;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/CraftedModFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class CraftedModFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Crafted Mods\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Items with crafted mods\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return item.CraftedMods != null && item.CraftedMods.Count() > 0;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/CritChanceFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class CritChanceFilter : ExplicitModBase\n    {\n        public CritChanceFilter()\n            : base(\"increased Critical Strike Chance\")\n        { }\n\n        public override bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public override string Keyword\n        {\n            get { return \"Crit Chance\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Items with increased Critical Strike Chance\"; }\n        }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Crit; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/CurrencyFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class CurrencyFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Currency\"; }\n        }\n\n        public string Help\n        {\n            get { return \"All currency items\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return item is Currency || item is BreachSplinter || item is LegionSplinter || item is LegionEmblem || item is Breachstone || item is Sextant;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/CurseGemFilter.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    class CurseGemFilter : GemCategoryFilter\n    {\n        public CurseGemFilter()\n            : base(\"curse\")\n        { }\n\n\n        public override string Keyword\n        {\n            get { return \"Curse Gems\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Gems curse targets in an area\"; }\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/DamageChaos.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class DamageChaos : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Damage; }\n        }\n\n        public DamageChaos()\n            : base(\"Adds Chaos Damage\", \"Adds Chaos Damage\", \"Adds \\\\d+ to \\\\d+ Chaos Damage\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/DamageCold.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class DamageCold : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Damage; }\n        }\n\n        public DamageCold()\n            : base(\"Adds Cold Damage\", \"Adds Cold Damage\", \"Adds \\\\d+ to \\\\d+ Cold Damage\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/DamageFire.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class DamageFire : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Damage; }\n        }\n\n        public DamageFire()\n            : base(\"Adds Fire Damage\", \"Adds Fire Damage\", \"Adds \\\\d+ to \\\\d+ Fire Damage\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/DamageLightning.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class DamageLightning: StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Damage; }\n        }\n\n        public DamageLightning()\n            : base(\"Adds Lightning Damage\", \"Adds Lightning Damage\", \"Adds \\\\d+ to \\\\d+ Lightning Damage\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/DamageTriple.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class DamageTriple : IFilter\n    {\n        private List<StatFilter> resistances;\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Damage; }\n        }\n\n        public DamageTriple()\n        {\n            resistances = new List<StatFilter>();\n            resistances.Add(new DamageCold());\n            resistances.Add(new DamageFire());\n            resistances.Add(new DamageLightning());\n        }\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Triple Elemental Damage\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Returns items with Triple Elemental Damage\"; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return resistances.Count(r => r.Applicable(item)) >= 3;\n        }\n\n        public bool IsChecked { get; set; }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/DivineVesselFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class DivineVesselFilter : IFilter\n    {\n        public bool CanFormCategory { get; } = true;\n        public string Keyword { get; } = \"Divine Vessel\";\n        public string Help { get; } = \"Divine Vessels\";\n        public FilterGroup Group { get; }\n        public bool Applicable(Item item)\n        {\n            return item is DivineVessel;\n        }\n    }\n\n    public class OfferingFilter : IFilter\n    {\n        public bool CanFormCategory { get; } = true;\n        public string Keyword { get; } = \"Offering to the Goddess\";\n        public string Help { get; } = \"Offering to the Goddesses\";\n        public FilterGroup Group { get; }\n        public bool Applicable(Item item)\n        {\n            return item is Offering;\n        }\n    }\n    \n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/DropOnlyGemFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters\n{\n    internal class DropOnlyGemFilter : IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Gems; }\n        }\n\n        private List<string> dropOnly;\n\n        public DropOnlyGemFilter()\n        {\n            // From http://en.pathofexilewiki.com/wiki/Drop_Only_Gems.\n            dropOnly = Settings.DropOnlyGems;\n        }\n\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Drop-Only Gems\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Gems which can only be aquired through drops\"; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear != null && gear.SocketedItems.Any(x => Applicable(x)))\n                return true;\n\n            Gem gem = item as Gem;\n            if (gem == null)\n                return false;\n\n            return dropOnly.Contains(gem.TypeLine);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/DualRes.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public class DualResistances : ResistanceBase, IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Resistances; }\n        }\n\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Dual Resists\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Items with dual resists\"; }\n        }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            return resistances.Count(r => r.Applicable(item)) == 2;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ElderItemFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class ElderItemFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get\n            {\n                return false;\n            }\n        }\n\n        public string Keyword\n        {\n            get\n            {\n                return \"Elder Items\";\n            }\n        }\n\n        public string Help\n        {\n            get\n            {\n                return \"All Elder Items\";\n            }\n        }\n\n        public FilterGroup Group\n        {\n            get\n            {\n                return FilterGroup.Default;\n            }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return item.Elder;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/EnchantModFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class EnchantModFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Enchanted\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Items with enchantments\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return item.EnchantMods != null && item.EnchantMods.Count() > 0;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/EnergyShieldFilter.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class EnergyShieldFilter : ExplicitModBase\n    {\n        public EnergyShieldFilter()\n            : base(\"Energy Shield\")\n        { }\n\n        public override bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public override string Keyword\n        {\n            get { return \"Energy Shield\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Items with Energy Shield\"; }\n        }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/EssenceFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class EssenceFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get\n            {\n                return false;\n            }\n        }\n\n        public string Keyword\n        {\n            get\n            {\n                return \"Essence\";\n            }\n        }\n\n        public string Help\n        {\n            get\n            {\n                return \"All Essences\";\n            }\n        }\n\n        public FilterGroup Group\n        {\n            get\n            {\n                return FilterGroup.Default;\n            }\n        }\n\n        public bool Applicable(Item item)\n        {\n            var loweredTypeLine = item.TypeLine.ToLower();\n            return loweredTypeLine.Contains(\"essence\") || loweredTypeLine.Contains(\"remnant of\");\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ExplicitModBase.cs",
    "content": "﻿using POEApi.Model;\nusing System;\nusing System.Diagnostics;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public abstract class ExplicitModBase : IFilter\n    {\n        private readonly string keyword;\n        public ExplicitModBase(string keyword)\n        {\n            this.keyword = keyword;\n        }\n\n        public bool Applicable(Item item)\n        {\n            if (item.Explicitmods == null || !(item is Gear))\n                return false;\n\n            foreach (var mod in item.Explicitmods)\n                if (mod.Contains(keyword))\n                    return true;\n\n            return false;\n        }\n\n        public abstract bool CanFormCategory\n        {\n            get;\n        }\n\n        public abstract string Keyword\n        {\n            get;\n        }\n\n        public abstract string Help\n        {\n            get;\n        }\n\n        public abstract FilterGroup Group\n        {\n            get;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/FatedUniqueBaseTypesFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class FatedUniqueBaseTypesFilter : IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Fated Unique Base Types\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Unidentified unique items that share a base type with a Fated Unique.\"; }\n        }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear == null || gear.Rarity != Rarity.Unique || gear.Identified)\n                return false;\n\n            // TODO: Unique items each have their own, well, unique icon URL.  It is possible to build a map from icon\n            //       URL to unique item, so we can know which unique item an unidentified unique is, and therefore\n            //       whether it is a fated unique target.  However, alternate art items complicate this.\n            return Settings.FatedUniques.Any(u => string.Equals(u.BaseTypeName, gear.BaseType,\n                System.StringComparison.CurrentCultureIgnoreCase));\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/FatedUniquePropheciesFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class FatedUniquePropheciesFilter : IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Fated Unique Prophecies\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Prophecies which can upgrade uniques to Fated Uniques.\"; }\n        }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            Prophecy prophecy = item as Prophecy;\n            if (prophecy == null)\n                return false;\n\n            return Settings.FatedUniques.Any(u => string.Equals(u.ProphecyName, prophecy.TypeLine,\n                System.StringComparison.CurrentCultureIgnoreCase));\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/FatedUniqueTargetsFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class FatedUniqueTargetsFilter : IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Fated Unique Targets\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Unique items that can be upgraded via Prophecy.\"; }\n        }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear == null || gear.Rarity != Rarity.Unique || !gear.Identified)\n                return false;\n\n            return Settings.FatedUniques.Any(u => string.Equals(u.TargetItemName, gear.Name,\n                System.StringComparison.CurrentCultureIgnoreCase));\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/FatedUniquesFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class FatedUniquesFilter : IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Fated Uniques\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Unique items upgraded via Prophecy.\"; }\n        }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear == null || gear.Rarity != Rarity.Unique || !gear.Identified)\n                return false;\n\n            return Settings.FatedUniques.Any(u => string.Equals(u.FatedItemName, gear.Name,\n                System.StringComparison.CurrentCultureIgnoreCase));\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/FireResistance.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters\n{\n    public class FireResistance : OrStatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Resistances; }\n        }\n\n        public FireResistance()\n            : base(\"Fire Resistance\", \"Fire Resistance\", \"to Fire Resistance\", \"to Fire and Lightning Resistances\", \"to Fire and Cold Resistances\")\n        { }\n    }\n}\n\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/FiveLink.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Procurement.ViewModel;\n\nnamespace Procurement.ViewModel.Filters\n{\n    internal class FiveLink : Link\n    {\n        public FiveLink()\n            : base(5)\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/FossilFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class FossilFilter : IFilter\n    {\n        public bool CanFormCategory { get; }\n        public string Keyword { get; } = \"Fossil\";\n        public string Help { get; } = \"All Fossils\";\n        public FilterGroup Group { get; } = FilterGroup.Default;\n        public bool Applicable(Item item)\n        {\n            return item is Fossil;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/FourLink.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Procurement.ViewModel;\n\nnamespace Procurement.ViewModel.Filters\n{\n    internal class FourLink : Link\n    {\n        public FourLink()\n            : base(4)\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/FracturedItemFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class FracturedItemFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get\n            {\n                return false;\n            }\n        }\n\n        public string Keyword\n        {\n            get\n            {\n                return \"Fractured Items\";\n            }\n        }\n\n        public string Help\n        {\n            get\n            {\n                return \"All Fractured Items\";\n            }\n        }\n\n        public FilterGroup Group\n        {\n            get\n            {\n                return FilterGroup.Default;\n            }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return item.Fractured;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/FullBestiaryOrbFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class FullBestiaryOrbFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get\n            {\n                return false;\n            }\n        }\n\n        public string Keyword\n        {\n            get\n            {\n                return \"Full Bestiary Orb\";\n            }\n        }\n\n        public string Help\n        {\n            get\n            {\n                return \"All Bestiary Orbs Containing Beasts\";\n            }\n        }\n\n        public FilterGroup Group\n        {\n            get\n            {\n                return FilterGroup.Default;\n            }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return item is FullBestiaryOrb;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/GearSearchFilters.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    class RingFilter : GearTypeFilter\n    {\n        public RingFilter()\n            : base(GearType.Ring, \"Rings\")\n        { }\n    }\n\n    class AmuletFilter : GearTypeFilter\n    {\n        public AmuletFilter()\n            : base(GearType.Amulet, \"Amulets\")\n        { }\n    }\n\n    class TalismanFilter : GearTypeFilter\n    {\n        public TalismanFilter()\n            : base (GearType.Talisman, \"Talisman\")\n        { }\n    }\n\n    class HelmetFilter : GearTypeFilter\n    {\n        public HelmetFilter()\n            : base(GearType.Helmet, \"Helmets\")\n        { }\n    }\n\n    class ChestFilter : GearTypeFilter\n    {\n        public ChestFilter()\n            : base(GearType.Chest, \"BodyArmor\")\n        { }\n    }\n\n    class GlovesFilter : GearTypeFilter\n    {\n        public GlovesFilter()\n            : base(GearType.Gloves, \"Gloves\")\n        { }\n    }\n\n    class BootFilter : GearTypeFilter\n    {\n        public BootFilter()\n            : base(GearType.Boots, \"Boots\")\n        { }\n    }\n\n    class BeltFilter : GearTypeFilter\n    {\n        public BeltFilter()\n            : base(GearType.Belt, \"Belts\")\n        { }\n    }\n\n    class AxeFilter : GearTypeFilter\n    {\n        public AxeFilter()\n            : base(GearType.Axe, \"Axes\")\n        { }\n    }\n\n    class ClawFilter : GearTypeFilter\n    {\n        public ClawFilter()\n            : base(GearType.Claw, \"Claws\")\n        { }\n    }\n\n    class BowFilter : GearTypeFilter\n    {\n        public BowFilter()\n            : base(GearType.Bow, \"Bows\")\n        { }\n    }\n\n    class DaggerFilter : GearTypeFilter\n    {\n        public DaggerFilter()\n            : base(GearType.Dagger, \"Daggers\")\n        { }\n    }\n\n    class MaceFilter : GearTypeFilter\n    {\n        public MaceFilter()\n            : base(GearType.Mace, \"Maces\")\n        { }\n    }\n\n    class QuiverFilter : GearTypeFilter\n    {\n        public QuiverFilter()\n            : base(GearType.Quiver, \"Quivers\")\n        { }\n    }\n\n    class SceptreFilter : GearTypeFilter\n    {\n        public SceptreFilter()\n            : base(GearType.Sceptre, \"Sceptres\")\n        { }\n    }\n\n\n    class StaffFilter : GearTypeFilter\n    {\n        public StaffFilter()\n            : base(GearType.Staff, \"Staves\")\n        { }\n    }\n\n    class SwordFilter : GearTypeFilter\n    {\n        public SwordFilter()\n            : base(GearType.Sword, \"Swords\")\n        { }\n    }\n\n    class ShieldFilter : GearTypeFilter\n    {\n        public ShieldFilter()\n            : base(GearType.Shield, \"Shields\")\n        { }\n    }\n\n    class WandFilter : GearTypeFilter\n    {\n        public WandFilter()\n            : base(GearType.Wand, \"Wands\")\n        { }\n    }\n\n    class FishingRodFilter : GearTypeFilter\n    {\n        public FishingRodFilter()\n            : base(GearType.FishingRod, \"Fishing Rods\")\n        { }\n    }\n\n    class FlaskFilter : GearTypeFilter\n    {\n        public FlaskFilter()\n            : base(GearType.Flask, \"Flasks\")\n        { }\n    }\n\n    class DivinationCardFilter : GearTypeFilter\n    {\n        public DivinationCardFilter()\n            : base(GearType.DivinationCard, \"Divination Cards\")\n        {\n\n        }\n    }\n\n    class JewelFilter : GearTypeFilter\n    {\n        public JewelFilter()\n            : base(GearType.Jewel, \"Jewels\")\n        {\n\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/GearTypeFilter.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters\n{  \n    public class GearTypeFilter : IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.GearTypes; }\n        }\n\n        private GearType gearType;\n        public GearTypeFilter(GearType gearType, string keyword)\n        {\n            this.gearType = gearType;\n            this.Keyword = keyword;\n        }\n\n        public string Keyword { get; set; }\n        public string Help { get { return \"Returns All \" + gearType.ToString() + \" gear\"; } }\n\n        public bool Applicable(Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear != null)\n                return gear.GearType == gearType;\n\n            return false;\n        }\n\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/GemCategoryFilter.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters\n{\n    internal class GemCategoryFilter : IFilter\n    {\n        private string filter;\n        public GemCategoryFilter(string filter)\n        {\n            this.filter = filter;\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Gems; }\n        }\n\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public virtual string Keyword\n        {\n            get { return \"Category Gems\"; }\n        }\n\n        public virtual string Help\n        {\n            get { return \"Category Gems\"; }\n        }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear != null && gear.SocketedItems.Any(x => Applicable(x)))\n                return true;\n            \n            Gem gem = item as Gem;\n            if (gem == null)\n                return false;\n\n            try\n            {\n                return gem.Properties[0].Name.ToLower().Contains(filter.ToLower());\n            }\n            catch (Exception)\n            {\n                return false;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/GemLevelFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class GemLevelFilter : StatFilter\n    {\n        internal GemLevelFilter(string keyword)\n            : base(\"Increased \" + keyword + \" gem level\", \"Items that increases the level of \" + keyword + \" gems\", \"to level of socketed \" + keyword + \" gems\")\n        { }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Gems; }\n        }\n    }\n\n    internal class AllGemLevelFilter : StatFilter\n    {\n        public AllGemLevelFilter()\n            : base(\"Increased all gem level\", \"Items that increases the level of gems\", \"to Level of Socketed Gems\")\n        { }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Gems; }\n        }\n    }\n\n    internal class ColdGemLevelFilter : GemLevelFilter\n    {\n        public ColdGemLevelFilter()\n            : base(\"cold\")\n        { }\n    }\n\n    internal class FireGemLevelFilter : GemLevelFilter\n    {\n        public FireGemLevelFilter()\n            : base(\"fire\")\n        { }\n    }\n\n    internal class LightningGemLevelFilter : GemLevelFilter\n    {\n        public LightningGemLevelFilter()\n            : base(\"lightning\")\n        { }\n    }\n\n    internal class ChaosGemLevelFilter : GemLevelFilter\n    {\n        public ChaosGemLevelFilter()\n            : base(\"chaos\")\n        { }\n    }\n\n    internal class MeleeGemLevelFilter : GemLevelFilter\n    {\n        public MeleeGemLevelFilter()\n            : base(\"melee\")\n        { }\n    }\n\n    internal class BowGemLevelFilter : GemLevelFilter\n    {\n        public BowGemLevelFilter()\n            : base(\"bow\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/GlobalCritChanceFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class GlobalCritChanceFilter : ExplicitModBase\n    {\n        public GlobalCritChanceFilter()\n            : base(\"increased Global Critical Strike Chance\")\n        { }\n\n        public override bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public override string Keyword\n        {\n            get { return \"Global Crit Chance\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Items with increased Global Critical Strike Chance\"; }\n        }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Crit; }\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/GlobalCritMultiplierFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class GlobalCritMultiplierFilter : ExplicitModBase\n    {\n        public GlobalCritMultiplierFilter()\n            : base(\"to Global Critical Strike Multiplier\")\n        { }\n\n        public override bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public override string Keyword\n        {\n            get { return \"Global Crit Multiplier\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Items with additional Global Critical Strike Multiplier\"; }\n        }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Crit; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/IncreasedDamageFilter.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class IncreasedDamageFilter : StatFilter\n    {\n        internal IncreasedDamageFilter(string keyword, string help, params string[] stats)\n            : base(keyword, help, stats)\n        { }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Damage; }\n        }\n    }\n\n    internal class IncreasedDamageFilterCold : IncreasedDamageFilter\n    {\n        public IncreasedDamageFilterCold()\n            : base(\"Increased Cold Damage\", \"Increased Cold Damage\", \"Increased Cold Damage\")\n        { }\n    }\n\n    internal class IncreasedDamageFilterFire : IncreasedDamageFilter\n    {\n        public IncreasedDamageFilterFire()\n            : base(\"Increased Fire Damage\", \"Increased Fire Damage\", \"Increased Fire Damage\")\n        { }\n    }\n\n    internal class IncreasedDamageFilterLightning : IncreasedDamageFilter\n    {\n        public IncreasedDamageFilterLightning()\n            : base(\"Increased Lightning Damage\", \"Increased Lightning Damage\", \"Increased Lightning Damage\")\n        { }\n    }\n\n    internal class IncreasedDamageFilterElemental : IncreasedDamageFilter\n    {\n        public IncreasedDamageFilterElemental()\n            : base(\"Increased Elemental Damage\", \"Increased Elemental Damage\", \"\\\\d+% increased Elemental Damage$\")\n        { }\n    }\n\n    internal class IncreasedDamageFilterElementalWithAttackSkills : IncreasedDamageFilter\n    {\n        public IncreasedDamageFilterElementalWithAttackSkills()\n            : base(\"Increased Elemental Damage With Attack Skills\", \"Increased Elemental Damage With Attack Skills\",\n            \"\\\\d+% increased Elemental Damage with Attack Skills\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/IncreasedPhysicalDamageFilter.cs",
    "content": "﻿using Procurement.ViewModel.Filters.ForumExport;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public class IncreasedPhysicalDamageFilter : ExplicitModBase\n    {\n        public IncreasedPhysicalDamageFilter()\n            : base(\"increased Physical Damage\")\n        { }\n\n        public override bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public override string Keyword\n        {\n            get { return \"Increased Physical Damage\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Items with Increased Physical Damage\"; }\n        }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Damage; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/IncubatorFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class IncubatorFilter : IFilter\n    {\n        public string Keyword { get; } = \"Incubators\";\n        public bool CanFormCategory { get; } = true;\n        public string Help { get; } = \"All Legion incubators\";\n        public FilterGroup Group { get; } = FilterGroup.Default;\n        public bool Applicable(Item item)\n        {\n            return item is Incubator;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/IncursionVialsFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class IncursionVialsFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get\n            {\n                return false;\n            }\n        }\n\n        public string Keyword\n        {\n            get\n            {\n                return \"Incursion Vials\";\n            }\n        }\n\n        public string Help\n        {\n            get\n            {\n                return \"All Vials used to upgrade items in the Temple of Atzoatl.\";\n            }\n        }\n\n        public FilterGroup Group\n        {\n            get\n            {\n                return FilterGroup.Default;\n            }\n        }\n\n        public bool Applicable(Item item)\n        {\n            var currency = item as Currency;\n            if (currency == null)\n                return false;\n\n            return currency.Type == OrbType.IncursionVial;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ItemQuantityFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public class ItemQuantityFilter : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.MagicFind; }\n        }\n\n        public ItemQuantityFilter()\n            : base(\"Item Quantity\", \"Item with the Item Quantity stat\", \"INCREASED QUANTITY\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ItemRarityFilter.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters\n{\n    internal class ItemRarityFilter : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.MagicFind; }\n        }\n\n        public ItemRarityFilter()\n            : base(\"Item Rarity\", \"Item with the Item Rarity stat\", \"INCREASED RARITY\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/LeagestoneFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class LeagestoneFilter : IFilter\n    {\n        public bool CanFormCategory => false;\n\n        public string Keyword => \"Leaguestone\";\n\n        public string Help => \"All Leaguestones\";\n\n        public FilterGroup Group => FilterGroup.Default;\n\n        public bool Applicable(Item item)\n        {\n            return item.TypeLine.ToLower().Contains(\"leaguestone\");\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/LeveledGemFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters\n{\n    internal class LeveledGemFilter : IFilter\n    {\n        private readonly int level;\n\n        public LeveledGemFilter()\n            : this(0)\n        { }\n\n        public LeveledGemFilter(int level)\n        {\n            this.level = level;\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Gems; }\n        }\n\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public string Keyword\n        {\n            get { return (this.level == 0) ? \"Leveled Gems\" : \"Level \" + level.ToString() + \" Gems\"; }\n        }\n\n        public string Help\n        {\n            get { return (this.level == 0) ? \"Leveled Gems\" : \"Level \" + level.ToString() + \" Gems\"; }\n        }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear != null && gear.SocketedItems.Any(x => Applicable(x)))\n                return true;\n            \n            Gem gem = item as Gem;\n            if (gem == null)\n                return false;\n\n            if (this.level == 0)\n                return gem.Level > 1;\n\n            return gem.Level == this.level;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/LifeFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class LifeFilter : ExplicitModBase\n    {\n        public LifeFilter()\n            : base(\"to maximum Life\")\n        { }\n\n        public override bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public override string Keyword\n        {\n            get { return \"Maximum Life\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Items with +life\"; }\n        }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/LifeLeech.cs",
    "content": "﻿\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class LifeLeech : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public LifeLeech()\n            : base(\"Life leech\", \"Items with life leech\", \"Leeched as life\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/LifeRegenFilter.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class LifeRegenFilter : ExplicitModBase\n    {\n        public LifeRegenFilter()\n            : base(\"Life Regenerated per second\")\n        { }\n\n        public override bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public override string Keyword\n        {\n            get { return \"Life regen\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Items with Life Regenerated per second\"; }\n        }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/LightningResistance.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters\n{\n    public class LightningResistance : OrStatFilter\n    {\n        public override  FilterGroup Group\n        {\n            get { return FilterGroup.Resistances; }\n        }\n\n        public LightningResistance()\n            : base(\"Lightning Resistance\", \"Lightning Resistance\", \"to Lightning Resistance\", \"to Cold and Lightning Resistances\", \"to Fire and Lightning Resistances\")\n        { }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/Link.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters\n{\n    internal class Link : IFilter\n    {\n        private int links;\n        \n        public FilterGroup Group \n        { \n            get { return FilterGroup.Links; } \n        }\n \n        public Link(int links)\n        {\n            this.links = links;\n        }\n\n        public string Keyword { get { return links.ToString() + \" Linked\"; } }\n        public string Help { get { return \"Returns All \" + links.ToString() + \" Linked items, regardless of rarity\"; } }\n\n        public bool Applicable(Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear == null)\n                return false;\n\n            return gear.IsLinked(links);\n        }\n\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/MagicRarity.cs",
    "content": "﻿using POEApi.Model;\nnamespace Procurement.ViewModel.Filters\n{\n    internal class MagicRarity : RarityFilter\n    {\n        public MagicRarity()\n            : base(Rarity.Magic)\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ManaFilter.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class ManaFilter : ExplicitModBase\n    {\n        public ManaFilter()\n            : base(\"to maximum Mana\")\n        { }\n\n        public override bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public override string Keyword\n        {\n            get { return \"Maximum Mana\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Items with +maximum mana\"; }\n        }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ManaLeechFilter.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class ManaLeech : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public ManaLeech()\n            : base(\"Mana leech\", \"Items with mana leech\", \"Leeched as mana\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ManaRegenFilter.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class ManaRegenFilter : ExplicitModBase\n    {\n        public ManaRegenFilter()\n            : base(\"increased Mana Regeneration Rate\")\n        { }\n        public override bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public override string Keyword\n        {\n            get { return \"Mana regen\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Items with increased Mana Regeneration Rate\"; }\n        }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/MapFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class MapFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Map\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Any and all maps of any tier\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return item is Map;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/MapLevelFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class MapTierFilter : IFilter\n    {\n        private int tier;\n        public MapTierFilter(int tier)\n        {\n            this.tier = tier;\n        }\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Map Tier\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Returns Map of a particular tier\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Level; }\n        }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            Map map = item as Map;\n            if (map == null)\n                return false;\n\n            return map.MapTier == tier;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/MirroredItemFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class MirroredItemFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get\n            {\n                return false;\n            }\n        }\n\n        public string Keyword\n        {\n            get\n            {\n                return \"Mirrored\";\n            }\n        }\n\n        public string Help\n        {\n            get\n            {\n                return \"All Mirrored Items\";\n            }\n        }\n\n        public FilterGroup Group\n        {\n            get\n            {\n                return FilterGroup.Default;\n            }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return item.IsMirrored;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/MovementSpeed.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class MovementSpeed : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public MovementSpeed()\n            : base(\"Movement speed\", \"Items with movement speed\", \"movement speed\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/MultipleVeiledModsFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class MultipleVeiledModsFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Multiple Veiled Mods\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Items with more than one veiled mod\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return item.VeiledMods?.Count > 1;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/NormalRarity.cs",
    "content": "﻿using POEApi.Model;\nnamespace Procurement.ViewModel.Filters\n{\n    internal class NormalRarity : RarityFilter\n    {\n        public NormalRarity()\n            : base(Rarity.Normal)\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/OneHandedFilter.cs",
    "content": "﻿\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class OneHandedFilter : XHandFilter\n    {\n        public OneHandedFilter()\n            : base(\"One\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/OrFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public class OrFilter : IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        List<IFilter> filters;\n\n        public OrFilter(params IFilter[] filters)\n        {\n            this.filters = new List<IFilter>();\n            this.filters.AddRange(filters);\n        }\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return string.Join(Environment.NewLine, filters.Select(f => f.Keyword).ToArray()); }\n        }\n\n        public string Help\n        {\n            get { return string.Join(Environment.NewLine, filters.Select(f => f.Help).ToArray()); }\n        }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            return filters.Any(filter => filter.Applicable(item));\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/OrStatFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.RegularExpressions;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public abstract class OrStatFilter : StatFilterBase, IFilter\n    {\n        public abstract FilterGroup Group { get; }\n\n        public OrStatFilter(string keyword, string help, params string[] stats) \n            : base (keyword, help, stats)\n        { }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear == null)\n                return false;\n\n            List<Regex> pool = new List<Regex>(stats);\n            List<string> all = new List<string>();\n\n            if (gear.Implicitmods != null)\n                all.AddRange(gear.Implicitmods.Select(s => s));\n\n            if (gear.Explicitmods != null)\n                all.AddRange(gear.Explicitmods.Select(s => s));\n\n            foreach (string stat in all)\n            {\n                Regex result = pool.Find(s => s.IsMatch(stat));\n\n                if (result != null)\n                    return true;\n            }\n\n            return false;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/PercentEnergyShieldFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class PercentEnergyShieldFilter : StatFilter\n    {\n        public PercentEnergyShieldFilter()\n            : base(\"% Increased Energy Shield\", \"Items with % increased energy shield\", \"% increased maximum energy shield\")\n        { }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/PercentLifeFilter.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class PercentLifeFilter : StatFilter\n    {\n        public PercentLifeFilter()\n            : base(\"% Increased Life\", \"Items with % increased life\", \"% increased maximum life\")\n        { }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/PhysicalDamageFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class PhysicalDamageFilter : StatFilter\n    {\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Damage; }\n        }\n\n        public PhysicalDamageFilter()\n            : base(\"Adds Physical Damage\", \"Adds Physical Damage\", \"Adds \\\\d+ to \\\\d+ Physical Damage\")\n        { }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/PopularGemsFilter.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters\n{\n    internal class PopularGemsFilter : IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Gems; }\n        }\n\n        private List<string> popular;\n        public PopularGemsFilter()\n        {\n            popular = Settings.PopularGems;\n        }\n\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Popular Gems\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Those really popular gems\"; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear != null && gear.SocketedItems.Any(x => Applicable(x)))\n                return true;\n\n            Gem gem = item as Gem;\n            if (gem == null)\n                return false;\n\n            return popular.Contains(gem.TypeLine);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ProphecyFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class AbyssJewelFilter : IFilter\n    {\n        public bool Applicable(Item item)\n        {\n            return item is AbyssJewel;\n        }\n\n        public FilterGroup Group\n        {\n            get\n            {\n                return FilterGroup.Default;\n            }\n        }\n\n        public bool CanFormCategory\n        {\n            get\n            {\n                return true;\n            }\n        }\n\n        public string Keyword\n        {\n            get\n            {\n                return \"Abyss Jewel\";\n            }\n        }\n\n        public string Help\n        {\n            get\n            {\n                return \"All Abyss Jewels\";\n            }\n        }\n\n    }\n\n    public class ProphecyFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get\n            {\n                return false;\n            }\n        }\n\n        public string Keyword\n        {\n            get\n            {\n                return \"Prophecy\";\n            }\n        }\n\n        public string Help\n        {\n            get\n            {\n                return \"All Prophecies\";\n            }\n        }\n\n        public FilterGroup Group\n        {\n            get\n            {\n                return FilterGroup.Default;\n            }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return item is Prophecy;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ProphecyFragmentFilter.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters\n{\n    public class ProphecyFragmentFilter : TypeLineFilter\n    {\n        public ProphecyFragmentFilter()\n            : base(\"Volkuur's Key\", \"Eber's Key\", \"Yriel's Key\", \"Inya's Key\")\n        { }\n        public override bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public override string Keyword\n        {\n            get { return \"Prophecy Fragments\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Prophecy Fragments\"; }\n        }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.MapFragments; }\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/QualityGemFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters\n{\n    internal class QualityGemFilter : IFilter\n    {\n        private readonly int quality;\n\n        public QualityGemFilter()\n        {\n            this.quality = 0;\n        }\n\n        public QualityGemFilter(int quality)\n        {\n            this.quality = quality;\n        }\n        \n        public FilterGroup Group\n        {\n            get { return FilterGroup.Gems; }\n        }\n\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Quality Gems\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Quality Gems\"; }\n        }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear != null && gear.SocketedItems.Any(x => Applicable(x)))\n                return true;            \n            \n            Gem gem = item as Gem;\n            if (gem == null)\n                return false;\n\n            if (quality == 0)\n                return gem.IsQuality;\n\n            return gem.Quality == quality;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/RareRarity.cs",
    "content": "﻿using POEApi.Model;\nnamespace Procurement.ViewModel.Filters\n{\n    internal class RareRarity : RarityFilter\n    {\n        public RareRarity()\n            : base(Rarity.Rare)\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/RarityFilter.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public class RarityFilter : IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Rarity; }\n        }\n\n        private Rarity rarity;\n        public RarityFilter(Rarity rarity)\n        {\n            this.rarity = rarity;\n        }\n\n        public string Keyword { get { return rarity.ToString() + \" rarity\"; } }\n        public string Help { get { return \"Returns All \" + rarity + \" rarity items\"; } }\n\n        public bool Applicable(Item item)\n        {\n            if (item != null)\n                return item.Rarity == rarity;\n\n            return false;\n        }\n\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ResistanceBase.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public class ResistanceBase\n    {\n        protected List<IFilter> resistances;\n        \n        public ResistanceBase()\n        {\n            resistances = new List<IFilter>();\n            resistances.Add(new FireResistance());\n            resistances.Add(new ColdResistance());\n            resistances.Add(new LightningResistance());\n            resistances.Add(new ChaosResistance());\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ResonatorFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class ResonatorFilter : IFilter\n    {\n        public bool CanFormCategory { get; }\n        public string Keyword { get; } = \"Resonator\";\n        public string Help { get; } = \"All Resonators\";\n        public FilterGroup Group { get; } = FilterGroup.Default;\n        public bool Applicable(Item item)\n        {\n            return item is Resonator;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ScarabFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class ScarabFilter : IFilter\n    {\n        public bool CanFormCategory { get; } = true;\n        public string Keyword { get; } = \"Scarab\";\n        public string Help { get; } = \"Scarabs\";\n        public FilterGroup Group { get; }\n        public bool Applicable(Item item)\n        {\n            return item is Scarab;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/ShaperItemFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class ShaperItemFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get\n            {\n                return false;\n            }\n        }\n\n        public string Keyword\n        {\n            get\n            {\n                return \"Shaper Items\";\n            }\n        }\n\n        public string Help\n        {\n            get\n            {\n                return \"All Shaper Items\";\n            }\n        }\n\n        public FilterGroup Group\n        {\n            get\n            {\n                return FilterGroup.Default;\n            }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return item.Shaper;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/SixBlueSockets.cs",
    "content": "﻿using POEApi.Model;\nusing System;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    class SixBlueSockets : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get { throw new NotImplementedException(); }\n        }\n\n        public string Keyword\n        {\n            get { return \"6 Blue Sockets\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Gear with 6 blue sockets\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            var gear = item as Gear;\n\n            if (gear == null)\n                return false;\n\n            return gear.Sockets.Where(s => s.Attribute.Equals(\"I\", StringComparison.OrdinalIgnoreCase)).Count() == 6;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/SixGreenSockets.cs",
    "content": "﻿using POEApi.Model;\nusing System;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    class SixGreenSockets : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get { throw new NotImplementedException(); }\n        }\n\n        public string Keyword\n        {\n            get { return \"6 Green Sockets\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Gear with 6 green sockets\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            var gear = item as Gear;\n\n            if (gear == null)\n                return false;\n\n            return gear.Sockets.Where(s => s.Attribute.Equals(\"D\", StringComparison.OrdinalIgnoreCase)).Count() == 6;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/SixLink.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters.ForumExport\n{\n    class SixLink : Link\n    {\n        public SixLink()\n            : base(6)\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/SixRedSockets.cs",
    "content": "﻿using POEApi.Model;\nusing System;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    class SixRedSockets : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get { throw new NotImplementedException(); }\n        }\n\n        public string Keyword\n        {\n            get { return \"6 Red Sockets\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Gear with 6 red sockets\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            var gear = item as Gear;\n\n            if (gear == null)\n                return false;\n\n            return gear.Sockets.Where(s => s.Attribute.Equals(\"S\", StringComparison.OrdinalIgnoreCase)).Count() == 6;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/SixSocketFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class SixSocketFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get { throw new NotImplementedException(); }\n        }\n\n        public string Keyword\n        {\n            get { return \"6 Socket\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Gear with 6 sockets\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            var gear = item as Gear;\n\n            if (gear == null)\n                return false;\n\n            return gear.Sockets.Count() == 6;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/SocketColourFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class SocketColourFilter : IFilter\n    {\n        private string colour;\n        private int count;\n        private string keyword;\n        private string help;\n\n        public SocketColourFilter(string colour, int count, string keyword, string help)\n        {\n            this.colour = colour;\n            this.count = count;\n            this.keyword = keyword;\n            this.help = help;\n        }\n\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public string Keyword\n        {\n            get { return keyword; }\n        }\n\n        public string Help\n        {\n            get { return help; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.SocketColour; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            var gear = item as Gear;\n\n            if (gear == null)\n                return false;\n\n            return gear.Sockets.Where(s => s.Attribute.Equals(colour, StringComparison.OrdinalIgnoreCase)).Count() >= count;\n        }\n    }\n\n    class OneRedSocket : SocketColourFilter\n    {\n        public OneRedSocket()\n            : base(\"S\", 1, \"At Least 1 Red Socket\", \"Gear with 1 or more red sockets\")\n        { }\n    }\n\n    class OneGreenSocket : SocketColourFilter\n    {\n        public OneGreenSocket()\n            : base(\"D\", 1, \"At Least 1 Green Socket\", \"Gear with 1 or more green sockets\")\n        { }\n    }\n\n    class OneBlueSocket : SocketColourFilter\n    {\n        public OneBlueSocket()\n            : base(\"I\", 1, \"At Least 1 Blue Socket\", \"Gear with 1 or more blue sockets\")\n        { }\n    }\n\n    class TwoRedSockets : SocketColourFilter\n    {\n        public TwoRedSockets()\n            : base(\"S\", 2, \"At Least 2 Red Sockets\", \"Gear with 2 or more red sockets\")\n        { }\n    }\n\n    class TwoGreenSockets : SocketColourFilter\n    {\n        public TwoGreenSockets()\n            : base(\"D\", 2, \"At Least 2 Green Sockets\", \"Gear with 2 or more green sockets\")\n        { }\n    }\n\n    class TwoBlueSockets : SocketColourFilter\n    {\n        public TwoBlueSockets()\n            : base(\"I\", 2, \"At Least 2 Blue Sockets\", \"Gear with 2 or more blue sockets\")\n        { }\n    }\n\n    class ThreeRedSockets : SocketColourFilter\n    {\n        public ThreeRedSockets()\n            : base(\"S\", 3, \"At Least 3 Red Sockets\", \"Gear with 3 or more red sockets\")\n        { }\n    }\n\n    class ThreeGreenSockets : SocketColourFilter\n    {\n        public ThreeGreenSockets()\n            : base(\"D\", 3, \"At Least 3 Green Sockets\", \"Gear with 3 or more green sockets\")\n        { }\n    }\n\n    class ThreeBlueSockets : SocketColourFilter\n    {\n        public ThreeBlueSockets()\n            : base(\"I\", 3, \"At Least 3 Blue Sockets\", \"Gear with 3 or more blue sockets\")\n        { }\n    }\n\n    class FourRedSockets : SocketColourFilter\n    {\n        public FourRedSockets()\n            : base(\"S\", 4, \"At Least 4 Red Sockets\", \"Gear with 4 or more red sockets\")\n        { }\n    }\n\n    class FourGreenSockets : SocketColourFilter\n    {\n        public FourGreenSockets()\n            : base(\"D\", 4, \"At Least 4 Green Sockets\", \"Gear with 4 or more green sockets\")\n        { }\n    }\n\n    class FourBlueSockets : SocketColourFilter\n    {\n        public FourBlueSockets()\n            : base(\"I\", 4, \"At Least 4 Blue Sockets\", \"Gear with 4 or more blue sockets\")\n        { }\n    }\n\n    class FiveRedSockets : SocketColourFilter\n    {\n        public FiveRedSockets()\n            : base(\"S\", 5, \"At Least 5 Red Sockets\", \"Gear with 5 or more red sockets\")\n        { }\n    }\n\n    class FiveGreenSockets : SocketColourFilter\n    {\n        public FiveGreenSockets()\n            : base(\"D\", 5, \"At Least 5 Green Sockets\", \"Gear with 5 or more green sockets\")\n        { }\n    }\n\n    class FiveBlueSockets : SocketColourFilter\n    {\n        public FiveBlueSockets()\n            : base(\"I\", 5, \"At Least 5 Blue Sockets\", \"Gear with 5 or more blue sockets\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/SpellDamageFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class SpellDamageFilter : ExplicitModBase\n    {\n        public SpellDamageFilter()\n            : base(\"increased Spell Damage\")\n        { }\n\n        public override bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public override string Keyword\n        {\n            get { return \"Spell Damage\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Items with increased Spell Damage\"; }\n        }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/StatFilter.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing System.Text.RegularExpressions;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public abstract class StatFilter : StatFilterBase, IFilter\n    {\n        public abstract FilterGroup Group { get; }\n\n        public StatFilter(string keyword, string help, params string[] stats)\n            : base(keyword, help, stats)\n        { }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear == null)\n                return false;\n\n            List<Regex> pool = new List<Regex>(stats);\n            List<string> all = new List<string>();\n\n            if (gear.Implicitmods != null)\n                all.AddRange(gear.Implicitmods.Select(s => s));\n\n            if (gear.Explicitmods != null)\n                all.AddRange(gear.Explicitmods.Select(s => s));\n\n            foreach (string stat in all)\n            {\n                Regex result = pool.Find(s => s.IsMatch(stat));\n                pool.Remove(result);\n            }\n\n            return pool.Count == 0;\n        }\n   }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/StatFilterBase.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing System.Text.RegularExpressions;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public class StatFilterBase\n    {\n        protected string keyword;\n        protected string help;\n        protected List<Regex> stats;\n\n        public StatFilterBase(string keyword, string help, params string[] stats)\n        {\n            this.keyword = keyword;\n            this.help = help;\n            this.stats = stats.Select(stat => new Regex(stat, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)).ToList();\n        }\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public string Keyword\n        {\n            get { return keyword; }\n        }\n\n        public string Help\n        {\n            get { return help; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/SupportGemsFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    internal class SupportGemsFilter : IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Gems; }\n        }\n\n        public SupportGemsFilter()\n        { }\n\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Support Gems\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Gems that modify skill gems they are linked to\"; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            Gem gem = item as Gem;\n            if (gem == null)\n                return false;\n\n            return item.Properties[0].Name.Contains(\"Support\");\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/SynthesisedItemFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class SynthesisedItemFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get\n            {\n                return false;\n            }\n        }\n\n        public string Keyword\n        {\n            get\n            {\n                return \"Synthesised Items\";\n            }\n        }\n\n        public string Help\n        {\n            get\n            {\n                return \"All Synthesised Items\";\n            }\n        }\n\n        public FilterGroup Group\n        {\n            get\n            {\n                return FilterGroup.Default;\n            }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return item.Synthesised;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/TripleResistance.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public class TripleResistance : ResistanceBase, IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Resistances; }\n        }\n\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Triple Resists\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Returns items with Triple Resists\"; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return resistances.Count(r => r.Applicable(item)) >= 3;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/TwoHandedFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class TwoHandedFilter : XHandFilter\n    {\n        public TwoHandedFilter()\n            : base(\"Two\")\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/TypeLineFilter.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public abstract class TypeLineFilter : IFilter\n    {\n        private IEnumerable<string> keywords;\n\n        public abstract bool CanFormCategory { get; }\n        public abstract string Keyword { get; }\n        public abstract string Help { get; }\n        public abstract FilterGroup Group { get; }      \n\n        public TypeLineFilter(params string[] keyword)\n        {\n            this.keywords = keyword;\n        }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            foreach (var key in keywords)\n                if (item.TypeLine == key)\n                    return true;\n\n            return false;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/UniqueRarity.cs",
    "content": "﻿using POEApi.Model;\nnamespace Procurement.ViewModel.Filters\n{\n    internal class UniqueRarity : RarityFilter\n    {\n        public UniqueRarity()\n            : base(Rarity.Unique)\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/UnknownItemFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class UnknownItemFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get\n            {\n                return false;\n            }\n        }\n\n        public string Keyword\n        {\n            get\n            {\n                return \"Unknown Item\";\n            }\n        }\n\n        public string Help\n        {\n            get\n            {\n                return \"All Items Procurement Cannot Identify\";\n            }\n        }\n\n        public FilterGroup Group\n        {\n            get\n            {\n                return FilterGroup.Default;\n            }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return item is UnknownItem;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/VaalFragmentFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public class VaalFragmentFilter : TypeLineFilter\n    {\n        public VaalFragmentFilter()\n            : base(\"Sacrifice at Dusk\", \"Sacrifice at Midnight\", \"Sacrifice at Noon\", \"Sacrifice at Dawn\")\n        { }\n        public override bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public override string Keyword\n        {\n            get { return \"Vaal Fragments\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Vaal Fragments\"; }\n        }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.MapFragments; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/VaalUberFragmentFilter.cs",
    "content": "﻿namespace Procurement.ViewModel.Filters\n{\n    public class VaalUberFragmentFilter : TypeLineFilter\n    {\n        public VaalUberFragmentFilter()\n            : base(\"Mortal Grief\", \"Mortal Rage\", \"Mortal Hope\", \"Mortal Ignorance\")\n        { }\n        public override bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public override string Keyword\n        {\n            get { return \"Uber Vaal Fragments\"; }\n        }\n\n        public override string Help\n        {\n            get { return \"Uber Vaal Fragments\"; }\n        }\n\n        public override FilterGroup Group\n        {\n            get { return FilterGroup.MapFragments; }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/VeiledModFilter.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class VeiledModFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Veiled Mods\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Items with veiled mods\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            return item.VeiledMods?.Count > 0;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/VeiledPrefixFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class VeiledPrefixFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Veiled Prefixes\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Items with veiled prefixes\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            if (item.VeiledMods == null)\n                return false;\n\n            return item.VeiledMods.Count > 0 && item.VeiledMods.Any(x => x.StartsWith(\"Prefix\"));\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/VeiledSuffixFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public class VeiledSuffixFilter : IFilter\n    {\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"Veiled Suffixes\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Items with veiled suffixes\"; }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            if (item.VeiledMods == null)\n                return false;\n\n            return item.VeiledMods.Count > 0 && item.VeiledMods.Any(x => x.StartsWith(\"Suffix\"));\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ForumExport/XHandFilter.cs",
    "content": "﻿using System.Linq;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters.ForumExport\n{\n    public abstract class XHandFilter : IFilter\n    {\n        private string handed;\n\n        public XHandFilter(string handed)\n        {\n            this.handed = handed;\n        }\n        public bool CanFormCategory\n        {\n            get { return true; }\n        }\n\n        public string Keyword\n        {\n            get { return string.Concat(handed, \" \", \"Handed Weapon\"); }\n        }\n\n        public string Help\n        {\n            get { return string.Concat(\"Returns all\", handed, \"(s)\"); }\n        }\n\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            Gear gear = item as Gear;\n            if (gear == null)\n                return false;\n\n            if (gear.Properties == null)\n                return false;\n\n            return gear.Properties.Any(p => p.Name.Contains(string.Concat(handed, \" \", \"Handed\")));\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/IFilter.cs",
    "content": "﻿using System.Collections.Generic;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public interface IFilter\n    {\n        bool CanFormCategory { get; }\n        string Keyword { get; }\n        string Help { get; }\n        FilterGroup Group { get; }\n        bool Applicable(Item item);\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/ItemFilter.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public class ItemFilter : IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"\"; }\n        }\n\n        public string Help\n        {\n            get { return \"\"; }\n        }\n\n        private Item source;\n        public ItemFilter(Item source)\n        {\n            this.source = source;\n        }\n\n        public bool Applicable(POEApi.Model.Item item)\n        {\n            return (item.InventoryId == source.InventoryId &&\n                    item.X == source.X &&\n                    item.Y == source.Y);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Filters/UserSearchFilter.cs",
    "content": "﻿using POEApi.Model;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Filters\n{\n    public class UserSearchFilter : IFilter\n    {\n        public FilterGroup Group\n        {\n            get { return FilterGroup.Default; }\n        }\n\n        private string filter;\n        public UserSearchFilter(string filter)\n        {\n            this.filter = filter;\n        }\n        public bool CanFormCategory\n        {\n            get { return false; }\n        }\n\n        public string Keyword\n        {\n            get { return \"User search\"; }\n        }\n\n        public string Help\n        {\n            get { return \"Matches user search on name/typeline and geartype\"; }\n        }\n\n        public bool Applicable(Item item)\n        {\n            if (string.IsNullOrEmpty(filter))\n                return false;\n\n            if (item.TypeLine.ToLower().Contains(filter.ToLower()) || item.Name.ToLower().Contains(filter.ToLower()) || containsMatchedCosmeticMod(item) || isMatchedGear(item))\n                return true;\n\n            var gear = item as Gear;\n\n            if (gear != null && gear.SocketedItems.Any(x => Applicable(x)))\n                return true;\n\n            return false;\n        }\n\n        private bool containsMatchedCosmeticMod(Item item)\n        {\n            return item.Microtransactions.Any(x => x.ToLower().Contains(filter.ToLower()));\n        }\n\n        private bool isMatchedGear(Item item)\n        {\n            Gear gear = item as Gear;\n\n            if (gear == null)\n                return false;\n\n            return gear.GearType.ToString().ToLower().Contains(filter.ToLower());\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportViewModel.cs",
    "content": "﻿using POEApi.Infrastructure;\nusing POEApi.Model;\nusing Procurement.Controls;\nusing Procurement.Utility;\nusing Procurement.ViewModel.ForumExportVisitors;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.IO;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\nusing System.Text.RegularExpressions;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Input;\nusing Procurement.View.ViewModel;\n\nnamespace Procurement.ViewModel\n{\n    public class ForumExportViewModel : ObservableBase\n    {\n        private ExportPreferenceManager preferenceManager;\n        private List<TabInfo> stashItems;\n        private List<int> selected = new List<int>();\n        private string text;\n        private static List<IVisitor> visitors = null;\n\n        public ICommand CopyCommand => new RelayCommand(copy);\n\n        public ICommand PostToThreadCommand=> new RelayCommand(postToThread);\n\n        public ICommand BumpThreadCommand => new RelayCommand(bumpThread);\n\n        public List<string> AvailableTemplates { get; private set; }\n\n        private string currentTemplate;\n        public string CurrentTemplate\n        {\n            get { return currentTemplate; }\n            set\n            {\n                currentTemplate = value;\n                OnPropertyChanged();\n                Text = getFinal(selected.SelectMany(sid => ApplicationState.Stash[ApplicationState.CurrentLeague].GetItemsByTab(sid))\n                                                              .OrderBy(id => id.Y).ThenBy(i => i.X));\n            }\n        }\n\n        public List<TabInfo> StashItems\n        {\n            get { return stashItems; }\n            set\n            {\n                stashItems = value;\n                OnPropertyChanged();\n            }\n        }\n\n        public bool LoggedIn { get { return !ApplicationState.Model.Offline; } }\n\n        public string Text\n        {\n            get { return text; }\n            set\n            {\n                text = value;\n                OnPropertyChanged();\n            }\n        }\n\n\n        public ForumExportViewModel()\n        {\n            preferenceManager = new ExportPreferenceManager();\n\n            updateForLeague();\n\n            ApplicationState.LeagueChanged += new PropertyChangedEventHandler(ApplicationState_LeagueChanged);\n            visitors = visitors ?? getVisitors();\n\n            AvailableTemplates = new List<string>();\n            AvailableTemplates.Add(\"ForumExportTemplate.txt\");\n\n            if (Settings.Lists.ContainsKey(\"AdditionalTemplates\"))\n                AvailableTemplates.AddRange(Settings.Lists[\"AdditionalTemplates\"]);\n\n            currentTemplate = \"ForumExportTemplate.txt\";\n\n            setSelectedTabs();\n            registerTabEvents();\n        }\n\n        private void registerTabEvents()\n        {\n            foreach (var tab in StashItems)\n                tab.PropertyChanged += tabSelectionChanged;\n        }\n\n        private void deregisterTabEvents()\n        {\n            foreach (var tab in StashItems)\n                tab.PropertyChanged -= tabSelectionChanged;\n        }\n\n        private void tabSelectionChanged(object sender, PropertyChangedEventArgs e)\n        {\n            preferenceManager.UpdateTabSelection(sender as TabInfo);\n        }\n\n        private void setSelectedTabs()\n        {\n            selected = preferenceManager.SetTabsAndGetsSelected(StashItems);\n            updateText();\n        }\n\n        private void bumpThread(object obj)\n        {\n            if (!settingsValid(false))\n                return;\n\n            var confirmation = MessageBox.Show(\"Are you sure you want to bump your thread? By clicking yes you grant permission for Procurement to bump your forum thread using the account you logged in with, and confirm that you are only bumping within the allowed time interval as per forum rules.\", \"Confirm shop update\", MessageBoxButton.YesNo, MessageBoxImage.Question);\n\n            if (confirmation != MessageBoxResult.Yes)\n                return;\n\n            Task.Factory.StartNew(() =>\n                {\n                    try\n                    {\n                        var threadBumped = ApplicationState.Model.BumpThread(\n                            Settings.ShopSettings[ApplicationState.CurrentLeague].ThreadId,\n                            Settings.ShopSettings[ApplicationState.CurrentLeague].ThreadTitle);\n\n                        if (threadBumped)\n                            MessageBox.Show(\"Shop thread successfully bumped!\", \"Thread bumped\", MessageBoxButton.OK,\n                                MessageBoxImage.Information);\n                        else\n                            MessageBox.Show(\"Error bumping shop thread, details logged to debuginfo.log\", \"Error\",\n                                MessageBoxButton.OK, MessageBoxImage.Error);\n                    }\n                    catch (ForumThreadException)\n                    {\n                        MessageBox.Show(\"There was an error while attempting to bump the thread.  It is possible \" +\n                            \"the thread title supplied in your settings does not match the title of the thread \" +\n                            \"Procurement tried to bump with the threadId in your settings. Check that your settings \" +\n                            \"are correct\", \"Error\", MessageBoxButton.OK, MessageBoxImage.Error);\n                    }\n                });\n        }\n\n        private void postToThread(object obj)\n        {\n            if (!settingsValid(true))\n                return;\n\n            var confirmation = MessageBox.Show(\"Are you sure you want to update your shop? By clicking yes you grant permission for Procurement to update your forum thread using the account you logged in with.\", \"Confirm shop update\", MessageBoxButton.YesNo, MessageBoxImage.Question);\n\n            if (confirmation != MessageBoxResult.Yes)\n                return;\n\n            if (!text.Contains(\"[url=https://github.com/Stickymaddness/Procurement/][img]http://i.imgur.com/ZHBMImo.png[/img][/url]\"))\n                text += Environment.NewLine + Environment.NewLine + \"[url=https://github.com/Stickymaddness/Procurement/][img]http://i.imgur.com/ZHBMImo.png[/img][/url]\";\n\n\n            Task.Factory.StartNew(() =>\n              {\n                  var shopUpdated = ApplicationState.Model.UpdateThread(Settings.ShopSettings[ApplicationState.CurrentLeague].ThreadId, Settings.ShopSettings[ApplicationState.CurrentLeague].ThreadTitle, text);\n\n                  if (shopUpdated)\n                      MessageBox.Show(\"Shop successfully updated!\", \"Shop updated\", MessageBoxButton.OK, MessageBoxImage.Information);\n                  else\n                      MessageBox.Show(\"Error updating shop, details logged to debuginfo.log\", \"Error\", MessageBoxButton.OK, MessageBoxImage.Error);\n              });\n        }\n\n        private bool settingsValid(bool isUpdate)\n        {\n            if (!Settings.ShopSettings.ContainsKey(ApplicationState.CurrentLeague) ||\n                string.IsNullOrEmpty(Settings.ShopSettings[ApplicationState.CurrentLeague].ThreadId) ||\n                string.IsNullOrEmpty(Settings.ShopSettings[ApplicationState.CurrentLeague].ThreadTitle))\n            {\n                MessageBox.Show(\"No shop settings found for current league, please configure your ThreadId and ThreadTitle under the TradeSettings tab\", \"Settings not found!\", MessageBoxButton.OK, MessageBoxImage.Error);\n                return false;\n            }\n\n            if (isUpdate && selected.Count() == 0)\n            {\n                MessageBox.Show(\"You need to select at least one tab to update your shop!\", \"No tabs selected\", MessageBoxButton.OK, MessageBoxImage.Warning);\n                return false;\n            }\n\n            int threadId;\n            if (!int.TryParse(Settings.ShopSettings[ApplicationState.CurrentLeague].ThreadId, out threadId))\n            {\n                MessageBox.Show(\"Invalid ThreadId, the ThreadId is the number at the end of the url of your shop, eg: the 12345 in http://www.pathofexile.com/forum/view-thread/12345\", \"Invalid ThreadId!\", MessageBoxButton.OK, MessageBoxImage.Error);\n                return false;\n            }\n\n            return true;\n        }\n\n        private void copy(object parameter)\n        {\n            if (text != null)\n                Clipboard.SetDataObject(text);\n        }\n\n        void ApplicationState_LeagueChanged(object sender, PropertyChangedEventArgs e)\n        {\n            deregisterTabEvents();\n\n            updateForLeague();\n\n            setSelectedTabs();\n            registerTabEvents();\n        }\n\n        private void updateForLeague()\n        {\n            var tabs = ApplicationState.Stash[ApplicationState.CurrentLeague].Tabs;\n            StashItems = tabs.Select(t => new TabInfo() { Name = t.Name, Url = t.srcC, ID = t.i }).ToList();\n            StashItems.ForEach(s => s.FixName());\n        }\n\n        public void update(int key, bool isChecked, bool shouldUpdate)\n        {\n            if (isChecked && !selected.Contains(key))\n                selected.Add(key);\n            else if (!isChecked)\n                selected.Remove(key);\n\n            if (shouldUpdate)\n                updateText();\n        }\n\n        public void updateText()\n        {\n            Text = getFinal(selected.SelectMany(sid => ApplicationState.Stash[ApplicationState.CurrentLeague].GetItemsByTab(sid))\n                                                              .OrderBy(id => id.Y).ThenBy(i => i.X));\n\n            var count = Text.Count();\n            if (count > 50000)\n                MessageBox.Show(string.Format(\"Shop text is {0} characters, which exceeds the 50,000 character limit on the pathofexile.com forum!\", count), \"Warning\", MessageBoxButton.OK, MessageBoxImage.Warning);\n        }\n\n        private string getFinal(IEnumerable<Item> items)\n        {\n            string template = ForumExportTemplateReader.GetTemplate(CurrentTemplate);\n\n            foreach (IVisitor visitor in visitors)\n                template = visitor.Visit(items, template);\n\n            template = doPostProcessing(template);\n\n            return template;\n        }\n\n        private string doPostProcessing(string template)\n        {\n            string current = template;\n            List<int> toRemove = getLinesToRemove(current);\n            while (toRemove.Count > 0)\n            {\n                current = removeLines(current, toRemove);\n                toRemove = getLinesToRemove(current);\n            }\n\n            return current;\n        }\n\n        private string removeLines(string template, List<int> removeLines)\n        {\n            List<string> lines = readAllLines(template);\n\n            for (int i = removeLines.Count - 1; i > -1; i--)\n            {\n                lines.RemoveAt(removeLines[i]);\n            }\n\n            return string.Join(Environment.NewLine, lines);\n        }\n        private List<int> getLinesToRemove(string template)\n        {\n            string start = @\"\\[spoiler=[\\s\\S]*?\\]\";\n            string end = @\"\\[/spoiler\\]\";\n\n            List<string> lines = readAllLines(template);\n            List<int> exludeLines = new List<int>();\n\n            int startLine = -1;\n            int endLine = -1;\n\n            for (int i = 0; i < lines.Count; i++)\n            {\n                string line = lines[i];\n\n                if (Regex.IsMatch(line, start))\n                    startLine = i;\n\n                if (Regex.IsMatch(line, end))\n                    endLine = i;\n\n                if (endLine == -1)\n                    continue;\n\n                bool shouldRemove = true;\n                for (int j = startLine + 1; j < endLine; j++)\n                {\n                    if (lines[j].Trim() != string.Empty)\n                    {\n                        shouldRemove = false;\n                        break;\n                    }\n                }\n\n                if (shouldRemove && startLine > 0 && endLine > 0)\n                    exludeLines.AddRange(Enumerable.Range(startLine, endLine - startLine + 1));\n\n                startLine = -1;\n                endLine = -1;\n            }\n\n            return exludeLines;\n        }\n        public List<string> readAllLines(string template)\n        {\n            List<string> list = new List<string>();\n            using (StreamReader reader = new StreamReader(new MemoryStream(Encoding.Default.GetBytes(template)), Encoding.Default))\n            {\n                string str;\n                while ((str = reader.ReadLine()) != null)\n                {\n                    list.Add(str);\n                }\n            }\n            return list;\n        }\n\n        private static List<IVisitor> getVisitors()\n        {\n            Type visitorType = typeof(IVisitor);\n            return Assembly.GetAssembly(visitorType).GetTypes()\n                                                    .Where(t => !(t.IsAbstract || t.IsInterface) && visitorType.IsAssignableFrom(t))\n                                                    .Select(t => Activator.CreateInstance(t) as IVisitor)\n                                                    .ToList();\n        }\n\n        internal void ToggleAll(bool value)\n        {\n            stashItems.ForEach(si => si.IsChecked = value);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/ExplicitModVisitor.cs",
    "content": "﻿using POEApi.Model;\nusing Procurement.ViewModel.Filters;\nusing Procurement.ViewModel.Filters.ForumExport;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    class ExplicitModVisitor : VisitorBase\n    {\n\n        private Dictionary<string, IFilter> tokens;\n        public ExplicitModVisitor()\n        {\n            tokens = new Dictionary<string, IFilter>();\n            tokens.Add(\"{Life}\", new LifeFilter());\n            tokens.Add(\"{LifeRegen}\", new LifeRegenFilter());\n            tokens.Add(\"{CritChance}\", new CritChanceFilter());\n            tokens.Add(\"{GlobalCritChance}\", new GlobalCritChanceFilter());\n            tokens.Add(\"{GlobalCritMultiplier}\", new GlobalCritMultiplierFilter());\n            tokens.Add(\"{SpellDamage}\", new SpellDamageFilter());\n            tokens.Add(\"{PhysicalDamage}\", new PhysicalDamageFilter());\n            tokens.Add(\"{IncreasedPhysicalDamage}\",new IncreasedPhysicalDamageFilter());\n            tokens.Add(\"{Mana}\", new ManaFilter());\n            tokens.Add(\"{ManaRegen}\", new ManaRegenFilter());\n            tokens.Add(\"{EnergyShield}\", new EnergyShieldFilter());\n        }\n        public override string Visit(IEnumerable<Item> items, string current)\n        {\n            string updated = current;\n            var sorted = items.OrderBy(i => i.H).ThenBy(i => i.IconURL);\n\n            foreach (var token in tokens)\n            {\n                if (updated.IndexOf(token.Key) < 0)\n                    continue;\n\n                updated = updated.Replace(token.Key, runFilter(token.Value, sorted));\n            }\n\n            return updated;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/GearVisitor.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing POEApi.Model;\nusing System.Linq;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class GearVisitor : VisitorBase\n    {\n        private Dictionary<string, IFilter> tokens;\n        public GearVisitor()\n        {\n            var tokensSource = from rarity in Enum.GetNames(typeof(Rarity))\n                    from gearType in GetGearTypes()\n                    select\n                    new KeyValuePair<string, IFilter>(string.Concat(\"{\", rarity, gearType, \"}\"),\n                        new AndFilter(new RarityFilter(getEnum<Rarity>(rarity)), new GearTypeFilter(getEnum<GearType>(gearType), string.Empty)));\n            \n            tokens = tokensSource.ToDictionary(i => i.Key, i => i.Value);\n            tokens.Add(\"{NormalGear}\", new NormalRarity());\n\n            tokens.Add(\"{DivinationCard}\", new GearTypeFilter(GearType.DivinationCard, string.Empty));\n            tokens.Add(\"{Breachstone}\", new GearTypeFilter(GearType.Breachstone, string.Empty));\n        }\n\n        private static IEnumerable<string> GetGearTypes()\n        {\n            var gearTypes = Enum.GetNames(typeof(GearType)).ToList();\n\n            gearTypes.Remove(\"DivinationCard\");\n            gearTypes.Remove(\"Breachstone\");\n\n            return gearTypes;\n        }\n\n        public override string Visit(IEnumerable<Item> items, string current)\n        {\n            string updated = current;\n            var sorted = items.OrderBy(i => i.H).ThenBy(i => i.IconURL);\n\n            foreach (var token in tokens)\n            {\n                if (updated.IndexOf(token.Key) < 0)\n                    continue;\n\n                updated = updated.Replace(token.Key, runFilter(token.Value, sorted));\n            }\n\n            return updated;\n        }\n\n        private T getEnum<T>(string name)\n        {\n            return (T)Enum.Parse(typeof(T), name, true);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/GemVisitor.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing POEApi.Model;\nusing System.Linq;\nusing Procurement.ViewModel.Filters;\nusing System.Collections;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class GemVisitor : VisitorBase\n    {\n        private Dictionary<string, IFilter> tokens;\n        public GemVisitor()\n        {\n            tokens = new Dictionary<string, IFilter>();\n            tokens.AddRange(from cat1 in Enum.GetNames(typeof(GemCategory))\n                            from cat2 in Enum.GetNames(typeof(GemCategory))\n                            select new KeyValuePair<string, IFilter>(string.Concat(\"{\", cat1, cat2, \"Gems}\"), new AndFilter(new GemCategoryFilter(cat1), new GemCategoryFilter(cat2))));\n\n            tokens.AddRange(from cat1 in Enum.GetNames(typeof(GemCategory))\n                            select new KeyValuePair<string, IFilter>(string.Concat(\"{\", cat1, \"Gems}\"), new GemCategoryFilter(cat1)));\n            \n        }\n        public override string Visit(IEnumerable<Item> items, string current)\n        {\n            string updated = current;\n            var sorted = items.OrderBy(i => i.H).ThenBy(i => i.IconURL);\n\n            foreach (var token in tokens)\n            {\n                if (updated.IndexOf(token.Key) < 0)\n                    continue;\n\n                updated = updated.Replace(token.Key, runFilter(token.Value, sorted));\n            }\n\n            return updated;\n        }\n\n        private T getEnum<T>(string name)\n        {\n            return (T)Enum.Parse(typeof(T), name, true);\n        }\n    }\n\n    public static class ext\n    {\n        public static void AddRange<TKey, TValue>(this Dictionary<TKey, TValue> dic, IEnumerable<KeyValuePair<TKey, TValue>> range)\n        {\n            IDictionary<TKey, TValue> ret = (IDictionary<TKey, TValue>)dic;\n            foreach (var item in range)\n                ret.Add(item);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/IGNVistior.cs",
    "content": "﻿using System.Collections.Generic;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class IGNVistior : IVisitor\n    {\n        private const string TOKEN = \"{IGN}\";\n\n        public string Visit(IEnumerable<Item> items, string current)\n        {\n            string name = ApplicationState.CurrentCharacter.Name;\n\n            if (ApplicationState.CurrentLeague == Settings.UserSettings[\"FavoriteLeague\"] && !string.IsNullOrEmpty(Settings.UserSettings[\"FavoriteCharacter\"]))\n                name = Settings.UserSettings[\"FavoriteCharacter\"];\n\n            return current.Replace(TOKEN, name);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/IVisitor.cs",
    "content": "﻿using System.Collections.Generic;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal interface IVisitor\n    {\n        string Visit(IEnumerable<Item> items, string current);\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/LastUpdatedVisitor.cs",
    "content": "﻿using System.Collections.Generic;\nusing POEApi.Model;\nusing System;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class LastUpdatedVisitor : IVisitor\n    {\n        private const string TOKEN = \"{LastUpdated}\";\n\n        public string Visit(IEnumerable<Item> items, string current)\n        {\n            return current.Replace(TOKEN, DateTime.Now.ToString(\"f\", System.Globalization.CultureInfo.CreateSpecificCulture(\"en-US\")));\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/LeveledGemVisitor.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing POEApi.Model;\nusing System.Linq;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class LeveledGemVisitor : VisitorBase\n    {\n        private Dictionary<string, IFilter> tokens;\n\n        public LeveledGemVisitor()\n        {\n            tokens = new Dictionary<string, IFilter>();\n            tokens.Add(\"{LeveledGems}\", new LeveledGemFilter(0));\n            tokens.Add(\"{Level1Gems}\", new LeveledGemFilter(1));\n            tokens.Add(\"{Level2Gems}\", new LeveledGemFilter(2));\n            tokens.Add(\"{Level3Gems}\", new LeveledGemFilter(3));\n            tokens.Add(\"{Level4Gems}\", new LeveledGemFilter(4));\n            tokens.Add(\"{Level5Gems}\", new LeveledGemFilter(5));\n            tokens.Add(\"{Level6Gems}\", new LeveledGemFilter(6));\n            tokens.Add(\"{Level7Gems}\", new LeveledGemFilter(7));\n            tokens.Add(\"{Level8Gems}\", new LeveledGemFilter(8));\n            tokens.Add(\"{Level9Gems}\", new LeveledGemFilter(9));\n            tokens.Add(\"{Level10Gems}\", new LeveledGemFilter(10));\n            tokens.Add(\"{Level11Gems}\", new LeveledGemFilter(11));\n            tokens.Add(\"{Level12Gems}\", new LeveledGemFilter(12));\n            tokens.Add(\"{Level13Gems}\", new LeveledGemFilter(13));\n            tokens.Add(\"{Level14Gems}\", new LeveledGemFilter(14));\n            tokens.Add(\"{Level15Gems}\", new LeveledGemFilter(15));\n            tokens.Add(\"{Level16Gems}\", new LeveledGemFilter(16));\n            tokens.Add(\"{Level17Gems}\", new LeveledGemFilter(17));\n            tokens.Add(\"{Level18Gems}\", new LeveledGemFilter(18));\n            tokens.Add(\"{Level19Gems}\", new LeveledGemFilter(19));\n            tokens.Add(\"{Level20Gems}\", new LeveledGemFilter(20));\n            tokens.Add(\"{Level21Gems}\", new LeveledGemFilter(21));\n        }\n\n        public override string Visit(IEnumerable<Item> items, string current)\n        {\n            string updated = current;\n            var sorted = items.OrderBy(i => i.H).ThenBy(i => i.IconURL);\n\n            foreach (var token in tokens)\n            {\n                if (updated.IndexOf(token.Key) < 0)\n                    continue;\n\n                updated = updated.Replace(token.Key, runFilter(token.Value, sorted));\n            }\n\n            return updated;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/LinksVisitor.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing POEApi.Model;\nusing System.Linq;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class LinksVisitor : VisitorBase\n    {\n        private Dictionary<string, IFilter> tokens;\n        public LinksVisitor()\n        {\n            tokens = new Dictionary<string,IFilter>();\n            tokens.Add(\"{6Link}\", new Link(6));\n            tokens.Add(\"{5Link}\", new FiveLink());\n            tokens.Add(\"{4Link}\", new FourLink());\n        }\n        public override string Visit(IEnumerable<Item> items, string current)\n        {\n            string updated = current;\n            var sorted = items.OrderBy(i => i.H).ThenBy(i => i.IconURL);\n\n            foreach (var token in tokens)\n            {\n                if (updated.IndexOf(token.Key) < 0)\n                    continue;\n\n                updated = updated.Replace(token.Key, runFilter(token.Value, sorted));\n            }\n\n            return updated;\n        }\n\n        private T getEnum<T>(string name)\n        {\n            return (T)Enum.Parse(typeof(T), name, true);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/MagicFindVisitor.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class MagicFindVisitor : VisitorBase\n    {\n        private const string TOKEN = \"{MagicFind}\";\n        public override string Visit(IEnumerable<Item> items, string current)\n        {\n            IFilter magicFindFilter = new OrFilter(new ItemRarityFilter(), new ItemQuantityFilter());\n            return current.Replace(TOKEN, runFilter(magicFindFilter, items.OrderBy(i => i.H).ThenBy(i => i.IconURL)));\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/MapVisitor.cs",
    "content": "﻿using System.Collections.Generic;\nusing POEApi.Model;\nusing System.Linq;\nusing Procurement.ViewModel.Filters;\nusing Procurement.ViewModel.Filters.ForumExport;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class MapVisitor : VisitorBase\n    {\n        private Dictionary<string, IFilter> known;\n        public MapVisitor()\n        {\n            known = Enumerable.Range(1, 100).ToDictionary(i => string.Concat(\"{Tier\", i.ToString(), \"Maps\", \"}\"), i => (IFilter)(new MapTierFilter(i)));\n        }\n        public override string Visit(IEnumerable<Item> items, string current)\n        {\n            var sorted = items.OfType<Map>().OrderBy(i => i.MapTier).ThenBy(i => i.MapQuantity).ToList();\n            string updated = current;\n            foreach (var token in known)\n            {\n                int index = updated.IndexOf(token.Key);\n                if (index == -1)\n                {\n                    updated = updated.Replace(token.Key, string.Empty);\n                    continue;\n                }\n\n                updated = updated.Replace(token.Key, runFilter(known[token.Key], sorted));\n            }\n\n            return updated;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/MultipleBuyoutVisitor.cs",
    "content": "﻿using System.Linq;\nusing System.Text;\nusing System.Collections.Generic;\nusing POEApi.Model;\nusing Procurement.ViewModel.Filters.ForumExport;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class MultipleBuyoutVisitor : VisitorBase\n    {\n        private const string TOKEN = \"{Buyouts}\";\n\n        protected override bool buyoutItemsOnlyVisibleInBuyoutsTag\n        {\n            get { return false; }\n        }\n\n        protected override bool embedBuyouts\n        {\n            get { return false; }\n        }\n\n        public override string Visit(IEnumerable<Item> items, string current)\n        {\n            string updated = current;\n            var sortedItems = items.OrderBy(i => i.H).ThenBy(i => i.IconURL);\n\n            StringBuilder builder = new StringBuilder();\n\n            Dictionary<string, List<Item>> buyouts = buildBuyoutDictionary();\n            Dictionary<string, List<Item>> pricedItems = buildPriceDictionary();\n\n            foreach (var item in sortedItems)\n            {\n                if (Settings.Buyouts.ContainsKey(item.Id) && !string.IsNullOrEmpty(Settings.Buyouts[item.Id].Buyout))\n                {\n                    buyouts[Settings.Buyouts[item.Id].Buyout].Add(item);\n                    continue;\n                }\n\n                if (Settings.Buyouts.ContainsKey(item.Id) && !string.IsNullOrEmpty(Settings.Buyouts[item.Id].Price))\n                {\n                    pricedItems[Settings.Buyouts[item.Id].Price].Add(item);\n                }\n\n                var itemBuyoutKey = ApplicationState.Stash[ApplicationState.CurrentLeague].GetTabNameByInventoryId(item.InventoryId);\n\n                if (Settings.TabsBuyouts.ContainsKey(itemBuyoutKey))\n                    buyouts[Settings.TabsBuyouts[itemBuyoutKey]].Add(item);\n            }\n\n            Dictionary<string, BuyoutFilter> filters = buyouts.Keys.Union(pricedItems.Keys).Distinct().ToDictionary(k => k, k => new BuyoutFilter(k));\n\n            buildSpoilers(builder, buyouts, filters, \"~b/o\");\n            buildSpoilers(builder, pricedItems, filters, \"~price\");\n\n            updated = updated.Replace(TOKEN, builder.ToString());\n\n            return updated;\n        }\n\n        private void buildSpoilers(StringBuilder builder, Dictionary<string, List<Item>> items, Dictionary<string, BuyoutFilter> filters, string header)\n        {\n            foreach (var set in items.Where(b => b.Value.Count() != 0))\n            {\n                builder.AppendLine(string.Format(\"[spoiler=\\\"          {0} {1}          \\\"]\", header, set.Key));\n                builder.AppendLine(runFilter(filters[set.Key], set.Value));\n                builder.AppendLine(\"[/spoiler]\");\n            }\n        }\n\n        private Dictionary<string, List<Item>> buildBuyoutDictionary()\n        {\n            Dictionary<string, List<Item>> buyouts = new Dictionary<string, List<Item>>();\n\n            var tabBuyouts = Settings.TabsBuyouts.Values;\n            var itemBuyouts = Settings.Buyouts.Where(b => b.Value.Buyout != string.Empty).Select(b => b.Value.Buyout);\n\n            foreach (var key in tabBuyouts.Union(itemBuyouts).Distinct())\n                buyouts.Add(key, new List<Item>());\n\n            return buyouts.OrderBy(b => b.Key.Split(' ')[1]).ToDictionary(x => x.Key, y => y.Value);\n        }\n\n        private Dictionary<string, List<Item>> buildPriceDictionary()\n        {\n            Dictionary<string, List<Item>> pricedItems = new Dictionary<string, List<Item>>();\n\n            var itemBuyouts = Settings.Buyouts.Where(b => b.Value.Price != string.Empty).Select(b => b.Value.Price);\n\n            foreach (var key in itemBuyouts.Distinct())\n                pricedItems.Add(key, new List<Item>());\n\n            return pricedItems.OrderBy(b => b.Key.Split(' ')[1]).ToDictionary(x => x.Key, y => y.Value);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/QualityGemVisitor.cs",
    "content": "﻿using POEApi.Model;\nusing Procurement.ViewModel.Filters;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class QualityGemVisitor : VisitorBase\n    {\n        private Dictionary<string, IFilter> tokens;\n\n        public QualityGemVisitor()\n        {\n            tokens = new Dictionary<string, IFilter>();\n\n            tokens.Add(\"{QualityGems}\", new QualityGemFilter(0));\n\n            for (int i = 1; i < 24; i++)\n                tokens.Add(\"{Quality\" + i + \"Gems}\", new QualityGemFilter(i));\n        }\n        public override string Visit(IEnumerable<Item> items, string current)\n        {\n            string updated = current;\n            var sorted = items.OrderBy(i => i.H).ThenBy(i => i.IconURL);\n\n            foreach (var token in tokens)\n            {\n                if (updated.IndexOf(token.Key) < 0)\n                    continue;\n\n                updated = updated.Replace(token.Key, runFilter(token.Value, sorted));\n            }\n\n            return updated;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/SimpleVisitor.cs",
    "content": "﻿using System.Collections.Generic;\nusing POEApi.Model;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal abstract class SimpleVisitor : VisitorBase\n    {\n        private readonly IFilter filter;\n        private readonly string token;\n\n        internal SimpleVisitor(string token, IFilter filter)\n        {\n            this.token = token;\n            this.filter = filter;\n        }\n\n        public override string Visit(IEnumerable<Item> items, string current)\n        {\n            if (current.IndexOf(token) < 0)\n            {\n                return current;\n            }\n\n            return current.Replace(token, runFilter(filter, items));\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/SimpleVisitors.cs",
    "content": "﻿using Procurement.ViewModel.Filters;\nusing Procurement.ViewModel.Filters.ForumExport;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class ProphecyVisitor : SimpleVisitor\n    {\n        public ProphecyVisitor() : base(\"{Prophecies}\", new ProphecyFilter())\n        {\n        }\n    }\n\n    internal class AbyssJewelVisitor : SimpleVisitor\n    {\n        public AbyssJewelVisitor() : base(\"{AbyssJewels}\", new AbyssJewelFilter())\n        {\n        }\n    }\n\n    internal class FossilVisitor : SimpleVisitor\n    {\n        public FossilVisitor() : base(\"{Fossil}\", new FossilFilter())\n        {\n        }\n    }\n\n    internal class ResonatorVisitor : SimpleVisitor\n    {\n        public ResonatorVisitor() : base(\"{Resonator}\", new ResonatorFilter())\n        {\n        }\n    }\n\n    internal class ShaperItemVisitor : SimpleVisitor\n    {\n        public ShaperItemVisitor() : base(\"{ShaperItems}\", new ShaperItemFilter())\n        {\n        }\n    }\n\n    internal class ElderItemVisitor : SimpleVisitor\n    {\n        public ElderItemVisitor() : base(\"{ElderItems}\", new ElderItemFilter())\n        {\n        }\n    }\n\n    internal class CurrencyVisitor : SimpleVisitor\n    {\n        public CurrencyVisitor() : base(\"{Currency}\", new CurrencyFilter())\n        {\n        }\n    }\n\n    internal class CorruptedGemVisitor : SimpleVisitor\n    {\n        public CorruptedGemVisitor() : base(\"{CorruptedGems}\", new CorruptedGemFilter())\n        {\n        }\n    }\n\n    internal class AllGemVisitor : SimpleVisitor\n    {\n        public AllGemVisitor() : base(\"{AllGems\", new AllGemsFilter())\n        {\n        }\n    }\n\n    internal class DivineVesselVisitor : SimpleVisitor\n    {\n        public DivineVesselVisitor() : base(\"{DivineVessel}\", new DivineVesselFilter())\n        {\n        }\n    }\n\n    internal class DropOnlyGemVisitor : SimpleVisitor\n    {\n        public DropOnlyGemVisitor() : base(\"{DropOnlyGems}\", new DropOnlyGemFilter())\n        {\n        }\n    }\n\n    internal class DualResVisitor : SimpleVisitor\n    {\n        public DualResVisitor() : base(\"{DualRes}\", new DualResistances())\n        {\n        }\n    }\n\n    internal class EssenceVisitor : SimpleVisitor\n    {\n        public EssenceVisitor() : base(\"{Essence}\", new EssenceFilter())\n        {\n        }\n    }\n\n    internal class LeagueStoneVisitor : SimpleVisitor\n    {\n        public LeagueStoneVisitor() : base(\"{Leaguestone}\", new LeagestoneFilter())\n        {\n        }\n    }\n\n    internal class FatedUniqueBaseTypeVisitor : SimpleVisitor\n    {\n        public FatedUniqueBaseTypeVisitor() : base(\"{FatedUniqueBaseType}\", new FatedUniqueBaseTypesFilter())\n        {\n        }\n    }\n\n    internal class FatedUniqueProphecyVisitor : SimpleVisitor\n    {\n        public FatedUniqueProphecyVisitor() : base(\"{FatedUniqueProphecy}\", new FatedUniquePropheciesFilter())\n        {\n        }\n    }\n\n    internal class FatedUniqueTargetVisitor : SimpleVisitor\n    {\n        public FatedUniqueTargetVisitor() : base(\"{FatedUniqueTarget}\", new FatedUniqueTargetsFilter())\n        {\n        }\n    }\n\n    internal class FatedUniqueVisitor : SimpleVisitor\n    {\n        public FatedUniqueVisitor() : base(\"{FatedUnique}\", new FatedUniquesFilter())\n        {\n        }\n    }\n\n    internal class FracturedItemVisitor : SimpleVisitor\n    {\n        public FracturedItemVisitor() : base(\"{FracturedItems}\", new FracturedItemFilter())\n        {\n        }\n    }\n\n    // TODO: Add similar visitors that look for orbs that have exactly one or two Bestiary beast mods, once we can\n    // identify which mods those are.\n    internal class FullBestiaryOrbVisitor : SimpleVisitor\n    {\n        public FullBestiaryOrbVisitor() : base(\"{FullBestiaryOrbs}\", new FullBestiaryOrbFilter())\n        {\n        }\n    }\n\n    internal class IncursionVialVisitor : SimpleVisitor\n    {\n        public IncursionVialVisitor() : base(\"{IncursionVial}\", new IncursionVialsFilter())\n        {\n        }\n    }\n\n    internal class MirroredItemVisitor : SimpleVisitor\n    {\n        public MirroredItemVisitor() : base(\"{Mirrored}\", new MirroredItemFilter())\n        {\n        }\n    }\n\n    internal class OfferingVisitor : SimpleVisitor\n    {\n        public OfferingVisitor() : base(\"{Offering}\", new OfferingFilter())\n        {\n        }\n    }\n\n    internal class PopularGemsVisitor : SimpleVisitor\n    {\n        public PopularGemsVisitor() : base(\"{PopularGems}\", new PopularGemsFilter())\n        {\n        }\n    }\n\n    internal class ScarabVisitor : SimpleVisitor\n    {\n        public ScarabVisitor() : base(\"{Scarab}\", new ScarabFilter())\n        {\n        }\n    }\n\n    internal class SixSocketVisitor : SimpleVisitor\n    {\n        public SixSocketVisitor() : base(\"{6Socket}\", new SixSocketFilter())\n        {\n        }\n    }\n\n    internal class SynthesisedItemVisitor : SimpleVisitor\n    {\n        public SynthesisedItemVisitor() : base(\"{SynthesisedItems}\", new SynthesisedItemFilter())\n        {\n        }\n    }\n\n    internal class TripResVisitor : SimpleVisitor\n    {\n        public TripResVisitor() : base(\"{TripRes}\", new TripleResistance())\n        {\n        }\n    }\n\n    internal class UniquesVisitor : SimpleVisitor\n    {\n        public UniquesVisitor() : base(\"{Uniques}\", new UniqueRarity())\n        {\n        }\n    }\n\n    internal class UnknownItemVisitor : SimpleVisitor\n    {\n        public UnknownItemVisitor() : base(\"{UnknownItems}\", new UnknownItemFilter())\n        {\n        }\n    }\n\n    internal class IncubatorVisitor : SimpleVisitor\n    {\n        public IncubatorVisitor() : base(\"{Incubator}\", new IncubatorFilter())\n        {\n            \n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/SingleBuyoutVisitor.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing Procurement.ViewModel.Filters;\nusing System.Linq;\nusing POEApi.Model;\nusing Procurement.ViewModel.Filters.ForumExport;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class SingleBuyoutVisitor : VisitorBase\n    {\n        private Dictionary<string, IFilter> tokens;\n        public SingleBuyoutVisitor()\n        {\n            tokens = Settings.Buyouts.Keys.GroupBy(k => Settings.Buyouts[k].Buyout)\n                                          .ToDictionary(g => string.Concat(\"{\", g.Key.ToLower(), \"}\"), g => (IFilter)new BuyoutFilter(g.Key.ToLower()));\n        }\n        public override string Visit(IEnumerable<POEApi.Model.Item> items, string current)\n        {\n            string updated = current;\n            var sorted = items.OrderBy(i => i.H).ThenBy(i => i.IconURL);\n\n            foreach (var token in tokens)\n            {\n                if (updated.IndexOf(token.Key, StringComparison.OrdinalIgnoreCase) < 0)\n                    continue;\n\n                updated = updated.Replace(token.Key, runFilter(token.Value, sorted));\n            }\n\n            return updated;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/StashVisitor.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\nusing System.Text.RegularExpressions;\nusing POEApi.Infrastructure;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class StashVisitor : VisitorBase\n    {\n        private const string TOKENSTART = \"{Stash:\";\n        public override string Visit(IEnumerable<Item> items, string current)\n        {\n            List<int> tokenLocations = getTokenLocations(current);\n            if (tokenLocations.Count == 0)\n                return current;\n\n            foreach (int location in tokenLocations)\n            {\n                try\n                {\n                    var nameToken = getToken(location, current);\n                    Regex replacer = new Regex(nameToken.Item2);\n                    var tabs = ApplicationState.Stash[ApplicationState.CurrentLeague].Tabs.FindAll(t => t.Name == nameToken.Item1);\n                    if (tabs == null)\n                    {\n                        current = replacer.Replace(current, string.Empty, 1, location);\n                        continue;\n                    }\n\n                    string sItems = \"\";\n                    foreach (Tab tab in tabs)\n                        sItems = sItems + getItems(ApplicationState.Stash[ApplicationState.CurrentLeague].GetItemsByTab(tab.i).OrderBy(i => i.H).ThenBy(i => i.IconURL));\n\n                    current = current.Replace(nameToken.Item2, sItems);\n                }\n                catch (Exception ex)\n                {\n                    Logger.Log(\"Error in StashVisitor.Visit: \" + ex.ToString());\n                }\n            }\n\n            return current;\n        }\n\n        private Tuple<string, string> getToken(int location, string current)\n        {\n            int startLength = TOKENSTART.Length;\n            int tokenEnd = current.IndexOf(\"}\", location);\n            int nameStart = location + startLength;\n\n            string name = current.Substring(nameStart, tokenEnd - nameStart);\n            string token = current.Substring(location, tokenEnd - (location - 1));\n\n            return new Tuple<string,string>(name, token);\n        }\n\n        private string getItems(IEnumerable<Item> items)\n        {\n            StringBuilder builder = new StringBuilder();\n            foreach (var item in items)\n                builder.Append(getLinkItem(item));\n\n            return builder.ToString();\n        }\n\n        private List<int> getTokenLocations(string current)\n        {\n            List<int> tokenLocations = new List<int>();\n            List<string> addedTabs = new List<string>();\n\n            int index = current.IndexOf(TOKENSTART, 0);\n\n            while (index > -1)\n            {\n                var tabName = getToken(index, current).Item1;\n\n                if (!addedTabs.Contains(tabName))\n                {\n                    tokenLocations.Add(index);\n                    addedTabs.Add(tabName);\n                }\n\n                index = current.IndexOf(TOKENSTART, (index + 1));\n            }\n\n            tokenLocations.Reverse();\n\n            return tokenLocations;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/TypeLineVisitor.cs",
    "content": "﻿using POEApi.Model;\nusing Procurement.ViewModel.Filters;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class TypeLineVisitor : VisitorBase\n    {\n        private Dictionary<string, IFilter> tokens;\n\n        public TypeLineVisitor()\n        {\n            tokens = new Dictionary<string, IFilter>();\n            tokens.Add(\"{VaalFragments}\", new VaalFragmentFilter());\n            tokens.Add(\"{VaalUberFragments}\", new VaalUberFragmentFilter());\n            tokens.Add(\"{ProphecyFragments}\", new ProphecyFragmentFilter());\n            tokens.Add(\"{AtlasFragments}\", new AtlasFragmentFilter());\n        }\n\n        public override string Visit(IEnumerable<Item> items, string current)\n        {\n            string updated = current;\n            var sorted = items.OrderBy(i => i.H).ThenBy(i => i.IconURL);\n\n            foreach (var token in tokens)\n            {\n                if (updated.IndexOf(token.Key) < 0)\n                    continue;\n\n                updated = updated.Replace(token.Key, runFilter(token.Value, sorted));\n            }\n\n            return updated;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/VisitorBase.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Text;\nusing POEApi.Model;\nusing Procurement.ViewModel.Filters;\nusing System.Linq;\nusing POEApi.Infrastructure;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal abstract class VisitorBase : IVisitor\n    {\n        protected virtual bool buyoutItemsOnlyVisibleInBuyoutsTag\n        {\n            get { return Settings.UserSettings.GetEntry(\"BuyoutItemsOnlyVisibleInBuyoutsTag\").ToLower() == \"true\"; }\n        }\n\n        protected virtual bool embedBuyouts\n        {\n            get { return Settings.UserSettings.GetEntry(\"EmbedBuyouts\").ToLower() == \"true\"; }\n        }\n\n        protected virtual bool onlyDisplayBuyouts\n        {\n            get { return Settings.UserSettings.GetEntry(\"OnlyDisplayBuyouts\").ToLower() == \"true\"; }\n        }\n\n        public abstract string Visit(IEnumerable<Item> items, string current);\n\n        protected string runFilter(IFilter filter, IEnumerable<Item> items)\n        {\n            var builder = new StringBuilder();\n            items = items.OrderBy(i => i.H);\n\n            foreach (var item in items.Where(i => filter.Applicable(i)))\n                builder.Append(getLinkItem(item));\n\n            return builder.ToString();\n        }\n\n        protected string getLinkItem<T>(T item) where T : Item\n        {\n            string tabName = ApplicationState.Stash[ApplicationState.CurrentLeague].GetTabNameByInventoryId(item.InventoryId);\n            bool isBuyoutItem = Settings.TabsBuyouts.ContainsKey(tabName) || hasItemBuyout<T>(item);\n\n            if ((onlyDisplayBuyouts && !isBuyoutItem) || (isBuyoutItem && buyoutItemsOnlyVisibleInBuyoutsTag))\n                return string.Empty;\n\n            if (!(embedBuyouts && isBuyoutItem))\n                return getNonBuyoutString(item);\n\n            return getBuyoutString<T>(item, tabName);\n        }\n\n        private static bool hasItemBuyout<T>(T item) where T : Item\n        {\n            if (!Settings.Buyouts.ContainsKey(item.Id))\n                return false;\n\n            var buyoutItem = Settings.Buyouts[item.Id];\n\n            return !string.IsNullOrEmpty(buyoutItem.Buyout) || !string.IsNullOrEmpty(buyoutItem.Price) || !string.IsNullOrEmpty(buyoutItem.CurrentOffer);\n        }\n\n        private string getBuyoutString<T>(T item, string tabName) where T : Item\n        {\n            if (item.Character != string.Empty)\n                return string.Format(\"\\n[linkItem location=\\\"{0}\\\" character=\\\"{1}\\\" x=\\\"{2}\\\" y=\\\"{3}\\\"]{4}\", item.TradeInventoryId, item.Character, item.TradeX, item.TradeY, appendAdditionalInfo(item, tabName));\n\n            return string.Format(\"\\n[linkItem location=\\\"{0}\\\" league=\\\"{1}\\\" x=\\\"{2}\\\" y=\\\"{3}\\\"]{4}\", item.TradeInventoryId, ApplicationState.CurrentLeague, item.TradeX, item.TradeY, appendAdditionalInfo(item, tabName));\n        }\n\n        private static string getNonBuyoutString(Item item)\n        {\n            if (item.Character != string.Empty)\n                return string.Format(\"[linkItem location=\\\"{0}\\\" character=\\\"{1}\\\" x=\\\"{2}\\\" y=\\\"{3}\\\"]\", item.TradeInventoryId, item.Character, item.TradeX, item.TradeY);\n\n            return string.Format(\"[linkItem location=\\\"{0}\\\" league=\\\"{1}\\\" x=\\\"{2}\\\" y=\\\"{3}\\\"]\", item.TradeInventoryId, ApplicationState.CurrentLeague, item.TradeX, item.TradeY);\n        }\n\n        private string appendAdditionalInfo(Item item, string tabName)\n        {\n            if (!Settings.Buyouts.ContainsKey(item.Id))\n                return string.Format(\"\\n~b/o {0}\\n\", Settings.TabsBuyouts[tabName]);\n\n            var buyoutInfo = Settings.Buyouts[item.Id];\n            StringBuilder sb = new StringBuilder();\n\n            if (buyoutInfo.Buyout != string.Empty)\n                sb.Append(string.Format(\"\\n~b/o {0}\", buyoutInfo.Buyout));\n\n            if (buyoutInfo.CurrentOffer != string.Empty)\n                sb.Append(string.Format(\"\\n~c/o {0}\", buyoutInfo.CurrentOffer));\n\n            if (buyoutInfo.Price != string.Empty)\n                sb.Append(string.Format(\"\\n~price {0}\", buyoutInfo.Price));\n\n            sb.Append(\"\\n\");\n\n            return sb.ToString();\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/ForumExportVisitors/XHandedVisitor.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\nusing Procurement.ViewModel.Filters;\nusing Procurement.ViewModel.Filters.ForumExport;\n\nnamespace Procurement.ViewModel.ForumExportVisitors\n{\n    internal class XHandedVisitor : VisitorBase\n    {\n        private Dictionary<string, IFilter> tokens;\n        public XHandedVisitor()\n        {\n            tokens = new Dictionary<string, IFilter>();\n            tokens.Add(\"{OneHanders}\", new OneHandedFilter());\n            tokens.Add(\"{TwoHanders}\", new TwoHandedFilter());\n        }\n\n        public override string Visit(IEnumerable<Item> items, string current)\n        {\n            string updated = current;\n            var sorted = items.OrderBy(i => i.H).ThenBy(i => i.IconURL);\n\n            foreach (var token in tokens)\n            {\n                if (updated.IndexOf(token.Key) < 0)\n                    continue;\n\n                updated = updated.Replace(token.Key, runFilter(token.Value, sorted));\n            }\n\n            return updated;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ForumTemplateViewModel.cs",
    "content": "﻿using System.ComponentModel;\nusing Procurement.Controls;\n\nnamespace Procurement.ViewModel\n{\n    internal class ForumTemplateViewModel : ObservableBase\n    {\n        public ForumTemplateViewModel()\n        {\n            this.Text = ForumExportTemplateReader.GetTemplate(null);\n            ForumExportTemplateReader.OnTemplateReloaded += new PropertyChangedEventHandler(ForumExportTemplateReader_OnTemplateReloaded);\n        }\n\n        void ForumExportTemplateReader_OnTemplateReloaded(object sender, PropertyChangedEventArgs e)\n        {\n            this.Text = sender.ToString();\n        }\n\n        private string text;\n        public string Text\n        {\n            get { return text; }\n            set\n            {\n                text = value;\n                OnPropertyChanged();\n            }\n        }\n\n        internal void Save()\n        {\n            ForumExportTemplateReader.SaveTemplate(Text);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/InventoryViewModel.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.ComponentModel;\nusing POEApi.Model;\nusing Procurement.View;\n\nnamespace Procurement.ViewModel\n{\n    public class InventoryViewModel : ObservableBase\n    {\n        private InventoryView inventoryView;\n\n        private string character;\n        public string Character\n        {\n            get { return character; }\n            set\n            {\n                if (value != character)\n                {\n                    character = value;\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        private List<Character> characters;\n        public List<Character> Characters\n        {\n            get { return characters; }\n            set\n            {\n                characters = value;\n                OnPropertyChanged();\n            }\n        }\n\n        public List<string> Leagues\n        {\n            get { return ApplicationState.Leagues; }\n        }\n\n        public string CurrentLeague\n        {\n            get { return ApplicationState.CurrentLeague; }\n        }\n\n        public InventoryViewModel(InventoryView inventoryView)\n        {\n            this.Character = ApplicationState.CurrentCharacter.Name;\n            this.Characters = ApplicationState.Characters;\n            ApplicationState.LeagueChanged += new PropertyChangedEventHandler(ApplicationState_LeagueChanged);\n            ApplicationState.CharacterChanged += new PropertyChangedEventHandler(ApplicationState_CharacterChanged);\n            this.inventoryView = inventoryView;\n        }\n\n        void ApplicationState_CharacterChanged(object sender, PropertyChangedEventArgs e)\n        {\n            Character = ApplicationState.CurrentCharacter.Name;\n        }\n\n        void ApplicationState_LeagueChanged(object sender, PropertyChangedEventArgs e)\n        {\n            Characters = ApplicationState.Characters;\n            Character = ApplicationState.CurrentCharacter.Name;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ItemDisplayViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Controls.Primitives;\nusing System.Windows.Media;\nusing POEApi.Infrastructure;\nusing POEApi.Model;\nusing Procurement.Controls;\nusing Procurement.Utility;\n\nnamespace Procurement.ViewModel\n{\n    public class LinkPath\n    {\n        public Image image;\n        public int row { get; set; }\n        public int col { get; set; }\n    }\n\n\n    public class ItemDisplayViewModel : ObservableBase\n    {\n        private bool isQuadStash;\n        private bool _isItemInFilter;\n\n        public static ItemHover ItemHover = new ItemHover();\n\n        public Item Item { get; set; }\n\n        public bool HasSocket\n        {\n            get\n            {\n                var gear = Item as Gear;\n\n                return gear != null && gear.Sockets.Count > 0;\n            }\n        }\n\n        public bool IsItemInFilter\n        {\n            get { return _isItemInFilter; }\n            set\n            {\n                _isItemInFilter = value;\n\n                OnPropertyChanged();\n                OnPropertyChanged(nameof(ItemFilterBrush));\n            }\n        }\n\n        public SolidColorBrush ItemFilterBrush\n        {\n            get { return IsItemInFilter ? new SolidColorBrush(Colors.Yellow) \n                                        : new SolidColorBrush(Colors.Transparent); }\n        }\n\n        public bool IsStackSizeVisible => Item?.StackSize > 0;\n\n        public int StackSize\n        {\n            get\n            {\n                if (Item != null)\n                {\n                    return Item.StackSize;\n                }\n\n                return 0;\n            }\n        }\n\n        public ItemDisplayViewModel(Item item)\n        {\n            this.Item = item;\n        }\n\n        public Image getImage()\n        {\n            if (Item != null)\n            {\n                try\n                {\n\n                    var img = new Image\n                    {\n                        Source = ApplicationState.BitmapCache[Item.IconURL],\n                        Stretch = Stretch.Fill\n                    };\n\n                    CreateItemPopup(img, Item);\n\n                    return img;\n                }\n                catch (Exception e)\n                {\n                    Logger.Log(Item.Name);\n                    Logger.Log(e);\n                    //Don't crash - just give me a blank image.\n                    return null;\n                }\n            }\n\n            return null;\n        }\n\n        public UIElement GetSocket(bool isQuadStash)\n        {\n            this.isQuadStash = isQuadStash;\n            var gear = (Gear) Item; \n\n            Grid masterpiece = new Grid();\n\n            masterpiece.HorizontalAlignment = HorizontalAlignment.Center;\n            masterpiece.VerticalAlignment = VerticalAlignment.Center;\n\n            List<Tuple<int, int>> myLittleDesign = getSocketTree(gear.W, gear.H).ToList();\n            int rows = myLittleDesign.Max(t => t.Item2) + 1;\n            int columns = myLittleDesign.Max(t => t.Item1) + 1;\n\n            for (int i = 0; i < rows; i++)\n                masterpiece.RowDefinitions.Add(new RowDefinition() {\n                    Height = i % 2 == 0 ? new GridLength(1, GridUnitType.Star) : new GridLength(0),\n                    MaxHeight = this.isQuadStash ? 23 : 47\n                });\n\n            for (int i = 0; i < columns; i++)\n                masterpiece.ColumnDefinitions.Add(new ColumnDefinition() {\n                    Width = i % 2 == 0 ? new GridLength(1, GridUnitType.Star) : new GridLength(0),\n                    MaxWidth = this.isQuadStash ? 23 : 47\n                });\n\n            using (var sockets = getEveryOther(myLittleDesign, 0).GetEnumerator())\n            using (var links = getEveryOther(myLittleDesign, 1).GetEnumerator())\n            {\n                int currentGroup = -1;\n                for (int i = 0; i < gear.Sockets.Count; i++)\n                {\n                    Socket socket = gear.Sockets[i];\n\n                    sockets.MoveNext();\n\n                    var currentSocketPosition = sockets.Current;\n\n                    if (i > 0)\n                    {\n                        links.MoveNext();\n                        var link = links.Current;\n\n                        if (currentGroup == socket.Group)\n                        {\n                            Image img = getLink(currentSocketPosition, link);\n                            img.SetValue(Grid.RowProperty, link.Item2);\n                            img.SetValue(Grid.ColumnProperty, link.Item1);\n                            img.IsHitTestVisible = false;\n                            masterpiece.Children.Add(img);\n                        }\n                    }\n\n                    if (!isSocketed(socket, i, gear))\n                    {\n                        Image img = GetSocket(socket, string.Empty);\n                        img.SetValue(Grid.RowProperty, currentSocketPosition.Item2);\n                        img.SetValue(Grid.ColumnProperty, currentSocketPosition.Item1);\n                        img.IsHitTestVisible = false;\n                        masterpiece.Children.Add(img);\n                    }\n                    else\n                    {\n                        string suffix = \"-socketed\";\n                        SocketableItem g = gear.SocketedItems.Find(si => si.Socket == i && (socket.Attribute == si.Color || socket.Attribute == \"G\" || si.Color == \"G\"));\n                        if (g != null && g.Color == \"G\")\n                            suffix += \"-white\";\n\n                        Image img = GetSocket(socket, suffix);\n                        img.SetValue(Grid.RowProperty, currentSocketPosition.Item2);\n                        img.SetValue(Grid.ColumnProperty, currentSocketPosition.Item1);\n                        CreateItemPopup(img, getSocketItemAt(socket, i, gear));\n                        masterpiece.Children.Add(img);\n                    }\n\n                    currentGroup = socket.Group;\n                }\n            }\n\n            return masterpiece;\n        }\n\n        private List<Tuple<int, int>> getEveryOther(List<Tuple<int, int>> myLittleDesign, int start)\n        {\n            List<Tuple<int, int>> ret = new List<Tuple<int, int>>();\n            for (int i = start; i < myLittleDesign.Count; i = i + 2)\n                ret.Add(myLittleDesign[i]);\n\n            return ret;\n        }\n\n        private Image getLink(Tuple<int, int> currentSocket, Tuple<int, int> currentLink)\n        {\n            var img = new Image();\n            const string linkFormat = \"pack://application:,,,/Images/Sockets/{0}.png\";\n            string link;\n            if (currentSocket.Item1 != currentLink.Item1)\n            {\n                link = \"link-horizontal\";\n                img.SetValue(Grid.ColumnSpanProperty, 3);\n                if (this.isQuadStash)\n                {\n                    img.Margin = new Thickness(-11.5, 0, 11.5, 0);\n                }\n                else\n                {\n                    img.Margin = new Thickness(-23, 0, 23, 0);\n                }\n                img.HorizontalAlignment = HorizontalAlignment.Left;\n            }\n            else\n            {\n                link = \"link-vertical\";\n                img.SetValue(Grid.RowSpanProperty, 3);\n                if (this.isQuadStash)\n                {\n                    img.Margin = new Thickness(0, -11.5, 0, 11.5);\n                }\n                else\n                {\n                    img.Margin = new Thickness(0, -23, 0, 23);\n                }\n                img.VerticalAlignment = VerticalAlignment.Top;\n            }\n\n            var url = string.Format(linkFormat, link);\n\n            img.SetValue(Panel.ZIndexProperty, 1);\n            img.Stretch = Stretch.Fill;\n            img.Source = ApplicationState.BitmapCache.GetByLocalUrl(url);\n\n            return img;\n        }\n\n        private bool isSocketed(Socket socket, int socketIndex, Gear item)\n        {\n            if (item.SocketedItems == null || item.SocketedItems.Count == 0)\n                return false;\n\n            return item.SocketedItems.Exists(i => i.Socket == socketIndex && (socket.Attribute == i.Color || socket.Attribute == \"G\" || i.Color == \"G\" || socket.Attribute == \"A\" && i.Color == null));\n        }\n\n        private SocketableItem getSocketItemAt(Socket socket, int socketIndex, Gear item)\n        {\n            return item.SocketedItems.First(i => i.Socket == socketIndex && (socket.Attribute == i.Color || socket.Attribute == \"G\" || i.Color == \"G\" || socket.Attribute == \"A\" && i.Color == null));\n        }\n\n        private Image GetSocket(Socket socket, string suffix)\n        {\n            const string socketFormat = \"pack://application:,,,/Images/Sockets/{0}.png\";\n            string color;\n            switch (socket.Attribute)\n            {\n                case \"D\":\n                    color = \"green\" + suffix;\n                    break;\n                case \"I\":\n                    color = \"blue\" + suffix;\n                    break;\n                case \"S\":\n                    color = \"red\" + suffix;\n                    break;\n                case \"A\":\n                    color = \"abyssal\" + suffix;\n                    break;\n                default:\n                    color = \"white\" + suffix;\n                    break;\n            }\n\n            var url = string.Format(socketFormat, color);\n\n            var img = new AlphaHittestedImage\n            {\n                Stretch = Stretch.Fill,\n                Source = ApplicationState.BitmapCache.GetByLocalUrl(url)\n            };\n\n            return img;\n        }\n\n        private void CreateItemPopup(UIElement target, Item item)\n        {\n            var popup = new Popup\n            {\n                AllowsTransparency = true,\n                PopupAnimation = PopupAnimation.Fade,\n                StaysOpen = true,\n                PlacementTarget = target\n            };\n\n            // Use a grid as child to be able to disconnect the hover control properly. \n            var grid = new Grid();\n            popup.Child = grid;\n\n            target.MouseEnter += (o, e) =>\n            {\n                ItemHover.DataContext = ItemHoverViewModelFactory.Create(item);\n                grid.Children.Add(ItemHover);\n\n                popup.IsOpen = true;\n            };\n            target.MouseLeave += (o, e) =>\n            {\n                popup.IsOpen = false;\n                grid.Children.Clear();\n            };\n        }\n\n        public IEnumerable<Tuple<int, int>> getSocketTree(int W, int H)\n        {\n            int maxWidth = W;\n            if (W > 1)\n                maxWidth = 3;\n\n            int maxHeight = H;\n            if (H == 2)\n                maxHeight = 3;\n\n            if (H == 3)\n                maxHeight = 5;\n\n            if (H == 4)\n                maxHeight = 6;\n\n            if (H == 4 && W == 1)\n                maxHeight = 7;\n\n            List<Tuple<int, int>> possible = new List<Tuple<int, int>>();\n\n            possible.Add(new Tuple<int, int>(0, 0)); //Top Left\n            possible.Add(new Tuple<int, int>(1, 0)); //Link\n            possible.Add(new Tuple<int, int>(2, 0)); //Top Right\n            possible.Add(new Tuple<int, int>(2, 1)); //Link\n            if (W == 1)\n            {\n                //Not valid for everything but single column rapiers / wands meh.\n                possible.Add(new Tuple<int, int>(0, 1)); \n            }\n\n            possible.Add(new Tuple<int, int>(2, 2)); //Middle Right\n            possible.Add(new Tuple<int, int>(1, 2)); //Link\n            possible.Add(new Tuple<int, int>(0, 2)); //Middle Left\n            possible.Add(new Tuple<int, int>(0, 3)); //Link\n            possible.Add(new Tuple<int, int>(0, 4)); //Bottom Left\n            possible.Add(new Tuple<int, int>(1, 4)); //Link\n            possible.Add(new Tuple<int, int>(2, 4)); //Bottom Right\n            \n            if (W == 1 && H == 4)\n            {\n                //Extra one for reefbane which is 4 stacked vertically\n                possible.Add(new Tuple<int, int>(0, 5)); //New Bottom Link\n                possible.Add(new Tuple<int, int>(0, 6)); //New Bottom Left\n            }\n\n            foreach (var tuple in possible)\n                if (tuple.Item1 < maxWidth && tuple.Item2 < maxHeight)\n                    yield return tuple;\n        }\n\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ItemFilterUpdater.cs",
    "content": "﻿using POEApi.Infrastructure;\nusing POEApi.Model;\nusing Procurement.ViewModel.Recipes;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Procurement.ViewModel\n{\n    class ItemFilterUpdater\n    {\n        protected static Dictionary<Tab, List<Item>> GetUsableCurrentLeagueItemsByTab()\n        {\n            Dictionary<Tab, List<Item>> itemsByTab = new Dictionary<Tab, List<Item>>();\n            Stash stash = ApplicationState.Stash[ApplicationState.CurrentLeague];\n\n            var usableTabs = stash.Tabs.Where(t => !Settings.Lists[\"IgnoreTabsInRecipes\"].Contains(t.Name)).ToList();\n            foreach (var tab in usableTabs)\n            {\n                itemsByTab.Add(tab, stash.GetItemsByTab(tab.i));\n            }\n\n            return itemsByTab;\n        }\n\n        protected static Dictionary<string, List<RecipeResult>> GetRelaxedSameBaseTypeResults()\n        {\n            var itemsByTab = GetUsableCurrentLeagueItemsByTab();\n            SameBaseTypeRecipe sameBaseTypeRecipe = new SameBaseTypeRecipe(30);\n            return sameBaseTypeRecipe.Matches(itemsByTab)\n                .GroupBy(r => r.Name)\n                .Select(group => new\n                {\n                    Name = group.Key,\n                    RecipeGroup = group.OrderByDescending(recipe => recipe.PercentMatch)\n                })\n                .ToDictionary(g => g.Name, g => g.RecipeGroup.ToList());\n        }\n\n        public static void UpdateLootFilters()\n        {\n            foreach (var fileConfig in Settings.ItemFilterConfig.FileConfig)\n            {\n                if (!fileConfig.Disabled)\n                    UpdateLootFilter(fileConfig, Settings.ItemFilterConfig);\n            }\n        }\n\n        public static void UpdateLootFilter(POEApi.Model.Protobuf.FileConfig fileConfig,\n            POEApi.Model.Protobuf.ItemFilterConfig itemFilterConfig)\n        {\n            if (string.IsNullOrWhiteSpace(fileConfig.InputLocation) ||\n                string.IsNullOrWhiteSpace(fileConfig.OutputLocation))\n            {\n                Logger.Log(\"Must provide both an input and output location for an item filter file config.\");\n                return;\n            }\n\n            string itemFilterText = \"\";\n            if (!System.IO.File.Exists(fileConfig.InputLocation))\n            {\n                Logger.Log(string.Format(\n                    \"Input location '{0}' for item filter file confg does not exist; using empty base.\",\n                    fileConfig.InputLocation));\n            }\n            else\n            {\n                itemFilterText = System.IO.File.ReadAllText(fileConfig.InputLocation);\n            }\n\n            foreach (var filterRuleConfig in fileConfig.FilterRuleConfig)\n            {\n                itemFilterText = ApplyFilterRule(itemFilterText, filterRuleConfig, itemFilterConfig);\n            }\n\n            System.IO.File.WriteAllText(fileConfig.OutputLocation, itemFilterText);\n        }\n\n        protected static string ApplyFilterRule(string itemFilterText,\n            POEApi.Model.Protobuf.FilterRuleConfig filterRuleConfig,\n            POEApi.Model.Protobuf.ItemFilterConfig itemFilterConfig)\n        {\n            switch (filterRuleConfig.RuleType)\n            {\n                case POEApi.Model.Protobuf.FilterRuleConfig.Types.FilterRuleType.MissingSameBaseType:\n                    return AddMissingSameBaseTypeItemFilters(itemFilterText, filterRuleConfig, itemFilterConfig);\n                case POEApi.Model.Protobuf.FilterRuleConfig.Types.FilterRuleType.ChancingBases:\n                    return AddChancingBasesItemFilters(itemFilterText, filterRuleConfig, itemFilterConfig);\n                default:\n                    Logger.Log(string.Format(\n                        \"Unknown item filter rule type '{0}' found for rule with name '{1}'; skipping.\",\n                        filterRuleConfig.RuleType.ToString(), filterRuleConfig.Name));\n                    break;\n            }\n\n            return itemFilterText;\n        }\n\n        protected static string AddMissingSameBaseTypeItemFilters(string itemFilterText,\n            POEApi.Model.Protobuf.FilterRuleConfig filterRuleConfig,\n            POEApi.Model.Protobuf.ItemFilterConfig itemFilterConfig)\n        {\n\n            var additionalConfig = new POEApi.Model.Protobuf.MissingSameBaseTypesFilterRuleConfig();\n            if (filterRuleConfig.AdditionalConfig.Is(POEApi.Model.Protobuf.MissingSameBaseTypesFilterRuleConfig.Descriptor))\n            {\n                additionalConfig = filterRuleConfig.AdditionalConfig.Unpack<\n                    POEApi.Model.Protobuf.MissingSameBaseTypesFilterRuleConfig>();\n            }\n\n            var relaxedResults = GetRelaxedSameBaseTypeResults();\n\n            var resultsMissingQualityBaseTypeItems = relaxedResults.SelectMany(category => category.Value)\n                .Where(result => result.Instance is SameBaseTypeRecipe)\n                .Where(result => result.PercentMatch < 100)\n                .Where(result => result.Name.Contains(\"20%\"));\n\n            StringBuilder normalQualityItemsNeededFilter = new StringBuilder();\n            if (!additionalConfig.DisableMissingNormalQualityItems)\n            {\n                var normalQualityItemsNeeded = resultsMissingQualityBaseTypeItems\n                    .Where(result => result.MatchedItems.All(item => (item as Gear).Rarity != Rarity.Normal))\n                    .Select(result => result.MatchedItems.First() as Gear)\n                    .GroupBy(gear => new { gear.BaseType, gear.GearType })\n                    .Select(group => group.First())\n                    .OrderBy(gear => gear.BaseType);\n\n                if (normalQualityItemsNeeded.Count() > 0)\n                {\n                    StringBuilder baseTypeLine = new StringBuilder();\n                    foreach (var item in normalQualityItemsNeeded)\n                    {\n                        baseTypeLine.AppendFormat(\" \\\"{0}\\\"\", item.BaseType);\n                    }\n                    normalQualityItemsNeededFilter.AppendFormat(\n    @\"#-------------------------------------------------\n#   [0294] Missing Normal Rarity Items With Quality\n#-------------------------------------------------\n\n# Normal items needed to compete the same-base-type recipes with quality.\n\nShow # Missing normal rarity gear\n\tBaseType{0}\n\tQuality >= 10\n\tRarity = Normal\n\tElderItem False\n\tShaperItem False\n\tSetFontSize 40\n\tSetTextColor 255 255 255 255\n\tSetBorderColor 255 255 255 200\n\tSetBackgroundColor 75 75 75\n\n\", baseTypeLine.ToString());\n                }\n            }\n\n            StringBuilder magicQualityItemsNeededFilter = new StringBuilder();\n            if (!additionalConfig.DisableMissingMagicQualityItems)\n            {\n                var magicQualityItemsNeeded = resultsMissingQualityBaseTypeItems\n                    .Where(result => result.MatchedItems.All(item => (item as Gear).Rarity != Rarity.Magic))\n                    .Select(result => result.MatchedItems.First() as Gear)\n                    .GroupBy(gear => new { gear.BaseType, gear.GearType })\n                    .Select(group => group.First())\n                    .OrderBy(gear => gear.BaseType);\n\n                if (magicQualityItemsNeeded.Count() > 0)\n                {\n                    StringBuilder baseTypeLine = new StringBuilder();\n                    foreach (var item in magicQualityItemsNeeded)\n                    {\n                        baseTypeLine.AppendFormat(\" \\\"{0}\\\"\", item.BaseType);\n                    }\n                    magicQualityItemsNeededFilter.AppendFormat(\n    @\"#------------------------------------------------\n#   [0295] Missing Magic Rarity Items With Quality\n#------------------------------------------------\n\n# Magic items needed to compete the same-base-type recipes with quality.\n\nShow # Missing magic rarity gear\n\tBaseType{0}\n\tQuality >= 14\n\tRarity = Magic\n\tElderItem False\n\tShaperItem False\n\tSetFontSize 40\n\t#SetTextColor 25 95 235 255  # blue-ish\n\tSetBorderColor 255 255 255 200\n\tSetBackgroundColor 75 75 75\n\n\", baseTypeLine.ToString());\n                }\n            }\n\n            StringBuilder rareQualityItemsNeededFilter = new StringBuilder();\n            if (!additionalConfig.DisableMissingRareQualityItems)\n            {\n                var rareQualityItemsNeeded = resultsMissingQualityBaseTypeItems\n                    .Where(result => result.MatchedItems.All(item => (item as Gear).Rarity != Rarity.Rare))\n                    .Select(result => result.MatchedItems.First() as Gear)\n                    .GroupBy(gear => new { gear.BaseType, gear.GearType })\n                    .Select(group => group.First())\n                    .OrderBy(gear => gear.BaseType);\n\n                if (rareQualityItemsNeeded.Count() > 0)\n                {\n                    StringBuilder baseTypeLine = new StringBuilder();\n                    foreach (var item in rareQualityItemsNeeded)\n                    {\n                        baseTypeLine.AppendFormat(\" \\\"{0}\\\"\", item.BaseType);\n                    }\n                    rareQualityItemsNeededFilter.AppendFormat(\n    @\"#-----------------------------------------------\n#   [0296] Missing Rare Rarity Items With Quality\n#-----------------------------------------------\n\n# Rare items needed to compete the same-base-type recipes with quality.\n\nShow # Missing rare rarity gear\n\tBaseType{0}\n\tQuality >= 16\n\tRarity = Rare\n\tElderItem False\n\tShaperItem False\n\tSetFontSize 40\n\t#SetTextColor 210 178 135 255\n\tSetBorderColor 255 255 255 200\n\tSetBackgroundColor 75 75 75\n\n\", baseTypeLine.ToString());\n                }\n            }\n\n            var resultsMissingNonQualityBaseTypeItems = relaxedResults.SelectMany(category => category.Value)\n                .Where(result => result.Instance is SameBaseTypeRecipe)\n                .Where(result => result.PercentMatch < 100)\n                .Where(result => result.Name.Contains(\"(U)\"))\n                .Where(result => !result.Name.Contains(\"20%\"));\n\n            StringBuilder normalItemsNeededFilter = new StringBuilder();\n            if (!additionalConfig.DisableMissingNormalItems)\n            {\n                var normalItemsNeeded = resultsMissingNonQualityBaseTypeItems\n                    .Where(result => result.MatchedItems.All(item => (item as Gear).Rarity != Rarity.Normal))\n                    .Select(result => result.MatchedItems.First() as Gear)\n                    .GroupBy(gear => new { gear.BaseType, gear.GearType })\n                    .Select(group => group.First())\n                    .OrderBy(gear => gear.BaseType);\n\n                if (normalItemsNeeded.Count() > 0)\n                {\n                    StringBuilder baseTypeLine = new StringBuilder();\n                    foreach (var item in normalItemsNeeded)\n                    {\n                        baseTypeLine.AppendFormat(\" \\\"{0}\\\"\", item.BaseType);\n                    }\n                    normalItemsNeededFilter.AppendFormat(\n    @\"#------------------------------------\n#   [0298] Missing Normal Rarity Items\n#------------------------------------\n# Normal items needed to compete the same-base-type recipes.\n\nShow # Missing normal rarity gear\n\tBaseType{0}\n\tQuality = 0\n\tRarity = Normal\n\tElderItem False\n\tShaperItem False\n\tSetFontSize 36\n\tSetTextColor 210 178 135 255\n\tSetBorderColor 213 159 100 200\n\tSetBackgroundColor 75 75 75\n\n\", baseTypeLine.ToString());\n                };\n            }\n\n            StringBuilder magicItemsNeededFilter = new StringBuilder();\n            if (!additionalConfig.DisableMissingMagicItems)\n            {\n                var magicItemsNeeded = resultsMissingNonQualityBaseTypeItems\n                    .Where(result => result.MatchedItems.All(item => (item as Gear).Rarity != Rarity.Magic))\n                    .Select(result => result.MatchedItems.First() as Gear)\n                    .GroupBy(gear => new { gear.BaseType, gear.GearType })\n                    .Select(group => group.First())\n                    .OrderBy(gear => gear.BaseType);\n\n                if (magicItemsNeeded.Count() > 0)\n                {\n                    StringBuilder baseTypeLine = new StringBuilder();\n                    foreach (var item in magicItemsNeeded)\n                    {\n                        baseTypeLine.AppendFormat(\" \\\"{0}\\\"\", item.BaseType);\n                    }\n                    magicItemsNeededFilter.AppendFormat(\n    @\"#------------------------------------\n#   [0298b] Missing Magic Rarity Items\n#------------------------------------\n# Magic items needed to compete the same-base-type recipes.\n\nShow # Missing magic rarity gear\n\tBaseType{0}\n\tQuality = 0\n\tRarity = Magic\n\tElderItem False\n\tShaperItem False\n\tSetFontSize 36\n\t#SetTextColor 210 178 135 255\n\tSetBorderColor 213 159 100 200\n\tSetBackgroundColor 75 75 75\n\n\", baseTypeLine.ToString());\n                };\n            }\n\n            StringBuilder rareItemsNeededFilter = new StringBuilder();\n            if (!additionalConfig.DisableMissingRareItems)\n            {\n                var rareItemsNeeded = resultsMissingNonQualityBaseTypeItems\n                    .Where(result => result.MatchedItems.All(item => (item as Gear).Rarity != Rarity.Rare))\n                    .Select(result => result.MatchedItems.First() as Gear)\n                    .GroupBy(gear => new { gear.BaseType, gear.GearType })\n                    .Select(group => group.First())\n                    .OrderBy(gear => gear.BaseType);\n\n                if (rareItemsNeeded.Count() > 0)\n                {\n                    StringBuilder baseTypeLine = new StringBuilder();\n                    foreach (var item in rareItemsNeeded)\n                    {\n                        baseTypeLine.AppendFormat(\" \\\"{0}\\\"\", item.BaseType);\n                    }\n                    rareItemsNeededFilter.AppendFormat(\n    @\"#------------------------------------\n#   [0298c] Missing Rare Rarity Items\n#------------------------------------\n# Rare items needed to compete the same-base-type recipes.\n\nShow # Missing Rare rarity gear\n\tBaseType{0}\n\tQuality = 0\n\tRarity = Rare\n\tElderItem False\n\tShaperItem False\n\tSetFontSize 36\n\t#SetTextColor 210 178 135 255\n\tSetBorderColor 213 159 100 200\n\tSetBackgroundColor 75 75 75\n\n\", baseTypeLine.ToString());\n                };\n            }\n\n            string allFilters = string.Format(\"{0}\\n{1}\\n{2}\\n{3}\\n{4}\\n{5}\", normalQualityItemsNeededFilter.ToString(),\n                magicQualityItemsNeededFilter.ToString(), rareQualityItemsNeededFilter.ToString(),\n                normalItemsNeededFilter.ToString(), magicItemsNeededFilter.ToString(),\n                rareItemsNeededFilter.ToString());\n\n            var matchLocation = itemFilterText.IndexOf(filterRuleConfig.SearchString);\n            if (matchLocation < 0)\n            {\n                matchLocation = 0;\n            }\n            else if (filterRuleConfig.SearchStringRelation ==\n                POEApi.Model.Protobuf.FilterRuleConfig.Types.SearchStringRelation.After)\n            {\n                matchLocation += filterRuleConfig.SearchString.Length;\n            }\n\n            return itemFilterText.Insert(matchLocation, allFilters);\n        }\n\n        protected static string AddChancingBasesItemFilters(string itemFilterText,\n            POEApi.Model.Protobuf.FilterRuleConfig filterRuleConfig,\n            POEApi.Model.Protobuf.ItemFilterConfig itemFilterConfig)\n        {\n            if (filterRuleConfig.Disabled)\n                return itemFilterText;\n\n            List<string> chanceItems = new List<string>();\n            foreach (var leagueConfig in itemFilterConfig.LeagueConfig)\n            {\n                if (!leagueConfig.Disabled && string.Equals(leagueConfig.Name, ApplicationState.CurrentLeague))\n                {\n                    foreach (var buildConfig in leagueConfig.BuildConfig)\n                    {\n                        if (buildConfig.Disabled)\n                            continue;\n                        foreach (var chancingBase in buildConfig.ChancingBase)\n                        {\n                            if (chancingBase.Disabled)\n                                continue;\n                            if (chancingBase.QuantityHeld < chancingBase.QuantityNeeded)\n                            {\n                                chanceItems.Add(chancingBase.BaseTypeName);\n                            }\n                        }\n                    }\n                }\n            }\n            chanceItems = chanceItems.Distinct().ToList();\n\n            StringBuilder chanceItemsFilter = new StringBuilder();\n            if (chanceItems.Count() > 0)\n            {\n                StringBuilder baseTypeLine = new StringBuilder();\n                foreach (var item in chanceItems)\n                {\n                    baseTypeLine.AppendFormat(\" \\\"{0}\\\"\", item);\n                }\n                chanceItemsFilter.AppendFormat(@\"\n\nShow # $Chancing B-T1-Chancing %D4\n\tBaseType{0}\n\tRarity Normal\n\tQuality = 0\n\tElderItem False\n\tShaperItem False\n\tCorrupted False\n\tSetFontSize 38\n\tSetTextColor 255 255 255 255         # TEXTCOLOR:\t Normal Items: Strong Highlight\n\tSetBorderColor 0 210 0 210           # BORDERCOLOR:\t T1 Chancing\n\tPlayAlertSound 7 300                 # DROPSOUND:\t T1 chancing items\n\", baseTypeLine.ToString());\n            }\n\n            var matchLocation = itemFilterText.IndexOf(filterRuleConfig.SearchString);\n            if (matchLocation < 0)\n            {\n                matchLocation = 0;\n            }\n            else if (filterRuleConfig.SearchStringRelation ==\n                POEApi.Model.Protobuf.FilterRuleConfig.Types.SearchStringRelation.After)\n            {\n                matchLocation += filterRuleConfig.SearchString.Length;\n            }\n            return itemFilterText.Insert(matchLocation, chanceItemsFilter.ToString());\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ItemHoverViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Text;\nusing System.Windows.Media.Animation;\n\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel\n{\n    public class ItemHoverViewModel\n    {\n        public Item Item { get; private set; }\n        public string TypeLine { get; private set; }\n        public ItemType ItemType { get; private set; }\n        public List<Property> Properties { get; private set; }\n        public List<Requirement> Requirements { get; private set; }\n        public bool HasRequirements { get; private set; }\n\n        public string Name { get; private set; }\n        public bool HasName { get; private set; }\n        public List<string> ExplicitMods { get; private set; }\n        public bool IsMirrored { get; private set; }\n        public bool HasExplicitMods { get; private set; }\n        public List<string> ImplicitMods { get; private set; }\n        public bool HasImplicitMods { get; private set; }\n        public string DescriptionText { get; private set; }\n        public string SecondaryDescriptionText { get; private set; }\n        public bool IsCorrupted { get; private set; }\n        public List<string> Microtransactions { get; private set; }\n        public bool HasMicrotransactions { get; private set; }\n        public List<string> EnchantMods { get; private set; }\n        public bool HasEnchantMods { get; private set; }\n        public string FlavourText { get; private set; }\n\n        public List<string> CraftedMods { get; set; }\n        public List<string> VeiledMods { get; set; }\n        public List<string> FracturedMods { get; set; }\n\n        public bool HasCraftedMods { get; private set; }\n        public bool HasVeiledMods { get; private set; }\n        public bool HasFracturedMods { get; private set; }\n        public bool IsProphecy { get; set; }\n        public string ProphecyText { get; set; }\n        public string ProphecyDifficultyText { get; set; }\n        public bool IsGear { get; set; }\n\n        public string ItemLevel { get; set; }\n\n        public bool IsGemProgressVisible\n        {\n            get\n            {\n                var gem = Item as Gem;\n\n                if (gem == null)\n                    return false;\n\n                return gem.HasExperience;\n            }\n        }\n\n        public double LevelExperienceProgress { get; set; }\n\n        public int ExperienceNumerator { get; }\n        public int ExperienceDenominator { get; }\n\n        public int IncubatorNumerator { get; }\n        public int IncubatorDenominator { get; }\n        public double IncubatorProgress { get; }\n        public string Incubating { get; set; }\n        public string IncubationLevel { get; set; }\n\n        public bool IsIncubatorProgressVisible\n        {\n            get\n            {\n                return Item.IncubatedDetails != null;\n            }\n        }\n\n        public ItemHoverViewModel(Item item)\n        {\n            this.Item = item;\n            this.Name = item.Name;\n            this.TypeLine = item.TypeLine;\n            this.HasName = !string.IsNullOrEmpty(item.Name);\n            this.ItemType = item.ItemType;\n            this.Properties = item.Properties;\n\n            this.Requirements = new List<Requirement>();\n            this.ExplicitMods = item.Explicitmods;\n            this.IsMirrored = item.IsMirrored;\n\n            this.ImplicitMods = new List<string>();\n\n            this.DescriptionText = item.DescrText;\n\n            this.IsCorrupted = item.Corrupted;\n\n            this.Microtransactions = item.Microtransactions;\n            this.HasMicrotransactions = item.Microtransactions.Count > 0;\n\n            this.EnchantMods = item.EnchantMods;\n\n            this.CraftedMods = item.CraftedMods;\n            setVeiledMods(item);\n\n            this.FracturedMods = item.FracturedMods;\n\n            SecondaryDescriptionText = item.SecDescrText;\n            setTypeSpecificProperties(item);\n\n            var gem = Item as Gem;\n            if (gem != null)\n            {\n                LevelExperienceProgress = gem.LevelExperienceProgress;\n                ExperienceNumerator = gem.ExperienceNumerator;\n                ExperienceDenominator = gem.ExperienceDenominator;\n            }\n\n            if (IsIncubatorProgressVisible)\n            {\n                IncubatorNumerator = item.IncubatedDetails.Progress;\n                IncubatorDenominator = item.IncubatedDetails.Total;\n                Incubating = $\"Incubating {item.IncubatedDetails.Name}\";\n                IncubationLevel =  $\"Level {item.IncubatedDetails.Level}+ Monster Kills\";\n                if (Item.IncubatedDetails.Total > 0)\n                {\n                    IncubatorProgress = Convert.ToDouble(item.IncubatedDetails.Progress) / Convert.ToDouble(item.IncubatedDetails.Total);\n                }\n            }\n\n            // If an item has crafted mods but no true explicit mods:\n            //   In game: the crafted mods are correctly separated from the previous section.\n            //   On official web site: there is no seperator added before the previous section.\n            this.HasCraftedMods = CraftedMods?.Count > 0;\n            this.HasVeiledMods = VeiledMods?.Count > 0;\n            this.HasFracturedMods = FracturedMods?.Count > 0;\n            this.HasExplicitMods = ExplicitMods?.Count > 0 || HasFracturedMods || HasCraftedMods || IsMirrored;\n            this.HasImplicitMods = ImplicitMods?.Count > 0;\n            this.HasEnchantMods = item.EnchantMods.Count > 0;\n            this.HasRequirements = Requirements?.Count > 0;\n\n            if (item.FlavourText?.Count > 0)\n            {\n                this.FlavourText = string.Join(\"\", item.FlavourText);\n            }\n\n            setProphecyProperties(item);\n        }\n\n        private void setVeiledMods(Item item)\n        {\n            // The text for veiled mods is in the format \"(Prefix|Suffix)##\" where ## currently can be 01-06.\n            VeiledMods = new List<string>();\n            foreach (var veiledMod in item.VeiledMods)\n            {\n                if (veiledMod.StartsWith(\"Prefix\"))\n                {\n                    VeiledMods.Add(\"Veiled Prefix\");\n                }\n                else if (veiledMod.StartsWith(\"Suffix\"))\n                {\n                    VeiledMods.Add(\"Veiled Suffix\");\n                }\n                else\n                {\n                    VeiledMods.Add(\"Veiled Affix\");\n                }\n            }\n        }\n\n        private void setProphecyProperties(Item item)\n        {\n            var prophecy = item as Prophecy;\n            if (prophecy == null)\n                return;\n\n            this.IsProphecy = true;\n            this.ProphecyText = prophecy.ProphecyText;\n            this.ProphecyDifficultyText = prophecy.ProphecyDifficultyText;\n        }\n\n        private void setTypeSpecificProperties(Item item)\n        {\n            var gear = item as Gear;\n\n            if (gear != null)\n                setGearProperties(item, gear);\n\n            var gem = item as Gem;\n\n            if (gem != null)\n                this.Requirements = gem.Requirements;\n        }\n\n        private void setGearProperties(Item item, Gear gear)\n        {\n            this.IsGear = true;\n            if (item.ItemLevel > 0)\n            {\n                this.ItemLevel = string.Format(\"Item Level : {0}\", item.ItemLevel);\n            }\n            this.Requirements = gear.Requirements;\n            this.ImplicitMods = gear.Implicitmods;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/ItemHoverViewModelFactory.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel\n{\n    class ItemHoverViewModelFactory\n    {\n        internal static ItemHoverViewModel Create(Item item)\n        {\n            Gear gear = item as Gear;\n            Rarity? r = null;\n\n            if (gear != null)\n                r = gear.Rarity;\n\n            Map map = item as Map;\n            if (map != null)\n                r = map.Rarity;\n\n            Leaguestone stone = item as Leaguestone;\n            if (stone != null)\n                r = stone.Rarity;\n\n            if (item is DivineVessel || item is Offering || item is Scarab || item is Incubator || item is LegionEmblem)\n                r = Rarity.Normal;\n\n            var abyssJewel = item as AbyssJewel;\n            if (abyssJewel != null)\n            {\n                r = abyssJewel.Rarity;\n            }\n\n            var fullBestiaryOrb = item as FullBestiaryOrb;\n            if (fullBestiaryOrb != null)\n            {\n                r = fullBestiaryOrb.Rarity;\n            }\n\n            var questItem = item as QuestItem;\n            if (questItem != null)\n            {\n                return new QuestItemHoverViewModel(item);\n            }\n\n            if (r != null)\n            {\n                switch (r)\n                {\n                    case Rarity.Relic:\n                        return new RelicGearItemHoverViewModel(item);\n                    case Rarity.Unique:\n                        return new UniqueGearItemHoverViewModel(item);\n                    case Rarity.Rare:\n                        return new RareGearItemHoverViewModel(item); \n                    case Rarity.Magic:\n                        return new MagicGearItemHoverViewModel(item);\n                    case Rarity.Normal:\n                        return new NormalGearItemHoverViewModel(item); \n                }\n            }\n\n            if (item is Gem)\n                return new GemItemHoverViewModel(item);\n\n            if (item is Prophecy)\n                return new ProphecyItemHoverViewModel(item);\n            \n            if (item is Currency || item is Sextant || item is Essence || item is Fossil || item is Resonator || item is BreachSplinter || item is LegionSplinter)\n                return new CurrencyItemHoverViewModel(item);\n\n            return new ItemHoverViewModel(item);\n        }\n    }\n\n    public class SextantItemHoverViewModel : ItemHoverViewModel\n    {\n        public SextantItemHoverViewModel(Item item) : base(item)\n        { }\n    }\n\n    public class RelicGearItemHoverViewModel : ItemHoverViewModel\n    {\n        public RelicGearItemHoverViewModel(Item item)\n            : base(item)\n        { }\n    }\n\n\n    public class UniqueGearItemHoverViewModel : ItemHoverViewModel\n    {\n        public UniqueGearItemHoverViewModel(Item item)\n            : base(item)\n        { }\n    }\n\n    public class RareGearItemHoverViewModel : ItemHoverViewModel\n    {\n        public RareGearItemHoverViewModel(Item item)\n            : base(item)\n        { }\n    }\n\n    public class MagicGearItemHoverViewModel : ItemHoverViewModel\n    {\n        public MagicGearItemHoverViewModel(Item item)\n            : base(item)\n        { }\n    }\n\n    public class NormalGearItemHoverViewModel : ItemHoverViewModel\n    {\n        public NormalGearItemHoverViewModel(Item item)\n            : base(item)\n        { }\n    }\n\n    public class GemItemHoverViewModel : ItemHoverViewModel\n    {\n        public GemItemHoverViewModel(Item item)\n            : base(item)\n        { }\n    }\n\n    public class CurrencyItemHoverViewModel : ItemHoverViewModel\n    {\n        public CurrencyItemHoverViewModel(Item item)\n            : base(item)\n        { }\n    }\n\n    public class ProphecyItemHoverViewModel : ItemHoverViewModel\n    {\n        public ProphecyItemHoverViewModel(Item item) \n            : base(item)\n        { }\n    }\n\n    public class QuestItemHoverViewModel : ItemHoverViewModel\n    {\n        public QuestItemHoverViewModel(Item item) \n            : base(item)\n        { }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/LoginWindowViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Net;\nusing System.Security;\nusing System.Threading.Tasks;\nusing System.Windows.Controls;\nusing POEApi.Infrastructure;\nusing POEApi.Infrastructure.Events;\nusing POEApi.Model;\nusing POEApi.Model.Events;\nusing Procurement.View;\nusing Procurement.Utility;\nusing System.Windows;\nusing POEApi.Transport;\n\nnamespace Procurement.ViewModel\n{\n    public class LoginWindowViewModel : ObservableBase\n    {\n        private LoginView _view = null;\n        private StatusController _statusController;\n        public event LoginCompleted OnLoginCompleted;\n        public delegate void LoginCompleted();\n        private bool _formChanged = false;\n        private bool _passwordChanged = false;\n        private bool _useSession = true;\n\n        private CharacterTabInjector _characterInjector;\n\n        private string _email;\n        public string Email\n        {\n            get { return _email; }\n            set\n            {\n                if (value != _email)\n                {\n                    _email = value;\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        private bool _forceRefresh;\n        private string selectedRealm;\n\n        public bool ForceRefresh\n        {\n            get { return _forceRefresh; }\n            set\n            {\n                if (value != _forceRefresh)\n                {\n                    _forceRefresh = value;\n                    Settings.UserSettings[\"ForceRefresh\"] = value.ToString();\n                    OnPropertyChanged();\n                }\n            }\n        }\n\n        private void UpdateButtonLabels(bool useSession)\n        {\n            if (_view == null)\n                return;\n\n            _view.lblEmail.Content = useSession ? \"Alias\" : \"Email\";\n            _view.lblPassword.Content = useSession ? \"Session ID\" : \"Password\";\n        }\n\n        public LoginWindowViewModel(UserControl view)\n        {\n            _view = view as LoginView;\n\n            ForceRefresh = Settings.UserSettings.ContainsKey(\"ForceRefresh\") ?\n                bool.Parse(Settings.UserSettings[\"ForceRefresh\"]) : true;\n\n            Email = Settings.UserSettings[\"AccountLogin\"];\n\n            if (!string.IsNullOrEmpty(Settings.UserSettings[\"AccountPassword\"]))\n                _view.txtPassword.Password = string.Empty.PadLeft(8); //For the visuals\n\n            _view.txtPassword.PasswordChanged += new RoutedEventHandler(TxtPassword_PasswordChanged);\n            PropertyChanged += LoginWindow_PropertyChanged;\n\n            _characterInjector = new CharacterTabInjector();\n\n            _statusController = new StatusController(_view.StatusBox);\n\n            ApplicationState.Model.Authenticating += Model_Authenticating;\n            ApplicationState.Model.Throttled += Model_Throttled;\n            ApplicationState.InitializeFont(Properties.Resources.fontin_regular_webfont);\n            ApplicationState.InitializeFont(Properties.Resources.fontin_smallcaps_webfont);\n\n            _statusController.DisplayMessage(ApplicationState.Version + \" Initialized.\\r\");\n\n            VersionChecker.CheckForUpdates();\n\n            //Todo: Feed this in from a setting so that console players will have their preference remembered\n            SelectedRealm = AvailableRealms.First();\n        }\n\n        void TxtPassword_PasswordChanged(object sender, System.Windows.RoutedEventArgs e)\n        {\n            _formChanged = true;\n            _passwordChanged = true;\n        }\n\n        void LoginWindow_PropertyChanged(object sender, PropertyChangedEventArgs e)\n        {\n            _formChanged = true;\n        }\n\n        public void Login(bool offline)\n        {\n            ToggleControls();\n\n            if (string.IsNullOrEmpty(Email))\n            {\n                MessageBox.Show(string.Format(\"{0} is required!\", _useSession ? \"Alias\" : \"Email\"), \"Error logging in\",\n                    MessageBoxButton.OK, MessageBoxImage.Stop);\n                ToggleControls();\n                return;\n            }\n\n            if (!offline)\n            {\n                // Prevents the event from being registered doubly if the login fails prematurely. \n                ApplicationState.Model.StashLoading -= Model_StashLoading;\n                ApplicationState.Model.ImageLoading -= Model_ImageLoading;\n\n                ApplicationState.Model.StashLoading += Model_StashLoading;\n                ApplicationState.Model.ImageLoading += Model_ImageLoading;\n            }\n\n\n            Task.Factory.StartNew(() =>\n            {\n                // If offline == true, the password is never checked to know if it is correct, but if\n                // passwordChanged == true, the new value is saved to the settings file.  This might not be the\n                // behavior the user expects.\n                SecureString password = _passwordChanged ? this._view.txtPassword.SecurePassword :\n                    Settings.UserSettings[\"AccountPassword\"].Decrypt();\n                ApplicationState.CurrentRealm = SelectedRealm;\n                ApplicationState.Model.Authenticate(Email, password, offline, ApplicationState.CurrentRealm);\n\n                if (_formChanged)\n                    SaveSettings(password);\n\n                if (!offline)\n                {\n                    _statusController.DisplayMessage(\"Fetching account name...\");\n                    ApplicationState.AccountName = ApplicationState.Model.GetAccountName(ApplicationState.CurrentRealm);\n                    _statusController.Ok();\n                    if (ForceRefresh)\n                    {\n                        ApplicationState.Model.ForceRefresh();\n                    }\n                    _statusController.DisplayMessage(\"Loading characters...\");\n                }\n                else\n                {\n                    _statusController.DisplayMessage(\"Loading Procurement in offline mode...\");\n                }\n\n                List<Character> chars;\n                try\n                {\n                    chars = ApplicationState.Model.GetCharacters(ApplicationState.CurrentRealm);\n                }\n                catch (WebException wex)\n                {\n                    Logger.Log(wex);\n                    _statusController.NotOK();\n                    throw new Exception(\"Failed to load characters\", wex.InnerException);\n                }\n                _statusController.Ok();\n\n                UpdateCharactersByLeague(chars);\n\n                var items = LoadItems(offline, chars).ToList();\n\n                ApplicationState.Model.GetImages(items);\n\n                ApplicationState.SetDefaults();\n\n                ClientLogFileWatcher.Instance.Start();\n\n                if (!offline)\n                {\n                    _statusController.DisplayMessage(\"\\nDone!\");\n                    PoeTradeOnlineHelper.Instance.Start();\n                }\n\n                ApplicationState.Model.Authenticating -= Model_Authenticating;\n                ApplicationState.Model.StashLoading -= Model_StashLoading;\n                ApplicationState.Model.ImageLoading -= Model_ImageLoading;\n                ApplicationState.Model.Throttled -= Model_Throttled;\n                OnLoginCompleted();\n            }).ContinueWith(t =>\n            {\n                Logger.Log(t.Exception.InnerException.ToString());\n                _statusController.HandleError(t.Exception.InnerException.Message, ToggleControls);\n            }, TaskContinuationOptions.OnlyOnFaulted);\n        }\n\n        private IEnumerable<Item> LoadItems(bool offline, IEnumerable<Character> chars)\n        {\n            bool downloadOnlyMyLeagues = (Settings.UserSettings.ContainsKey(\"DownloadOnlyMyLeagues\") &&\n                                          bool.TryParse(Settings.UserSettings[\"DownloadOnlyMyLeagues\"],\n                                                        out downloadOnlyMyLeagues) &&\n                                          downloadOnlyMyLeagues &&\n                                          Settings.Lists.ContainsKey(\"MyLeagues\") &&\n                                          Settings.Lists[\"MyLeagues\"].Count > 0);\n\n            foreach (var character in chars)\n            {\n                if (character.League == \"Void\")\n                    continue;\n\n                if (character.Expired)\n                {\n                    _statusController.DisplayMessage(Environment.NewLine + \"Skipping character \" + character.Name +\n                        \" because the character's name has expired.\" + Environment.NewLine);\n                    continue;\n                }\n\n                if (downloadOnlyMyLeagues && !Settings.Lists[\"MyLeagues\"].Contains(character.League))\n                    continue;\n\n                foreach (var item in LoadStashItems(character))\n                    yield return item;\n\n                foreach (var item in LoadCharacterInventoryItems(character, offline).Where(i => i.InventoryId != \"MainInventory\"))\n                    yield return item;\n            }\n\n            if (downloadOnlyMyLeagues && ApplicationState.Characters.Count == 0)\n                throw new Exception(\"No characters found in the leagues specified. Check spelling or try setting \" +\n                    \"DownloadOnlyMyLeagues to false in the Settings.xml file.\");\n\n            _characterInjector.Inject();\n        }\n\n        private static void UpdateCharactersByLeague(List<Character> chars)\n        {\n            var allLeagues = chars.Select(c => c.League).Distinct();\n\n            foreach (var league in allLeagues)\n                ApplicationState.AllCharactersByLeague[league] = new List<string>();\n\n            if (Settings.Lists.ContainsKey(\"MyLeagues\"))\n                foreach (var league in Settings.Lists[\"MyLeagues\"])\n                    if (!ApplicationState.AllCharactersByLeague.ContainsKey(league))\n                        ApplicationState.AllCharactersByLeague[league] = new List<string>();\n\n            foreach (var character in chars)\n                ApplicationState.AllCharactersByLeague[character.League].Add(character.Name);\n        }\n\n        private void SaveSettings(SecureString password)\n        {\n            if (!_formChanged)\n                return;\n\n            Settings.UserSettings[\"AccountLogin\"] = Email;\n            Settings.UserSettings[\"UseSessionID\"] = _useSession.ToString();\n            Settings.UserSettings[\"ForceRefresh\"] = ForceRefresh.ToString();\n            if (_passwordChanged)\n                Settings.UserSettings[\"AccountPassword\"] = password.Encrypt();\n            Settings.Save();\n        }\n\n        private void ToggleControls()\n        {\n            _view.LoginButton.IsEnabled = !_view.LoginButton.IsEnabled;\n            _view.OfflineButton.IsEnabled = !_view.OfflineButton.IsEnabled;\n            _view.txtLogin.IsEnabled = !_view.txtLogin.IsEnabled;\n            _view.txtPassword.IsEnabled = !_view.txtPassword.IsEnabled;\n        }\n\n        private IEnumerable<Item> LoadStashItems(Character character)\n        {\n            if (ApplicationState.Leagues.Contains(character.League))\n                return Enumerable.Empty<Item>();\n\n            ApplicationState.CurrentLeague = character.League;\n            ApplicationState.Stash[character.League] = ApplicationState.Model.GetStash(character.League, ApplicationState.AccountName, ApplicationState.CurrentRealm);\n            ApplicationState.Leagues.Add(character.League);\n\n            return ApplicationState.Stash[character.League].Get<Item>();\n        }\n\n        private IEnumerable<Item> LoadCharacterInventoryItems(Character character, bool offline)\n        {\n            bool success;\n\n            if (!offline)\n                _statusController.DisplayMessage((string.Format(\"Loading {0}'s inventory...\", character.Name)));\n\n            List<Item> inventory;\n            try\n            {\n                inventory = ApplicationState.Model.GetInventory(character.Name, false, ApplicationState.AccountName, ApplicationState.CurrentRealm);\n                success = true;\n            }\n            catch (WebException)\n            {\n                inventory = new List<Item>();\n                success = false;\n            }\n\n            _characterInjector.Add(character, inventory);\n            UpdateStatus(success, offline);\n\n            return inventory;\n        }\n\n        private void UpdateStatus(bool success, bool offline)\n        {\n            if (offline)\n                return;\n\n            if (success)\n                _statusController.Ok();\n            else\n                _statusController.NotOK();\n        }\n\n        void Model_StashLoading(POEModel sender, StashLoadedEventArgs e)\n        {\n            Update(\"Loading \" + ApplicationState.CurrentLeague + \" Stash Tab \" + (e.StashID + 1) + \"...\", e);\n        }\n\n        void Model_ImageLoading(POEModel sender, ImageLoadedEventArgs e)\n        {\n            Update(\"Loading Image For \" + e.URL, e);\n        }\n\n        void Model_Authenticating(POEModel sender, AuthenticateEventArgs e)\n        {\n            Update(\"Authenticating \" + e.Email, e);\n        }\n\n        void Model_Throttled(object sender, ThottledEventArgs e)\n        {\n            if (e.WaitTime.TotalSeconds > 4)\n                Update(string.Format(\"GGG Server request limit hit, throttling activated. Please wait {0} seconds\", e.WaitTime.Seconds), new POEEventArgs(POEEventState.BeforeEvent));\n        }\n\n        private void Update(string message, POEEventArgs e)\n        {\n            if (e.State == POEEventState.BeforeEvent)\n            {\n                _statusController.DisplayMessage(message);\n                return;\n            }\n\n            _statusController.Ok();\n        }\n\n        public List<string> AvailableRealms => (List<string>) Realm.AvailableRealms;\n\n        public string SelectedRealm\n        {\n            get { return selectedRealm; }\n            set { selectedRealm = value; OnPropertyChanged();}\n        }\n\n        public void NavigateHowToSessionIDwiki()\n        {\n            System.Diagnostics.Process.Start(\"https://github.com/Stickymaddness/Procurement/wiki/SessionID\");\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/MainPageViewModel.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Windows.Controls;\nusing System.Windows.Documents;\nusing System.Windows.Input;\nusing POEApi.Model;\nusing Procurement.View.ViewModel;\n\nnamespace Procurement.ViewModel\n{\n    public class MainPageViewModel : ObservableBase\n    {\n        private List<Item> stashItems;\n        private bool isBusy;\n\n        public MainPageViewModel()\n        {\n            IsBusy = false;\n            var stash = ApplicationState.Stash[ApplicationState.CurrentLeague];\n            stashItems = stash.GetItemsByTab(0);\n        }\n\n        public void getTabs(object o)\n        {\n            Button selector = o as Button;\n            ScrollViewer scrollViewer = selector.TemplatedParent as ScrollViewer;\n            TabControl tabControl = scrollViewer.TemplatedParent as TabControl;\n\n            selector.ContextMenu = getContextMenu(selector, tabControl);\n            selector.ContextMenu.IsOpen = true;\n        }\n\n        private ContextMenu getContextMenu(Button target, TabControl tabControl)\n        {\n            ContextMenu menu = new ContextMenu();\n            menu.PlacementTarget = target;\n\n            foreach (TabItem item in tabControl.Items)\n            {\n                MenuItem menuItem = new MenuItem();\n                menuItem.Tag = item;\n                menuItem.Header = ((item.Header as TextBlock).Inlines.FirstInline as Run).Text;\n                menuItem.Click += (o, e) => { CloseAndSelect(menu, menuItem); };\n                menu.Items.Add(menuItem);\n            }\n\n            return menu;\n        }\n        \n        public ICommand GetTabs => new RelayCommand(getTabs);\n\n        public void CloseAndSelect(ContextMenu menu, MenuItem menuItem)\n        {\n            menu.IsOpen = false;\n            TabItem newCurrent = menuItem.Tag as TabItem;\n            newCurrent.BringIntoView();\n            newCurrent.IsSelected = true;\n        }\n        public List<Item> StashItems\n        {\n            get { return stashItems; }\n            set \n            { \n                stashItems = value;\n                OnPropertyChanged();\n            }\n        }\n\n        public bool IsBusy\n        {\n            get { return isBusy; }\n            set \n            { \n                isBusy = value;\n                OnPropertyChanged();\n            }\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/ObservableBase.cs",
    "content": "﻿using System.ComponentModel;\nusing System.Runtime.CompilerServices;\n\nnamespace Procurement.ViewModel\n{\n    public abstract class ObservableBase : INotifyPropertyChanged\n    {\n        public event PropertyChangedEventHandler PropertyChanged;\n\n        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)\n        {\n            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/PricingInfo.cs",
    "content": "﻿using POEApi.Infrastructure;\nusing System.Globalization;\nusing System.Windows.Input;\nusing Procurement.View.ViewModel;\n\nnamespace Procurement.ViewModel\n{\n    public class PricingInfo : ObservableBase\n    {\n        private string value;\n        public string Value\n        {\n            get { return value; }\n            set\n            {\n                this.value = value;\n                OnPropertyChanged();\n            }\n        }\n        private string orb;\n        public string Orb\n        {\n            get { return orb; }\n            set\n            {\n                this.orb = value;\n                OnPropertyChanged();\n            }\n        }\n        private bool enabled;\n        public bool Enabled\n        {\n            get { return enabled; }\n            set\n            {\n                enabled = value;\n                setDefaults();\n                OnPropertyChanged();\n            }\n        }\n\n        private void setDefaults()\n        {\n            if (string.IsNullOrEmpty(Value))\n                Value = \"1\";\n\n            if (string.IsNullOrEmpty(Orb))\n                Orb = \"Chaos Orb\";\n        }\n\n        public ICommand IncreaseValue => new RelayCommand(x => updateValue(1));\n        public ICommand DecreaseValue => new RelayCommand(x => updateValue(-1));\n\n        public PricingInfo()\n        {\n            value = string.Empty;\n            orb = string.Empty;\n            enabled = false;\n        }\n\n        private void updateValue(int difference)\n        {\n            var buyout = getCurrentBuyout();\n            buyout += difference;\n\n            if (buyout < 1)\n                buyout = 1;\n\n            Value = buyout.ToString();\n        }\n\n        private double getCurrentBuyout()\n        {\n            double buyout;\n\n            if (double.TryParse(this.value, NumberStyles.Any, CultureInfo.InvariantCulture, out buyout))\n                return buyout;\n\n            return 1;\n        }\n\n        public void Update(string info)\n        {\n            if (string.IsNullOrEmpty(info))\n                return;\n\n            var valueOrbPair = info.Split(' ');\n            value = valueOrbPair[0];\n            orb = CurrencyAbbreviationMap.Instance.FromAbbreviation(valueOrbPair[1]);\n\n            enabled = value != string.Empty;\n        }\n\n        public string GetSaveText()\n        {\n            if (!enabled || (string.IsNullOrEmpty(value) && string.IsNullOrEmpty(orb)))\n                return string.Empty;\n\n            return $\"{value} {CurrencyAbbreviationMap.Instance.FromCurrency(orb)}\";\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/RecipeResultViewModel.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing Procurement.ViewModel.Recipes;\nusing System.ComponentModel;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel\n{\n    public class RecipeResultViewModel : ObservableBase\n    {\n        private Dictionary<string, List<RecipeResult>> results;\n        private RecipeManager manager;\n\n        public Dictionary<string, List<RecipeResult>> Results\n        {\n            get { return results; }\n            set \n            { \n                results = value;\n\n                OnPropertyChanged();\n            }\n        }\n\n        private Item selectedItem;\n\n        public Item SelectedItem\n        {\n            get { return selectedItem; }\n            set \n            { \n                selectedItem = value;\n\n                OnPropertyChanged();\n            }\n        }\n        \n\n        public RecipeResultViewModel()\n        {\n            manager = new RecipeManager();\n            ApplicationState.LeagueChanged += new System.ComponentModel.PropertyChangedEventHandler(ApplicationState_LeagueChanged);\n            updateResults();\n        }\n\n        public void RadioButtonSelected(Item item)\n        {\n            SelectedItem = item;\n        }\n\n        Dictionary<Tab, List<Item>> GetUsableCurrentLeagueItemsByTab()\n        {\n            Dictionary<Tab, List<Item>> itemsByTab = new Dictionary<Tab, List<Item>>();\n            Stash stash = ApplicationState.Stash[ApplicationState.CurrentLeague];\n\n            var usableTabs = stash.Tabs.Where(t => !Settings.Lists[\"IgnoreTabsInRecipes\"].Contains(t.Name)).ToList();\n            foreach (var tab in usableTabs)\n            {\n                itemsByTab.Add(tab, stash.GetItemsByTab(tab.i));\n            }\n\n            return itemsByTab;\n        }\n\n        private void updateResults()\n        {\n            Dictionary<Tab, List<Item>> itemsByTab = GetUsableCurrentLeagueItemsByTab();\n            Results = manager.Run(itemsByTab);\n            if (Results.Count > 0)\n                SelectedItem = Results.Values.First().First().MatchedItems[0];\n\n            ItemFilterUpdater.UpdateLootFilters();\n        }\n\n        void ApplicationState_LeagueChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)\n        {\n            updateResults();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Recipes/ArmourersScrapRecipe.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    internal class ArmourersScrapRecipe : MinimumQualityRecipe<Gear>\n    {\n        public override string Name\n        {\n            get { return \"1 Armourer's Scrap\"; }\n        }\n        \n        protected override IEnumerable<Gear> getCandidateItems(IEnumerable<Item> items)\n        {\n            return items.OfType<Gear>().Where(a => a.GearType == GearType.Boots || a.GearType == GearType.Chest\n                || a.GearType == GearType.Gloves || a.GearType == GearType.Helmet || a.GearType == GearType.Shield)\n                .Where(a => a.IsQuality);\n        }\n\n        protected override string getMissingCombinationText(decimal requiredQuality, decimal qualityFound)\n        {\n            return string.Format(\"Armor with quality totaling {0}%\", requiredQuality - qualityFound);\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Recipes/BlacksmithsWhetstoneRecipe.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    internal class BlacksmithsWhetstoneRecipe : MinimumQualityRecipe<Gear>\n    {\n        public override string Name\n        {\n            get { return \"1 Blacksmith's Whetstone\"; }\n        }\n        \n        protected override IEnumerable<Gear> getCandidateItems(IEnumerable<Item> items)\n        {\n            return items.OfType<Gear>().Where(a => a.GearType == GearType.Axe || a.GearType == GearType.Bow\n                || a.GearType == GearType.Claw || a.GearType == GearType.Dagger || a.GearType == GearType.Mace\n                || a.GearType == GearType.Quiver || a.GearType == GearType.Sceptre || a.GearType == GearType.Staff\n                || a.GearType == GearType.Sword || a.GearType == GearType.Wand || a.GearType == GearType.FishingRod)\n                .Where(a => a.IsQuality);\n        }\n\n        protected override string getMissingCombinationText(decimal requiredQuality, decimal qualityFound)\n        {\n            return string.Format(\"Weapon(s) with quality totaling {0}%\", requiredQuality - qualityFound);\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Recipes/CartographersChiselRecipe.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    internal class CartographersChiselRecipe : MinimumQualityRecipe<Map>\n    {\n        public override string Name\n        {\n            get { return \"1 Cartographer's Chisel\"; }\n        }\n\n        protected override IEnumerable<Map> getCandidateItems(IEnumerable<Item> items)\n        {\n            return items.OfType<Map>().Where(a => a.IsQuality);\n        }\n\n        protected override string getMissingCombinationText(decimal requiredQuality, decimal qualityFound)\n        {\n            return string.Format(\"Map(s) with quality totaling {0}%\", requiredQuality - qualityFound);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Recipes/ChromaticRecipe.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    internal class Chromatic : Recipe\n    {\n        public Chromatic()\n            : base()\n        { }\n\n        public override string Name\n        {\n            get { return \"1 Chromatic - 3 Link RGB Sockets\"; }\n        }\n\n        public override IEnumerable<RecipeResult> Matches(IEnumerable<Item> items)\n        {\n            return items.OfType<Gear>()\n                        .Where(g => isMatch(g))\n                        .Select(g => getResult(g));\n        }\n\n        private bool isMatch(Gear gear)\n        {\n            if (gear.NumberOfSockets() == 6)\n                return false;\n\n            var canditates = gear.Sockets.GroupBy(g => g.Group)\n                                         .Where(grp => grp.Count() >= 3);\n\n            foreach (var group in canditates)\n            {\n                if (group.Select(s => s.Attribute).Distinct().Count() == 3)\n                    return true;\n            }\n\n            return false;\n        }\n\n        private RecipeResult getResult(Gear item)\n        {\n            RecipeResult result = new RecipeResult();\n            result.Instance = this;\n\n            result.PercentMatch = 100;\n            result.IsMatch = true;\n            result.MatchedItems = new List<Item> { item };\n            result.Missing = new List<string>();\n\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Recipes/GCPRecipe.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    internal class GCPRecipe : MinimumQualityRecipe<Gem>\n    {\n        public override string Name\n        {\n            get { return \"1 GCP\"; }\n        }\n\n        protected override IEnumerable<Gem> getCandidateItems(IEnumerable<Item> items)\n        {\n            return items.OfType<Gem>().Where(g => g.IsQuality);\n        }\n\n        protected override string getMissingCombinationText(decimal requiredQuality, decimal qualityFound)\n        {\n            return string.Format(\"Gem(s) with quality totaling {0}%\", requiredQuality - qualityFound);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Recipes/GlassblowersBaubleRecipe.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    internal class GlassblowersBaubleRecipe : MinimumQualityRecipe<Gear>\n    {\n        public override string Name\n        {\n            get { return \"1 Glassblower's Bauble\"; }\n        }\n\n        protected override IEnumerable<Gear> getCandidateItems(IEnumerable<Item> items)\n        {\n            return items.OfType<Gear>().Where(a => a.GearType == GearType.Flask).Where(a => a.IsQuality);\n        }\n\n        protected override string getMissingCombinationText(decimal requiredQuality, decimal qualityFound)\n        {\n            return string.Format(\"Flask(s) with quality totaling {0}%\", requiredQuality - qualityFound);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Recipes/LoreweaveRecipe.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    public class LoreweaveRecipe : Recipe\n    {\n        private const decimal TOTAL_NEEDED_RINGS = 60m;\n        private readonly SetType _setType;\n\n        public LoreweaveRecipe(SetType setType = SetType.Normal) : base(10)\n        {\n            _setType = setType;\n            Name = $\"{_setType.ToString()} Loreweave\";\n        }\n\n        public override string Name { get; }\n\n        public override IEnumerable<RecipeResult> Matches(IEnumerable<Item> items)\n        {\n            var isShaperWanted = _setType == SetType.Shaper;\n            var isElderWanted = _setType == SetType.Elder;\n\n            var uniqueRings = items.OfType<Gear>().Where(x => x.GearType == GearType.Ring\n                                                              && x.Rarity == Rarity.Unique\n                                                              && x.Shaper == isShaperWanted\n                                                              && x.Elder == isElderWanted)\n                .ToList();\n\n            var recipeResults = new List<RecipeResult>();\n\n            while (uniqueRings.Any())\n            {\n                var recipe = new RecipeResult {Instance = this, MatchedItems = new List<Item>()};\n\n                for (var i = uniqueRings.Count - 1; i >= 0; i--)\n                {\n                    recipe.MatchedItems.Add(uniqueRings[i]);\n\n                    uniqueRings.RemoveAt(i);\n\n                    if (recipe.MatchedItems.Count == TOTAL_NEEDED_RINGS)\n                    {\n                        break;\n                    }\n                }\n\n                recipe.PercentMatch = recipe.MatchedItems.Count / TOTAL_NEEDED_RINGS * 100;\n                recipe.IsMatch = recipe.PercentMatch >= ReturnMatchesGreaterThan;\n\n                recipeResults.Add(recipe);\n            }\n\n            return recipeResults;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Recipes/MatchedSet.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\n\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    internal class MatchedSet\n    {\n        private static Dictionary<string, PropertyInfo> properties;\n        public Gear Amulet { get; set; }\n        public Gear Belt { get; set; }\n        public Gear Helm { get; set; }\n        public Gear RingLeft { get; set; }\n        public Gear RingRight { get; set; }\n        public Gear Weapon { get; set; }\n        public Gear Offhand { get; set; }\n        public Gear Boots { get; set; }\n        public Gear Armour { get; set; }\n        public Gear Gloves { get; set; }\n\n        public MatchedSet()\n        {\n            properties = properties ??\n                         GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).ToDictionary(p => p.Name);\n        }\n\n        public decimal Match()\n        {\n            decimal notNull = properties.Values.Count(p => p.GetValue(this, null) != null);\n            return (notNull / properties.Values.Count) * 100;\n        }\n\n        public List<Gear> GetAll()\n        {\n            return properties.Values.Select(p => p.GetValue(this, null))\n                             .Where(v => v != null)\n                             .Distinct()\n                             .Cast<Gear>()\n                             .ToList();\n        }\n\n        public List<string> GetMissing()\n        {\n            return properties.Values.Select(p => new {name = p.Name, value = p.GetValue(this, null)})\n                             .Where(at => at.value == null)\n                             .Select(at => at.name)\n                             .ToList();\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/Recipes/MinimumQualityRecipe.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    public abstract class MinimumQualityRecipe<T> : Recipe\n        where T : Item\n    {\n        protected class Combination\n        {\n            public List<T> Match;\n            public int Total;\n            public bool Perfect;\n        }\n\n        protected List<Combination> combinations;\n        protected bool stop;\n        protected int REQUIREDQUALITY = 40;\n        protected int SINGLEITEMREQUIREDQUALITY = 20;\n        protected const decimal DEFAULT_MINIMUM_MATCH_PERCENT = 70;\n\n        public MinimumQualityRecipe()\n            : base(DEFAULT_MINIMUM_MATCH_PERCENT)\n        { }\n\n        public MinimumQualityRecipe(decimal returnMatchesGreaterThan)\n            : base (returnMatchesGreaterThan)\n        { }\n\n        protected abstract IEnumerable<T> getCandidateItems(IEnumerable<Item> items);\n\n        protected virtual string getMissingCombinationText(decimal requiredQuality, decimal qualityFound)\n        {\n            return string.Format(\"Item(s) with quality totaling {0}%\", requiredQuality - qualityFound);\n        }\n\n        public override IEnumerable<RecipeResult> Matches(IEnumerable<POEApi.Model.Item> items)\n        {\n            List<T> candidateItems = getCandidateItems(items).ToList();\n\n            bool canContinue = true;\n            while (canContinue)\n            {\n                getSingleItemCombinations(candidateItems, SINGLEITEMREQUIREDQUALITY);\n                if (combinations.Count > 0)\n                {\n                    Combination singleItem = combinations[0];\n                    candidateItems.Remove(singleItem.Match[0]);\n                    yield return getResult(singleItem);\n                    continue;\n                }\n\n                getCombinations(candidateItems, REQUIREDQUALITY);\n\n                Combination perfect = combinations.Find(c => c.Perfect);\n                if (perfect != null)\n                {\n                    perfect.Match.ForEach(g => candidateItems.Remove(g));\n                    yield return getResult(perfect);\n                    continue;\n                }\n\n                Combination leastOver = null;\n                List<Combination> over = combinations.FindAll(c => !c.Perfect);\n                if (over != null && over.Count > 0)\n                    leastOver = over.OrderBy(c => c.Total).First();\n\n                if (leastOver != null)\n                {\n                    leastOver.Match.ForEach(g => candidateItems.Remove(g));\n                    yield return getResult(leastOver);\n                    continue;\n                }\n\n                if (leastOver == null)\n                    canContinue = false;\n            }\n\n            Combination remaining = new Combination() { Match = candidateItems, Total = candidateItems.Sum(a => a.Quality), Perfect = false };\n            RecipeResult leftOver = getResult(remaining);\n            if (leftOver.IsMatch)\n                yield return leftOver;\n        }\n\n        private void getCombinations(List<T> pool, int target, List<T> workingSet)\n        {\n            if (stop)\n                return;\n\n            int current = 0;\n            foreach (T x in workingSet)\n            {\n                current += x.Quality;\n            }\n            if (current == target)\n            {\n                combinations.Add(new Combination() { Match = new List<T>(workingSet), Perfect = true, Total = target });\n                stop = true;\n                return;\n            }\n            if (current > target)\n            {\n                combinations.Add(new Combination() { Match = new List<T>(workingSet), Perfect = false, Total = current });\n                return;\n            }\n            for (int i = 0; i < pool.Count; i++)\n            {\n                var remaining = new List<T>();\n                T n = pool[i];\n                for (int j = i + 1; j < pool.Count; j++)\n                {\n                    remaining.Add(pool[j]);\n                }\n                var workingInternal = new List<T>(workingSet);\n                workingInternal.Add(n);\n                getCombinations(remaining, target, workingInternal);\n            }\n        }\n        private void getCombinations(List<T> pool, int target)\n        {\n            combinations = new List<Combination>();\n            stop = false;\n            getCombinations(pool, target, new List<T>());\n        }\n\n        private void getSingleItemCombinations(List<T> pool, int target)\n        {\n            combinations = new List<Combination>();\n            combinations.AddRange(pool.Where(i => i.Quality == target\n                && (!(i is Gear) || (i as Gear).Rarity == Rarity.Normal)) // Magic and better rarity items do not follow this recipe\n                .Select(c => new Combination() { Match = new List<T>() { c }, Perfect = true, Total = target }));\n        }\n\n        private RecipeResult getResult(Combination currentSet)\n        {\n            RecipeResult result = new RecipeResult();\n            result.MatchedItems = currentSet.Match.Cast<Item>().ToList();\n            result.Instance = this;\n            result.IsMatch = true;\n\n            decimal total = currentSet.Total;\n            decimal match = 0;\n            if (currentSet.Match.Count > 1)\n            {\n                match = (total / REQUIREDQUALITY) * 100;\n            }\n            else\n            {\n                match = (total / SINGLEITEMREQUIREDQUALITY) * 100;\n            }\n\n            result.IsMatch = match >= base.ReturnMatchesGreaterThan;\n            result.PercentMatch = match;\n            if (match < 100)\n                result.Missing = new List<string>() { getMissingCombinationText(REQUIREDQUALITY, total) };\n\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Recipes/RareSetRecipe.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    public enum SetType\n    {\n        Normal,\n        Shaper,\n        Elder\n    }\n\n    public class RareSetRecipe : Recipe\n    {\n        private readonly int minimumItemLevel;\n        private readonly int maximumItemLevel;\n        private readonly bool itemsIdentified;\n        private readonly string name;\n        private readonly string _shortName;\n        private readonly SetType _setType;\n\n        public override string Name\n        {\n            get\n            {\n                if (GetShouldUseShortRecipeDescriptions())\n                {\n                    return _shortName;\n                }\n                else\n                {\n                    return name;\n                }\n            }\n        }\n\n        private List<MatchedSet> sets = new List<MatchedSet>();\n        \n        public RareSetRecipe(int minimumItemLevel, int maximumItemLevel, bool itemsIdentified, string name,\n            string shortName = \"\", SetType setType = SetType.Normal)\n            : base(80)\n        {\n            this.minimumItemLevel = minimumItemLevel;\n            this.maximumItemLevel = maximumItemLevel;\n            this.itemsIdentified = itemsIdentified;\n            this.name = name;\n            this._shortName = string.IsNullOrWhiteSpace(shortName) ? name : shortName;\n            _setType = setType;\n        }\n\n        public override IEnumerable<RecipeResult> Matches(IEnumerable<Item> items)\n        {\n            List<Gear> allGear = items.OfType<Gear>().ToList();\n\n            bool isShaperWanted = _setType == SetType.Shaper;\n            bool isElderWanted = _setType == SetType.Elder;\n\n            Dictionary<string, List<Gear>> buckets =\n                allGear.Where(g => g.Rarity == Rarity.Rare &&\n                                   g.ItemLevel <= maximumItemLevel &&\n                                   g.ItemLevel >= minimumItemLevel &&\n                                   g.Identified == itemsIdentified &&\n                                   g.Shaper == isShaperWanted &&\n                                   g.Elder == isElderWanted)\n                       .GroupBy(g => g.GearType)\n                       .ToDictionary(g => g.Key.ToString(), g => g.ToList());\n\n            GearType[] oneHandedOnlyGearTypes = { GearType.Claw, GearType.Dagger, GearType.Sceptre, GearType.Wand,\n                GearType.Shield };\n            GearType[] twoHandedOnlyGearTypes = { GearType.Bow, GearType.Staff, GearType.FishingRod };\n            GearType[] mixedGearTypes = { GearType.Axe, GearType.Mace, GearType.Sword };\n\n            moveSelectedBucketsContents(buckets, \"Two Handed\", twoHandedOnlyGearTypes);\n            resortSelectedBuckets(buckets, \"Two Handed\", g => g.Properties.Any(\n                pr => pr.Name.Contains(\"Two Handed\")), mixedGearTypes);\n            moveSelectedBucketsContents(buckets, \"One Handed\", oneHandedOnlyGearTypes);\n            moveSelectedBucketsContents(buckets, \"One Handed\", mixedGearTypes);\n\n            foreach (KeyValuePair<string, List<Gear>> bucket in buckets)\n            {\n                bucket.Value.Sort((x, y) => x.ItemLevel.CompareTo(y.ItemLevel));\n            }\n\n            RecipeResult result = getNextResult(buckets);\n            while (result.IsMatch)\n            {\n                yield return result;\n                result = getNextResult(buckets);\n            }\n        }\n\n        private RecipeResult getNextResult(Dictionary<string, List<Gear>> buckets)\n        {\n            RecipeResult result = new RecipeResult();\n            result.Instance = this;\n\n            MatchedSet set = new MatchedSet();\n\n            set.Amulet = pullValue(buckets, GearType.Amulet.ToString());\n            set.Armour = pullValue(buckets, GearType.Chest.ToString());\n            set.Belt = pullValue(buckets, GearType.Belt.ToString());\n            set.Boots = pullValue(buckets, GearType.Boots.ToString());\n            set.Gloves = pullValue(buckets, GearType.Gloves.ToString());\n            set.Helm = pullValue(buckets, GearType.Helmet.ToString());\n            set.RingLeft = pullValue(buckets, GearType.Ring.ToString());\n            set.RingRight = pullValue(buckets, GearType.Ring.ToString());\n\n            // Use two one-handed items or one two-handed item, based on which has the lowest item level.\n            int oneHandedItemLevel = buckets.ContainsKey(\"One Handed\") && buckets[\"One Handed\"].Count > 1 ?\n                buckets[\"One Handed\"][0].ItemLevel : int.MaxValue;\n            int twoHandedItemLevel = buckets.ContainsKey(\"Two Handed\") && buckets[\"Two Handed\"].Count > 0 ?\n                buckets[\"Two Handed\"][0].ItemLevel : int.MaxValue;\n\n            if (oneHandedItemLevel <= twoHandedItemLevel)\n            {\n                // Includes the case where buckets[\"Two Handed\"] is empty and buckets[\"One Handed\"] has one item.\n                set.Weapon = pullValue(buckets, \"One Handed\");\n                set.Offhand = pullValue(buckets, \"One Handed\");\n            }\n            else\n            {\n                set.Weapon = pullValue(buckets, \"Two Handed\");\n                set.Offhand = set.Weapon;\n            }\n\n            result.PercentMatch = set.Match();\n            result.IsMatch = result.PercentMatch > base.ReturnMatchesGreaterThan;\n            result.MatchedItems = set.GetAll().Cast<Item>().ToList();\n            result.Missing = set.GetMissing();\n\n            return result;\n        }\n\n        private Gear pullValue(Dictionary<string, List<Gear>> buckets, string fromBucket)\n        {\n            if (!buckets.ContainsKey(fromBucket))\n                return null;\n\n            List<Gear> bucket = buckets[fromBucket];\n            if (bucket.Count == 0)\n                return null;\n\n            Gear ret = bucket[0];\n            bucket.RemoveAt(0);\n\n            return ret;\n\n        }\n\n        private void moveSelectedBucketsContents(Dictionary<string, List<Gear>> buckets, string intoKey,\n            params GearType[] toMerge)\n        {\n            resortSelectedBuckets(buckets, intoKey, g => true, toMerge);\n        }\n\n        private void resortSelectedBuckets(Dictionary<string, List<Gear>> buckets, string intoKey, Func<Gear, bool>\n            predicate, params GearType[] toMerge)\n        {\n            if (!buckets.ContainsKey(intoKey))\n            {\n                buckets.Add(intoKey, new List<Gear>());\n            }\n\n            foreach (GearType keyToMerge in toMerge)\n            {\n                if (buckets.ContainsKey(keyToMerge.ToString()))\n                {\n                    var currentSourceBucket = buckets[keyToMerge.ToString()];\n                    for (int i = 0; i < currentSourceBucket.Count; i++)\n                    {\n                        if (predicate(currentSourceBucket[i]))\n                        {\n                            buckets[intoKey].Add(currentSourceBucket[i]);\n                            currentSourceBucket.RemoveAt(i);\n                            i--;\n                        }\n                    }\n\n                    if (currentSourceBucket.Count == 0)\n                    {\n                        buckets.Remove(keyToMerge.ToString());\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Recipes/Recipe.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Infrastructure;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    public abstract class Recipe\n    {\n        public abstract string Name { get; }\n        protected bool ReturnsPartialMatches { get; private set; }\n        protected decimal ReturnMatchesGreaterThan { get; private set; }\n\n        public Recipe()\n        {\n            ReturnsPartialMatches = false;\n        }\n        public Recipe(decimal returnMatchesGreaterThan)\n        {\n            this.ReturnsPartialMatches = true;\n            this.ReturnMatchesGreaterThan = returnMatchesGreaterThan;\n        }\n\n        public virtual string GetResultName(RecipeResult result)\n        {\n            return Name;\n        }\n\n        public abstract IEnumerable<RecipeResult> Matches(IEnumerable<Item> items);\n\n        public virtual IEnumerable<RecipeResult> Matches(IDictionary<Tab, List<Item>> items)\n        {\n            List<Item> flatItems = new List<Item>();\n            foreach (var tab in items)\n            {\n                flatItems.AddRange(tab.Value);\n            }\n            return Matches(flatItems);\n        }\n\n        protected bool GetShouldUseShortRecipeDescriptions()\n        {\n            bool result = false;\n            bool.TryParse(Settings.UserSettings.GetEntry(\"UseShortRecipeDisplayDescriptions\"), out result);\n            // result is false if the parsing attempt failed.\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Recipes/RecipeManager.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    internal class RecipeManager\n    {\n        private readonly List<Recipe> known;\n        public RecipeManager()\n        {\n            known = new List<Recipe>() \n            {\n                new RareSetRecipe(1, 59, true, \"1 Chance - i59- Full Rare Set\", \"1 Change - i59- Rare Set\"),\n                new RareSetRecipe(1, 59, false, \"2 Chance - Unidentified i59- Full Rare Set\",\n                    \"2 Change - i59- Rare Set (U)\"),\n                new RareSetRecipe(60, 74, true, \"1 Chaos - Full Rare Set\", \"1 Chaos - Rare Set\"),\n                new RareSetRecipe(60, 74, false, \"2 Chaos - Full Unidentified Rare Set\",\n                    \"2 Chaos - Rare Set (U)\"),\n                new RareSetRecipe(75, 100, true, \"1 Regal - i75+ Full Rare Set\", \"1 Regal - i75+ Rare Set\"),\n                new RareSetRecipe(75, 100, false, \"2 Regal - Unidentified i75+ Full Rare Set\",\n                    \"2 Regal - i75+ Rare Set (U)\"),\n                new RareSetRecipe(1, 100, true, \"2 Exalted Shards - Full Shaper Rare Set\",\n                    \"2 Exalted Shards - Rare Shaper Set\", SetType.Shaper),\n                new RareSetRecipe(1, 100, true, \"2 Exalted Shards - Full Elder Rare Set\",\n                    \"2 Exalted Shards - Rare Elder Set\", SetType.Elder),\n                new RareSetRecipe(1, 100, false, \"4 Exalted Shards - Unidentified Full Shaper Rare Set\",\n                    \"4 Exalted Shards - Rare Shaper Set (U)\", SetType.Shaper),\n                new RareSetRecipe(1, 100, false, \"4 Exalted Shards - Unidentified Full Elder Rare Set\",\n                    \"4 Exalted Shards - Rare Elder Set (U)\", SetType.Elder),\n                new Chromatic(), \n                new GCPRecipe(), \n                new ArmourersScrapRecipe(),\n                new BlacksmithsWhetstoneRecipe(),\n                new GlassblowersBaubleRecipe(),\n                new CartographersChiselRecipe(),\n                new SameBaseTypeRecipe(),\n                new SameNameRecipe(\"Alchemy Orb - 3 Of The Same Name\", 3),\n                new SameNameRecipe(\"Chance Orb - 2 Of The Same Name\", 2),\n                new LoreweaveRecipe(),\n                new LoreweaveRecipe(SetType.Shaper),\n                new LoreweaveRecipe(SetType.Elder),\n                new VaalOrbRecipe(),\n                //Todo: Implement Essence Combination recipe (Exclude Shrieking and \"Special\" essences\n            };\n        }\n\n        public Dictionary<string, List<RecipeResult>> Run(IDictionary<Tab, List<Item>> items)\n        {\n            return known.SelectMany(recipe => recipe.Matches(items))\n                        .GroupBy(r => r.Name)\n                        .Select(group =>\n                            new\n                            {\n                                Name = group.Key,\n                                RecipeGroup = group.OrderByDescending(recipe => recipe.PercentMatch)\n                            })\n                        .ToDictionary(g => g.Name, g => g.RecipeGroup.ToList());\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Recipes/RecipeResult.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    public class RecipeResult\n    {\n        public bool IsMatch { get; set; }\n        public decimal PercentMatch { get; set; }\n        public Recipe Instance { get; set; }\n        public List<Item> MatchedItems { get; set; }\n        public List<string> Missing { get; set; }\n\n        public string Name\n        {\n            get\n            {\n                if (Instance != null)\n                    return Instance.GetResultName(this);\n\n                return \"Undocumented recipe.\";\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Recipes/SameBaseTypeRecipe.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    public class SameBaseTypeRecipe : Recipe\n    {\n        private bool _strictConditionChecking;\n        public bool StrictConditionChecking\n        {\n            get\n            {\n                return _strictConditionChecking;\n            }\n            protected set\n            {\n                _strictConditionChecking = value;\n            }\n        }\n\n        public SameBaseTypeRecipe(decimal minimumMatchPercentage = 60, bool strictRecipeChecking = true)\n            : base(minimumMatchPercentage)\n        {\n            StrictConditionChecking = strictRecipeChecking;\n        }\n\n        public override string Name\n        {\n            get { return \"1 Orb of Augmentation - Same base type with normal, magic, rare\"; }\n        }\n\n        public override string GetResultName(RecipeResult result)\n        {\n            bool useShortRecipeDescriptions = GetShouldUseShortRecipeDescriptions();\n            if (result.MatchedItems.Any(i => i.ItemType == ItemType.Gear\n                && (i as Gear).Rarity == Rarity.Unique))\n            {\n                if (useShortRecipeDescriptions)\n                    return \"5 Orbs of Chance - SBT, NMRU\";\n                else\n                    return \"5 Orbs of Chance - Same base type with normal, magic, rare, and unique\";\n            }\n\n            // All items have 20% quality and are either unidentified or normal rarity.\n            if (result.MatchedItems.All(i => i.Quality == 20\n                && (!i.Identified || (i is Gear && (i as Gear).Rarity == Rarity.Normal))))\n            {\n                if (useShortRecipeDescriptions)\n                    return \"2 Orbs of Alchemy - SBT, NMR, 20% (U)\";\n                else\n                    return \"2 Orbs of Alchemy - Same base type with normal, magic, rare, 20% quality and unidentified\";\n            }\n\n            if (result.MatchedItems.All(i => i.Quality == 20))\n            {\n                if (useShortRecipeDescriptions)\n                    return \"1 Orb of Alchemy - SBT, NMR, 20%\";\n                else\n                    return \"1 Orb of Alchemy - Same base type with normal, magic, rare, 20% quality\";\n            }\n\n            if (result.MatchedItems.All(i => !i.Identified || (i is Gear && (i as Gear).Rarity == Rarity.Normal)))\n            {\n                if (useShortRecipeDescriptions)\n                    return \"2 Orbs of Augmentation - SBT, NMR, (U)\";\n                else\n                    return \"2 Orbs of Augmentation - Same base type with normal, magic, rare, unidentified\";\n            }\n\n            // base case\n            if (useShortRecipeDescriptions)\n                return \"1 Orb of Augmentation - SBT, NMR\";\n            else\n                return \"1 Orb of Augmentation - Same base type with normal, magic, and rare\";\n        }\n\n        public override IEnumerable<RecipeResult> Matches(IEnumerable<POEApi.Model.Item> items)\n        {\n            List<GearType> invalidGearType = new List<GearType> { GearType.Flask, GearType.QuestItem,\n                GearType.DivinationCard, GearType.Talisman, GearType.Breachstone, GearType.Leaguestone };\n\n            List<Gear> allGear = items.OfType<Gear>()\n                                      .Where(g => !invalidGearType.Contains(g.GearType))\n                                      .ToList();\n            Dictionary<string, List<Gear>> baseTypeBuckets = allGear.Where(g => !string.IsNullOrWhiteSpace(g.BaseType))\n                                                                    .GroupBy(g => g.BaseType)\n                                                                    .ToDictionary(g => g.Key.ToString(), g => g.ToList());\n\n            Func<Gear, bool> emptyConstraint = g => true;\n            Func<Gear, bool> qualityConstraint = g => g.Quality == 20;\n            Func<Gear, bool> identifiedConstraint = g => g.Identified || g.Rarity == Rarity.Normal;\n            Func<Gear, bool> unidentifiedConstraint = g => !g.Identified || g.Rarity == Rarity.Normal;\n            Func<Gear, bool> qualityAndUnidentifiedConstraint = g => qualityConstraint(g) && unidentifiedConstraint(g);\n\n            Func<Gear, bool> qualityAndIdentifiedConstraint = g => qualityConstraint(g) && identifiedConstraint(g);\n            Func<Gear, bool> notQualityAndUnidentifiedConstraint = g => !qualityConstraint(g) && unidentifiedConstraint(g);\n            Func<Gear, bool> neitherConstraint = g => !qualityConstraint(g) && identifiedConstraint(g);\n\n            List<Func<Gear, bool>> variantConstraints;\n            if (StrictConditionChecking)\n            {\n                // Only include items which do not meet more specific requirements.  For example, do not include items\n                // with 20% quality in recipe variants which do not require 20% quality.\n                variantConstraints = new List<Func<Gear, bool>>()\n                {\n                    qualityAndUnidentifiedConstraint, qualityAndIdentifiedConstraint,\n                    notQualityAndUnidentifiedConstraint, neitherConstraint\n                };\n            }\n            else\n            {\n                variantConstraints = new List<Func<Gear, bool>>()\n                {\n                    qualityAndUnidentifiedConstraint, qualityConstraint, unidentifiedConstraint, emptyConstraint\n                };\n            }\n\n            // Since we check for both complete and partial matches for a variant before moving on to the next, less\n            // valuable variant, we might not find complete but less valuable matches, when there is a partial but more\n            // valuable match that uses those items.  We could introduce another option to first check each variant for\n            // complete matches, and then check each variant for partial matches, to favor quantity of matches over\n            // quality of matches.\n\n            IEnumerable<RecipeResult> allResults = new List<RecipeResult>();\n            foreach (var constraint in variantConstraints)\n            {\n                allResults = allResults.Concat(getNextResult(baseTypeBuckets, constraint));\n            }\n\n            foreach (var result in allResults)\n                yield return result;\n        }\n\n        private IEnumerable<RecipeResult> getNextResult(Dictionary<string, List<Gear>> buckets, Func<Gear, bool> constraint)\n        {\n            foreach(var baseTypeBucket in buckets)\n            {\n                List<Gear> gears = baseTypeBucket.Value; // though, technically, gear is a mass noun\n\n                if (gears == null || gears.Count == 0)\n                    continue;\n\n                bool stop = false;\n                while (!stop)\n                {\n                    RecipeResult result = new RecipeResult();\n                    result.MatchedItems = new List<Item>();\n                    result.Missing = new List<string>();\n                    result.PercentMatch = 0;\n                    result.Instance = this;\n\n                    Dictionary<Rarity, Gear> set = new Dictionary<Rarity, Gear>();\n                    set.Add(Rarity.Normal, gears.FirstOrDefault(g => g.Rarity == Rarity.Normal && constraint(g)));\n                    set.Add(Rarity.Magic, gears.FirstOrDefault(g => g.Rarity == Rarity.Magic && constraint(g)));\n                    set.Add(Rarity.Rare, gears.FirstOrDefault(g => g.Rarity == Rarity.Rare && constraint(g)));\n                    // TODO: Handle case with a unique item.\n\n                    decimal numKeys = set.Keys.Count;\n                    foreach (var pair in set)\n                    {\n                        Rarity rarity = pair.Key;\n                        Gear gear = pair.Value;\n                        if (gear != null)\n                        {\n                            result.PercentMatch += (decimal)100.0 / numKeys;\n                            result.MatchedItems.Add(gear);\n                        }\n                        else\n                        {\n                            result.Missing.Add(string.Format(\"Item with {0} rarity\", rarity.ToString()));\n                        }\n                    }\n\n                    result.IsMatch = result.PercentMatch > base.ReturnMatchesGreaterThan;\n                    if (result.IsMatch) // only remove the items if they are in a \"match\" -- close enough to show in the UI\n                    {\n                        foreach (var pair in set)\n                            gears.Remove(pair.Value);\n                        yield return result;\n                    }\n\n                    if (result.Missing.Count > 0 || gears.Count == 0)\n                        stop = true;\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Recipes/SameNameRecipe.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    public class SameNameRecipe : Recipe\n    {\n        private string name;\n        private int setCount;\n\n        public SameNameRecipe(string recipeName, int setCount)\n            : base(66)\n        {\n            this.name = recipeName;\n            this.setCount = setCount;\n        }\n\n        public override string Name\n        {\n            get { return name; }\n        }\n\n        public override IEnumerable<RecipeResult> Matches(IEnumerable<POEApi.Model.Item> items)\n        {\n            return findDuplicates(items, setCount);\n        }\n\n        private IEnumerable<RecipeResult> findDuplicates(IEnumerable<POEApi.Model.Item> items, int setCount)\n        {\n            // Gear and AbyssJewel both have Rarity, but do not inherit it from a common parent class, so we need to\n            // handle each subclass separately.\n            IEnumerable<Item> gear = items.Where(i => i.Name != string.Empty &&\n                ((i is Gear && (i as Gear).Rarity != Rarity.Unique) ||\n                 (i is AbyssJewel && (i as AbyssJewel).Rarity != Rarity.Unique)));\n\n            List<RecipeResult> matches = new List<RecipeResult>();\n\n            var itemKeys = gear.GroupBy(i => i.Name).Where(g => g.Count() > 1);\n            foreach (var item in itemKeys)\n            {\n                var matchedItems = gear.Where(g => g.Name == item.Key)\n                    .Select(g => g as Item).ToList();\n\n                while (matchedItems.Count > 0)\n                {\n                    var currentSet = matchedItems.Take(setCount).ToList();\n                    matchedItems.RemoveRange(0, currentSet.Count);\n                    Decimal percentMatch = ((Decimal)currentSet.Count / setCount) * 100;\n                    var candidateMatch = new RecipeResult()\n                    {\n                        Instance = this,\n                        IsMatch = percentMatch > base.ReturnMatchesGreaterThan,\n                        MatchedItems = currentSet,\n                        Missing = new List<string>(),\n                        PercentMatch = percentMatch\n                    };\n                    if (candidateMatch.IsMatch)\n                    {\n                        matches.Add(candidateMatch);\n                    }\n                }\n            }\n\n            return matches;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/Recipes/VaalOrbRecipe.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes\n{\n    public class VaalOrbRecipe : Recipe\n    {\n        private const int NeededVaalGems = 7;\n        private const decimal TotalNumberOfNeededItems = 8m;\n        public override string Name => \"1 Vaal Orb\";\n\n        public override IEnumerable<RecipeResult> Matches(IEnumerable<Item> items)\n        {\n            List<RecipeResult> recipeSets = new List<RecipeResult>();\n\n            var candidateGems = items.OfType<Gem>().Where(\n                gem => gem.Corrupted && gem.TypeLine.StartsWith(\"Vaal \", StringComparison.CurrentCultureIgnoreCase))\n                .Cast<Item>().ToList();\n\n            var fragments = items.Where(\n                x => x.TypeLine.StartsWith(\"Sacrifice at\", StringComparison.CurrentCultureIgnoreCase)).ToList();\n\n            while(candidateGems.Count > 0)\n            {\n                var recipeResult = new RecipeResult()\n                {\n                    Instance = this,\n                    MatchedItems = new List<Item>(),\n                    Missing = new List<string>(),\n                    IsMatch = true\n                };\n\n                for (int i = candidateGems.Count - 1; i >= 0; i--)\n                {\n                    var candidateGem = candidateGems[i];\n                    if (recipeResult.MatchedItems.Count == NeededVaalGems)\n                    {\n                        break;\n                    }\n\n                    recipeResult.MatchedItems.Add(candidateGem);\n                    candidateGems.Remove(candidateGem);\n                }\n\n                var numberOfMissingGems = NeededVaalGems - recipeResult.MatchedItems.Count;\n\n                if (numberOfMissingGems == 1)\n                {\n                    recipeResult.Missing.Add(\"1 Vaal Skill gem\");\n                }\n                else if (numberOfMissingGems >= 2)\n                {\n                    recipeResult.Missing.Add($\"{numberOfMissingGems} Vaal Skill gems\");\n                }\n\n                if (fragments.Any())\n                {\n                    recipeResult.MatchedItems.Add(fragments.First());\n                    fragments.RemoveAt(0);\n                }\n                else\n                {\n                    recipeResult.Missing.Add(\"Sacrifice Fragment\");\n                }\n\n                recipeResult.PercentMatch = recipeResult.MatchedItems.Count / TotalNumberOfNeededItems * 100 ;\n                recipeSets.Add(recipeResult);\n            }\n\n            return recipeSets;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/ScreenController.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Input;\nusing System.Windows.Threading;\nusing POEApi.Model;\nusing Procurement.View;\nusing Procurement.View.ViewModel;\n\nnamespace Procurement.ViewModel\n{\n    public class ScreenController : ObservableBase\n    {\n        private static Dictionary<string, IView> screens = new Dictionary<string, IView>();\n\n        public double HeaderHeight { get; set; }\n        public double FooterHeight { get; set; }\n\n        public bool ButtonsVisible\n        {\n            get { return _buttonsVisible; }\n            set { _buttonsVisible = value; OnPropertyChanged(); }\n        }\n\n        public bool FullMode { get; set; }\n\n        public ICommand MenuButtonCommand => new RelayCommand(execute);\n\n        private const string STASH_VIEW = \"StashView\";\n        private const string RECIPE_VIEW = \"Recipes\";\n        private const string TRADING_VIEW = \"Trading\";\n        private const string INVENTORY_VIEW = \"Inventory\";\n        private const string SETTINGS_VIEW = \"Settings\";\n        private const string ABOUT_VIEW = \"About\";\n\n        public static ScreenController Instance = null;\n        private UserControl _selectedView;\n        private bool _buttonsVisible;\n\n        public static void Create()\n        {\n            Instance = new ScreenController();\n        }\n\n        private ScreenController()\n        {\n            FullMode = !bool.Parse(Settings.UserSettings[\"CompactMode\"]) && !bool.Parse(Settings.UserSettings[\"MinimalMode\"]);\n            if (FullMode)\n            {\n                HeaderHeight = 169;\n                FooterHeight = 138;\n            }\n\n            initLogin();\n        }\n\n        public void UpdateTrading()\n        {\n            Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal,\n                new Action(() =>\n                {\n                    // TODO: As with updating the RecipeView, can we just update the trading view instead of recreating\n                    // it?\n                    screens[TRADING_VIEW] = new TradingView();\n                }));\n        }\n\n        private void execute(object obj)\n        {\n            var key = obj.ToString();\n\n            if (key == RECIPE_VIEW && screens[key] == null)\n                screens[key] = new RecipeView();\n\n            if (key == TRADING_VIEW && screens[key] == null)\n                screens[key] = new TradingView();\n\n\n            LoadView(screens[key]);\n        }\n\n        private void initScreens()\n        {\n            Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal,\n            new Action(() =>\n            {\n                screens.Add(STASH_VIEW, new StashView());\n                screens.Add(INVENTORY_VIEW, new InventoryView());\n                screens.Add(TRADING_VIEW, null);\n                screens.Add(SETTINGS_VIEW, new SettingsView());\n                screens.Add(RECIPE_VIEW, null);\n                screens.Add(ABOUT_VIEW, new AboutView());\n            }));\n        }\n\n        public void InvalidateRecipeScreen()\n        {\n            screens[RECIPE_VIEW] = null;\n        }\n\n        public void RefreshRecipeScreen()\n        {\n            Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal,\n                new Action(() =>\n                {\n                    // TODO: Cause the RecipeResultsViewModel in the RecipeView to refresh its recipes, instead of\n                    // recreating the RecipeView object.  This could perhaps be done by triggering an event, or\n                    // reaching into the view/viewmodel and calling it directly (but that's probably very bad form).\n                    screens[RECIPE_VIEW] = new RecipeView();\n                }));\n        }\n\n        private void initLogin()\n        {\n            var loginView = new LoginView();\n            var loginVM = (loginView.DataContext as LoginWindowViewModel);\n            loginVM.OnLoginCompleted += new LoginWindowViewModel.LoginCompleted(loginCompleted);\n            LoadView(loginView);\n        }\n\n        void loginCompleted()\n        {\n            initScreens();\n            LoadView(screens.First().Value);\n            ButtonsVisible = true;\n        }\n\n        public UserControl SelectedView\n        {\n            get { return _selectedView; }\n            set\n            {\n                _selectedView = value;\n                OnPropertyChanged();\n            }\n        }\n\n        public void LoadView(IView view)\n        {\n            SelectedView = view as UserControl;\n\n            Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal,\n                new Action(() =>\n                {\n                    SelectedView = view as UserControl;\n                }));\n        }\n\n        public void LoadRefreshView()\n        {\n            ButtonsVisible = false;\n            SelectedView = new RefreshView();\n            (SelectedView as RefreshView).RefreshAllTabs();\n        }\n\n        public void LoadRefreshViewUsed()\n        {\n            ButtonsVisible = false;\n            SelectedView = new RefreshView();\n            (SelectedView as RefreshView).RefreshUsedTabs();\n        }\n\n        public void ReloadStash()\n        {\n            Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal,\n                new Action(() =>\n                {\n                    screens[STASH_VIEW] = new StashView();\n                    SelectedView = screens[STASH_VIEW] as UserControl;\n                    ButtonsVisible = true;\n                }));\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/SetBuyoutViewModel.cs",
    "content": "﻿using System;\nusing POEApi.Model;\nusing System.Collections.Generic;\nusing System.Windows;\nusing System.Windows.Input;\nusing Procurement.View.ViewModel;\n\nnamespace Procurement.ViewModel\n{\n    public class SetBuyoutViewModel : ObservableBase\n    {\n        private readonly Item item;\n\n        //Todo: Replace this with ProxyMapper.orbMap, duplicate info.\n        private static List<string> orbTypes = new List<string>()\n        {\n            \"Chaos Orb\",\n            \"Vaal Orb\",\n            \"Exalted Orb\",\n            \"Divine Orb\",\n            \"Orb of Fusing\",\n            \"Orb of Alchemy\",\n            \"Orb of Alteration\",\n            \"Gemcutter's Prism\",\n            \"Orb of Chance\",\n            \"Cartographer's Chisel\",\n            \"Orb of Scouring\",\n            \"Orb of Regret\",\n            \"Regal Orb\",\n            \"Jeweller's Orb\",\n            \"Chromatic Orb\",\n            \"Blessed Orb\"\n        };\n        public List<string> OrbTypes\n        {\n            get { return orbTypes; }\n        }\n        private PricingInfo buyoutInfo;\n        public PricingInfo BuyoutInfo\n        {\n            get { return buyoutInfo; }\n            set { buyoutInfo = value; }\n        }\n        private PricingInfo offerInfo;\n        public PricingInfo OfferInfo\n        {\n            get { return offerInfo; }\n            set { offerInfo = value; }\n        }\n        private PricingInfo priceInfo;\n        public PricingInfo PriceInfo\n        {\n            get { return priceInfo; }\n            set { priceInfo = value; }\n        }\n\n        private string notes;\n        private bool isDataInClipboard;\n\n        public string Notes\n        {\n            get { return notes; }\n            set { notes = value; }\n        }\n\n        public SetBuyoutViewModel(Item item)\n        {\n            this.item = item;\n\n            buyoutInfo = new PricingInfo();\n            offerInfo = new PricingInfo();\n            priceInfo = new PricingInfo();\n            Notes = string.Empty;\n        }\n\n        public void SetBuyoutInfo(ItemTradeInfo info)\n        {\n            buyoutInfo.Update(info.Buyout);\n            offerInfo.Update(info.CurrentOffer);\n            priceInfo.Update(info.Price);\n            Notes = info.Notes;\n        }\n\n        public bool IsDataInClipboard\n        {\n            get { return isDataInClipboard; }\n            set\n            {\n                isDataInClipboard = value;\n                OnPropertyChanged();\n            }\n        }\n\n        public ICommand PobDataGenerationCommand => new RelayCommand(GetPobData, CanGetPobData);\n\n        private void GetPobData(object o)\n        {\n            try\n            {\n                Clipboard.SetText(item.PobData);\n\n                IsDataInClipboard = true;\n            }\n            catch (Exception e)\n            {\n                MessageBox.Show(\"Unable to generate POB item data; please check log.\", \"Error\", MessageBoxButton.OK, MessageBoxImage.Error);\n            }\n        }\n\n        private bool CanGetPobData(object o)\n        {\n            return item.GetType() == typeof(Gear);\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/SetTabBuyoutViewModel.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace Procurement.ViewModel\n{\n    public class SetTabBuyoutViewModel\n    {\n        private static List<string> orbTypes = new List<string>()\n        {\n            \"Chaos Orb\",\n            \"Vaal Orb\",\n            \"Exalted Orb\",\n            \"Divine Orb\",\n            \"Orb of Fusing\",\n            \"Orb of Alchemy\",\n            \"Orb of Alteration\",\n            \"Gemcutter's Prism\",\n            \"Orb of Chance\",\n            \"Cartographer's Chisel\",\n            \"Orb of Scouring\",\n            \"Orb of Regret\",\n            \"Regal Orb\",\n            \"Jeweller's Orb\",\n            \"Chromatic Orb\",\n            \"Blessed Orb\"\n        };\n        public List<string> OrbTypes\n        {\n            get { return orbTypes; }\n        }\n        private PricingInfo buyoutInfo;\n        public PricingInfo BuyoutInfo\n        {\n            get { return buyoutInfo; }\n            set { buyoutInfo = value; }\n        }\n\n        public SetTabBuyoutViewModel()\n        {\n            this.buyoutInfo = new PricingInfo();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/SettingsViewModel.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Windows.Input;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing POEApi.Model;\nusing Procurement.View;\n\nnamespace Procurement.ViewModel\n{\n    public class SettingsViewModel : ObservableBase\n    {\n        private SettingsView view;\n\n        private string currentCharacter;\n        private string currentLeague;\n        public string CurrentLeague\n        {\n            get { return currentLeague; }\n            set\n            {\n                if (currentLeague == value)\n                    return;\n\n                currentLeague = value;\n                Settings.UserSettings[\"FavoriteLeague\"] = value;\n                Settings.Save();\n                refreshCharacters();\n            }\n        }\n\n        private bool compactMode;\n        public bool CompactMode\n        {\n            get { return compactMode; }\n            set\n            {\n                compactMode = value;\n\n                OnPropertyChanged();\n\n                Settings.UserSettings[\"CompactMode\"] = Convert.ToString(value);\n                Settings.Save();\n            }\n        }\n\n        public string CurrentCharacter\n        {\n            get { return currentCharacter; }\n            set \n            {\n                if (currentCharacter == value)\n                    return;\n                currentCharacter = value;\n                Settings.UserSettings[\"FavoriteCharacter\"] = value;\n                Settings.Save();\n            }\n        }\n\n        public Dictionary<string, List<string>> AllCharactersByLeague\n        {\n            get\n            {\n                return ApplicationState.AllCharactersByLeague;\n            }\n        }\n\n        public List<string> MyCharacters\n        {\n            get\n            {\n                return Settings.Lists[\"MyCharacters\"];\n            }\n        }\n\n        public List<string> MyLeagues\n        {\n            get\n            {\n                return Settings.Lists[\"MyLeagues\"];\n            }\n        }\n\n        public List<string> Characters\n        {\n            get { return _characters; }\n            set\n            {\n                _characters = value;\n                OnPropertyChanged();\n            }\n        }\n\n        public List<string> Leagues { get; set; }\n\n        public List<CurrencyRatio> CurrencyRatios\n        {\n            get { return Settings.CurrencyRatios.Values.ToList(); }\n        }\n\n        public ICommand UpdateRates { get; private set; }\n\n        private bool downloadOnlyMyLeagues;\n        public bool DownloadOnlyMyLeagues\n        {\n            get { return downloadOnlyMyLeagues; }\n            set\n            {\n                downloadOnlyMyLeagues = value;\n\n                OnPropertyChanged();\n\n                Settings.UserSettings[\"DownloadOnlyMyLeagues\"] = Convert.ToString(value);\n                Settings.Save();\n            }\n        }\n\n        private bool downloadOnlyMyCharacters;\n        public bool DownloadOnlyMyCharacters\n        {\n            get { return downloadOnlyMyCharacters; }\n            set\n            {\n                downloadOnlyMyCharacters = value;\n\n                OnPropertyChanged();\n\n                Settings.UserSettings[\"DownloadOnlyMyCharacters\"] = Convert.ToString(value);\n                Settings.Save();\n            }\n        }\n\n        private bool _useShortRecipeDisplayDescriptions;\n        public bool UseShortRecipeDisplayDescriptions\n        {\n            get { return _useShortRecipeDisplayDescriptions; }\n            set\n            {\n                _useShortRecipeDisplayDescriptions = value;\n\n                OnPropertyChanged();\n                Settings.UserSettings[\"UseShortRecipeDisplayDescriptions\"] = Convert.ToString(value);\n                Settings.Save();\n            }\n        }\n\n        private List<TabInfo> stashTabs;\n        private List<string> _characters;\n\n        public List<TabInfo> StashTabs \n        {\n            get { return stashTabs; }\n            set\n            {\n                stashTabs = value;\n\n                OnPropertyChanged();\n            }\n        }\n\n        public SettingsViewModel(SettingsView view)\n        {\n            this.view = view;\n            this.Leagues = ApplicationState.Leagues;\n            this.currentLeague = Settings.UserSettings[\"FavoriteLeague\"];\n            refreshCharacters();\n            this.currentCharacter = Settings.UserSettings[\"FavoriteCharacter\"];\n            this.compactMode = Convert.ToBoolean(Settings.UserSettings[\"CompactMode\"]);\n            this.downloadOnlyMyLeagues = Convert.ToBoolean(Settings.UserSettings[\"DownloadOnlyMyLeagues\"]);\n            this.downloadOnlyMyCharacters = Convert.ToBoolean(Settings.UserSettings[\"DownloadOnlyMyCharacters\"]);\n\n            stashTabs = getAllTabs();\n        }\n\n        private List<TabInfo> getAllTabs()\n        {\n            var savedTabs = Settings.Lists[\"IgnoreTabsInRecipes\"];\n            var tabNames = ApplicationState.Stash.Values.SelectMany(s => s.Tabs)\n                                                        .Select(t => t.Name).Distinct();\n\n            cullInvalidTabs(tabNames);\n            return tabNames.Select<string, TabInfo>(t => new TabInfo() { Name = t, IsChecked = savedTabs.Contains(t) }).ToList();\n        }\n\n        private static void cullInvalidTabs(IEnumerable<string> tabs)\n        {\n            var invalidTabs = Settings.Lists[\"IgnoreTabsInRecipes\"].Where(t => !tabs.Contains(t));\n\n            if (invalidTabs.Count() == 0)\n                return;\n\n            Settings.Lists[\"IgnoreTabsInRecipes\"].RemoveAll(t => invalidTabs.Contains(t));\n            Settings.Save();\n        }\n\n        public void AddDownloadLeague(string leagueName)\n        {\n            addToList(\"MyLeagues\", leagueName);\n        }\n\n        public void RemoveDownloadLeague(string leagueName)\n        {\n            removeFromList(\"MyLeagues\", leagueName);\n        }\n\n        public void AddDownloadCharacter(string characterName)\n        {\n            addToList(\"MyCharacters\", characterName);\n        }\n\n        public void RemoveDownloadCharacter(string characterName)\n        {\n            removeFromList(\"MyCharacters\", characterName);\n        }\n\n        private void refreshCharacters()\n        {\n            this.Characters = ApplicationState.Model.GetCharacters(ApplicationState.CurrentRealm).Where(c => c.League == CurrentLeague).Select(c => c.Name).ToList();\n        }\n\n        internal void RecipeTabChecked(string tabName)\n        {\n            addToList(\"IgnoreTabsInRecipes\", tabName);\n            ScreenController.Instance.RefreshRecipeScreen();\n        }\n\n        internal void RecipeTabUnchecked(string tabName)\n        {\n            removeFromList(\"IgnoreTabsInRecipes\", tabName);\n            ScreenController.Instance.RefreshRecipeScreen();\n        }\n\n        private static void addToList(string list, string value)\n        {\n            if (Settings.Lists[list].Contains(value))\n                return;\n\n            Settings.Lists[list].Add(value);\n            Settings.SaveLists();\n        }\n\n        private static void removeFromList(string list, string value)\n        {\n            if (!Settings.Lists[list].Contains(value))\n                return;\n\n            Settings.Lists[list].Remove(value);\n            Settings.SaveLists();\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/StatusController.cs",
    "content": "﻿using System;\nusing System.Windows.Controls;\nusing System.Windows.Documents;\nusing System.Windows.Media;\n\nnamespace Procurement.ViewModel\n{\n    internal class StatusController\n    {\n        private Brush brush;\n        private RichTextBox statusBox { get; set; }\n        private int padding;\n\n        public StatusController(RichTextBox statusBox)\n            : this (statusBox, 90)\n        { }\n\n        public StatusController(RichTextBox statusBox, int padding)\n        {\n            this.statusBox = statusBox;\n            this.brush = statusBox.Foreground;\n            this.padding = padding;\n        }\n\n        public void Ok()\n        {\n            CheckAccessAndInvoke(() => displayResult(\"OK\", Brushes.Green));\n        }\n\n        public void NotOK()\n        {\n            CheckAccessAndInvoke(() => displayResult(\"ER\", Brushes.Red));\n        }\n\n        public void DisplayMessage(string message)\n        {\n            CheckAccessAndInvoke((Action)delegate()\n            {\n                Run text = new Run(message);\n\n                text.Foreground = brush;\n                text.Text = \"\\r\" + getPaddedString(text.Text);\n                ((Paragraph)statusBox.Document.Blocks.LastBlock).Inlines.Add(text);\n\n                statusBox.ScrollToEnd();\n            });\n        }\n\n        public void HandleError(string error, Action toggleControls)\n        {\n            CheckAccessAndInvoke((Action)delegate()\n            {\n                Run text = new Run();\n\n                text.Foreground = Brushes.White;\n                text.Text = \"\\r\\r[\";\n                ((Paragraph)statusBox.Document.Blocks.LastBlock).Inlines.Add(text);\n\n                text = new Run();\n                text.Foreground = Brushes.Red;\n                text.Text = \"Error\";\n                ((Paragraph)statusBox.Document.Blocks.LastBlock).Inlines.Add(text);\n\n                text = new Run();\n                text.Foreground = Brushes.White;\n                text.Text = \"] \";\n                ((Paragraph)statusBox.Document.Blocks.LastBlock).Inlines.Add(text);\n\n                text = new Run(error + \"\\r\\r\");\n                text.Foreground = Brushes.White;\n                ((Paragraph)statusBox.Document.Blocks.LastBlock).Inlines.Add(text);\n\n                statusBox.ScrollToEnd();\n                toggleControls();\n            });\n        }\n\n        private void displayResult(string message, Brush colour)\n        {\n            Run text = new Run();\n\n            text.Foreground = Brushes.White;\n            text.Text = \"[\";\n            ((Paragraph)statusBox.Document.Blocks.LastBlock).Inlines.Add(text);\n\n            text = new Run();\n            text.Foreground = colour;\n            text.Text = message;\n            ((Paragraph)statusBox.Document.Blocks.LastBlock).Inlines.Add(text);\n\n            text = new Run();\n            text.Foreground = Brushes.White;\n            text.Text = \"]\";\n\n            ((Paragraph)statusBox.Document.Blocks.LastBlock).Inlines.Add(text);\n\n            statusBox.ScrollToEnd();\n        }\n\n        private string getPaddedString(string text)\n        {\n            return text.PadRight(padding, ' ');\n        }\n\n        private void CheckAccessAndInvoke(Action a)\n        {\n            if (statusBox.Dispatcher.CheckAccess())\n            {\n                a();\n                return;\n            }\n\n            statusBox.Dispatcher.Invoke(a);\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/TabInfo.cs",
    "content": "﻿using System.ComponentModel;\n\nnamespace Procurement.ViewModel\n{\n    public class TabInfo : ObservableBase\n    {\n        public string Name { get; set; }\n        public decimal AvailableSpace { get; set; }\n        public string Url { get; set; }\n        public int ID { get; set; }\n        private bool isChecked;\n\n        public bool IsChecked\n        {\n            get { return isChecked; }\n            set\n            {\n                isChecked = value;\n\n                OnPropertyChanged();\n            }\n        }\n\n        public void FixName()\n        {\n            int id = -1;\n            if (int.TryParse(Name, out id))\n                Name = \"Tab \" + Name;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/TabViewModel/CommonTabViewModel.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\nusing POEApi.Model.Interfaces;\n\nnamespace Procurement.ViewModel\n{\n    public class CommonTabViewModel : ObservableBase\n    {\n        private readonly Dictionary<Item, ItemDisplayViewModel> _items;\n\n        protected CommonTabViewModel(Dictionary<Item, ItemDisplayViewModel> itemsByLocation)\n        {\n            _items = itemsByLocation;\n        }\n\n        protected ItemDisplayViewModel GetItemAtPosition(int x, int y)\n        {\n            var itemDisplayViewModel = new ItemDisplayViewModel(null);\n\n            foreach (var item in _items)\n            {\n                if (item.Key.X == x & item.Key.Y == y)\n                {\n                    itemDisplayViewModel = new ItemDisplayViewModel(item.Key);\n\n                    _items[item.Key] = itemDisplayViewModel;\n                    break;\n                }\n            }\n\n            return itemDisplayViewModel;\n        }\n\n        protected ItemDisplayViewModel GetItemCalled(string name)\n        {\n            var itemDisplayViewModel = new ItemDisplayViewModel(null);\n\n            foreach (var item in _items)\n            {\n                if (item.Key.TypeLine.Equals(name, StringComparison.CurrentCultureIgnoreCase))\n                {\n                    itemDisplayViewModel = new ItemDisplayViewModel(item.Key);\n\n                    _items[item.Key] = itemDisplayViewModel;\n                    break;\n                }\n            }\n\n            return itemDisplayViewModel;\n        }\n\n        protected ItemDisplayViewModel GetSextant(SextantType sextantType)\n        {\n            var itemDisplayViewModel = new ItemDisplayViewModel(null);\n\n            foreach (var item in _items)\n            {\n                var sextant = item.Key as Sextant;\n\n                if (sextant?.Type == sextantType)\n                {\n                    itemDisplayViewModel = new ItemDisplayViewModel(sextant);\n\n                    _items[sextant] = itemDisplayViewModel;\n                    break;\n                }\n            }\n\n            return itemDisplayViewModel;\n        }\n\n        protected ItemDisplayViewModel GetCurrencyItem(OrbType orbType)\n        {\n            var itemDisplayViewModel = new ItemDisplayViewModel(null);\n\n            foreach (var item in _items)\n            {\n                var currency = item.Key as Currency;\n\n                if (currency?.Type == orbType)\n                {\n                    itemDisplayViewModel = new ItemDisplayViewModel(currency);\n\n                    _items[currency] = itemDisplayViewModel;\n                    break;\n                }\n            }\n\n            return itemDisplayViewModel;\n        }\n\n        protected ItemDisplayViewModel GetEssenceItem(EssenceType essenceType)\n        {\n            var itemDisplayViewModel = new ItemDisplayViewModel(null);\n\n            foreach (var item in _items)\n            {\n                var essence = item.Key as Essence;\n\n                if (essence?.Type == essenceType)\n                {\n                    itemDisplayViewModel = new ItemDisplayViewModel(essence);\n\n                    _items[essence] = itemDisplayViewModel;\n                    break;\n                }\n            }\n\n            return itemDisplayViewModel;\n        }\n\n        protected ItemDisplayViewModel GetBreach<T>(BreachType breachType) where T : IBreachCurrency\n        {\n            var itemDisplayViewModel = new ItemDisplayViewModel(null);\n\n            foreach (var breach in _items.Keys.OfType<T>())\n            {\n                var breachItem = breach as Item;\n\n                if (breach.Type == breachType)\n                {\n                    itemDisplayViewModel = new ItemDisplayViewModel(breachItem);\n\n                    _items[breachItem] = itemDisplayViewModel;\n                    break;\n                }\n            }\n\n            return itemDisplayViewModel;\n        }\n\n        protected ItemDisplayViewModel GetScarab(ScarabRank rank, ScarabEffect effect)\n        {\n            var itemDisplayViewModel = new ItemDisplayViewModel(null);\n\n            foreach (var scarab in _items.Keys.OfType<Scarab>())\n            {\n                Item scarabItem = scarab;\n\n                if (scarab.ScarabRank == rank && scarab.ScarabEffect == effect)\n                {\n                    itemDisplayViewModel = new ItemDisplayViewModel(scarabItem);\n\n                    _items[scarabItem] = itemDisplayViewModel;\n                    break;\n                }\n            }\n\n            return itemDisplayViewModel;\n        }\n\n        protected ItemDisplayViewModel GetOffering()\n        {\n            var itemDisplayViewModel = new ItemDisplayViewModel(null);\n\n            foreach (var offering in _items.Keys.OfType<Offering>())\n            {\n                itemDisplayViewModel = new ItemDisplayViewModel(offering);\n\n                _items[offering] = itemDisplayViewModel;\n                break;\n            }\n\n            return itemDisplayViewModel;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/TabViewModel/CurrencyStashViewModel.cs",
    "content": "﻿using System.Collections.Generic;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel\n{\n    public class CurrencyStashViewModel : CommonTabViewModel\n    {\n        public CurrencyStashViewModel(Dictionary<Item, ItemDisplayViewModel> stashByLocation) : base(stashByLocation)\n        {\n\n        }\n\n        public ItemDisplayViewModel Exalted => GetCurrencyItem(OrbType.Exalted);\n        public ItemDisplayViewModel Chaos => GetCurrencyItem(OrbType.Chaos);\n        public ItemDisplayViewModel ChaosShard => GetCurrencyItem(OrbType.ChaosShard);\n        public ItemDisplayViewModel ScrollFragment => GetCurrencyItem(OrbType.ScrollFragment);\n        public ItemDisplayViewModel WisdomScrolls => GetCurrencyItem(OrbType.ScrollofWisdom);\n        public ItemDisplayViewModel TownPortalScrolls => GetCurrencyItem(OrbType.PortalScroll);\n        public ItemDisplayViewModel BlacksmithsWhetstone => GetCurrencyItem(OrbType.BlacksmithsWhetstone);\n        public ItemDisplayViewModel ArmourersScrap => GetCurrencyItem(OrbType.ArmourersScrap);\n        public ItemDisplayViewModel GlassblowersBauble => GetCurrencyItem(OrbType.GlassblowersBauble);\n        public ItemDisplayViewModel GemCuttersPrism => GetCurrencyItem(OrbType.GemCutterPrism);\n        public ItemDisplayViewModel Chisel => GetCurrencyItem(OrbType.Chisel);\n        public ItemDisplayViewModel Transmutation => GetCurrencyItem(OrbType.Transmutation);\n        public ItemDisplayViewModel Alteration => GetCurrencyItem(OrbType.Alteration);\n        public ItemDisplayViewModel Augmentation => GetCurrencyItem(OrbType.Augmentation);\n        public ItemDisplayViewModel Mirror => GetCurrencyItem(OrbType.Mirror);\n        public ItemDisplayViewModel Alchemy => GetCurrencyItem(OrbType.Alchemy);\n        public ItemDisplayViewModel Chance => GetCurrencyItem(OrbType.Chance);\n        public ItemDisplayViewModel TransmutationShard => GetCurrencyItem(OrbType.TransmutationShard);\n        public ItemDisplayViewModel AlterationShard => GetCurrencyItem(OrbType.AlterationShard);\n        public ItemDisplayViewModel Regal => GetCurrencyItem(OrbType.Regal);\n        public ItemDisplayViewModel RegalShard => GetCurrencyItem(OrbType.RegalShard);\n        public ItemDisplayViewModel AlchemyShard => GetCurrencyItem(OrbType.AlchemyShard);\n        public ItemDisplayViewModel Blessed => GetCurrencyItem(OrbType.Blessed);\n        public ItemDisplayViewModel Divine => GetCurrencyItem(OrbType.Divine);\n        public ItemDisplayViewModel Jewlers => GetCurrencyItem(OrbType.JewelersOrb);\n        public ItemDisplayViewModel Fuse => GetCurrencyItem(OrbType.Fusing);\n        public ItemDisplayViewModel Chromatic => GetCurrencyItem(OrbType.Chromatic);\n        public ItemDisplayViewModel Scour => GetCurrencyItem(OrbType.Scouring);\n        public ItemDisplayViewModel Regret => GetCurrencyItem(OrbType.Regret);\n        public ItemDisplayViewModel Vaal => GetCurrencyItem(OrbType.VaalOrb);\n        public ItemDisplayViewModel Perandus => GetCurrencyItem(OrbType.PerandusCoin);\n        public ItemDisplayViewModel Silver => GetCurrencyItem(OrbType.SilverCoin);\n        public ItemDisplayViewModel CraftingSection => GetItemAtPosition(28, 0);\n        public ItemDisplayViewModel Slot1 => GetItemAtPosition(30, 0);\n        public ItemDisplayViewModel Slot2 => GetItemAtPosition(31, 0);\n        public ItemDisplayViewModel Slot3 => GetItemAtPosition(32, 0);\n        public ItemDisplayViewModel Slot4 => GetItemAtPosition(33, 0);\n        public ItemDisplayViewModel Slot5 => GetItemAtPosition(34, 0);\n        public ItemDisplayViewModel Slot6 => GetItemAtPosition(40, 0);\n        public ItemDisplayViewModel Slot7 => GetItemAtPosition(41, 0);\n        public ItemDisplayViewModel Slot8 => GetItemAtPosition(42, 0);\n        public ItemDisplayViewModel Slot9 => GetItemAtPosition(43, 0);\n        public ItemDisplayViewModel Slot10 => GetItemAtPosition(44, 0);\n        public ItemDisplayViewModel Slot11 => GetItemAtPosition(45, 0);\n        public ItemDisplayViewModel Slot12 => GetItemAtPosition(46, 0);\n        public ItemDisplayViewModel Slot13 => GetItemAtPosition(47, 0);\n        public ItemDisplayViewModel Slot14 => GetItemAtPosition(48, 0);\n        public ItemDisplayViewModel Apprentice => GetSextant(SextantType.Apprentice);\n        public ItemDisplayViewModel Journey => GetSextant(SextantType.Journeyman);\n        public ItemDisplayViewModel Master => GetSextant(SextantType.Master);\n\n        public ItemDisplayViewModel Annulment => GetCurrencyItem(OrbType.AnnulmentOrb);\n        public ItemDisplayViewModel AnnulmentShard => GetCurrencyItem(OrbType.AnnulmentShard);\n        public ItemDisplayViewModel ExaltedShard => GetCurrencyItem(OrbType.ExaltedShard);\n        public ItemDisplayViewModel MirrorShard => GetCurrencyItem(OrbType.MirrorShard);\n\n        public bool HasCraftingItem => CraftingSection.Item != null;\n        public bool HasExalted => Exalted.Item != null;\n        public bool HasChaos => Chaos.Item != null;\n        public bool HasChaosShard => ChaosShard.Item != null;\n        public bool HasScrollFragment => ScrollFragment.Item != null;\n        public bool HasWisdomScrolls => WisdomScrolls.Item != null;\n        public bool HasTownPortalScrolls => TownPortalScrolls.Item != null;\n        public bool HasBlacksmithsWhetstone => BlacksmithsWhetstone.Item != null;\n        public bool HasArmourersScrap => ArmourersScrap.Item != null;\n        public bool HasGlassblowersBauble => GlassblowersBauble.Item != null;\n        public bool HasGemCuttersPrism => GemCuttersPrism.Item != null;\n        public bool HasChisel => Chisel.Item != null;\n        public bool HasTransmutation => Transmutation.Item != null;\n        public bool HasAlteration => Alteration.Item != null;\n        public bool HasAugmentation => Augmentation.Item != null;\n        public bool HasMirror => Mirror.Item != null;\n        public bool HasAlchemy => Alchemy.Item != null;\n        public bool HasChance => Chance.Item != null;\n        public bool HasTransmutationShard => TransmutationShard.Item != null;\n        public bool HasAlterationShard => AlterationShard.Item != null;\n        public bool HasRegal => Regal.Item != null;\n        public bool HasRegalShard => RegalShard.Item != null;\n        public bool HasAlchemyShard => AlchemyShard.Item != null;\n        public bool HasBlessed => Blessed.Item != null;\n        public bool HasDivine => Divine.Item != null;\n        public bool HasJewlers => Jewlers.Item != null;\n        public bool HasFuse => Fuse.Item != null;\n        public bool HasChromatic => Chromatic.Item != null;\n        public bool HasScour => Scour.Item != null;\n        public bool HasRegret => Regret.Item != null;\n        public bool HasVaal => Vaal.Item != null;\n        public bool HasPerandus => Perandus.Item != null;\n        public bool HasSilver => Silver.Item != null;\n        public bool HasSlot1 => Slot1.Item != null;\n        public bool HasSlot2 => Slot2.Item != null;\n        public bool HasSlot3 => Slot3.Item != null;\n        public bool HasSlot4 => Slot4.Item != null;\n        public bool HasSlot5 => Slot5.Item != null;\n        public bool HasSlot6 => Slot6.Item != null;\n        public bool HasSlot7 => Slot7.Item != null;\n        public bool HasSlot8 => Slot8.Item != null;\n        public bool HasSlot9 => Slot9.Item != null;\n        public bool HasSlot10 => Slot10.Item != null;\n        public bool HasSlot11 => Slot11.Item != null;\n        public bool HasSlot12 => Slot12.Item != null;\n        public bool HasSlot13 => Slot13.Item != null;\n        public bool HasSlot14 => Slot14.Item != null;\n        public bool HasApprentice => Apprentice.Item != null;\n        public bool HasJourney => Journey.Item != null;\n        public bool HasMaster => Master.Item != null;\n        public bool HasAnnulment => Annulment.Item != null;\n        public bool HasAnnulmentShard => AnnulmentShard.Item != null;\n        public bool HasExaltedShard => ExaltedShard.Item != null;\n        public bool HasMirrorShard => MirrorShard.Item != null;\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/TabViewModel/EssenceStashViewModel.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel\n{\n    public class EssenceStashViewModel : CommonTabViewModel\n    {\n        public EssenceStashViewModel(Dictionary<Item, ItemDisplayViewModel> stashByLocation) : base(stashByLocation)\n        {\n\n        }\n\n        public ItemDisplayViewModel WhisperingGreed => GetEssenceItem(EssenceType.WhisperingGreed);\n        public ItemDisplayViewModel WhisperingContempt => GetEssenceItem(EssenceType.WhisperingContempt);\n        public ItemDisplayViewModel WhisperingHatred => GetEssenceItem(EssenceType.WhisperingHatred);\n        public ItemDisplayViewModel WhisperingWoe => GetEssenceItem(EssenceType.WhisperingWoe);\n\n        public ItemDisplayViewModel MutteringGreed => GetEssenceItem(EssenceType.MutteringGreed);\n        public ItemDisplayViewModel MutteringContempt => GetEssenceItem(EssenceType.MutteringContempt);\n        public ItemDisplayViewModel MutteringHatred => GetEssenceItem(EssenceType.MutteringHatred);\n        public ItemDisplayViewModel MutteringWoe => GetEssenceItem(EssenceType.MutteringWoe);\n        public ItemDisplayViewModel MutteringFear => GetEssenceItem(EssenceType.MutteringFear);\n        public ItemDisplayViewModel MutteringAnger => GetEssenceItem(EssenceType.MutteringAnger);\n        public ItemDisplayViewModel MutteringTorment => GetEssenceItem(EssenceType.MutteringTorment);\n        public ItemDisplayViewModel MutteringSorrow => GetEssenceItem(EssenceType.MutteringSorrow);\n\n        public ItemDisplayViewModel WeepingGreed => GetEssenceItem(EssenceType.WeepingGreed);\n        public ItemDisplayViewModel WeepingContempt => GetEssenceItem(EssenceType.WeepingContempt);\n        public ItemDisplayViewModel WeepingHatred => GetEssenceItem(EssenceType.WeepingHatred);\n        public ItemDisplayViewModel WeepingWoe => GetEssenceItem(EssenceType.WeepingWoe);\n        public ItemDisplayViewModel WeepingFear => GetEssenceItem(EssenceType.WeepingFear);\n        public ItemDisplayViewModel WeepingAnger => GetEssenceItem(EssenceType.WeepingAnger);\n        public ItemDisplayViewModel WeepingTorment => GetEssenceItem(EssenceType.WeepingTorment);\n        public ItemDisplayViewModel WeepingSorrow => GetEssenceItem(EssenceType.WeepingSorrow);\n        public ItemDisplayViewModel WeepingRage => GetEssenceItem(EssenceType.WeepingRage);\n        public ItemDisplayViewModel WeepingSuffering => GetEssenceItem(EssenceType.WeepingSuffering);\n        public ItemDisplayViewModel WeepingWrath => GetEssenceItem(EssenceType.WeepingWrath);\n        public ItemDisplayViewModel WeepingDoubt => GetEssenceItem(EssenceType.WeepingDoubt);\n\n        public ItemDisplayViewModel WailingGreed => GetEssenceItem(EssenceType.WailingGreed);\n        public ItemDisplayViewModel WailingContempt => GetEssenceItem(EssenceType.WailingContempt);\n        public ItemDisplayViewModel WailingHatred => GetEssenceItem(EssenceType.WailingHatred);\n        public ItemDisplayViewModel WailingWoe => GetEssenceItem(EssenceType.WailingWoe);\n        public ItemDisplayViewModel WailingFear => GetEssenceItem(EssenceType.WailingFear);\n        public ItemDisplayViewModel WailingAnger => GetEssenceItem(EssenceType.WailingAnger);\n        public ItemDisplayViewModel WailingTorment => GetEssenceItem(EssenceType.WailingTorment);\n        public ItemDisplayViewModel WailingSorrow => GetEssenceItem(EssenceType.WailingSorrow);\n        public ItemDisplayViewModel WailingRage => GetEssenceItem(EssenceType.WailingRage);\n        public ItemDisplayViewModel WailingSuffering => GetEssenceItem(EssenceType.WailingSuffering);\n        public ItemDisplayViewModel WailingWrath => GetEssenceItem(EssenceType.WailingWrath);\n        public ItemDisplayViewModel WailingDoubt => GetEssenceItem(EssenceType.WailingDoubt);\n        public ItemDisplayViewModel WailingLoathing => GetEssenceItem(EssenceType.WailingLoathing);\n        public ItemDisplayViewModel WailingZeal => GetEssenceItem(EssenceType.WailingZeal);\n        public ItemDisplayViewModel WailingAnguish => GetEssenceItem(EssenceType.WailingAnguish);\n        public ItemDisplayViewModel WailingSpite => GetEssenceItem(EssenceType.WailingSpite);\n\n        public ItemDisplayViewModel ScreamingGreed => GetEssenceItem(EssenceType.ScreamingGreed);\n        public ItemDisplayViewModel ScreamingContempt => GetEssenceItem(EssenceType.ScreamingContempt);\n        public ItemDisplayViewModel ScreamingHatred => GetEssenceItem(EssenceType.ScreamingHatred);\n        public ItemDisplayViewModel ScreamingWoe => GetEssenceItem(EssenceType.ScreamingWoe);\n        public ItemDisplayViewModel ScreamingFear => GetEssenceItem(EssenceType.ScreamingFear);\n        public ItemDisplayViewModel ScreamingAnger => GetEssenceItem(EssenceType.ScreamingAnger);\n        public ItemDisplayViewModel ScreamingTorment => GetEssenceItem(EssenceType.ScreamingTorment);\n        public ItemDisplayViewModel ScreamingSorrow => GetEssenceItem(EssenceType.ScreamingSorrow);\n        public ItemDisplayViewModel ScreamingRage => GetEssenceItem(EssenceType.ScreamingRage);\n        public ItemDisplayViewModel ScreamingSuffering => GetEssenceItem(EssenceType.ScreamingSuffering);\n        public ItemDisplayViewModel ScreamingWrath => GetEssenceItem(EssenceType.ScreamingWrath);\n        public ItemDisplayViewModel ScreamingDoubt => GetEssenceItem(EssenceType.ScreamingDoubt);\n        public ItemDisplayViewModel ScreamingLoathing => GetEssenceItem(EssenceType.ScreamingLoathing);\n        public ItemDisplayViewModel ScreamingZeal => GetEssenceItem(EssenceType.ScreamingZeal);\n        public ItemDisplayViewModel ScreamingAnguish => GetEssenceItem(EssenceType.ScreamingAnguish);\n        public ItemDisplayViewModel ScreamingSpite => GetEssenceItem(EssenceType.ScreamingSpite);\n        public ItemDisplayViewModel ScreamingScorn => GetEssenceItem(EssenceType.ScreamingScorn);\n        public ItemDisplayViewModel ScreamingEnvy => GetEssenceItem(EssenceType.ScreamingEnvy);\n        public ItemDisplayViewModel ScreamingMisery => GetEssenceItem(EssenceType.ScreamingMisery);\n        public ItemDisplayViewModel ScreamingDread => GetEssenceItem(EssenceType.ScreamingDread);\n\n        public ItemDisplayViewModel ShriekingGreed => GetEssenceItem(EssenceType.ShriekingGreed);\n        public ItemDisplayViewModel ShriekingContempt => GetEssenceItem(EssenceType.ShriekingContempt);\n        public ItemDisplayViewModel ShriekingHatred => GetEssenceItem(EssenceType.ShriekingHatred);\n        public ItemDisplayViewModel ShriekingWoe => GetEssenceItem(EssenceType.ShriekingWoe);\n        public ItemDisplayViewModel ShriekingFear => GetEssenceItem(EssenceType.ShriekingFear);\n        public ItemDisplayViewModel ShriekingAnger => GetEssenceItem(EssenceType.ShriekingAnger);\n        public ItemDisplayViewModel ShriekingTorment => GetEssenceItem(EssenceType.ShriekingTorment);\n        public ItemDisplayViewModel ShriekingSorrow => GetEssenceItem(EssenceType.ShriekingSorrow);\n        public ItemDisplayViewModel ShriekingRage => GetEssenceItem(EssenceType.ShriekingRage);\n        public ItemDisplayViewModel ShriekingSuffering => GetEssenceItem(EssenceType.ShriekingSuffering);\n        public ItemDisplayViewModel ShriekingWrath => GetEssenceItem(EssenceType.ShriekingWrath);\n        public ItemDisplayViewModel ShriekingDoubt => GetEssenceItem(EssenceType.ShriekingDoubt);\n        public ItemDisplayViewModel ShriekingLoathing => GetEssenceItem(EssenceType.ShriekingLoathing);\n        public ItemDisplayViewModel ShriekingZeal => GetEssenceItem(EssenceType.ShriekingZeal);\n        public ItemDisplayViewModel ShriekingAnguish => GetEssenceItem(EssenceType.ShriekingAnguish);\n        public ItemDisplayViewModel ShriekingSpite => GetEssenceItem(EssenceType.ShriekingSpite);\n        public ItemDisplayViewModel ShriekingScorn => GetEssenceItem(EssenceType.ShriekingScorn);\n        public ItemDisplayViewModel ShriekingEnvy => GetEssenceItem(EssenceType.ShriekingEnvy);\n        public ItemDisplayViewModel ShriekingMisery => GetEssenceItem(EssenceType.ShriekingMisery);\n        public ItemDisplayViewModel ShriekingDread => GetEssenceItem(EssenceType.ShriekingDread);\n\n        public ItemDisplayViewModel DeafeningGreed => GetEssenceItem(EssenceType.DeafeningGreed);\n        public ItemDisplayViewModel DeafeningContempt => GetEssenceItem(EssenceType.DeafeningContempt);\n        public ItemDisplayViewModel DeafeningHatred => GetEssenceItem(EssenceType.DeafeningHatred);\n        public ItemDisplayViewModel DeafeningWoe => GetEssenceItem(EssenceType.DeafeningWoe);\n        public ItemDisplayViewModel DeafeningFear => GetEssenceItem(EssenceType.DeafeningFear);\n        public ItemDisplayViewModel DeafeningAnger => GetEssenceItem(EssenceType.DeafeningAnger);\n        public ItemDisplayViewModel DeafeningTorment => GetEssenceItem(EssenceType.DeafeningTorment);\n        public ItemDisplayViewModel DeafeningSorrow => GetEssenceItem(EssenceType.DeafeningSorrow);\n        public ItemDisplayViewModel DeafeningRage => GetEssenceItem(EssenceType.DeafeningRage);\n        public ItemDisplayViewModel DeafeningSuffering => GetEssenceItem(EssenceType.DeafeningSuffering);\n        public ItemDisplayViewModel DeafeningWrath => GetEssenceItem(EssenceType.DeafeningWrath);\n        public ItemDisplayViewModel DeafeningDoubt => GetEssenceItem(EssenceType.DeafeningDoubt);\n        public ItemDisplayViewModel DeafeningLoathing => GetEssenceItem(EssenceType.DeafeningLoathing);\n        public ItemDisplayViewModel DeafeningZeal => GetEssenceItem(EssenceType.DeafeningZeal);\n        public ItemDisplayViewModel DeafeningAnguish => GetEssenceItem(EssenceType.DeafeningAnguish);\n        public ItemDisplayViewModel DeafeningSpite => GetEssenceItem(EssenceType.DeafeningSpite);\n        public ItemDisplayViewModel DeafeningScorn => GetEssenceItem(EssenceType.DeafeningScorn);\n        public ItemDisplayViewModel DeafeningEnvy => GetEssenceItem(EssenceType.DeafeningEnvy);\n        public ItemDisplayViewModel DeafeningMisery => GetEssenceItem(EssenceType.DeafeningMisery);\n        public ItemDisplayViewModel DeafeningDread => GetEssenceItem(EssenceType.DeafeningDread);\n\n        public ItemDisplayViewModel Insanity => GetEssenceItem(EssenceType.Insanity);\n        public ItemDisplayViewModel Horror => GetEssenceItem(EssenceType.Horror);\n        public ItemDisplayViewModel Delirium => GetEssenceItem(EssenceType.Delirium);\n        public ItemDisplayViewModel Hysteria => GetEssenceItem(EssenceType.Hysteria);\n\n        public ItemDisplayViewModel RemnantOfCorruption => GetEssenceItem(EssenceType.RemnantOfCorruption);\n\n        public ItemDisplayViewModel MainSlot => GetItemAtPosition(108, 0);\n        public ItemDisplayViewModel SlotOne => GetItemAtPosition(105, 0);\n        public ItemDisplayViewModel SlotTwo => GetItemAtPosition(106, 0);\n        public ItemDisplayViewModel SlotThree => GetItemAtPosition(107, 0);\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/TabViewModel/FragmentStashViewModel.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing POEApi.Model;\nusing Procurement.ViewModel;\n\nnamespace Procurement.Controls\n{\n    public class FragmentStashViewModel : CommonTabViewModel\n    {\n        public FragmentStashViewModel(Dictionary<Item, ItemDisplayViewModel> stashByLocation) : base(stashByLocation)\n        {\n\n        }\n\n        public ItemDisplayViewModel Dawn => GetItemCalled(\"Sacrifice at Dawn\");\n        public ItemDisplayViewModel Dusk => GetItemCalled(\"Sacrifice at Dusk\");\n        public ItemDisplayViewModel Noon => GetItemCalled(\"Sacrifice at Noon\");\n        public ItemDisplayViewModel Midnight => GetItemCalled(\"Sacrifice at Midnight\");\n\n        public ItemDisplayViewModel Grief => GetItemCalled(\"Mortal Grief\");\n        public ItemDisplayViewModel Rage => GetItemCalled(\"Mortal Rage\");\n        public ItemDisplayViewModel Ignorance => GetItemCalled(\"Mortal Ignorance\");\n        public ItemDisplayViewModel Hope => GetItemCalled(\"Mortal Hope\");\n\n        public ItemDisplayViewModel Volkuur => GetItemCalled(\"Volkuur's Key\");\n        public ItemDisplayViewModel Eber => GetItemCalled(\"Eber's Key\");\n        public ItemDisplayViewModel Yriel => GetItemCalled(\"Yriel's Key\");\n        public ItemDisplayViewModel Inya => GetItemCalled(\"Inya's Key\");\n\n        public ItemDisplayViewModel Hydra => GetItemCalled(\"Fragment of the Hydra\");\n        public ItemDisplayViewModel Phoenix => GetItemCalled(\"Fragment of the Phoenix\");\n        public ItemDisplayViewModel Minotaur => GetItemCalled(\"Fragment of the Minotaur\");\n        public ItemDisplayViewModel Chimera => GetItemCalled(\"Fragment of the Chimera\");\n\n        public ItemDisplayViewModel DivineVessel => GetItemCalled(\"Divine Vessel\");\n\n        public ItemDisplayViewModel ChayulaSplinter => GetBreach<BreachSplinter>(BreachType.Chayula);\n        public ItemDisplayViewModel EshSplinter => GetBreach<BreachSplinter>(BreachType.Esh);\n        public ItemDisplayViewModel TulSplinter => GetBreach<BreachSplinter>(BreachType.Tul);\n        public ItemDisplayViewModel UulNetolSplinter => GetBreach<BreachSplinter>(BreachType.UulNetol);\n        public ItemDisplayViewModel XophSplinter => GetBreach<BreachSplinter>(BreachType.Xoph);\n\n        public ItemDisplayViewModel ChayulaBreachstone => GetBreach<Breachstone>(BreachType.Chayula);\n        public ItemDisplayViewModel EshBreachstone => GetBreach<Breachstone>(BreachType.Esh);\n        public ItemDisplayViewModel TulBreachstone => GetBreach<Breachstone>(BreachType.Tul);\n        public ItemDisplayViewModel UulNetolBreachstone => GetBreach<Breachstone>(BreachType.UulNetol);\n        public ItemDisplayViewModel XophBreachstone => GetBreach<Breachstone>(BreachType.Xoph);\n\n        public ItemDisplayViewModel GildedAmbushScarab => GetScarab(ScarabRank.Gilded, ScarabEffect.Ambush);\n        public ItemDisplayViewModel GildedBestiaryScarab => GetScarab(ScarabRank.Gilded, ScarabEffect.Bestiary);\n        public ItemDisplayViewModel GildedBreachScarab => GetScarab(ScarabRank.Gilded, ScarabEffect.Breach);\n        public ItemDisplayViewModel GildedCartographyScarab => GetScarab(ScarabRank.Gilded, ScarabEffect.Cartography);\n        public ItemDisplayViewModel GildedDivinationScarab => GetScarab(ScarabRank.Gilded, ScarabEffect.Divination);\n        public ItemDisplayViewModel GildedElderScarab => GetScarab(ScarabRank.Gilded, ScarabEffect.Elder);\n        public ItemDisplayViewModel GildedHarbingerScarab => GetScarab(ScarabRank.Gilded, ScarabEffect.Harbinger);\n        public ItemDisplayViewModel GildedPerandusScarab => GetScarab(ScarabRank.Gilded, ScarabEffect.Perandus);\n        public ItemDisplayViewModel GildedReliquaryScarab => GetScarab(ScarabRank.Gilded, ScarabEffect.Reliquary);\n        public ItemDisplayViewModel GildedShaperScarab => GetScarab(ScarabRank.Gilded, ScarabEffect.Shaper);\n        public ItemDisplayViewModel GildedSulphiteScarab => GetScarab(ScarabRank.Gilded, ScarabEffect.Sulphite);\n        public ItemDisplayViewModel GildedTormentScarab => GetScarab(ScarabRank.Gilded, ScarabEffect.Torment);\n\n        public ItemDisplayViewModel PolishedAmbushScarab => GetScarab(ScarabRank.Polished, ScarabEffect.Ambush);\n        public ItemDisplayViewModel PolishedBestiaryScarab => GetScarab(ScarabRank.Polished, ScarabEffect.Bestiary);\n        public ItemDisplayViewModel PolishedBreachScarab => GetScarab(ScarabRank.Polished, ScarabEffect.Breach);\n        public ItemDisplayViewModel PolishedCartographyScarab => GetScarab(ScarabRank.Polished, ScarabEffect.Cartography);\n        public ItemDisplayViewModel PolishedDivinationScarab => GetScarab(ScarabRank.Polished, ScarabEffect.Divination);\n        public ItemDisplayViewModel PolishedElderScarab => GetScarab(ScarabRank.Polished, ScarabEffect.Elder);\n        public ItemDisplayViewModel PolishedHarbingerScarab => GetScarab(ScarabRank.Polished, ScarabEffect.Harbinger);\n        public ItemDisplayViewModel PolishedPerandusScarab => GetScarab(ScarabRank.Polished, ScarabEffect.Perandus);\n        public ItemDisplayViewModel PolishedReliquaryScarab => GetScarab(ScarabRank.Polished, ScarabEffect.Reliquary);\n        public ItemDisplayViewModel PolishedShaperScarab => GetScarab(ScarabRank.Polished, ScarabEffect.Shaper);\n        public ItemDisplayViewModel PolishedSulphiteScarab => GetScarab(ScarabRank.Polished, ScarabEffect.Sulphite);\n        public ItemDisplayViewModel PolishedTormentScarab => GetScarab(ScarabRank.Polished, ScarabEffect.Torment);\n\n        public ItemDisplayViewModel RustedAmbushScarab => GetScarab(ScarabRank.Rusted, ScarabEffect.Ambush);\n        public ItemDisplayViewModel RustedBestiaryScarab => GetScarab(ScarabRank.Rusted, ScarabEffect.Bestiary);\n        public ItemDisplayViewModel RustedBreachScarab => GetScarab(ScarabRank.Rusted, ScarabEffect.Breach);\n        public ItemDisplayViewModel RustedCartographyScarab => GetScarab(ScarabRank.Rusted, ScarabEffect.Cartography);\n        public ItemDisplayViewModel RustedDivinationScarab => GetScarab(ScarabRank.Rusted, ScarabEffect.Divination);\n        public ItemDisplayViewModel RustedElderScarab => GetScarab(ScarabRank.Rusted, ScarabEffect.Elder);\n        public ItemDisplayViewModel RustedHarbingerScarab => GetScarab(ScarabRank.Rusted, ScarabEffect.Harbinger);\n        public ItemDisplayViewModel RustedPerandusScarab => GetScarab(ScarabRank.Rusted, ScarabEffect.Perandus);\n        public ItemDisplayViewModel RustedReliquaryScarab => GetScarab(ScarabRank.Rusted, ScarabEffect.Reliquary);\n        public ItemDisplayViewModel RustedShaperScarab => GetScarab(ScarabRank.Rusted, ScarabEffect.Shaper);\n        public ItemDisplayViewModel RustedSulphiteScarab => GetScarab(ScarabRank.Rusted, ScarabEffect.Sulphite);\n        public ItemDisplayViewModel RustedTormentScarab => GetScarab(ScarabRank.Rusted, ScarabEffect.Torment);\n\n        //Todo: Get this inline with other common search methods\n        public ItemDisplayViewModel Offering => GetOffering();\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/TabViewModel/StashViewModel.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Input;\nusing System.Windows.Media;\nusing System.Windows.Media.Imaging;\nusing POEApi.Model;\nusing Procurement.Controls;\nusing Procurement.Utility;\nusing Procurement.View;\nusing Procurement.ViewModel.Filters;\nusing System.Text;\nusing POEApi.Infrastructure;\nusing Procurement.Interfaces;\nusing Procurement.View.ViewModel;\n\nnamespace Procurement.ViewModel\n{\n    public class StashViewModel : ObservableBase\n    {\n        private List<TabContent> tabsAndContent;\n        private StashView stashView;\n        private List<IFilter> categoryFilter;\n        private TabItem selectedTab { get; set; }\n        private ResourceDictionary expressionDark;\n        private OrbType configuredOrbType;\n        private bool currencyDistributionUsesCount;\n        private string filter;\n\n        private const string _enableTabRefreshOnLocationChangedConfigName = \"EnableTabRefreshOnLocationChanged\";\n\n        public string Filter\n        {\n            get { return filter; }\n            set\n            {\n                filter = value;\n                processFilter();\n            }\n        }\n\n        private void processFilter()\n        {\n            List<IFilter> allfilters = getUserFilter(filter);\n            allfilters.AddRange(categoryFilter);\n\n            foreach (var item in tabsAndContent)\n            {\n                item.Stash.Filters = allfilters;\n                item.Stash.ForceUpdate();\n                if (item.Stash.ItemsMatchingFiltersCount == 0)\n                {\n                    item.TabItem.Visibility = Visibility.Collapsed;\n                    (item.TabItem.Content as UIElement).Visibility = Visibility.Collapsed;\n                }\n                else\n                {\n                    item.TabItem.Visibility = Visibility.Visible;\n                    (item.TabItem.Content as UIElement).Visibility = Visibility.Visible;\n                }\n            }\n            var first = tabsAndContent.Find(w => w.TabItem.Visibility == Visibility.Visible);\n            if (first != null)\n                first.TabItem.IsSelected = true;\n        }\n\n        public bool LoggedIn { get { return !ApplicationState.Model.Offline; } }\n\n        public void SetCategoryFilter(string category, bool? isChecked)\n        {\n            if (!isChecked.Value)\n            {\n                var filtersBeGone = CategoryManager.GetCategory(category).Select(f => f.GetType()).ToList();\n                categoryFilter.RemoveAll(f => filtersBeGone.Contains(f.GetType()));\n                processFilter();\n                return;\n            }\n\n            categoryFilter.AddRange(CategoryManager.GetCategory(category));\n            processFilter();\n        }\n\n        public ICommand GetTabs => new RelayCommand(GetTabList);\n\n        public List<AdvancedSearchCategory> AvailableCategories { get; private set; }\n\n        public List<string> Leagues\n        {\n            get { return ApplicationState.Leagues; }\n        }\n\n        public string CurrentLeague\n        {\n            get { return ApplicationState.CurrentLeague; }\n        }\n\n        public string Total => \"Total \" + configuredOrbType + \" in Orbs\";\n\n        public string TotalOrbValue => ApplicationState.Stash[ApplicationState.CurrentLeague].GetTotal(configuredOrbType).ToString();\n\n        public Dictionary<OrbType, double> TotalDistibution\n        {\n            get\n            {\n                if (currencyDistributionUsesCount)\n                    return ApplicationState.Stash[ApplicationState.CurrentLeague].GetTotalCurrencyCount();\n\n                return ApplicationState.Stash[ApplicationState.CurrentLeague].GetTotalCurrencyDistribution(configuredOrbType);\n            }\n        }\n\n        public SortedDictionary<string, int> GemDistribution\n        {\n            get\n            {\n                return ApplicationState.Stash[ApplicationState.CurrentLeague].GetTotalGemDistribution();\n            }\n        }\n\n        public List<string> AvailableItems { get; private set; }\n\n\n        public ICommand RefreshCommand => new RelayCommand(x =>\n        {\n            ScreenController.Instance.LoadRefreshView();\n            ScreenController.Instance.InvalidateRecipeScreen();\n        });\n\n        public ICommand RefreshUsedCommand => new RelayCommand(x =>\n        {\n            ScreenController.Instance.LoadRefreshViewUsed();\n            ScreenController.Instance.InvalidateRecipeScreen();\n        });\n\n        public static DateTime LastAutomaticRefresh { get; protected set; }\n        public void OnClientLogFileChanged(object sender, ClientLogFileEventArgs e)\n        {\n            // All actions currently taken when the log file changes relate to refreshing staash tabs.  This checks\n            // first that we are logged in, and quits early if we are not.\n            if (!LoggedIn)\n                return;\n\n            lock (this)\n            {\n                if ((DateTime.Now - LastAutomaticRefresh).TotalSeconds <= 120)\n                    return;\n                LastAutomaticRefresh = DateTime.Now;\n\n                Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal,\n                    new Action(() =>\n                    {\n                        if (ScreenController.Instance.ButtonsVisible)\n                        {\n                            ScreenController.Instance.LoadRefreshViewUsed();\n                            ScreenController.Instance.InvalidateRecipeScreen();\n                        }\n                    }));\n            }\n        }\n\n        public StashViewModel(StashView stashView)\n        {\n            this.stashView = stashView;\n\n            categoryFilter = new List<IFilter>();\n            AvailableCategories = CategoryManager.GetAvailableCategories();\n            tabsAndContent = new List<TabContent>();\n            stashView.Loaded += new RoutedEventHandler(stashView_Loaded);\n\n            ApplicationState.LeagueChanged += new PropertyChangedEventHandler(ApplicationState_LeagueChanged);\n            stashView.tabControl.SelectionChanged += new SelectionChangedEventHandler(tabControl_SelectionChanged);\n            getAvailableItems();\n            expressionDark = Application.LoadComponent(new Uri(\"/Procurement;component/Controls/ExpressionDark.xaml\", UriKind.RelativeOrAbsolute)) as ResourceDictionary;\n\n            configuredOrbType = OrbType.Chaos;\n            string currencyDistributionMetric = Settings.UserSettings[\"CurrencyDistributionMetric\"];\n            if (currencyDistributionMetric.ToLower() == \"count\")\n                currencyDistributionUsesCount = true;\n            else\n                configuredOrbType = (OrbType)Enum.Parse(typeof(OrbType), currencyDistributionMetric);\n\n            if (Settings.UserSettings.Keys.Contains(_enableTabRefreshOnLocationChangedConfigName))\n            {\n                var enabled = false;\n                if (bool.TryParse(Settings.UserSettings[_enableTabRefreshOnLocationChangedConfigName], out enabled)\n                    && enabled)\n                {\n                    ClientLogFileWatcher.ClientLogFileChanged -= OnClientLogFileChanged;\n                    ClientLogFileWatcher.ClientLogFileChanged += OnClientLogFileChanged;\n                }\n            }\n        }\n\n        private void getAvailableItems()\n        {\n            try\n            {\n                AvailableItems = ApplicationState.Stash[ApplicationState.CurrentLeague].Get<Item>().SelectMany(i => getSearchTerms(i)).Distinct().ToList();\n            }\n            catch (KeyNotFoundException kex)\n            {\n                StringBuilder sb = new StringBuilder();\n                sb.AppendLine();\n                sb.AppendLine(string.Format(\"Error: attempted to get items for the non existant league '{0}'\", ApplicationState.CurrentLeague));\n                sb.AppendLine(\"Current leagues are:\");\n                foreach (var item in ApplicationState.Leagues)\n                    sb.AppendLine(item);\n                sb.AppendLine();\n                sb.AppendLine(\"Exception details : \");\n                sb.AppendLine(kex.ToString());\n\n                Logger.Log(sb.ToString());\n\n                MessageBox.Show(string.Format(\"Error getting items for {0} league, are you sure your league settings are correct?\", ApplicationState.CurrentLeague), \"Error loading items\", MessageBoxButton.OK, MessageBoxImage.Error);\n            }\n        }\n        private IEnumerable<string> getSearchTerms(Item item)\n        {\n            yield return item.TypeLine;\n            if (!string.IsNullOrEmpty(item.Name))\n                yield return item.Name;\n\n            Gear gear = item as Gear;\n            if (gear != null)\n                yield return gear.GearType.ToString();\n        }\n\n        void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)\n        {\n            if (selectedTab != null)\n                unselectPreviousTab(selectedTab);\n\n            var item = stashView.tabControl.SelectedItem as TabItem;\n            selectedTab = item;\n            Image i = item.Header as Image;\n            CroppedBitmap bm = (CroppedBitmap)i.Source;\n            Tab tab = (Tab)i.Tag;\n            item.Header = StashHelper.GenerateTabImage(tab, true);\n        }\n\n        private void unselectPreviousTab(TabItem selectedTab)\n        {\n            Image i = selectedTab.Header as Image;\n            Tab tab = i.Tag as Tab;\n            selectedTab.Header = StashHelper.GenerateTabImage(tab, false);\n        }\n\n        void ApplicationState_LeagueChanged(object sender, PropertyChangedEventArgs e)\n        {\n            getAvailableItems();\n            stashView.tabControl.SelectionChanged -= new SelectionChangedEventHandler(tabControl_SelectionChanged);\n            stashView.tabControl.Items.Clear();\n            stashView.tabControl.SelectionChanged += new SelectionChangedEventHandler(tabControl_SelectionChanged);\n            stashView_Loaded(sender, null);\n            OnPropertyChanged(nameof(AvailableItems));\n            OnPropertyChanged(nameof(Total));\n            OnPropertyChanged(nameof(TotalOrbValue));\n            OnPropertyChanged(nameof(TotalDistibution));\n            OnPropertyChanged(nameof(GemDistribution));\n        }\n\n        public void GetTabList(object o)\n        {\n            Button selector = o as Button;\n            ScrollViewer scrollViewer = selector.TemplatedParent as ScrollViewer;\n            scrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;\n            TabControl tabControl = scrollViewer.TemplatedParent as TabControl;\n\n            selector.ContextMenu = GetContextMenu(selector, tabControl);\n            selector.ContextMenu.Height = 550;\n            selector.ContextMenu.IsOpen = true;\n        }\n\n        private ContextMenu GetContextMenu(Button target, TabControl tabControl)\n        {\n            ContextMenu menu = new ContextMenu();\n            menu.PlacementTarget = target;\n            menu.Resources = expressionDark;\n\n            foreach (TabItem item in tabControl.Items)\n            {\n                MenuItem menuItem = new MenuItem();\n                menuItem.Tag = item;\n                TabVisuals tabVisuals = item.Tag as TabVisuals;\n                menuItem.Header = tabVisuals.Name;\n\n                if (tabVisuals.Colour != null)\n                {\n                    menuItem.Style = new Style();\n                    menuItem.BorderThickness = new Thickness(0);\n                    menuItem.Background = new SolidColorBrush(tabVisuals.Colour.WpfColor);\n                    menuItem.Foreground = new SolidColorBrush(ContrastColor(tabVisuals.Colour));\n                }\n\n                menuItem.Click += (o, e) => { closeAndSelect(menu, menuItem); };\n                menu.Items.Add(menuItem);\n            }\n\n            return menu;\n        }\n\n        private Color ContrastColor(Colour color)\n        {\n            // Counting the perceptive luminance - human eye favors green color...\n            double luminance = (0.299 * color.r + 0.587 * color.g + 0.114 * color.b) / 255;\n\n            if (luminance > 0.5)\n                return Color.FromRgb((byte)59, (byte)44, (byte)27);\n\n            return Color.FromRgb((byte)255, (byte)192, (byte)119);\n        }\n\n        private void closeAndSelect(ContextMenu menu, MenuItem menuItem)\n        {\n            menu.IsOpen = false;\n            TabItem newCurrent = menuItem.Tag as TabItem;\n            newCurrent.BringIntoView();\n            newCurrent.IsSelected = true;\n        }\n\n        void stashView_Loaded(object sender, RoutedEventArgs e)\n        {\n            for (var i = 1; i <= ApplicationState.Stash[ApplicationState.CurrentLeague].NumberOfTabs; i++)\n            {\n                var stash = ApplicationState.Stash[ApplicationState.CurrentLeague];\n                var currentTab = stash.Tabs[i - 1];\n\n                var item = new TabItem\n                {\n                    Header = StashHelper.GenerateTabImage(currentTab, false),\n                    Tag = new TabVisuals()\n                    {\n                        Name = currentTab.Name,\n                        Colour = currentTab.Colour\n                    },\n                    HorizontalAlignment = HorizontalAlignment.Left,\n                    VerticalAlignment = VerticalAlignment.Top,\n                    Background = Brushes.Transparent,\n                    BorderBrush = Brushes.Transparent\n                };\n\n                var stashTab = TabFactory.GenerateTab(currentTab, getUserFilter(string.Empty));\n\n                CraftTabAndContent(item, stashTab, i);\n\n                stashView.tabControl.Items.Add(item);\n            }\n\n            stashView.Loaded -= stashView_Loaded;\n        }\n\n        private void CraftTabAndContent(TabItem item, AbstractStashTabControl stashTab, int i)\n        {\n            item.Content = stashTab;\n\n            addContextMenu(item, stashTab);\n\n            tabsAndContent.Add(new TabContent(i - 1, item, stashTab));\n        }\n\n        private void addContextMenu(TabItem item, IStashControl itemStash)\n        {\n            ContextMenu contextMenu = new ContextMenu();\n\n            if (!ApplicationState.Model.Offline)\n                contextMenu.Items.Add(getMenuItem(itemStash, \"Refresh\", refresh_Click));\n            \n            contextMenu.Items.Add(getMenuItem(itemStash, \"Set Tabwide Buyout\", setTabBuyout_Click));\n\n            item.ContextMenu = contextMenu;\n        }\n\n        private MenuItem getMenuItem(IStashControl itemStash, string header, RoutedEventHandler handler)\n        {\n            MenuItem menuItem = new MenuItem() { Header = header };\n            menuItem.Tag = itemStash;\n            menuItem.Click += new RoutedEventHandler(handler);\n\n            return menuItem;\n        }\n\n        private static List<IFilter> getUserFilter(string filter)\n        {\n            if (string.IsNullOrEmpty(filter))\n                return new List<IFilter>();\n\n            UserSearchFilter searchCriteria = new UserSearchFilter(filter);\n            return new List<IFilter>() { searchCriteria };\n        }\n\n        void setTabBuyout_Click(object sender, RoutedEventArgs e)\n        {\n            try\n            {\n                IStashControl stash = getStash(sender);\n\n                var tabName = ApplicationState.Stash[ApplicationState.CurrentLeague].GetTabNameByTabId(stash.TabNumber);\n\n                var pricingInfo = new PricingInfo();\n\n                if (Settings.TabsBuyouts.ContainsKey(tabName))\n                    pricingInfo.Update(Settings.TabsBuyouts[tabName]);\n\n                SetTabBuyoutView buyoutView = new SetTabBuyoutView(pricingInfo, tabName);\n                buyoutView.WindowStartupLocation = WindowStartupLocation.CenterScreen;\n                buyoutView.Update += buyoutView_Update;\n                buyoutView.ShowDialog();\n            }\n            catch (Exception ex)\n            {\n                Logger.Log(\"Exception in setTabBuyout_Click: \" + ex.ToString());\n                MessageBox.Show(\"Error setting tabwide buyout, error details logged to DebugInfo.log, please open a ticket at https://github.com/Stickymaddness/Procurement/issues\", \"Error setting tabwide buyout\", MessageBoxButton.OK, MessageBoxImage.Error);\n            }\n        }\n\n        void buyoutView_Update(PricingInfo buyoutInfo, string tabName)\n        {\n            if (buyoutInfo.Enabled)\n                Settings.TabsBuyouts[tabName] = buyoutInfo.GetSaveText();\n            else\n                Settings.TabsBuyouts.Remove(tabName);\n\n            Settings.SaveTabBuyouts();\n        }\n        \n        void refresh_Click(object sender, RoutedEventArgs e)\n        {                      \n            IStashControl stash = getStash(sender);\n            stash.RefreshTab(ApplicationState.AccountName);\n            ScreenController.Instance.RefreshRecipeScreen();\n            ScreenController.Instance.UpdateTrading();\n        }\n\n        private static IStashControl getStash(object sender)\n        {\n            MenuItem source = sender as MenuItem;\n            IStashControl stash = source.Tag as IStashControl;\n\n            return stash;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/TabViewModel/TabContent.cs",
    "content": "﻿using System.Windows.Controls;\nusing Procurement.Interfaces;\n\nnamespace Procurement.ViewModel\n{\n    internal class TabContent\n    {\n        public int Index { get; set; }\n        public TabItem TabItem { get; set; }\n        public IStashControl Stash { get; set; }\n\n        public TabContent(int index, TabItem tabItem, IStashControl stash)\n        {\n            Index = index;\n            TabItem = tabItem;\n            Stash = stash;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/TabViewModel/TabFactory.cs",
    "content": "using System.Collections.Generic;\nusing POEApi.Model;\nusing Procurement.Controls;\nusing Procurement.ViewModel.Filters;\n\nnamespace Procurement.ViewModel\n{\n    public static class TabFactory\n    {\n        public static AbstractStashTabControl GenerateTab(Tab tab, List<IFilter> filters)\n        {\n            AbstractStashTabControl stashTab;\n\n            switch (tab.Type)\n            {\n                case TabType.Currency:\n                    stashTab = new CurrencyStashTab(tab.i, filters);\n                    break;\n                case TabType.Essence:\n                    stashTab = new EssenceStashTab(tab.i, filters);\n                    break;\n                case TabType.Fragment:\n                    stashTab = new FragmentStashTab(tab.i, filters);\n                    break;\n                default:\n                    stashTab = new StashTabControl(tab.i, filters);\n                    break;\n            }\n\n            return stashTab;\n        }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/TabViewModel/TabVisuals.cs",
    "content": "﻿using POEApi.Model;\n\nnamespace Procurement.ViewModel\n{\n    internal class TabVisuals\n    {\n        public string Name { get; set; }\n        public Colour Colour { get; set; }\n    }\n}"
  },
  {
    "path": "Procurement/ViewModel/TradeSettingsViewModel.cs",
    "content": "﻿using POEApi.Model;\nusing Procurement.Utility;\nusing System;\nusing System.Windows;\nusing System.Windows.Input;\nusing Procurement.View.ViewModel;\n\nnamespace Procurement.ViewModel\n{\n    public class TradeSettingsViewModel : ObservableBase\n    {\n        private const string EMBED_BUYOUTS = \"EmbedBuyouts\";\n        private const string BUYOUT_TAG_ONLY = \"BuyoutItemsOnlyVisibleInBuyoutsTag\";\n        private const string ONLY_DISPLAY_BUYOUTS = \"OnlyDisplayBuyouts\";\n        private const string POE_TRADE_REFRESH = \"PoeTradeRefreshEnabled\";\n\n        public bool LoggedIn { get { return !ApplicationState.Model.Offline; } }\n\n        private bool embedBuyouts;\n        public bool EmbedBuyouts\n        {\n            get { return embedBuyouts; }\n            set\n            {\n                embedBuyouts = value;\n\n                OnPropertyChanged();\n\n                Settings.UserSettings[EMBED_BUYOUTS] = Convert.ToString(value);\n                Settings.Save();\n            }\n        }\n\n        private bool buyoutItemsOnlyVisibleInBuyoutsTag;\n        public bool BuyoutItemsOnlyVisibleInBuyoutsTag\n        {\n            get { return buyoutItemsOnlyVisibleInBuyoutsTag; }\n            set\n            {\n                buyoutItemsOnlyVisibleInBuyoutsTag = value;\n\n                OnPropertyChanged();\n\n                Settings.UserSettings[BUYOUT_TAG_ONLY] = Convert.ToString(value);\n                Settings.Save();\n            }\n        }\n\n        private bool onlyDisplayBuyouts;\n        public bool OnlyDisplayBuyouts\n        {\n            get { return onlyDisplayBuyouts; }\n            set\n            {\n                onlyDisplayBuyouts = value;\n\n                OnPropertyChanged();\n\n                Settings.UserSettings[ONLY_DISPLAY_BUYOUTS] = Convert.ToString(value);\n                Settings.Save();\n            }\n        }\n\n        private bool poeTradeRefreshEnabled;\n        public bool PoeTradeRefreshEnabled\n        {\n            get { return poeTradeRefreshEnabled; }\n            set\n            {\n                poeTradeRefreshEnabled = value;\n\n                OnPropertyChanged();\n\n                Settings.UserSettings[POE_TRADE_REFRESH] = Convert.ToString(value);\n            }\n        }\n\n        private string poeTradeRefreshUrl;\n        public string PoeTradeRefreshUrl\n        {\n            get { return poeTradeRefreshUrl;  }\n            set\n            {\n                poeTradeRefreshUrl = value;\n                Settings.UserSettings[\"PoeTradeRefreshUrl\"] = value;\n\n                OnPropertyChanged();\n            }\n        }\n\n        private string threadId;\n        public string ThreadId\n        {\n            get { return threadId; }\n            set\n            {\n                threadId = value;\n\n                OnPropertyChanged();\n            }\n        }\n\n        private string threadTitle;\n        public string ThreadTitle\n        {\n            get { return threadTitle; }\n            set\n            {\n                threadTitle = value;\n\n                OnPropertyChanged();\n            }\n        }\n\n        public TradeSettingsViewModel()\n        {\n            this.embedBuyouts = getSetting(EMBED_BUYOUTS);\n            this.buyoutItemsOnlyVisibleInBuyoutsTag = getSetting(BUYOUT_TAG_ONLY);\n            this.onlyDisplayBuyouts = getSetting(ONLY_DISPLAY_BUYOUTS);\n            this.poeTradeRefreshEnabled = getSetting(POE_TRADE_REFRESH);\n\n            if (!Settings.ShopSettings.ContainsKey(ApplicationState.CurrentLeague))\n                return;\n\n            this.threadId = Settings.ShopSettings[ApplicationState.CurrentLeague].ThreadId;\n            this.threadTitle = Settings.ShopSettings[ApplicationState.CurrentLeague].ThreadTitle;\n            this.poeTradeRefreshUrl = Settings.UserSettings[\"PoeTradeRefreshUrl\"];\n        }\n\n        private void saveRefreshSettings(object obj)\n        {\n            Settings.Save();\n\n            if (poeTradeRefreshEnabled)\n                PoeTradeOnlineHelper.Instance.Start();\n            else\n                PoeTradeOnlineHelper.Instance.Stop();\n        }\n\n        private void saveShopSettings(object obj)\n        {\n            if (!Settings.ShopSettings.ContainsKey(ApplicationState.CurrentLeague))\n                Settings.ShopSettings.Add(ApplicationState.CurrentLeague, new ShopSetting());\n\n            Settings.ShopSettings[ApplicationState.CurrentLeague].ThreadId = this.threadId ?? \"\";\n            Settings.ShopSettings[ApplicationState.CurrentLeague].ThreadTitle = this.threadTitle ?? \"\";\n\n            if (Settings.SaveShopSettings())\n                MessageBox.Show(\"Shop settings saved\", \"Settings saved\", MessageBoxButton.OK, MessageBoxImage.Information);\n            else\n                MessageBox.Show(\"Unable to save shop settings, error logged to debuginfo.log\", \"Error\", MessageBoxButton.OK, MessageBoxImage.Error);\n        }\n\n        public ICommand SaveCommand => new RelayCommand(saveShopSettings);\n\n        public ICommand SaveRefreshCommand => new RelayCommand(saveRefreshSettings);\n\n        private bool getSetting(string key)\n        {\n            try\n            {\n                return Convert.ToBoolean(Settings.UserSettings[key]);\n            }\n            catch (Exception)\n            {\n                string msg = \"Unable to load {0} setting.\\n\\nIt is either missing from settings.xml or incorrectly configured. The default setting for {0} has been loaded, but it is strongly advised that you fix your settings.xml or replace it with a default one.\";\n                MessageBox.Show(string.Format(msg, key), \"Unable to load setting\", MessageBoxButton.OK, MessageBoxImage.Warning);\n            }\n\n            if (key == EMBED_BUYOUTS)\n                return true;\n\n            return false;\n        }\n    }\n}\n"
  },
  {
    "path": "Procurement/ViewModel/TradingViewModel.cs",
    "content": "﻿namespace Procurement.ViewModel\n{\n    internal class TradingViewModel\n    { }\n}"
  },
  {
    "path": "Procurement/app.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n<startup><supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.6.2\" /></startup>\r\n  <runtime>\r\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\r\n      <dependentAssembly>\r\n        <assemblyIdentity name=\"System.Console\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\r\n        <bindingRedirect oldVersion=\"0.0.0.0-4.0.1.0\" newVersion=\"4.0.1.0\" />\r\n      </dependentAssembly>\r\n      <dependentAssembly>\r\n        <assemblyIdentity name=\"System.Runtime\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\r\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\r\n      </dependentAssembly>\r\n      <dependentAssembly>\r\n        <assemblyIdentity name=\"System.Diagnostics.Tracing\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\r\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\r\n      </dependentAssembly>\r\n      <dependentAssembly>\r\n        <assemblyIdentity name=\"System.Reflection\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\r\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\r\n      </dependentAssembly>\r\n      <dependentAssembly>\r\n        <assemblyIdentity name=\"System.Runtime.InteropServices\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\r\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.0.0\" newVersion=\"4.1.0.0\" />\r\n      </dependentAssembly>\r\n      <dependentAssembly>\r\n        <assemblyIdentity name=\"System.Diagnostics.DiagnosticSource\" publicKeyToken=\"cc7b13ffcd2ddd51\" culture=\"neutral\" />\r\n        <bindingRedirect oldVersion=\"0.0.0.0-4.0.1.0\" newVersion=\"4.0.1.0\" />\r\n      </dependentAssembly>\r\n      <dependentAssembly>\r\n        <assemblyIdentity name=\"System.Runtime.Extensions\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\r\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\r\n      </dependentAssembly>\r\n      <dependentAssembly>\r\n        <assemblyIdentity name=\"System.Net.Http\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\r\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\r\n      </dependentAssembly>\r\n    </assemblyBinding>\r\n  </runtime>\r\n</configuration>\r\n"
  },
  {
    "path": "Procurement/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"RelayCommand\" version=\"1.0.2\" targetFramework=\"net462\" />\n  <package id=\"WPFToolkit\" version=\"3.5.50211.1\" targetFramework=\"net462\" />\n</packages>"
  },
  {
    "path": "Procurement.sln",
    "content": "﻿\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio 14\r\nVisualStudioVersion = 14.0.25420.1\r\nMinimumVisualStudioVersion = 10.0.40219.1\r\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"POEApi.Transport\", \"POEApi.Transport\\POEApi.Transport.csproj\", \"{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}\"\r\nEndProject\r\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"POEApi.Model\", \"POEApi.Model\\POEApi.Model.csproj\", \"{9841DD07-224D-4534-B9D1-F934C1D7BC73}\"\r\nEndProject\r\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"POEApi.Infrastructure\", \"POEApi.Infrastructure\\POEApi.Infrastructure.csproj\", \"{2F0E4301-694B-4A26-80D8-D57042DA9D6F}\"\r\nEndProject\r\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Procurement\", \"Procurement\\Procurement.csproj\", \"{9369113D-A68F-4FE9-B301-D00C5176666A}\"\r\nEndProject\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"Solution Items\", \"Solution Items\", \"{ED96F423-D567-4394-9ADF-34284FFC3999}\"\r\n\tProjectSection(SolutionItems) = preProject\r\n\t\tLICENSE = LICENSE\r\n\t\tREADME.md = README.md\r\n\tEndProjectSection\r\nEndProject\r\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"POEApi.Model.Tests\", \"Tests\\POEApi.Model.Tests\\POEApi.Model.Tests.csproj\", \"{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742}\"\r\nEndProject\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"Tests\", \"Tests\", \"{3B0DBAAD-727D-40CB-B859-72EFC208332E}\"\r\nEndProject\r\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"POEApi.TestHelpers\", \"Tests\\POEApi.TestHelpers\\POEApi.TestHelpers.csproj\", \"{D7567718-9004-4689-B39F-1D240EEBB383}\"\r\nEndProject\r\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Procurement.Tests\", \"Tests\\Procurement.Tests\\Procurement.Tests.csproj\", \"{256989B7-5A60-40E7-9408-B79C1CDB01B7}\"\r\nEndProject\r\nGlobal\r\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\r\n\t\tDebug|Any CPU = Debug|Any CPU\r\n\t\tDebug|Mixed Platforms = Debug|Mixed Platforms\r\n\t\tDebug|x86 = Debug|x86\r\n\t\tRelease|Any CPU = Release|Any CPU\r\n\t\tRelease|Mixed Platforms = Release|Mixed Platforms\r\n\t\tRelease|x86 = Release|x86\r\n\tEndGlobalSection\r\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\r\n\t\t{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\r\n\t\t{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\r\n\t\t{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}.Debug|x86.ActiveCfg = Debug|Any CPU\r\n\t\t{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\r\n\t\t{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}.Release|Mixed Platforms.Build.0 = Release|Any CPU\r\n\t\t{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}.Release|x86.ActiveCfg = Release|Any CPU\r\n\t\t{9841DD07-224D-4534-B9D1-F934C1D7BC73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{9841DD07-224D-4534-B9D1-F934C1D7BC73}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{9841DD07-224D-4534-B9D1-F934C1D7BC73}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\r\n\t\t{9841DD07-224D-4534-B9D1-F934C1D7BC73}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\r\n\t\t{9841DD07-224D-4534-B9D1-F934C1D7BC73}.Debug|x86.ActiveCfg = Debug|Any CPU\r\n\t\t{9841DD07-224D-4534-B9D1-F934C1D7BC73}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{9841DD07-224D-4534-B9D1-F934C1D7BC73}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{9841DD07-224D-4534-B9D1-F934C1D7BC73}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\r\n\t\t{9841DD07-224D-4534-B9D1-F934C1D7BC73}.Release|Mixed Platforms.Build.0 = Release|Any CPU\r\n\t\t{9841DD07-224D-4534-B9D1-F934C1D7BC73}.Release|x86.ActiveCfg = Release|Any CPU\r\n\t\t{2F0E4301-694B-4A26-80D8-D57042DA9D6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{2F0E4301-694B-4A26-80D8-D57042DA9D6F}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{2F0E4301-694B-4A26-80D8-D57042DA9D6F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\r\n\t\t{2F0E4301-694B-4A26-80D8-D57042DA9D6F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\r\n\t\t{2F0E4301-694B-4A26-80D8-D57042DA9D6F}.Debug|x86.ActiveCfg = Debug|Any CPU\r\n\t\t{2F0E4301-694B-4A26-80D8-D57042DA9D6F}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{2F0E4301-694B-4A26-80D8-D57042DA9D6F}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{2F0E4301-694B-4A26-80D8-D57042DA9D6F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\r\n\t\t{2F0E4301-694B-4A26-80D8-D57042DA9D6F}.Release|Mixed Platforms.Build.0 = Release|Any CPU\r\n\t\t{2F0E4301-694B-4A26-80D8-D57042DA9D6F}.Release|x86.ActiveCfg = Release|Any CPU\r\n\t\t{9369113D-A68F-4FE9-B301-D00C5176666A}.Debug|Any CPU.ActiveCfg = Debug|x86\r\n\t\t{9369113D-A68F-4FE9-B301-D00C5176666A}.Debug|Any CPU.Build.0 = Debug|x86\r\n\t\t{9369113D-A68F-4FE9-B301-D00C5176666A}.Debug|Mixed Platforms.ActiveCfg = Debug|x86\r\n\t\t{9369113D-A68F-4FE9-B301-D00C5176666A}.Debug|Mixed Platforms.Build.0 = Debug|x86\r\n\t\t{9369113D-A68F-4FE9-B301-D00C5176666A}.Debug|x86.ActiveCfg = Debug|x86\r\n\t\t{9369113D-A68F-4FE9-B301-D00C5176666A}.Debug|x86.Build.0 = Debug|x86\r\n\t\t{9369113D-A68F-4FE9-B301-D00C5176666A}.Release|Any CPU.ActiveCfg = Release|x86\r\n\t\t{9369113D-A68F-4FE9-B301-D00C5176666A}.Release|Any CPU.Build.0 = Release|x86\r\n\t\t{9369113D-A68F-4FE9-B301-D00C5176666A}.Release|Mixed Platforms.ActiveCfg = Release|x86\r\n\t\t{9369113D-A68F-4FE9-B301-D00C5176666A}.Release|Mixed Platforms.Build.0 = Release|x86\r\n\t\t{9369113D-A68F-4FE9-B301-D00C5176666A}.Release|x86.ActiveCfg = Release|x86\r\n\t\t{9369113D-A68F-4FE9-B301-D00C5176666A}.Release|x86.Build.0 = Release|x86\r\n\t\t{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\r\n\t\t{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\r\n\t\t{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742}.Debug|x86.ActiveCfg = Debug|Any CPU\r\n\t\t{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742}.Debug|x86.Build.0 = Debug|Any CPU\r\n\t\t{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\r\n\t\t{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742}.Release|Mixed Platforms.Build.0 = Release|Any CPU\r\n\t\t{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742}.Release|x86.ActiveCfg = Release|Any CPU\r\n\t\t{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742}.Release|x86.Build.0 = Release|Any CPU\r\n\t\t{D7567718-9004-4689-B39F-1D240EEBB383}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{D7567718-9004-4689-B39F-1D240EEBB383}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{D7567718-9004-4689-B39F-1D240EEBB383}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\r\n\t\t{D7567718-9004-4689-B39F-1D240EEBB383}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\r\n\t\t{D7567718-9004-4689-B39F-1D240EEBB383}.Debug|x86.ActiveCfg = Debug|Any CPU\r\n\t\t{D7567718-9004-4689-B39F-1D240EEBB383}.Debug|x86.Build.0 = Debug|Any CPU\r\n\t\t{D7567718-9004-4689-B39F-1D240EEBB383}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{D7567718-9004-4689-B39F-1D240EEBB383}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{D7567718-9004-4689-B39F-1D240EEBB383}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\r\n\t\t{D7567718-9004-4689-B39F-1D240EEBB383}.Release|Mixed Platforms.Build.0 = Release|Any CPU\r\n\t\t{D7567718-9004-4689-B39F-1D240EEBB383}.Release|x86.ActiveCfg = Release|Any CPU\r\n\t\t{D7567718-9004-4689-B39F-1D240EEBB383}.Release|x86.Build.0 = Release|Any CPU\r\n\t\t{256989B7-5A60-40E7-9408-B79C1CDB01B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{256989B7-5A60-40E7-9408-B79C1CDB01B7}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{256989B7-5A60-40E7-9408-B79C1CDB01B7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\r\n\t\t{256989B7-5A60-40E7-9408-B79C1CDB01B7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\r\n\t\t{256989B7-5A60-40E7-9408-B79C1CDB01B7}.Debug|x86.ActiveCfg = Debug|Any CPU\r\n\t\t{256989B7-5A60-40E7-9408-B79C1CDB01B7}.Debug|x86.Build.0 = Debug|Any CPU\r\n\t\t{256989B7-5A60-40E7-9408-B79C1CDB01B7}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{256989B7-5A60-40E7-9408-B79C1CDB01B7}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{256989B7-5A60-40E7-9408-B79C1CDB01B7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\r\n\t\t{256989B7-5A60-40E7-9408-B79C1CDB01B7}.Release|Mixed Platforms.Build.0 = Release|Any CPU\r\n\t\t{256989B7-5A60-40E7-9408-B79C1CDB01B7}.Release|x86.ActiveCfg = Release|Any CPU\r\n\t\t{256989B7-5A60-40E7-9408-B79C1CDB01B7}.Release|x86.Build.0 = Release|Any CPU\r\n\tEndGlobalSection\r\n\tGlobalSection(SolutionProperties) = preSolution\r\n\t\tHideSolutionNode = FALSE\r\n\tEndGlobalSection\r\n\tGlobalSection(NestedProjects) = preSolution\r\n\t\t{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742} = {3B0DBAAD-727D-40CB-B859-72EFC208332E}\r\n\t\t{D7567718-9004-4689-B39F-1D240EEBB383} = {3B0DBAAD-727D-40CB-B859-72EFC208332E}\r\n\t\t{256989B7-5A60-40E7-9408-B79C1CDB01B7} = {3B0DBAAD-727D-40CB-B859-72EFC208332E}\r\n\tEndGlobalSection\r\nEndGlobal\r\n"
  },
  {
    "path": "README.md",
    "content": "# ![https://ci.appveyor.com/api/projects/status/o955465gdjkurnae?svg=true](https://ci.appveyor.com/api/projects/status/o955465gdjkurnae?svg=true)\n\n![Procurement](http://i.imgur.com/ssqviwb.png)\n\n<a href=\"https://sites.google.com/site/poeprocurement/\"><img src=\"http://i.imgur.com/n7je9iK.png\"></img></a>\n\nPath Of Exile Character &amp; Stash Management Tool\n\nProcurement is a Windows application for the online game Path Of Exile, that logs in to the forum and downloads your characters/stash. From there you can:\n\n* Search/filter your stash/tabs for gear/items\n* Search for gear based on item stats\n* Show where items are in your stash, that form part of vendor recipes\n* View your characters/gear\n* Oneclick generate forum trade posts\n* Oneclick update forum trade posts\n* Oneclick bump forum trade posts\n* Generate [Path of Building](https://github.com/openarl/pathofbuilding) compatible item definitions\n* Customise how your shop thread gets generated\n* Breakdown of your currency with Chaos total (Ratios configurable)\n* Everything is cached and can be viewed offline after you've logged in once\n* Single tab refreshing (if logged in) \n* Search your stash for vendor recipe components\n\n\n"
  },
  {
    "path": "Tests/POEApi.Model.Tests/Files.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace POEApi.Model.Tests {\n    using System;\n    \n    \n    /// <summary>\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\n    /// </summary>\n    // This class was auto-generated by the StronglyTypedResourceBuilder\n    // class via a tool like ResGen or Visual Studio.\n    // To add or remove a member, edit your .ResX file then rerun ResGen\n    // with the /str option, or rebuild your VS project.\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"4.0.0.0\")]\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    internal class Files {\n        \n        private static global::System.Resources.ResourceManager resourceMan;\n        \n        private static global::System.Globalization.CultureInfo resourceCulture;\n        \n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\n        internal Files() {\n        }\n        \n        /// <summary>\n        ///   Returns the cached ResourceManager instance used by this class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Resources.ResourceManager ResourceManager {\n            get {\n                if (object.ReferenceEquals(resourceMan, null)) {\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"POEApi.Model.Tests.Files\", typeof(Files).Assembly);\n                    resourceMan = temp;\n                }\n                return resourceMan;\n            }\n        }\n        \n        /// <summary>\n        ///   Overrides the current thread's CurrentUICulture property for all\n        ///   resource lookups using this strongly typed resource class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Globalization.CultureInfo Culture {\n            get {\n                return resourceCulture;\n            }\n            set {\n                resourceCulture = value;\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleCharacter {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleCharacter\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleCharacterExpiredName {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleCharacterExpiredName\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleCurrencyTabWithShards {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleCurrencyTabWithShards\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleFragmentStash {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleFragmentStash\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleInventory {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleInventory\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleInventoryWithPantheonSoul {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleInventoryWithPantheonSoul\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleInventoryWithQuestItems {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleInventoryWithQuestItems\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleStash {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleStash\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleStashWithDivineVessel {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleStashWithDivineVessel\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleStashWithEssences {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleStashWithEssences\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleStashWithLeagueStoneChargeInfo {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleStashWithLeagueStoneChargeInfo\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleStashWithLitheBlade {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleStashWithLitheBlade\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleStashWithMaps {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleStashWithMaps\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleStashWithMirroredItems {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleStashWithMirroredItems\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleStashWithNets {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleStashWithNets\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleStashWithRelic {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleStashWithRelic\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleStashWithRemnantOfCorruption {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleStashWithRemnantOfCorruption\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleStashWithSaintlyChainmail {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleStashWithSaintlyChainmail\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleStashWithScarab {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleStashWithScarab\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Byte[].\n        /// </summary>\n        internal static byte[] SampleStashWithSynthesisItems {\n            get {\n                object obj = ResourceManager.GetObject(\"SampleStashWithSynthesisItems\", resourceCulture);\n                return ((byte[])(obj));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/POEApi.Model.Tests/Files.resx",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"SampleCharacter\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\samplecharacter.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleCharacterExpiredName\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>TestData\\SampleCharacterExpiredName.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleCurrencyTabWithShards\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\samplecurrencytabwithshards.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleInventory\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\sampleinventory.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleStash\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\samplestash.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleStashWithDivineVessel\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\samplestashwithdivinevessel.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleStashWithEssences\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\samplestashwithessences.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleStashWithLeagueStoneChargeInfo\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\samplestashwithleaguestonechargeinfo.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleStashWithRelic\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\samplestashwithrelic.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleStashWithRemnantOfCorruption\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\samplestashwithremnantofcorruption.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleStashWithLitheBlade\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\samplestashwithlitheblade.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleStashWithSaintlyChainmail\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\samplestashwithsaintlychainmail.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleInventoryWithPantheonSoul\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>TestData\\SampleInventoryWithPantheonSoul.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleStashWithNets\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>TestData\\SampleStashWithNets.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleStashWithMirroredItems\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>TestData\\SampleStashWithMirroredItems.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleFragmentStash\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\samplefragmentstash.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleStashWithScarab\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\samplestashwithscarab.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleInventoryWithQuestItems\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\sampleinventorywithquestitems.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleStashWithSynthesisItems\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>TestData\\SampleStashWithSynthesisItems.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n  <data name=\"SampleStashWithMaps\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>testdata\\samplestashwithmaps.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </data>\n</root>"
  },
  {
    "path": "Tests/POEApi.Model.Tests/GearTests.cs",
    "content": "﻿using FluentAssertions;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing POEApi.TestHelpers.Builders;\n\nnamespace POEApi.Model.Tests\n{\n    [TestClass]\n    public class GearTests\n    {\n        [TestMethod]\n        public void Item_WithNullSockets_ShouldBeProperlyConstructed()\n        {\n            JSONProxy.Item proxyItem = Build.A.JsonProxyItem\n                                              .WithTypeLine(\"Koam's Heart\")\n                                              .WithoutSockets();\n\n            Gear gear = new Gear(proxyItem);\n\n            gear.NumberOfSockets().Should().Be(0);\n            gear.SocketedItems.Should().BeEmpty();\n            gear.Sockets.Should().BeEmpty();\n        }\n\n        [TestMethod]\n        public void Item_TypeLineSubstringOfOtherTypeLine_ShouldFindCorrectBaseType()\n        {\n            JSONProxy.Item tricorneProxyItem = Build.A.JsonProxyItem.WithTypeLine(\"Tricorne\");\n            JSONProxy.Item NobleTricorneProxyItem = Build.A.JsonProxyItem.WithTypeLine(\"Noble Tricorne\");\n            JSONProxy.Item SinnerTricorneProxyItem = Build.A.JsonProxyItem.WithTypeLine(\"Sinner Tricorne\");\n\n            var tricorneItem = new Gear(tricorneProxyItem);\n            tricorneItem.BaseType.Should().Be(\"Tricorne\");\n            tricorneItem.GearType.Should().Be(GearType.Helmet);\n            tricorneItem.DescriptiveName.Should().Be(\"Tricorne\");\n\n            var nobleTricorneItem = new Gear(NobleTricorneProxyItem);\n            nobleTricorneItem.BaseType.Should().Be(\"Noble Tricorne\");\n            nobleTricorneItem.GearType.Should().Be(GearType.Helmet);\n            nobleTricorneItem.DescriptiveName.Should().Be(\"Noble Tricorne\");\n\n            var sinnerTricorneItem = new Gear(SinnerTricorneProxyItem);\n            sinnerTricorneItem.BaseType.Should().Be(\"Sinner Tricorne\");\n            sinnerTricorneItem.GearType.Should().Be(GearType.Helmet);\n            sinnerTricorneItem.DescriptiveName.Should().Be(\"Sinner Tricorne\");\n        }\n\n        [TestMethod]\n        public void Item_IdentifiedItems_DescriptiveNameProducesCorrectDescription()\n        {\n            JSONProxy.Item normalProxyItem = Build.A.JsonProxyItem.WithFrameType((int)Rarity.Normal).WithItemLevel(10)\n                .WithTypeLine(\"Tricorne\").WithQuality(9);\n            JSONProxy.Item magicProxyItem = Build.A.JsonProxyItem.WithFrameType((int)Rarity.Magic).WithItemLevel(15)\n                .WithTypeLine(\"Noble Tricorne\").ThatIsIdentified(false);\n            JSONProxy.Item rareProxyItem = Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20)\n                .WithTypeLine(\"Sinner Tricorne\").WithQuality(0).ThatIsIdentified(false).WithName(\"Fantastic Voyage\");\n            JSONProxy.Item uniqueProxyItem = Build.A.JsonProxyItem.WithFrameType((int)Rarity.Unique).WithItemLevel(30)\n                .WithTypeLine(\"Sinner Tricorne\").WithQuality(20).ThatIsIdentified(false)\n                .WithName(\"Kender's Confidence\");\n\n            var normalItem = new Gear(normalProxyItem);\n            normalItem.Quality.Should().Be(9);\n            normalItem.IsQuality.Should().BeTrue();\n            normalItem.Rarity.Should().Be(Rarity.Normal);\n            normalItem.BaseType.Should().Be(\"Tricorne\");\n            normalItem.GearType.Should().Be(GearType.Helmet);\n            normalItem.DescriptiveName.Should().Be(\"Tricorne, +9% Quality, i10\");\n\n            var magicItem = new Gear(magicProxyItem);\n            magicItem.Quality.Should().Be(0);\n            magicItem.IsQuality.Should().BeFalse();\n            magicItem.Rarity.Should().Be(Rarity.Magic);\n            magicItem.BaseType.Should().Be(\"Noble Tricorne\");\n            magicItem.GearType.Should().Be(GearType.Helmet);\n            magicItem.DescriptiveName.Should().Be(\"Unidentified Magic Noble Tricorne, i15\");\n\n            var rareItem = new Gear(rareProxyItem);\n            rareItem.Quality.Should().Be(0);\n            rareItem.IsQuality.Should().BeTrue();\n            rareItem.Rarity.Should().Be(Rarity.Rare);\n            rareItem.BaseType.Should().Be(\"Sinner Tricorne\");\n            rareItem.GearType.Should().Be(GearType.Helmet);\n            rareItem.DescriptiveName.Should().Be(\"Unidentified Rare Sinner Tricorne, +0% Quality, i20\");\n\n            var uniqueItem = new Gear(uniqueProxyItem);\n            uniqueItem.Quality.Should().Be(20);\n            uniqueItem.IsQuality.Should().BeTrue();\n            uniqueItem.Rarity.Should().Be(Rarity.Unique);\n            uniqueItem.BaseType.Should().Be(\"Sinner Tricorne\");\n            uniqueItem.GearType.Should().Be(GearType.Helmet);\n            uniqueItem.DescriptiveName.Should().Be(\"Unidentified Unique Sinner Tricorne, +20% Quality, i30\");\n        }\n\n        [TestMethod]\n        public void Item_UnidentifiedItems_DescriptiveNameProducesCorrectDescription()\n        {\n            JSONProxy.Item identifiedMagicProxyItem = Build.A.JsonProxyItem.WithFrameType((int)Rarity.Magic)\n                .WithItemLevel(17).WithQuality(11).WithTypeLine(\"Noble Tricorne of Wanderlust\").ThatIsIdentified(true);\n            JSONProxy.Item identifiedRareProxyItem = Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare)\n                .WithItemLevel(25).WithTypeLine(\"Sinner Tricorne\").ThatIsIdentified(true)\n                .WithName(\"Fantastic Voyage\").WithQuality(1);\n            JSONProxy.Item identifiedUniqueProxyItem = Build.A.JsonProxyItem.WithFrameType((int)Rarity.Unique)\n                .WithItemLevel(35).WithTypeLine(\"Sinner Tricorne\").ThatIsIdentified(true)\n                .WithName(\"Kender's Confidence\");\n\n            var identifiedMagicItem = new Gear(identifiedMagicProxyItem);\n            identifiedMagicItem.Quality.Should().Be(11);\n            identifiedMagicItem.IsQuality.Should().BeTrue();\n            identifiedMagicItem.Rarity.Should().Be(Rarity.Magic);\n            identifiedMagicItem.BaseType.Should().Be(\"Noble Tricorne\");\n            identifiedMagicItem.GearType.Should().Be(GearType.Helmet);\n            identifiedMagicItem.DescriptiveName.Should().Be(\"Noble Tricorne of Wanderlust, +11% Quality, i17\");\n\n            var identifiedRareItem = new Gear(identifiedRareProxyItem);\n            identifiedRareItem.Quality.Should().Be(1);\n            identifiedRareItem.IsQuality.Should().BeTrue();\n            identifiedRareItem.Rarity.Should().Be(Rarity.Rare);\n            identifiedRareItem.BaseType.Should().Be(\"Sinner Tricorne\");\n            identifiedRareItem.GearType.Should().Be(GearType.Helmet);\n            identifiedRareItem.DescriptiveName.Should().Be(\n                \"\\\"Fantastic Voyage\\\", Rare Sinner Tricorne, +1% Quality, i25\");\n\n            var identifiedUniqueItem = new Gear(identifiedUniqueProxyItem);\n            identifiedUniqueItem.Quality.Should().Be(0);\n            identifiedUniqueItem.IsQuality.Should().BeFalse();\n            identifiedUniqueItem.Rarity.Should().Be(Rarity.Unique);\n            identifiedUniqueItem.BaseType.Should().Be(\"Sinner Tricorne\");\n            identifiedUniqueItem.GearType.Should().Be(GearType.Helmet);\n            identifiedUniqueItem.DescriptiveName.Should().Be(\"\\\"Kender's Confidence\\\", Unique Sinner Tricorne, i35\");\n        }\n\n        [TestMethod]\n        public void Item_WithMissingExpectedComponents_DescriptiveNameProducesCorrectDescription()\n        {\n            JSONProxy.Item withoutItemLevelProxyItem = Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare)\n                .WithTypeLine(\"Sinner Tricorne\").ThatIsIdentified(true)\n                .WithName(\"Fantastic Voyage\");\n\n            var withoutItemLevelItem = new Gear(withoutItemLevelProxyItem);\n            withoutItemLevelItem.Quality.Should().Be(0);\n            withoutItemLevelItem.IsQuality.Should().BeFalse();\n            withoutItemLevelItem.Rarity.Should().Be(Rarity.Rare);\n            withoutItemLevelItem.BaseType.Should().Be(\"Sinner Tricorne\");\n            withoutItemLevelItem.GearType.Should().Be(GearType.Helmet);\n            withoutItemLevelItem.DescriptiveName.Should().Be(\"\\\"Fantastic Voyage\\\", Rare Sinner Tricorne\");\n\n            JSONProxy.Item withoutItemNameProxyItem = Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare)\n                .WithItemLevel(35).WithTypeLine(\"Sinner Tricorne\").ThatIsIdentified(true)\n                .WithName(null);\n\n            var withoutItemNameItem = new Gear(withoutItemNameProxyItem);\n            withoutItemNameItem.Quality.Should().Be(0);\n            withoutItemNameItem.IsQuality.Should().BeFalse();\n            withoutItemNameItem.Rarity.Should().Be(Rarity.Rare);\n            withoutItemNameItem.BaseType.Should().Be(\"Sinner Tricorne\");\n            withoutItemNameItem.GearType.Should().Be(GearType.Helmet);\n            withoutItemNameItem.DescriptiveName.Should().Be(\"Rare Sinner Tricorne, i35\");\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/POEApi.Model.Tests/IFilterTests.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing Moq;\nusing POEApi.Transport;\nusing Procurement.ViewModel.Filters;\nusing Procurement.ViewModel.Filters.ForumExport;\nusing static POEApi.Model.Tests.UnitTestHelper;\n\nnamespace POEApi.Model.Tests\n{\n    [TestClass]\n    public class IFilterTests\n    {\n        private Mock<ITransport> _mockTransport;\n        private POEModel _model;\n        private IFilter filter;\n\n        [TestInitialize]\n        public void TestSetup()\n        {\n            _mockTransport = new Mock<ITransport>();\n            _model = new POEModel { Transport = _mockTransport.Object };\n        }\n\n        [TestMethod]\n        public void AreEssencesApplicable()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStashWithRemnantOfCorruption);\n            filter = new EssenceFilter();\n\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, \"\", \"\", Realm.PC, false)).Returns(stream);\n\n                var stash = _model.GetStash(0, \"\", \"\", Realm.PC);\n\n                Assert.IsNotNull(stash);\n\n                var essences = stash.GetItemsByTab(6);\n\n                Assert.IsTrue(essences.All(x => x is Essence));\n\n                //All the items, which are essences in the first place, should make it into the forum template\n                Assert.IsTrue(essences.TrueForAll(filter.Applicable));\n            }\n        }\n\n        [TestMethod]\n        public void AreDivineVesselsApplicable()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStashWithDivineVessel);\n            filter = new DivineVesselFilter();\n\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, \"\", \"\", Realm.PC, false)).Returns(stream);\n\n                var stash = _model.GetStash(0, \"\", \"\", Realm.PC);\n\n                Assert.IsNotNull(stash);\n\n                var vessel = stash.GetItemsByTab(1).Where(x => x is DivineVessel);\n\n                Assert.AreEqual(1, vessel.Count());\n\n                Assert.IsTrue(filter.Applicable(vessel.First()));\n            }\n        }\n\n        [TestMethod]\n        public void AreOfferingsApplicable()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStashWithDivineVessel);\n            filter = new OfferingFilter();\n\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, \"\", \"\", Realm.PC, false)).Returns(stream);\n\n                var stash = _model.GetStash(0, \"\", \"\", Realm.PC);\n\n                Assert.IsNotNull(stash);\n\n                var offerings = stash.GetItemsByTab(1).Where(x => x is Offering);\n\n                Assert.AreEqual(3, offerings.Count());\n\n                Assert.IsTrue(offerings.All(filter.Applicable));\n            }\n        }\n\n        [TestMethod]\n        public void AreScarabsApplicable()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStashWithScarab);\n            filter = new ScarabFilter();\n\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, \"\", \"\", Realm.PC, false)).Returns(stream);\n\n                var stash = _model.GetStash(0, \"\", \"\", Realm.PC);\n\n                Assert.IsNotNull(stash);\n                var test = stash.GetItemsByTab(1);\n                var scarab = stash.GetItemsByTab(1).Where(x => x is Scarab);\n\n                Assert.AreEqual(1, scarab.Count());\n\n                Assert.IsTrue(filter.Applicable(scarab.First()));\n            }\n        }\n\n        [TestMethod]\n        public void AreRareMapsApplicable()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStashWithMaps);\n            filter = new MapFilter();\n            var rareFilter = new RarityFilter(Rarity.Rare);\n\n            var filters = new[] {filter, rareFilter};\n            \n\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, \"\", \"\", \"\", false)).Returns(stream);\n\n                var stash = _model.GetStash(0, \"\", \"\", \"\");\n\n                Assert.IsNotNull(stash);\n\n                var maps = stash.GetItemsByTab(4).Where(x => x is Map);\n\n                Assert.AreEqual(88, maps.Count());\n\n                Assert.IsTrue(maps.All(filter.Applicable));\n\n                var rareMaps = new List<Item>();\n\n                foreach (var map in maps)\n                {\n                    if(filters.All(x => x.Applicable(map)))\n                    {\n                        rareMaps.Add(map);\n                    }\n                }\n                \n                Assert.IsTrue(rareMaps.Count > 0);\n                Assert.IsTrue(maps.Count() > rareMaps.Count);\n            }\n        }\n\n    }\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/ItemFactoryTests.cs",
    "content": "﻿using Microsoft.VisualStudio.TestTools.UnitTesting;\nusing POEApi.TestHelpers.Builders;\nusing FluentAssertions;\nusing System.Linq;\n\nnamespace POEApi.Model.Tests\n{\n    [TestClass]\n    public class ItemFactoryTests\n    {\n        [TestMethod]\n        public void ItemFactory_GivenItemWithAbyssJewel_ShouldConstructItem()\n        {\n            var abyssJewel = Build.A.JsonProxyItem\n                                    .ThatIsAnAbyssJewel(true);\n\n            var item = Build.A.JsonProxyItem\n                              .WithSocketedItem(abyssJewel);\n\n            Gear result = ItemFactory.Get(item) as Gear;\n\n            result.Should().NotBeNull();\n            result.SocketedItems.Single().Should().BeOfType<AbyssJewel>();\n        }\n\n        [TestMethod]\n        public void ItemFactory_GivenBreakingItem_ShouldReturnUnknownItem()\n        {\n            JSONProxy.Item item = new JSONProxy.Item();\n\n            Item result = ItemFactory.Get(item);\n\n            result.Should().NotBeNull();\n            result.Should().BeOfType<UnknownItem>();\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/POEApi.Model.Tests/POEApi.Model.Tests.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{52A5B321-3AA1-4A9D-B6DD-93DC7DF7C742}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>POEApi.Model.Tests</RootNamespace>\n    <AssemblyName>POEApi.Model.Tests</AssemblyName>\n    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <VisualStudioVersion Condition=\"'$(VisualStudioVersion)' == ''\">10.0</VisualStudioVersion>\n    <VSToolsPath Condition=\"'$(VSToolsPath)' == ''\">$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)</VSToolsPath>\n    <ReferencePath>$(ProgramFiles)\\Common Files\\microsoft shared\\VSTT\\$(VisualStudioVersion)\\UITestExtensionPackages</ReferencePath>\n    <IsCodedUITest>False</IsCodedUITest>\n    <TestProjectType>UnitTest</TestProjectType>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>none</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Castle.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Castle.Core.3.3.3\\lib\\net45\\Castle.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"FluentAssertions, Version=4.19.4.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\FluentAssertions.4.19.4\\lib\\net45\\FluentAssertions.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"FluentAssertions.Core, Version=4.19.4.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\FluentAssertions.4.19.4\\lib\\net45\\FluentAssertions.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Moq, Version=4.5.22.0, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Moq.4.5.22\\lib\\net45\\Moq.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PresentationFramework\" />\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"System.Xml.Linq\" />\n  </ItemGroup>\n  <Choose>\n    <When Condition=\"('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'\">\n      <ItemGroup>\n        <Reference Include=\"Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\" />\n      </ItemGroup>\n    </When>\n    <Otherwise>\n      <ItemGroup>\n        <Reference Include=\"Microsoft.VisualStudio.QualityTools.UnitTestFramework\">\n          <Private>False</Private>\n        </Reference>\n      </ItemGroup>\n    </Otherwise>\n  </Choose>\n  <ItemGroup>\n    <Compile Include=\"Files.Designer.cs\">\n      <AutoGen>True</AutoGen>\n      <DesignTime>True</DesignTime>\n      <DependentUpon>Files.resx</DependentUpon>\n    </Compile>\n    <Compile Include=\"GearTests.cs\" />\n    <Compile Include=\"ItemFactoryTests.cs\" />\n    <Compile Include=\"PoeModelTests.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"IFilterTests.cs\" />\n    <Compile Include=\"UnitTestHelper.cs\" />\n    <Compile Include=\"UnknownItemTests.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"app.config\" />\n    <None Include=\"packages.config\" />\n    <None Include=\"TestData\\SampleFragmentStash.json\" />\n    <None Include=\"TestData\\SampleCharacterExpiredName.json\" />\n    <None Include=\"TestData\\SampleCurrencyTabWithShards.json\" />\n    <None Include=\"TestData\\SampleInventory.json\" />\n    <None Include=\"TestData\\SampleCharacter.json\" />\n    <None Include=\"TestData\\SampleInventoryWithQuestItems.json\" />\n    <None Include=\"TestData\\SampleStash.json\" />\n    <None Include=\"TestData\\SampleStashWithDivineVessel.json\" />\n    <None Include=\"TestData\\SampleStashWithEssences.json\" />\n    <None Include=\"TestData\\SampleStashWithLitheBlade.json\" />\n    <None Include=\"TestData\\SampleStashWithMaps.json\" />\n    <None Include=\"TestData\\SampleStashWithNets.json\" />\n    <None Include=\"TestData\\SampleStashWithMirroredItems.json\" />\n    <None Include=\"TestData\\SampleStashWithRelic.json\" />\n    <None Include=\"TestData\\SampleStashWithRemnantOfCorruption.json\" />\n    <None Include=\"TestData\\SampleStashWithLeagueStoneChargeInfo.json\" />\n    <None Include=\"TestData\\SampleStashWithSaintlyChainmail.json\" />\n    <None Include=\"TestData\\SampleStashWithScarab.json\" />\n    <None Include=\"TestData\\SampleStashWithSynthesisItems.json\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\POEApi.Model\\POEApi.Model.csproj\">\n      <Project>{9841DD07-224D-4534-B9D1-F934C1D7BC73}</Project>\n      <Name>POEApi.Model</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\POEApi.Transport\\POEApi.Transport.csproj\">\n      <Project>{5933C062-45EA-4BC3-9AE9-0D6CFC26D505}</Project>\n      <Name>POEApi.Transport</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\Procurement\\Procurement.csproj\">\n      <Project>{9369113D-A68F-4FE9-B301-D00C5176666A}</Project>\n      <Name>Procurement</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\POEApi.TestHelpers\\POEApi.TestHelpers.csproj\">\n      <Project>{d7567718-9004-4689-b39f-1d240eebb383}</Project>\n      <Name>POEApi.TestHelpers</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <EmbeddedResource Include=\"Files.resx\">\n      <Generator>ResXFileCodeGenerator</Generator>\n      <LastGenOutput>Files.Designer.cs</LastGenOutput>\n    </EmbeddedResource>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"TestData\\SampleInventoryWithPantheonSoul.json\" />\n  </ItemGroup>\n  <Choose>\n    <When Condition=\"'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'\">\n      <ItemGroup>\n        <Reference Include=\"Microsoft.VisualStudio.QualityTools.CodedUITestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n          <Private>False</Private>\n        </Reference>\n        <Reference Include=\"Microsoft.VisualStudio.TestTools.UITest.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n          <Private>False</Private>\n        </Reference>\n        <Reference Include=\"Microsoft.VisualStudio.TestTools.UITest.Extension, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n          <Private>False</Private>\n        </Reference>\n        <Reference Include=\"Microsoft.VisualStudio.TestTools.UITesting, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\">\n          <Private>False</Private>\n        </Reference>\n      </ItemGroup>\n    </When>\n  </Choose>\n  <Import Project=\"$(VSToolsPath)\\TeamTest\\Microsoft.TestTools.targets\" Condition=\"Exists('$(VSToolsPath)\\TeamTest\\Microsoft.TestTools.targets')\" />\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Tests/POEApi.Model.Tests/PoeModelTests.cs",
    "content": "﻿using System.Collections.Generic;\nusing FluentAssertions;\nusing System.Linq;\nusing System.Text;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing Moq;\nusing POEApi.Transport;\nusing Procurement.Controls;\nusing Procurement.ViewModel;\nusing static POEApi.Model.Tests.UnitTestHelper;\n\nnamespace POEApi.Model.Tests\n{\n    [TestClass]\n    public class PoeModelTests\n    {\n        private Mock<ITransport> _mockTransport;\n        private POEModel _model;\n\n        [TestInitialize]\n        public void TestSetup()\n        {\n            _mockTransport = new Mock<ITransport>();\n            _model = new POEModel {Transport = _mockTransport.Object};\n        }\n\n        [TestMethod]\n        public void GetInventoryTest()\n        {\n            string fakeCharacterInfo = Encoding.UTF8.GetString(Files.SampleInventory);\n\n            using (var stream = GenerateStreamFromString(fakeCharacterInfo))\n            {\n                _mockTransport.Setup(m => m.GetInventory(\"\", false, \"\", Realm.PC)).Returns(stream);\n\n                var inventory = _model.GetInventory(\"\", false, \"\", Realm.PC);\n\n                Assert.IsNotNull(inventory);\n            }\n        }\n\n        [TestMethod]\n        public void GetCharactersTest()\n        {\n            string fakeCharacterInfo = Encoding.UTF8.GetString(Files.SampleCharacter);\n\n            using (var stream = GenerateStreamFromString(fakeCharacterInfo))\n            {\n                _mockTransport.Setup(m => m.GetCharacters(Realm.PC)).Returns(stream);\n\n                var characters = _model.GetCharacters(Realm.PC);\n\n                Assert.IsNotNull(characters);\n\n                Assert.AreEqual(5, characters.Count);\n            }\n        }\n\n        [TestMethod]\n        public void GetExpiredNameCharactersTest()\n        {\n            string fakeCharacterInfo = Encoding.UTF8.GetString(Files.SampleCharacterExpiredName);\n\n            using (var stream = GenerateStreamFromString(fakeCharacterInfo))\n            {\n                _mockTransport.Setup(m => m.GetCharacters(Realm.PC)).Returns(stream);\n\n                var characters = _model.GetCharacters(Realm.PC);\n\n                Assert.IsNotNull(characters);\n\n                Assert.AreEqual(characters.Count, 2);\n            }\n        }\n\n        [TestMethod]\n        public void GetStashTest()\n        {\n            //Nasty little gotcha See: http://blogs.msdn.com/b/cie/archive/2014/03/19/encountered-unexpected-character-239-error-serializing-json.aspx\n            //You have to remove the first three bytes from the file.\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStash);\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, \"\", \"\", Realm.PC, false)).Returns(stream);\n\n                var stash = _model.GetStash(0, \"\", \"\", Realm.PC);\n\n                Assert.IsNotNull(stash);\n\n                Assert.AreEqual(17, stash.Tabs.Count);\n            }\n        }\n\n        [TestMethod]\n        public void GetEssenceStashTest()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStashWithEssences);\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, \"\", \"\", Realm.PC, false)).Returns(stream);\n\n                var stash = _model.GetStash(0, \"\", \"\", Realm.PC);\n\n                Assert.IsNotNull(stash);\n\n                Assert.AreEqual(83, stash.Tabs.Count);\n\n                var items = stash.GetItemsByTab(14);\n\n                Assert.IsTrue(items.Any(x => x is Essence));\n            }\n        }\n\n        [TestMethod]\n        public void GetRelicStashTest()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStashWithRelic);\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, \"\", \"\", Realm.PC, false)).Returns(stream);\n\n                var stash = _model.GetStash(0, \"\", \"\", Realm.PC);\n\n                Assert.IsNotNull(stash);\n\n                Assert.AreEqual(27, stash.Tabs.Count);\n\n                var items = stash.GetItemsByTab(7);\n\n                Assert.AreEqual(1, items.OfType<Gear>().Count(x => x.Rarity == Rarity.Relic));\n            }\n        }\n\n        [TestMethod]\n        public void GetLitheBladeStashTest()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStashWithLitheBlade);\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, \"\", \"\", Realm.PC, false)).Returns(stream);\n\n                var stash = _model.GetStash(0, \"\", \"\", Realm.PC);\n\n                Assert.IsNotNull(stash);\n\n                Assert.AreEqual(39, stash.Tabs.Count);\n\n                var items = stash.GetItemsByTab(12);\n\n                Assert.AreEqual(1, items.OfType<Gear>().Count(x => x.TypeLine == \"Lithe Blade\" && x.GearType == GearType.Sword));\n            }\n        }\n\n        [TestMethod]\n        public void GetSaintlyChainmailStashTest()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStashWithSaintlyChainmail);\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, \"\", \"\", Realm.PC, false)).Returns(stream);\n\n                var stash = _model.GetStash(0, \"\", \"\", Realm.PC);\n\n                Assert.IsNotNull(stash);\n\n                Assert.AreEqual(39, stash.Tabs.Count);\n\n                var items = stash.GetItemsByTab(19);\n\n                Assert.AreEqual(1, items.OfType<Gear>().Count(x => x.TypeLine == \"Saintly Chainmail\" && x.GearType == GearType.Chest));\n            }\n        }\n\n        [TestMethod]\n        public void GetAccountNameTest()\n        {\n            var fakeAccountNameResponse = \"{\\\"name\\\":\\\"fakeAccountName\\\"}\";\n\n            using (var stream = GenerateStreamFromString(fakeAccountNameResponse))\n            {\n                _mockTransport.Setup(m => m.GetAccountName(Realm.PC)).Returns(stream);\n\n                var account = _model.GetAccountName(Realm.PC);\n\n                Assert.AreEqual(\"fakeAccountName\", account);\n            }\n        }\n\n        [TestMethod]\n        public void GetShardCurrencyStashTest()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleCurrencyTabWithShards);\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, \"\", \"\", Realm.PC, false)).Returns(stream);\n\n                var stash = _model.GetStash(0, \"\", \"\", Realm.PC);\n\n                Assert.IsNotNull(stash);\n\n                Assert.AreEqual(26, stash.Tabs.Count);\n\n                var items = stash.GetItemsByTab(0);\n\n                Assert.AreEqual(1, items.OfType<Currency>().Count(x => x.Type == OrbType.EngineersOrb));\n                Assert.AreEqual(1, items.OfType<Currency>().Count(x => x.Type == OrbType.BindingOrb));\n                Assert.AreEqual(1, items.OfType<Currency>().Count(x => x.Type == OrbType.BindingShard));\n            }\n        }\n\n        [TestMethod]\n        public void GetFragmentStashTest()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleFragmentStash);\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, \"\", \"\", Realm.PC, false)).Returns(stream);\n\n                var stash = _model.GetStash(0, \"\", \"\", Realm.PC);\n\n                Assert.IsNotNull(stash);\n\n                Assert.AreEqual(1, stash.Tabs.Count);\n\n                var items = stash.GetItemsByTab(12);\n                var itemViewModelPairing = new Dictionary<Item, ItemDisplayViewModel>();\n\n                foreach (var item in items)\n                {\n                    itemViewModelPairing.Add(item, null);\n                }\n\n                var viewModel = new FragmentStashViewModel(itemViewModelPairing); \n\n                Assert.AreEqual(4, viewModel.ChayulaSplinter.Item.StackSize);\n                Assert.AreEqual(6, viewModel.Offering.Item.StackSize);\n                Assert.AreEqual(11, viewModel.Dawn.Item.StackSize);\n                Assert.AreEqual(8, viewModel.TulSplinter.Item.StackSize);\n                Assert.AreEqual(11, viewModel.XophSplinter.Item.StackSize);\n                Assert.AreEqual(17, viewModel.EshSplinter.Item.StackSize);\n                Assert.AreEqual(4, viewModel.ChayulaSplinter.Item.StackSize);\n                Assert.AreEqual(1, viewModel.DivineVessel.Item.StackSize);\n                Assert.IsNull(viewModel.Yriel.Item);\n            }\n        }\n\n        [TestMethod]\n        public void GetChargeTest()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStashWithLeagueStoneChargeInfo);\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, \"\", \"\", Realm.PC, false)).Returns(stream);\n\n                var stash = _model.GetStash(0, \"\", \"\", Realm.PC);\n\n                Assert.IsNotNull(stash);\n\n                Assert.AreEqual(361, stash.Tabs.Count);\n\n                var items = stash.GetItemsByTab(5);\n\n                var leagueStones = items.OfType<Leaguestone>();\n\n                Assert.IsTrue(leagueStones.All(x => x.Charges.ToString() == \"5/5\"));\n            }\n        }\n\n        [TestMethod]\n        public void GetPantheonSoulInventoryTest()\n        {\n            string fakeInventoryInfo = Encoding.UTF8.GetString(Files.SampleInventoryWithPantheonSoul);\n            using (var stream = GenerateStreamFromString(fakeInventoryInfo))\n            {\n                _mockTransport.Setup(m => m.GetInventory(string.Empty, false, string.Empty, Realm.PC)).Returns(stream);\n                var inventory = _model.GetInventory(string.Empty, false, string.Empty, Realm.PC);\n\n                inventory.Should().NotBeNull();\n                inventory.Should().HaveCount(3);\n                Item item = inventory[2];\n\n                item.Should().NotBeNull();\n                Currency pantheonSoul = item as Currency;\n\n                pantheonSoul.Should().NotBeNull();\n                pantheonSoul.Name.Should().BeEmpty();\n                pantheonSoul.TypeLine.Should().Be(\"Captured Soul of The Forgotten Soldier\");\n                pantheonSoul.Type.Should().Be(OrbType.PantheonSoul);\n                pantheonSoul.ItemType.Should().Be(ItemType.Currency);\n\n                pantheonSoul.StackSize.Should().Be(0);\n            }\n        }\n\n        [TestMethod]\n        public void GetNetsStashTest()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStashWithNets);\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, string.Empty, string.Empty, Realm.PC, false)).Returns(stream);\n\n                var stash = _model.GetStash(0, string.Empty, string.Empty, Realm.PC);\n                stash.Should().NotBeNull();\n                stash.Tabs.Should().HaveCount(1);\n\n                var items = stash.GetItemsByTab(5);\n                items.Should().NotBeNull();\n                items.Should().HaveCount(5);\n\n                items.Should().AllBeAssignableTo<Currency>();\n\n                var simpleRopeNet = items[1] as Net;\n                simpleRopeNet.Should().NotBeNull();\n                simpleRopeNet.Name.Should().BeEmpty();\n                simpleRopeNet.TypeLine.Should().Be(\"Simple Rope Net\");\n                simpleRopeNet.NetTier.Should().Be(1);\n\n                var thaumaturgicalNet = items[3] as Net;\n                thaumaturgicalNet.Should().NotBeNull();\n                thaumaturgicalNet.Name.Should().BeEmpty();\n                thaumaturgicalNet.TypeLine.Should().Be(\"Thaumaturgical Net\");\n                thaumaturgicalNet.NetTier.Should().Be(10);\n\n                var necromancyNet = items[4] as Net;\n                necromancyNet.Should().NotBeNull();\n                necromancyNet.Name.Should().BeEmpty();\n                necromancyNet.TypeLine.Should().Be(\"Necromancy Net\");\n                necromancyNet.NetTier.Should().Be(0);\n            }\n        }\n\n        [TestMethod]\n        public void GetMirroredItemsStashTest()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStashWithMirroredItems);\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, string.Empty, string.Empty, Realm.PC, false)).Returns(stream);\n                var stash = _model.GetStash(0, string.Empty, string.Empty, Realm.PC);\n                stash.Should().NotBeNull();\n                stash.Tabs.Should().HaveCount(1);\n\n                var items = stash.GetItemsByTab(54);\n                items.Should().NotBeNull();\n                items.Should().HaveCount(8);\n\n                var mirroredItems = items.Where(i => i.IsMirrored).ToList();\n                var normalItems = items.Where(i => !i.IsMirrored).ToList();\n                mirroredItems.Should().HaveCount(4);\n\n                var mirroredItemsTypeLines = mirroredItems.Select(i => i.TypeLine).ToList();\n                var normalItemsTypeLines = normalItems.Select(i => i.TypeLine).ToList();\n                mirroredItemsTypeLines.Should().BeEquivalentTo(normalItemsTypeLines);\n\n                var mirroredItemsTypes = mirroredItems.Select(i => i.GetType()).ToList();\n                var normalItemsTypes = normalItems.Select(i => i.GetType()).ToList();\n                mirroredItemsTypes.Should().BeEquivalentTo(normalItemsTypes);\n            }\n        }\n\n        [TestMethod]\n        public void GetSynthesisedItemsStashTest()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStashWithSynthesisItems);\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, string.Empty, string.Empty, Realm.PC, false)).Returns(stream);\n                var stash = _model.GetStash(0, string.Empty, string.Empty, Realm.PC);\n                stash.Should().NotBeNull();\n                stash.Tabs.Should().HaveCount(1);\n\n                var items = stash.GetItemsByTab(1);\n                items.Should().NotBeNull();\n                items.Should().HaveCount(2);\n\n                var synthesisedItems = items.Where(i => i.Synthesised).ToList();\n                synthesisedItems.Should().HaveCount(1);\n\n                var synthesisedItemTypeLine = synthesisedItems[0].TypeLine;\n                synthesisedItemTypeLine.Should().NotStartWith(\"Synthesised\");\n                synthesisedItemTypeLine.Should().Contain(\" Synthesised \");\n\n                var synthesisedGear = synthesisedItems[0] as Gear;\n                synthesisedGear.Should().NotBeNull();\n                var synthesisedItemImplicitMods = synthesisedGear.Implicitmods;\n                synthesisedItemImplicitMods.Should().HaveCount(1);\n                synthesisedItemImplicitMods[0].Should().Be(\"Socketed Gems have 10% reduced Mana Reservation\");\n                synthesisedGear.Explicitmods.Should().BeNullOrEmpty();\n                synthesisedGear.FracturedMods.Should().BeNullOrEmpty();\n\n                var fracturedItems = items.Where(i => i.Fractured).ToList();\n                fracturedItems.Should().HaveCount(1);\n                fracturedItems[0].TypeLine.Should().Be(\"Leather Belt\");\n\n                var fracturedGear = fracturedItems[0] as Gear;\n                fracturedGear.Should().NotBeNull();\n                var fracturedGearFracturedMods = fracturedGear.FracturedMods;\n                fracturedGearFracturedMods.Should().HaveCount(2);\n                fracturedGearFracturedMods.Should().Contain(\n                    new List<string>{ \"+40 to maximum Energy Shield\", \"+42% to Cold Resistance\" });\n\n                synthesisedItems[0].TypeLine.Should().NotBe(fracturedItems[0].TypeLine);\n            }\n        }\n\n        [TestMethod]\n        public void IsScarabDetected()\n        {\n            string fakeStashInfo = Encoding.UTF8.GetString(Files.SampleStashWithScarab);\n\n            using (var stream = GenerateStreamFromString(fakeStashInfo))\n            {\n                _mockTransport.Setup(m => m.GetStash(0, \"\", \"\", Realm.PC, false)).Returns(stream);\n\n                var stash = _model.GetStash(0, \"\", \"\", Realm.PC);\n\n                Assert.IsNotNull(stash);\n                var scarab = stash.GetItemsByTab(1).OfType<Scarab>()\n                            .First(x => x.ScarabRank == ScarabRank.Gilded && x.ScarabEffect == ScarabEffect.Breach);\n\n                Assert.IsNotNull(scarab);\n                \n                Assert.AreEqual(ScarabRank.Gilded, scarab.ScarabRank);\n                Assert.AreEqual(ScarabEffect.Breach, scarab.ScarabEffect);\n            }\n        }\n\n        [TestMethod]\n        public void GetInventoryWithQuestItemsTest()\n        {\n            string fakeCharacterInfo = Encoding.UTF8.GetString(Files.SampleInventoryWithQuestItems);\n\n            using (var stream = GenerateStreamFromString(fakeCharacterInfo))\n            {\n                _mockTransport.Setup(m => m.GetInventory(\"\", false, \"\", Realm.PC)).Returns(stream);\n\n                var inventory = _model.GetInventory(\"\", false, \"\", Realm.PC);\n\n                Assert.IsNotNull(inventory);\n\n                Assert.AreEqual(2, inventory.Count);\n                Assert.AreEqual(true, inventory.All(x => x is QuestItem));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/POEApi.Model.Tests/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"POEApi.Model.Tests\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"POEApi.Model.Tests\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2016\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"52a5b321-3aa1-4a9d-b6dd-93dc7df7c742\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleCharacter.json",
    "content": "[{\n\t\"name\": \"TFizzle\",\n\t\"league\": \"Standard\",\n\t\"classId\": 4,\n\t\"class\": \"Duelist\",\n\t\"level\": 53\n},\n{\n\t\"name\": \"Tyerael\",\n\t\"league\": \"Talisman\",\n\t\"classId\": 3,\n\t\"class\": \"Witch\",\n\t\"level\": 80\n},\n{\n\t\"name\": \"Ayarfe\",\n\t\"league\": \"Standard\",\n\t\"classId\": 6,\n\t\"class\": \"Shadow\",\n\t\"level\": 18\n},\n{\n\t\"name\": \"Sabibna\",\n\t\"league\": \"Standard\",\n\t\"classId\": 2,\n\t\"class\": \"Ranger\",\n\t\"level\": 80\n},\n{\n\t\"name\": \"DragonSlave\",\n\t\"league\": \"Standard\",\n\t\"classId\": 3,\n\t\"class\": \"Witch\",\n\t\"level\": 79\n}]"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleCharacterExpiredName.json",
    "content": "﻿[\n  {\n    \"name\": \"Kyle\",\n    \"league\": \"Standard\",\n    \"classId\": 2,\n    \"class\": \"Ranger\",\n    \"level\": 24,\n    \"expired\": true\n  },\n  {\n    \"name\": \"Jon\",\n    \"league\": \"Standard\",\n    \"classId\": 3,\n    \"class\": \"Witch\",\n    \"level\": 63,\n    \"expired\": true\n  }\n]"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleCurrencyTabWithShards.json",
    "content": "{\n\t\"numTabs\": 26,\n\t\"tabs\": [{\n\t\t\"n\": \"\\u00a3\",\n\t\t\"i\": 0,\n\t\t\"id\": \"7f660cd09b22c160be4d87bad8b1ec68fcbff20d54ba1155520848c395cc9eae\",\n\t\t\"type\": \"CurrencyStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": true,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Cards\",\n\t\t\"i\": 1,\n\t\t\"id\": \"50af5b5664673202e176561179a0dcf34deeadb705203e924ed3b7afa6fc92fe\",\n\t\t\"type\": \"DivinationCardStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 0,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/7baaab4c91\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/c6786cda39\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/997b161859\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"EssEncEs\",\n\t\t\"i\": 2,\n\t\t\"id\": \"29a4daf241fdcf6faf72eac73c274f4699a09a40c0f1843a9e34bb87f10f4d17\",\n\t\t\"type\": \"EssenceStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Blue\",\n\t\t\"i\": 3,\n\t\t\"id\": \"fbba8e0871a392f64ed2c78b68429dd7238955a1cd5221ecd4facc695f6af43e\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 0,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/7baaab4c91\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/c6786cda39\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/997b161859\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Green\",\n\t\t\"i\": 4,\n\t\t\"id\": \"6736d5dbe91782c6d23d4e747be1b7d9e0bce92a239844d4c66b95d7d3588636\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Red\",\n\t\t\"i\": 5,\n\t\t\"id\": \"4412a291f296758d45d96aa7098caa473a0788e795527e2c2f93c847cf6da1f1\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/98a058fc32\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/edc7e2c501\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/42ff0bf3e8\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Sell\",\n\t\t\"i\": 6,\n\t\t\"id\": \"db32259be9c859e8eff4ab37f64308f88a35e832e805c8ce362715e581a96d10\",\n\t\t\"type\": \"QuadStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1\",\n\t\t\"i\": 7,\n\t\t\"id\": \"390c8b07159bd2ec401d5a76d01e5bd34d3bfb1ab3869d7f5ac8f86fa2df1226\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"2\",\n\t\t\"i\": 8,\n\t\t\"id\": \"5489b57494ba283487ec2f96bf0922bd7656b803480d81edacdeac5a375cab04\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"3\",\n\t\t\"i\": 9,\n\t\t\"id\": \"aee648154918ab32478e30848c368b69d6d05a0fa01bc20f0e33b431aef6a48a\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"4\",\n\t\t\"i\": 10,\n\t\t\"id\": \"56594344b41e28b88d7b463e84862a261fe9b3dbeeadbf7eb6036f3fcf5d20f3\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"5\",\n\t\t\"i\": 11,\n\t\t\"id\": \"ccd8c41342ceaa40f1ca1f69a9b2d27e69a49913c6e07ac26511512b96efe202\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"6\",\n\t\t\"i\": 12,\n\t\t\"id\": \"6a73fe06b52be1f773b9b0b41d9b02d7ab6eb0aeb32a64d3d3fb165374e0006c\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"7\",\n\t\t\"i\": 13,\n\t\t\"id\": \"eaf5bba6d72be7e8de6db049611557c9f3e98f0a1a5af41dddb27976a9195ba0\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"8\",\n\t\t\"i\": 14,\n\t\t\"id\": \"dc25397e0227c3b6af49a20991f3b3ba3b5891ec89d3389f421ef9d0acbcd7af\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"9\",\n\t\t\"i\": 15,\n\t\t\"id\": \"165e7a76e0ba6fa0892214d509acd58944ebf14fb853762c642bff06b4dde08d\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"10\",\n\t\t\"i\": 16,\n\t\t\"id\": \"5ae5cd4abd067cdff4e7c5d5e55098f9791f1c18d056d0f4a8e5d72b115af3e4\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"11\",\n\t\t\"i\": 17,\n\t\t\"id\": \"6ad6517f2b013fbffb202c3e3a2459ffb1bca4c9ef96e8365c5fd323d648f083\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"12\",\n\t\t\"i\": 18,\n\t\t\"id\": \"f619080a4f94a8e771594d4053ad4166cb98932daa060ced4ee8f3d24f369630\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"16\",\n\t\t\"i\": 19,\n\t\t\"id\": \"2e77cc15c3c2db01157285bacb57b631634545d2e4e5e21d48ead6c1e1677276\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"17\",\n\t\t\"i\": 20,\n\t\t\"id\": \"cc79ed8b17b622e2e49d5e0d3bde4d7d7f467c178d7f5b9cdd8b5af31687db62\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"18\",\n\t\t\"i\": 21,\n\t\t\"id\": \"73654693399d0311d79288766fdeb9da27209361c9f27508e5fee0a531ff10a4\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"19\",\n\t\t\"i\": 22,\n\t\t\"id\": \"eac06aa98e2e336611adb9a5d43259f1ca851a330c0e9f58c11f801d1f1bde69\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"20\",\n\t\t\"i\": 23,\n\t\t\"id\": \"c5e5a8af3a1a35b7b371c269286413ab458f2600613c4448ad8362568acb057c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"21\",\n\t\t\"i\": 24,\n\t\t\"id\": \"700cdc33315d5802bddbbe51bb97eaa9a79c256785e254ae8b7037f725db7d18\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"22\",\n\t\t\"i\": 25,\n\t\t\"id\": \"18e9367e1ac452bfd0e5e88ee2fc7170eb835154d8c8c0a1a2ef41051b4ed411\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t}],\n\t\"items\": [{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/ChaosShard.png?scale=1&stackSize=19&w=1&h=1&v=c206269aeda3a6a7b5a8ac110045afca3\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"48ac2507a054ba8cd71fc8cd9ec51f05394f2bcafb2a5649ea29fbefad5507a0\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chaos Shard\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"19\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"descrText\": \"A stack of 20 shards becomes a Chaos Orb.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 19,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 46,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeToRare.png?scale=1&stackSize=15&w=1&h=1&v=89c110be97333995522c7b2c29cae7283\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"abb551b0fe894ffe9ca815f68642e50585d2181ecb37f76a7f2f7b9fcb38c0f7\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alchemy\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"15\\/10\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to a rare item\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 15,\n\t\t\"maxStackSize\": 10,\n\t\t\"x\": 5,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/BindingOrb.png?scale=1&stackSize=1&w=1&h=1&v=6ee0528156592a01c2931262d024f8423\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"9448476fad38058ac8a26e30b7a5b37643deb1b7af714816e32486bddb68b773\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Binding\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to a rare item with up to four linked sockets\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 30,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/EngineersOrb.png?scale=1&stackSize=1&w=1&h=1&v=4b291fd7d6b9022a2d35b34c43c08e873\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"30129fb4ec357047a192dde61310a9b337d6ee69f02a14299ff4dff5c0e6e27a\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Engineer's Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Improves the quality of a Strongbox\"],\n\t\t\"descrText\": \"Right click this item then left click a Strongbox to apply it. Has greater effect on lower rarity Strongboxes. The maximum quality is 20%.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 31,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyAddModToMagic.png?scale=1&stackSize=22&w=1&h=1&v=97e63b85807f2419f4208482fd0b48593\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"2bcdad2aacfb722e60668585054b00382489a95b8ea4de3c639b000e81cf39bf\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Augmentation\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"22\\/30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Enchants a magic item with a new random property\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it. Magic items can have up to two random properties.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 22,\n\t\t\"maxStackSize\": 30,\n\t\t\"x\": 13,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=14&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"e97e022b19c65a4249efb7289a1cd065d631758668b53812f8b7c6c4227a86e0\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"14\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 14,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 9,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollRare.png?scale=1&stackSize=14&w=1&h=1&v=c60aa876dd6bab31174df91b1da1b4f93\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"bfeb82003db60d9cfc24916d5eb7b9bb47d1d10daf9449dce8826c80c4fa0f30\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chaos Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"14\\/10\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Reforges a rare item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a rare item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 14,\n\t\t\"maxStackSize\": 10,\n\t\t\"x\": 2,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketNumbers.png?scale=1&stackSize=6&w=1&h=1&v=2946b0825af70f796b8f15051d75164d3\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"54914f49d5196c8d89a46758b025b4427732379c3ed1a9a1fd2bc1d1455db105\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Jeweller's Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"6\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Reforges the number of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it. The item's quality increases the chances of obtaining more sockets.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 6,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 19,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/AnnullShard.png?scale=1&stackSize=3&w=1&h=1&v=502496c41d3da750bcecbb194d0aa3f43\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"aaf6c7819f78bf46a502d5818daa9fd98cb423c9b609f4f087812eecb4c2de8d\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Annulment Shard\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"3\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"descrText\": \"A stack of 20 shards becomes an Orb of Annulment.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 3,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 47,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeToRareShard.png?scale=1&stackSize=16&w=1&h=1&v=d8fb5f5edca4b67035081f1eb9955d803\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"61f54af4e88bc2f45fa7412edf4728616feeb3953482025487e20b030dd6ecf0\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Alchemy Shard\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"16\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"descrText\": \"A stack of 20 shards becomes an Orb of Alchemy.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 16,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 26,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeRandomly.png?scale=1&stackSize=5&w=1&h=1&v=e4049939b9cd61291562f94364ee0f003\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"7eb01f9a6936400fbcf75d8f1a52cfc89fe9d260c4e6b6413147619150ac7d13\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Chance\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"5\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to a random rarity\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 5,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 6,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketLinks.png?scale=1&stackSize=1&w=1&h=1&v=0ad7134a62e5c45e4f8bc8a44b95540f3\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"1ec982287501ff54bd9a2a935a75fe390c78272344650ed3565453231186e937\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Fusing\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Reforges the links between sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it. The item's quality increases the chances of obtaining more links.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 18,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyImplicitMod.png?scale=1&stackSize=1&w=1&h=1&v=472eeef04846d8a25d65b3d4f9ceecc83\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"7824e27072d437a5288f6bedbaadc4bf326e998b86dfbc7f5b80db83217003f9\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Blessed Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Randomises the numeric values of the implicit properties of an item\"],\n\t\t\"descrText\": \"Right click this item then left click another item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 21,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyConvertToNormal.png?scale=1&stackSize=1&w=1&h=1&v=15e3ef97f04a39ae284359309697ef7d3\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"0eb14eb5a519224ac56194e3bf5e93c38155a79052bae3471ccc7ff5e051ebcc\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Scouring\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Removes all properties from an item\"],\n\t\t\"descrText\": \"Right click this item then left click on a magic or rare item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 30,\n\t\t\"x\": 10,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeToMagicShard.png?scale=1&stackSize=12&w=1&h=1&v=764a2f94c7a77f06a56252299246af533\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"e63e85d4164c60afbb02101da949ccdb19a8c17ea53577cc8f565cfd3a87bc9f\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Transmutation Shard\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"12\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"descrText\": \"A stack of 20 shards becomes an Orb of Transmutation.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 12,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 24,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/AncientShard.png?scale=1&stackSize=3&w=1&h=1&v=e1eb08f64822576bd6d47029cd72d1a93\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"7b7f4ead8875309672a9e68e38c12b3fc0e16f6e61b0d4c4cb4d4ce45ffe44db\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Ancient Shard\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"3\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"descrText\": \"A stack of 20 shards becomes an Ancient Orb.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 3,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 48,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyIdentificationFragment.png?scale=1&stackSize=3&w=1&h=1&v=9d03025ab8229c652060781fb2f4b7f93\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"fc128a03a4c1177b168796bc39a3c1d808247dd8a741db16d300189ac0b34401\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Scroll Fragment\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"3\\/5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"descrText\": \"A stack of 5 fragments becomes a Scroll of Wisdom.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 3,\n\t\t\"maxStackSize\": 5,\n\t\t\"x\": 23,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/RegalShard.png?scale=1&stackSize=5&w=1&h=1&v=e10a1590d421e4305d8a19ff8c4d99483\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"b469407a72845b50a4b24773cd054d6e9e5c71154f2c6f130e6614ff9b7c3691\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Regal Shard\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"5\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"descrText\": \"A stack of 20 shards becomes a Regal Orb.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 5,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 45,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyFlaskQuality.png?scale=1&stackSize=2&w=1&h=1&v=ca8bd0dd43d2adf8b021578a398eb9de3\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"2c7a6b174ab108b37df47e859a343feeaeca9fe4f3ed138f25a9239792427422\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Glassblower's Bauble\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Improves the quality of a flask\"],\n\t\t\"descrText\": \"Right click this item then left click a flask to apply it. Has greater effect on lower rarity flasks. The maximum quality is 20%.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 15,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 46,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand4.png?scale=1&w=1&h=3&v=d232fe49263de98034381a39ae61d6753\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"e7824ff0e4fc3e1f34fb162ccd10d461bd53625c907eae56bacdeee13f84cd09\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Apocalypse Scratch\",\n\t\t\"typeLine\": \"Crystal Wand\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Wand\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"23-43\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"7.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"45\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"146\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"32% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"41% increased Spell Damage\",\n\t\t\"3% increased Cold Damage\",\n\t\t\"+5 Life gained for each Enemy hit by Attacks\",\n\t\t\"+9 Life gained on Kill\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 28,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyPassiveSkillRefund.png?scale=1&stackSize=1&w=1&h=1&v=1de687952ce56385b74ac450f97fcc333\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"176980f7343240c23495928d157af7cbf38c350bd1f25e89d71e96244b0aa463\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Regret\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Grants a passive skill refund point\"],\n\t\t\"descrText\": \"Right click on this item to use it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 40,\n\t\t\"x\": 7,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketColours.png?scale=1&stackSize=34&w=1&h=1&v=9d377f2cf04a16a39aac7b14abc9d7c33\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"a2529764f66048b6162ec1ad5c28af0a867cdff413bd25816003bcbfde7333ba\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chromatic Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"34\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Reforges the colour of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 34,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 17,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/BindingShard.png?scale=1&stackSize=9&w=1&h=1&v=b00f27dee8ad94d7f187133a09b872f93\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"83b2685d7e1e1a8c8197ed0babd980d1002162dfcbf24ff7cd00140c7f1afe24\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Binding Shard\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"9\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"descrText\": \"A stack of 20 shards becomes an Orb of Binding.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 9,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 44,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagicShard.png?scale=1&stackSize=4&w=1&h=1&v=937a56eea2dcf9b009ee8f61348187953\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"87027d82012c5200447e605e679370ebb1bd4a3330ff7185ac9f57974a5655cf\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Alteration Shard\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"4\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"descrText\": \"A stack of 20 shards becomes an Orb of Alteration.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 4,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 25,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/EngineersShard.png?scale=1&stackSize=8&w=1&h=1&v=8b69b76b1f42120f72cf7febb76b6a7a3\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"5abb580b1616ba2f44bac70f0ae582edd29b5f95d975034a2ce99aba982577b5\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Engineer's Shard\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"8\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"descrText\": \"A stack of 20 shards becomes an Engineer's Orb.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 8,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 41,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeToMagic.png?scale=1&stackSize=29&w=1&h=1&v=333b8b5e28b73c62972fc66e7634c5c83\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"2e3294a0b336ffdfa3cb28a39393696acf77b56d13312a9fbfb40b992f06ae30\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Transmutation\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"29\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to a magic item\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 29,\n\t\t\"maxStackSize\": 40,\n\t\t\"x\": 8,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyWeaponQuality.png?scale=1&stackSize=9&w=1&h=1&v=d2ce9167e23a74cef5d8465433e864823\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"288baf8933e3661e1c5367b37c17559b6c4238b218709e00f1bf236cec5e3306\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Blacksmith's Whetstone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"9\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Improves the quality of a weapon\"],\n\t\t\"descrText\": \"Right click this item then left click a weapon to apply it. Has greater effect on lower rarity weapons. The maximum quality is 20%.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 9,\n\t\t\"maxStackSize\": 20,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyArmourQuality.png?scale=1&stackSize=17&w=1&h=1&v=251e204e4ec325f75ce8ef75b2dfbeb83\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"8c26f0f3b35e127bef7e464e1413930c8c4a715c353f383e368d5fe347021229\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Armourer's Scrap\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"17\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Improves the quality of an armour\"],\n\t\t\"descrText\": \"Right click this item then left click an armour to apply it. Has greater effect on lower rarity armours. The maximum quality is 20%.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 17,\n\t\t\"maxStackSize\": 40,\n\t\t\"x\": 3,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/SilverObol.png?scale=1&stackSize=18&w=1&h=1&v=93c1b204ec2736a2fe5aabbb99510bcf3\",\n\t\t\"league\": \"Harbinger\",\n\t\t\"id\": \"4c18ace3b87513615ce7bed75c8f78e7f9d708c62d739a7157b8d99ff1ee96e3\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Silver Coin\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"18\\/30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"descrText\": \"Cross Navali's palm with silver to receive a prophecy.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 18,\n\t\t\"maxStackSize\": 30,\n\t\t\"x\": 35,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash1\",\n\t\t\"socketedItems\": []\n\t}],\n\t\"currencyLayout\": {\n\t\t\"0\": {\n\t\t\t\"x\": 244.6247464503043,\n\t\t\t\"y\": 24.34077079107505,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"1\": {\n\t\t\t\"x\": 91.88640973630832,\n\t\t\t\"y\": 24.34077079107505,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"2\": {\n\t\t\t\"x\": 430.22312373225157,\n\t\t\t\"y\": 105.88235294117648,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"3\": {\n\t\t\t\"x\": 306.69371196754565,\n\t\t\t\"y\": 24.34077079107505,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"4\": {\n\t\t\t\"x\": 291.48073022312377,\n\t\t\t\"y\": 134.48275862068968,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"5\": {\n\t\t\t\"x\": 368.15415821501017,\n\t\t\t\"y\": 105.88235294117648,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"6\": {\n\t\t\t\"x\": 492.29208924949296,\n\t\t\t\"y\": 105.88235294117648,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"7\": {\n\t\t\t\"x\": 430.22312373225157,\n\t\t\t\"y\": 260.4462474645031,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"8\": {\n\t\t\t\"x\": 29.81744421906694,\n\t\t\t\"y\": 105.88235294117648,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"9\": {\n\t\t\t\"x\": 91.88640973630832,\n\t\t\t\"y\": 105.88235294117648,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"10\": {\n\t\t\t\"x\": 368.15415821501017,\n\t\t\t\"y\": 260.4462474645031,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"11\": {\n\t\t\t\"x\": 228.8032454361055,\n\t\t\t\"y\": 134.48275862068968,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"12\": {\n\t\t\t\"x\": 153.9553752535497,\n\t\t\t\"y\": 166.12576064908723,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"13\": {\n\t\t\t\"x\": 153.9553752535497,\n\t\t\t\"y\": 105.88235294117648,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"14\": {\n\t\t\t\"x\": 153.9553752535497,\n\t\t\t\"y\": 24.34077079107505,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"15\": {\n\t\t\t\"x\": 368.15415821501017,\n\t\t\t\"y\": 24.34077079107505,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"16\": {\n\t\t\t\"x\": 430.22312373225157,\n\t\t\t\"y\": 24.34077079107505,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"17\": {\n\t\t\t\"x\": 153.9553752535497,\n\t\t\t\"y\": 260.4462474645031,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"18\": {\n\t\t\t\"x\": 91.88640973630832,\n\t\t\t\"y\": 260.4462474645031,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"19\": {\n\t\t\t\"x\": 29.81744421906694,\n\t\t\t\"y\": 260.4462474645031,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"20\": {\n\t\t\t\"x\": 492.29208924949296,\n\t\t\t\"y\": 166.12576064908723,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"21\": {\n\t\t\t\"x\": 430.22312373225157,\n\t\t\t\"y\": 166.12576064908723,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"22\": {\n\t\t\t\"x\": 492.29208924949296,\n\t\t\t\"y\": 24.34077079107505,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"23\": {\n\t\t\t\"x\": 29.81744421906694,\n\t\t\t\"y\": 24.34077079107505,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"24\": {\n\t\t\t\"x\": 29.81744421906694,\n\t\t\t\"y\": 166.12576064908723,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"25\": {\n\t\t\t\"x\": 91.88640973630832,\n\t\t\t\"y\": 166.12576064908723,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"26\": {\n\t\t\t\"x\": 368.15415821501017,\n\t\t\t\"y\": 166.12576064908723,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"27\": {\n\t\t\t\"x\": 492.29208924949296,\n\t\t\t\"y\": 260.4462474645031,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"28\": {\n\t\t\t\"x\": 237.32251521298176,\n\t\t\t\"y\": 212.37322515212983,\n\t\t\t\"w\": 2,\n\t\t\t\"h\": 4\n\t\t},\n\t\t\"30\": {\n\t\t\t\"x\": 76.67342799188641,\n\t\t\t\"y\": 421.0953346855984,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"31\": {\n\t\t\t\"x\": 138.7423935091278,\n\t\t\t\"y\": 421.0953346855984,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"32\": {\n\t\t\t\"x\": 198.98580121703856,\n\t\t\t\"y\": 421.0953346855984,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"33\": {\n\t\t\t\"x\": 261.05476673427995,\n\t\t\t\"y\": 421.0953346855984,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"34\": {\n\t\t\t\"x\": 323.7322515212982,\n\t\t\t\"y\": 421.0953346855984,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"35\": {\n\t\t\t\"x\": 153.9553752535497,\n\t\t\t\"y\": 337.1196754563895,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"36\": {\n\t\t\t\"x\": 368.76267748478705,\n\t\t\t\"y\": 337.1196754563895,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"37\": {\n\t\t\t\"x\": 430.83164300202844,\n\t\t\t\"y\": 337.1196754563895,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"38\": {\n\t\t\t\"x\": 491.6835699797161,\n\t\t\t\"y\": 337.1196754563895,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"39\": {\n\t\t\t\"x\": 91.88640973630832,\n\t\t\t\"y\": 337.1196754563895,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"40\": {\n\t\t\t\"x\": 383.97565922920893,\n\t\t\t\"y\": 421.0953346855984,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"41\": {\n\t\t\t\"x\": 445.43610547667345,\n\t\t\t\"y\": 421.0953346855984,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"42\": {\n\t\t\t\"x\": 76.67342799188641,\n\t\t\t\"y\": 479.51318458417853,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"43\": {\n\t\t\t\"x\": 138.7423935091278,\n\t\t\t\"y\": 479.51318458417853,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"44\": {\n\t\t\t\"x\": 198.98580121703856,\n\t\t\t\"y\": 479.51318458417853,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"45\": {\n\t\t\t\"x\": 261.05476673427995,\n\t\t\t\"y\": 479.51318458417853,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"46\": {\n\t\t\t\"x\": 323.7322515212982,\n\t\t\t\"y\": 479.51318458417853,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"47\": {\n\t\t\t\"x\": 383.97565922920893,\n\t\t\t\"y\": 479.51318458417853,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t},\n\t\t\"48\": {\n\t\t\t\"x\": 445.43610547667345,\n\t\t\t\"y\": 479.51318458417853,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1\n\t\t}\n\t}\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleFragmentStash.json",
    "content": "{\n  \"numTabs\":98,\n  \"tabs\":[\n    {\n      \"n\":\"Fragments\",\n      \"i\":12,\n      \"id\":\"77a2c24f5bed0e75bf5f308eefafbf55fdb13e0ad80e9a753cd327336ac8dc22\",\n      \"type\":\"FragmentStash\",\n      \"hidden\":false,\n      \"selected\":true,\n      \"colour\":{\n        \"r\":90,\n        \"g\":0,\n        \"b\":179\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwODc4Nzk3fV1d\\/dfbbb0d5d7\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwODc4Nzk3fV1d\\/cd1781a8c2\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwODc4Nzk3fV1d\\/059f48f33a\\/Stash_TabR.png\"\n    }\n  ],\n  \"fragmentLayout\":[\n    {\n      \"x\":160.64908722109536,\n      \"y\":82.1501014198783,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":160.64908722109536,\n      \"y\":142.39350912778906,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":99.18864097363084,\n      \"y\":142.39350912778906,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":99.18864097363084,\n      \"y\":82.1501014198783,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":422.92089249492903,\n      \"y\":82.1501014198783,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":422.92089249492903,\n      \"y\":142.39350912778906,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":362.0689655172414,\n      \"y\":142.39350912778906,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":362.0689655172414,\n      \"y\":82.1501014198783,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":160.64908722109536,\n      \"y\":380.9330628803246,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":160.64908722109536,\n      \"y\":440.5679513184584,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":99.18864097363084,\n      \"y\":440.5679513184584,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":99.18864097363084,\n      \"y\":380.9330628803246,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":422.92089249492903,\n      \"y\":380.9330628803246,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":422.92089249492903,\n      \"y\":440.5679513184584,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":362.0689655172414,\n      \"y\":440.5679513184584,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":362.0689655172414,\n      \"y\":380.9330628803246,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":261.66328600405683,\n      \"y\":87.6267748478702,\n      \"w\":1,\n      \"h\":2\n    },\n    {\n      \"x\":261.66328600405683,\n      \"y\":231.237322515213,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":199.59432048681543,\n      \"y\":231.237322515213,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":322.51521298174447,\n      \"y\":231.237322515213,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":383.36713995943205,\n      \"y\":231.237322515213,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":138.7423935091278,\n      \"y\":231.237322515213,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":260.4462474645031,\n      \"y\":291.48073022312377,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":199.59432048681543,\n      \"y\":291.48073022312377,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":322.51521298174447,\n      \"y\":291.48073022312377,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":383.36713995943205,\n      \"y\":291.48073022312377,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":138.7423935091278,\n      \"y\":291.48073022312377,\n      \"w\":1,\n      \"h\":1\n    },\n    {\n      \"x\":261.05476673427995,\n      \"y\":410.14198782961466,\n      \"w\":1,\n      \"h\":1\n    }\n  ],\n  \"items\":[\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":1,\n      \"ilvl\":0,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal04.png?scale=1&scaleIndex=4&stackSize=10&w=1&h=1&v=72207b7e72a4ed4fafd3e72f7b0b2a93\",\n      \"league\":\"SSF Standard\",\n      \"id\":\"053f43bc0881e41d2b094f6d1fdce31beb9cdc04ffbfa21ed9db42cb09f1d4fb\",\n      \"name\":\"\",\n      \"typeLine\":\"Sacrifice at Dusk\",\n      \"identified\":true,\n      \"descrText\":\"Can be used in the Templar Laboratory or a personal Map Device.\",\n      \"flavourText\":[\n        \"The Vaal shall never fear the setting of our sun.\"\n      ],\n      \"frameType\":0,\n      \"stackSize\":10,\n      \"maxStackSize\":5000,\n      \"category\":{\n        \"maps\":[\n\n        ]\n      },\n      \"x\":3,\n      \"y\":0,\n      \"inventoryId\":\"Stash13\"\n    },\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":1,\n      \"ilvl\":0,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal03.png?scale=1&scaleIndex=4&stackSize=7&w=1&h=1&v=ba374d543316349b87de121039c3cc6f\",\n      \"league\":\"SSF Standard\",\n      \"id\":\"df0e7597e717c252beb2fc664b098f9339e3371f1156a26847463ceea865e891\",\n      \"name\":\"\",\n      \"typeLine\":\"Sacrifice at Noon\",\n      \"identified\":true,\n      \"descrText\":\"Can be used in the Templar Laboratory or a personal Map Device.\",\n      \"flavourText\":[\n        \"The light without pales in comparison to the light within.\"\n      ],\n      \"frameType\":0,\n      \"stackSize\":7,\n      \"maxStackSize\":5000,\n      \"category\":{\n        \"maps\":[\n\n        ]\n      },\n      \"x\":2,\n      \"y\":0,\n      \"inventoryId\":\"Stash13\"\n    },\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":1,\n      \"ilvl\":0,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Labyrinth.png?scale=1&scaleIndex=4&stackSize=6&w=1&h=1&v=ef005aef5d2f9135d6922f4b1b912f78\",\n      \"league\":\"SSF Standard\",\n      \"id\":\"253b5c7c6827aa7d1771c0a24d401379e6405692e91a520bbdec6d40f87c9bb8\",\n      \"name\":\"\",\n      \"typeLine\":\"Offering to the Goddess\",\n      \"identified\":true,\n      \"descrText\":\"Travel to the Aspirants' Plaza and spend this item to open the Eternal Labyrinth. You must have completed the six different Trials of Ascendancy found in Maps in order to access this area.\",\n      \"flavourText\":[\n        \"It is time for the Goddess to give her final verdict.\\r\",\n        \"Your fate rests in her even hands.\"\n      ],\n      \"frameType\":0,\n      \"stackSize\":6,\n      \"maxStackSize\":5000,\n      \"category\":{\n        \"maps\":[\n\n        ]\n      },\n      \"x\":27,\n      \"y\":0,\n      \"inventoryId\":\"Stash13\"\n    },\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":1,\n      \"ilvl\":0,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal02.png?scale=1&scaleIndex=4&stackSize=11&w=1&h=1&v=3ead6455599ec6c303f54ba98d6f8eb2\",\n      \"league\":\"SSF Standard\",\n      \"id\":\"7af5678b666c719a021c436a459e0b70f1655da64b30f5e17f615d1d17b20ab7\",\n      \"name\":\"\",\n      \"typeLine\":\"Sacrifice at Dawn\",\n      \"identified\":true,\n      \"descrText\":\"Can be used in the Templar Laboratory or a personal Map Device.\",\n      \"flavourText\":[\n        \"Only those who aspire can dare to hope.\"\n      ],\n      \"frameType\":0,\n      \"stackSize\":11,\n      \"maxStackSize\":5000,\n      \"category\":{\n        \"maps\":[\n\n        ]\n      },\n      \"x\":1,\n      \"y\":0,\n      \"inventoryId\":\"Stash13\"\n    },\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":1,\n      \"ilvl\":0,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Breach\\/BreachShardCold.png?scale=1&scaleIndex=4&stackSize=8&w=1&h=1&v=4a7652d6ff5de2493d37768e993c9411\",\n      \"league\":\"SSF Standard\",\n      \"id\":\"d844294643ff1e6af41b5837c0675c1b3258bb50e0a38f7e33cfc7e3f77cda5f\",\n      \"name\":\"\",\n      \"typeLine\":\"Splinter of Tul\",\n      \"identified\":true,\n      \"properties\":[\n        {\n          \"name\":\"Stack Size\",\n          \"values\":[\n            [\n              \"8\\/100\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        }\n      ],\n      \"descrText\":\"Combine 100 splinters to create Tul's Breachstone.\",\n      \"frameType\":5,\n      \"stackSize\":8,\n      \"maxStackSize\":100,\n      \"category\":{\n        \"currency\":[\n\n        ]\n      },\n      \"x\":23,\n      \"y\":0,\n      \"inventoryId\":\"Stash13\"\n    },\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":1,\n      \"ilvl\":0,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Breach\\/BreachShardFire.png?scale=1&scaleIndex=4&stackSize=11&w=1&h=1&v=4635e0847323cf1d62c8b4e8101351bf\",\n      \"league\":\"SSF Standard\",\n      \"id\":\"f12b19cf2a70711abe05e24c44384fa3e8a66253d1295427477b5392900d96a0\",\n      \"name\":\"\",\n      \"typeLine\":\"Splinter of Xoph\",\n      \"identified\":true,\n      \"properties\":[\n        {\n          \"name\":\"Stack Size\",\n          \"values\":[\n            [\n              \"11\\/100\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        }\n      ],\n      \"descrText\":\"Combine 100 splinters to create Xoph's Breachstone.\",\n      \"frameType\":5,\n      \"stackSize\":11,\n      \"maxStackSize\":100,\n      \"category\":{\n        \"currency\":[\n\n        ]\n      },\n      \"x\":22,\n      \"y\":0,\n      \"inventoryId\":\"Stash13\"\n    },\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":1,\n      \"ilvl\":0,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Breach\\/BreachShardLightning.png?scale=1&scaleIndex=4&stackSize=17&w=1&h=1&v=11cd23560f7aa0dda27cc323fa97cb96\",\n      \"league\":\"SSF Standard\",\n      \"id\":\"45a7fc66d4d9cee987080537a82312be2f781ed947fb20bd316f1bb70c2bd0e0\",\n      \"name\":\"\",\n      \"typeLine\":\"Splinter of Esh\",\n      \"identified\":true,\n      \"properties\":[\n        {\n          \"name\":\"Stack Size\",\n          \"values\":[\n            [\n              \"17\\/100\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        }\n      ],\n      \"descrText\":\"Combine 100 splinters to create Esh's Breachstone.\",\n      \"frameType\":5,\n      \"stackSize\":17,\n      \"maxStackSize\":100,\n      \"category\":{\n        \"currency\":[\n\n        ]\n      },\n      \"x\":24,\n      \"y\":0,\n      \"inventoryId\":\"Stash13\"\n    },\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":1,\n      \"ilvl\":0,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Breach\\/BreachShardChaos.png?scale=1&scaleIndex=4&stackSize=4&w=1&h=1&v=2c18cbe5384375bbe4643cd8b83ea32d\",\n      \"league\":\"SSF Standard\",\n      \"id\":\"658559b5f834a79aee04913179bef1d6fbcb761ad67b4fec3ba64dbf27eed1ba\",\n      \"name\":\"\",\n      \"typeLine\":\"Splinter of Chayula\",\n      \"identified\":true,\n      \"properties\":[\n        {\n          \"name\":\"Stack Size\",\n          \"values\":[\n            [\n              \"4\\/100\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        }\n      ],\n      \"descrText\":\"Combine 100 splinters to create Chayula's Breachstone.\",\n      \"frameType\":5,\n      \"stackSize\":4,\n      \"maxStackSize\":100,\n      \"category\":{\n        \"currency\":[\n\n        ]\n      },\n      \"x\":26,\n      \"y\":0,\n      \"inventoryId\":\"Stash13\"\n    },\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":2,\n      \"ilvl\":0,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/SinFlaskEmpty.png?scale=1&scaleIndex=4&stackSize=1&w=1&h=2&v=8b9f566d35bc00387e43f8ec4eefad31\",\n      \"league\":\"SSF Standard\",\n      \"id\":\"4451ae0f9c8190699d435363d183864ea764bf51d74dd9ff0995ad6d0f53a81f\",\n      \"name\":\"\",\n      \"typeLine\":\"Divine Vessel\",\n      \"identified\":true,\n      \"explicitMods\":[\n        \"Unique Boss deals 10% increased Damage\\r\\nUnique Boss has 10% increased Attack and Cast Speed\\r\\nUnique Boss has 10% increased Life\\r\\nUnique Boss has 20% increased Area of Effect\"\n      ],\n      \"descrText\":\"Can be used in the Templar Laboratory or a personal Map Device, allowing you to capture the Soul of the Map's Boss. The Vessel containing the captured Soul can be retrieved from the Map Device. You must be in the Map when the boss is defeated.\",\n      \"flavourText\":[\n        \"Power is a curious thing. \\r\",\n        \"It can be contained, hidden, locked away, \\r\",\n        \"and yet it always breaks free.\"\n      ],\n      \"frameType\":0,\n      \"stackSize\":1,\n      \"maxStackSize\":5000,\n      \"category\":{\n        \"maps\":[\n\n        ]\n      },\n      \"x\":16,\n      \"y\":0,\n      \"inventoryId\":\"Stash13\"\n    }\n  ]\n}\n"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleInventory.json",
    "content": "{\n\t\"items\": [{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyPortal.png?scale=1&stackSize=38&w=1&h=1&v=728696ea10d4fb1e789039debc5d8c3c3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Portal Scroll\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"38\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Creates a portal to town\"],\n\t\t\"descrText\": \"Right click on this item to use it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"MainInventory\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"icon\": \"\\/gen\\/image\\/YTozOntpOjI7YTozOntz\\/OjE6ImYiO3M6MzA6IkFy\\/dC8yREl0ZW1zL0ZsYXNr\\/cy9saWZlZmxhc2sxMCI7\\/czoyOiJzcCI7ZDowLjYw\\/ODUxOTI2OTc3Njg3NjMx\\/NDgxNDcyODYzMDE1MzY5\\/NTEyMTQwNzUwODg1MDA5\\/NzY1NjI1O3M6NToibGV2\\/ZWwiO2k6MTt9aToxO2k6\\/NDtpOjA7aTo5O30,\\/3afd394f30\\/Item.png\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Panicked Divine Life Flask of Staunching\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+6%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Recovers %0 Life over %1 Seconds\",\n\t\t\t\"values\": [[\"1908\",\n\t\t\t1],\n\t\t\t[\"7.00\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"15\",\n\t\t\t0],\n\t\t\t[\"45\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"45\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"60\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"25% reduced Amount Recovered\",\n\t\t\"Instant Recovery when on Low Life\",\n\t\t\"Immunity to Bleeding during Flask effect\",\n\t\t\"Removes Bleeding on use\"],\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 1,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Flask\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyIdentification.png?scale=1&stackSize=34&w=1&h=1&v=1b9b38c45be95c59d8900f91b2afd58b3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Scroll of Wisdom\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"34\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Identifies an item\"],\n\t\t\"descrText\": \"Right click this item then left click an unidentified item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"MainInventory\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"icon\": \"\\/gen\\/image\\/YTozOntpOjI7YTozOntz\\/OjE6ImYiO3M6MzA6IkFy\\/dC8yREl0ZW1zL0ZsYXNr\\/cy9saWZlZmxhc2sxMSI7\\/czoyOiJzcCI7ZDowLjYw\\/ODUxOTI2OTc3Njg3NjMx\\/NDgxNDcyODYzMDE1MzY5\\/NTEyMTQwNzUwODg1MDA5\\/NzY1NjI1O3M6NToibGV2\\/ZWwiO2k6MTt9aToxO2k6\\/NDtpOjA7aTo5O30,\\/3a8da865e1\\/Item.png\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Surgeon's Eternal Life Flask of Heat\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+13%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Recovers %0 Life over %1 Seconds\",\n\t\t\t\"values\": [[\"2350\",\n\t\t\t1],\n\t\t\t[\"4.00\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"15\",\n\t\t\t0],\n\t\t\t[\"45\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"45\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"65\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"20% chance to gain a Flask Charge when you deal a Critical Strike\",\n\t\t\"Immunity to Freeze and Chill during Flask effect\",\n\t\t\"Removes Freeze and Chill on use\"],\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Flask\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyFlaskQuality.png?scale=1&stackSize=1&w=1&h=1&v=ca8bd0dd43d2adf8b021578a398eb9de3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Glassblower's Bauble\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of a flask\"],\n\t\t\"descrText\": \"Right click this item then left click a flask to apply it. Has greater effect on lower rarity flasks. The maximum quality is 20%.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"MainInventory\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/OneHandMaces\\/OneHandMace7.png?scale=1&w=2&h=3&v=daba395e39ccdbb516aff2e4db5eebbf3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 1,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Ornate Mace of the Salamander\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"One Handed Mace\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"42-53\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"5.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"50\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"161\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"40% increased Stun Duration on Enemies\"],\n\t\t\"explicitMods\": [\"+13% to Fire Resistance\"],\n\t\t\"frameType\": 1,\n\t\t\"x\": 1,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"MainInventory\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"icon\": \"\\/gen\\/image\\/YTozOntpOjI7YTozOntz\\/OjE6ImYiO3M6Mjk6IkFy\\/dC8yREl0ZW1zL0ZsYXNr\\/cy9tYW5hZmxhc2s5Ijtz\\/OjI6InNwIjtkOjAuNjA4\\/NTE5MjY5Nzc2ODc2MzE0\\/ODE0NzI4NjMwMTUzNjk1\\/MTIxNDA3NTA4ODUwMDk3\\/NjU2MjU7czo1OiJsZXZl\\/bCI7aToxO31pOjE7aTo0\\/O2k6MDtpOjk7fQ,,\\/b70acc8cc0\\/Item.png\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Perpetual Sanctified Mana Flask of Iron Skin\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+6%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Recovers %0 Mana over %1 Seconds\",\n\t\t\t\"values\": [[\"1113\",\n\t\t\t1],\n\t\t\t[\"14.00\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"10\",\n\t\t\t0],\n\t\t\t[\"40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"50\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"32% increased Charge Recovery\",\n\t\t\"99% increased Armour during Flask effect\"],\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 2,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Flask\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"icon\": \"\\/gen\\/image\\/YTozOntpOjI7YTozOntz\\/OjE6ImYiO3M6MjU6IkFy\\/dC8yREl0ZW1zL0ZsYXNr\\/cy9zcHJpbnQiO3M6Mjoi\\/c3AiO2Q6MC42MDg1MTky\\/Njk3NzY4NzYzMTQ4MTQ3\\/Mjg2MzAxNTM2OTUxMjE0\\/MDc1MDg4NTAwOTc2NTYy\\/NTtzOjU6ImxldmVsIjtp\\/OjE7fWk6MTtpOjQ7aTow\\/O2k6OTt9\\/6446837133\\/Item.png\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Surgeon's Quicksilver Flask of Grounding\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Lasts %0 Seconds\",\n\t\t\t\"values\": [[\"5.00\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"20\",\n\t\t\t0],\n\t\t\t[\"50\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"50\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"\",\n\t\t\t\"values\": [[\"40% increased Movement Speed\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"8\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"20% chance to gain a Flask Charge when you deal a Critical Strike\",\n\t\t\"Immunity to Shock during Flask effect\",\n\t\t\"Removes Shock on use\"],\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 4,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Flask\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Daggers\\/Dagger6.png?scale=1&w=1&h=3&v=da5d507310ebbf4e2c7d2db037af14ca3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Gale Sever\",\n\t\t\"typeLine\": \"Platinum Kris\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Dagger\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"20-81\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"7.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"68\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"76\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"151\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"80% increased Global Critical Strike Chance\"],\n\t\t\"explicitMods\": [\"21% increased Spell Damage\",\n\t\t\"95% increased Critical Strike Chance for Spells\",\n\t\t\"23% increased Global Critical Strike Multiplier\",\n\t\t\"+17 to maximum Mana\",\n\t\t\"+18% to Fire Resistance\"],\n\t\t\"craftedMods\": [\"40% increased Spell Damage\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Weapon\",\n\t\t\"socketedItems\": [{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/VaalGems\\/VaalClarity.png?scale=1&w=1&h=1&v=51c020207cf08d7c4e442c494d93458e3\",\n\t\t\t\"support\": false,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Vaal Clarity\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": true,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Aura, Vaal, Spell, AoE, Duration\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"19\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Cost\",\n\t\t\t\t\"values\": [[\"0\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Souls Per Use\",\n\t\t\t\t\"values\": [[\"16\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Can Store %0 Use\",\n\t\t\t\t\"values\": [[\"1\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 3\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Cast Time\",\n\t\t\t\t\"values\": [[\"0.60 sec\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"170657865\\/212051599\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 0.804794073105\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"68\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Int\",\n\t\t\t\t\"values\": [[\"151\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"secDescrText\": \"Casts a temporary aura that lets you and your allies cast skills without paying their mana costs.\",\n\t\t\t\"explicitMods\": [\"Base duration is 9.80 seconds\",\n\t\t\t\"39% increased Area of Effect radius\",\n\t\t\t\"Your and nearby allies' Skills Cost no Mana\"],\n\t\t\t\"descrText\": \"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 0,\n\t\t\t\"colour\": \"I\",\n\t\t\t\"socketedItems\": []\n\t\t}]\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Armours\\/Boots\\/BootsStrDex2.png?scale=1&w=2&h=2&v=bdfb39d9a0b60c4ac542bedd8ff06e083\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Sorrow Tread\",\n\t\t\"typeLine\": \"Serpentscale Boots\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+20%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"79\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Evasion Rating\",\n\t\t\t\"values\": [[\"79\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"64\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"102\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"99\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"61\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"+42 to Dexterity\",\n\t\t\"+43% to Fire Resistance\",\n\t\t\"+42% to Cold Resistance\",\n\t\t\"30% increased Movement Speed\"],\n\t\t\"craftedMods\": [\"+45 to maximum Life\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Boots\",\n\t\t\"socketedItems\": [{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/Support\\/BloodMagic.png?scale=1&w=1&h=1&v=cddb11c579c3422bd85a7c989dc60cbc3\",\n\t\t\t\"support\": true,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Blood Magic\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Support\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"17\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Multiplier\",\n\t\t\t\t\"values\": [[\"203%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"1\\/25964218\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 3.85145426662e-8\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"64\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Str\",\n\t\t\t\t\"values\": [[\"102\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"explicitMods\": [\"Spend Life instead of Mana for Supported Skills\"],\n\t\t\t\"descrText\": \"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Active Skill Gem you wish to augment. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 0,\n\t\t\t\"colour\": \"S\",\n\t\t\t\"socketedItems\": []\n\t\t},\n\t\t{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/Support\\/FasterAttacks.png?scale=1&w=1&h=1&v=c14203f7b19650861907a30a92e3b6fe3\",\n\t\t\t\"support\": true,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Faster Attacks\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Attack, Support\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"16\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Multiplier\",\n\t\t\t\t\"values\": [[\"115%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"14574074\\/15256013\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 0.955300331116\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"62\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Dex\",\n\t\t\t\t\"values\": [[\"99\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"explicitMods\": [\"40% increased Attack Speed\"],\n\t\t\t\"descrText\": \"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Active Skill Gem you wish to augment. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 1,\n\t\t\t\"colour\": \"D\",\n\t\t\t\"socketedItems\": []\n\t\t},\n\t\t{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/Support\\/FortifyGem.png?scale=1&w=1&h=1&v=6a69853aaf7278667bde43531541ef7d3\",\n\t\t\t\"support\": true,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Fortify\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Attack, Support, Melee\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"16\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Multiplier\",\n\t\t\t\t\"values\": [[\"110%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"15017240\\/15058455\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 0.997263014317\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"62\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Str\",\n\t\t\t\t\"values\": [[\"99\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"explicitMods\": [\"40% increased Melee Physical Damage\",\n\t\t\t\"Grants Fortify on Melee hit\",\n\t\t\t\"25% increased Fortify duration\"],\n\t\t\t\"descrText\": \"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Active Skill Gem you wish to augment. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 2,\n\t\t\t\"colour\": \"S\",\n\t\t\t\"socketedItems\": []\n\t\t},\n\t\t{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/WhirlingBlades.png?scale=1&w=1&h=1&v=e45604e808bc98f512fd4818265cdd7a3\",\n\t\t\t\"support\": false,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Whirling Blades\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Attack, Movement, Melee\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"17\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Cost\",\n\t\t\t\t\"values\": [[\"15\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"2202291\\/29817117\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 0.0738599598408\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"63\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Dex\",\n\t\t\t\t\"values\": [[\"88\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Int\",\n\t\t\t\t\"values\": [[\"61\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"secDescrText\": \"Dive through enemies, dealing weapon damage. Only works with daggers, claws and one handed swords.\",\n\t\t\t\"explicitMods\": [\"Deals 96% of Base Attack Damage\"],\n\t\t\t\"descrText\": \"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 3,\n\t\t\t\"colour\": \"D\",\n\t\t\t\"socketedItems\": []\n\t\t}]\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Rings\\/Cherufe.png?scale=1&w=1&h=1&v=dd9b8521bfd1c76751ecd8ffd5d0d5d43\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Pyre\",\n\t\t\"typeLine\": \"Sapphire Ring\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"11\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"+28% to Cold Resistance\"],\n\t\t\"explicitMods\": [\"+29% to Fire Resistance\",\n\t\t\"35% increased Burning Damage\",\n\t\t\"100% of Cold Damage Converted to Fire Damage\",\n\t\t\"10% increased Light Radius\",\n\t\t\"Ignited Enemies you hit are destroyed on Kill\"],\n\t\t\"flavourText\": [\"Let winter come. It will only make my fire burn brighter.\"],\n\t\t\"frameType\": 3,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Ring\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyStrInt3C.png?scale=1&w=2&h=3&v=bbdf9f67046cb1f1c0311066d0f7fada3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Rune Ward\",\n\t\t\"typeLine\": \"Devout Chainmail\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+20%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"359\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"105\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"68\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"105\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"142\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"+79 to maximum Life\",\n\t\t\"+34% to Fire Resistance\",\n\t\t\"+39% to Cold Resistance\",\n\t\t\"+33% to Lightning Resistance\"],\n\t\t\"craftedMods\": [\"47% increased Armour and Energy Shield\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"BodyArmour\",\n\t\t\"socketedItems\": [{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/Support\\/FirePenetration.png?scale=1&w=1&h=1&v=71763309c9c93e038fdf49738e121e443\",\n\t\t\t\"support\": true,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Fire Penetration\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Fire, Support\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"18\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Multiplier\",\n\t\t\t\t\"values\": [[\"140%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"32066346\\/62460771\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 0.513383746147\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"66\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Str\",\n\t\t\t\t\"values\": [[\"105\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"explicitMods\": [\"Penetrates 35% Fire Resistance\"],\n\t\t\t\"descrText\": \"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Active Skill Gem you wish to augment. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 0,\n\t\t\t\"colour\": \"S\",\n\t\t\t\"socketedItems\": []\n\t\t},\n\t\t{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/Support\\/FasterCast.png?scale=1&w=1&h=1&v=f70e30cd3755d11a81103b70957e579c3\",\n\t\t\t\"support\": true,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Faster Casting\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Support, Spell\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"18\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Multiplier\",\n\t\t\t\t\"values\": [[\"120%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"32473882\\/62855887\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 0.516640245914\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"66\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Int\",\n\t\t\t\t\"values\": [[\"105\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"explicitMods\": [\"37% increased Cast Speed\"],\n\t\t\t\"descrText\": \"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Active Skill Gem you wish to augment. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 1,\n\t\t\t\"colour\": \"I\",\n\t\t\t\"socketedItems\": []\n\t\t},\n\t\t{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/Support\\/Echo.png?scale=1&w=1&h=1&v=8c687a9247eff1393e4fe35d69838f723\",\n\t\t\t\"support\": true,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Spell Echo\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Spell, Support\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"18\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Multiplier\",\n\t\t\t\t\"values\": [[\"140%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"6192156\\/86794448\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 0.0713427662849\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"68\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Int\",\n\t\t\t\t\"values\": [[\"108\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"explicitMods\": [\"10% less Damage\",\n\t\t\t\"Supported Spells Repeat an additional time\",\n\t\t\t\"68% more Cast Speed\"],\n\t\t\t\"descrText\": \"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Active Skill Gem you wish to augment. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 2,\n\t\t\t\"colour\": \"I\",\n\t\t\t\"socketedItems\": []\n\t\t},\n\t\t{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/Upheaval.png?scale=1&w=1&h=1&v=685973091bb9c51c51c28d8bba0265313\",\n\t\t\t\"support\": false,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Glacial Cascade\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Spell, AoE, Cold\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"17\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Cost\",\n\t\t\t\t\"values\": [[\"24\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Cast Time\",\n\t\t\t\t\"values\": [[\"0.80 sec\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\t\"values\": [[\"5.00%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Damage Effectiveness\",\n\t\t\t\t\"values\": [[\"60%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"15260674\\/26083825\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 0.585062742233\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"64\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Int\",\n\t\t\t\t\"values\": [[\"142\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"secDescrText\": \"Icicles emerge from the ground in a series of small bursts, each damaging enemies caught in the area.\",\n\t\t\t\"explicitMods\": [\"Deals 83-127 Physical Damage\",\n\t\t\t\"Deals 153-231 Cold Damage\"],\n\t\t\t\"descrText\": \"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 3,\n\t\t\t\"colour\": \"I\",\n\t\t\t\"socketedItems\": []\n\t\t},\n\t\t{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/Support\\/IncreasedCriticalDamage.png?scale=1&w=1&h=1&v=c801d0c87dd88240ef6ce72d631996eb3\",\n\t\t\t\"support\": true,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Increased Critical Damage\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Support\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"16\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Multiplier\",\n\t\t\t\t\"values\": [[\"130%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"14574074\\/15256013\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 0.955300331116\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"62\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Int\",\n\t\t\t\t\"values\": [[\"99\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"explicitMods\": [\"65% increased Critical Strike Multiplier\"],\n\t\t\t\"descrText\": \"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Active Skill Gem you wish to augment. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 4,\n\t\t\t\"colour\": \"I\",\n\t\t\t\"socketedItems\": []\n\t\t}]\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"icon\": \"\\/gen\\/image\\/YTozOntpOjI7YTozOntz\\/OjE6ImYiO3M6MzM6IkFy\\/dC8yREl0ZW1zL0ZsYXNr\\/cy9BdHppcmlzUHJvbWlz\\/ZSI7czoyOiJzcCI7ZDow\\/LjYwODUxOTI2OTc3Njg3\\/NjMxNDgxNDcyODYzMDE1\\/MzY5NTEyMTQwNzUwODg1\\/MDA5NzY1NjI1O3M6NToi\\/bGV2ZWwiO2k6MTt9aTox\\/O2k6NDtpOjA7aTo5O30,\\/50cfe4396b\\/Item.png\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Atziri's Promise\",\n\t\t\"typeLine\": \"Amethyst Flask\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+12%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Lasts %0 Seconds\",\n\t\t\t\"values\": [[\"3.90\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"30\",\n\t\t\t0],\n\t\t\t[\"60\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"60\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"\",\n\t\t\t\"values\": [[\"+35% to Chaos Resistance\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"68\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"2% of Chaos Damage Leeched as Life during Flask effect\",\n\t\t\"Gain 24% of Physical Damage as Extra Chaos Damage during effect\",\n\t\t\"Gain 14% of Elemental Damage as Extra Chaos Damage during effect\"],\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"flavourText\": [\"\\\"Death needs not your understanding. It needs only your loyalty.\\\" \\r\",\n\t\t\"- Atziri, Queen of the Vaal\"],\n\t\t\"frameType\": 3,\n\t\t\"x\": 3,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Flask\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Belts\\/BuckledBeltUnique2.png?scale=1&w=2&h=1&v=aae1ffa9f08a009d8da57b99f327ec033\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Gloom Tether\",\n\t\t\"typeLine\": \"Cloth Belt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"48\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"24% increased Stun Recovery\"],\n\t\t\"explicitMods\": [\"+306 to Armour\",\n\t\t\"+76 to maximum Life\",\n\t\t\"+21 to maximum Energy Shield\",\n\t\t\"+37% to Fire Resistance\",\n\t\t\"+23% to Lightning Resistance\",\n\t\t\"18% increased Stun Recovery\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Belt\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Rings\\/Ring7.png?scale=1&w=1&h=1&v=0d73ed3a0f503653328f2593bda615d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Corpse Finger\",\n\t\t\"typeLine\": \"Ruby Ring\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"59\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"+25% to Fire Resistance\"],\n\t\t\"explicitMods\": [\"+49 to Dexterity\",\n\t\t\"Adds 1-2 Cold Damage to Attacks\",\n\t\t\"+74 to Evasion Rating\",\n\t\t\"+67 to maximum Life\",\n\t\t\"+11% to all Elemental Resistances\",\n\t\t\"+43% to Cold Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Ring2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Amulets\\/NewTalisman.png?scale=1&w=1&h=1&v=ad5f0ea8fe142ed1e4c264661f29a8e63\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Hypnotic Choker\",\n\t\t\"typeLine\": \"Mandible Talisman\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"39\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 1,\n\t\t\"implicitMods\": [\"9% increased Attack and Cast Speed\"],\n\t\t\"explicitMods\": [\"12% increased Fire Damage\",\n\t\t\"13% increased Cast Speed\",\n\t\t\"+20 to maximum Energy Shield\",\n\t\t\"+34% to Lightning Resistance\"],\n\t\t\"flavourText\": [\"The First Ones hold us\\r\",\n\t\t\"between two sharpened blades.\\r\",\n\t\t\"That should we stray too far from the path,\\r\",\n\t\t\"we find ourselves severed.\\r\",\n\t\t\"- The Wolven King\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Amulet\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/FrostBite.png?scale=1&w=1&h=1&v=1db2b5b842a1e21fb7746e4642ca1fed3\",\n\t\t\"support\": false,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Frostbite\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Curse, Spell, AoE, Duration, Cold\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"1\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Mana Cost\",\n\t\t\t\"values\": [[\"24\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Cast Time\",\n\t\t\t\"values\": [[\"0.50 sec\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+7%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"additionalProperties\": [{\n\t\t\t\"name\": \"Experience\",\n\t\t\t\"values\": [[\"1\\/118383\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 2,\n\t\t\t\"progress\": 8.4471585069e-6\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"24\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"25\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"37\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"secDescrText\": \"Curses all targets in an area, making them less resistant to cold damage and giving them a chance to be frozen by cold damage.\",\n\t\t\"explicitMods\": [\"Base duration is 9.00 seconds\",\n\t\t\"Cursed enemies lose 25% Cold Resistance\",\n\t\t\"Cursed enemies have +10% chance to be Frozen by Cold Damage\",\n\t\t\"Freezes on Cursed enemies have 7% increased Duration\"],\n\t\t\"descrText\": \"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.\",\n\t\t\"frameType\": 4,\n\t\t\"x\": 0,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"MainInventory\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Maps\\/act4maps\\/Map56.png?scale=1&w=1&h=1&v=5f9600d4fbe23cf73066a35bd85cf4c93\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Museum Map\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Map Tier\",\n\t\t\t\"values\": [[\"3\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"descrText\": \"Travel to this Map by using it in the Eternal Laboratory or a personal Map Device. Maps can only be used once.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 6,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"MainInventory\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Armours\\/Gloves\\/Hellbringer.png?scale=1&w=2&h=2&v=c93c1cd81519577d1b894a7572dc7b083\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Voidbringer\",\n\t\t\"typeLine\": \"Conjurer Gloves\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+20%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"205\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"68\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"87\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"146\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"137% increased Critical Strike Chance for Spells\",\n\t\t\"325% increased Energy Shield\",\n\t\t\"80% increased Mana Cost of Skills\",\n\t\t\"+18 Energy Shield gained on Kill\",\n\t\t\"+1 to Level of Socketed Elemental Gems\"],\n\t\t\"flavourText\": [\"Absolute corruption empowers absolutely.\"],\n\t\t\"frameType\": 3,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Gloves\",\n\t\t\"socketedItems\": [{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/HeraldofThunder.png?scale=1&w=1&h=1&v=334856ac3e03a246ce284e3f56e3b20a3\",\n\t\t\t\"support\": false,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Herald of Thunder\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Cast, AoE, Duration, Lightning\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"18\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Reserved\",\n\t\t\t\t\"values\": [[\"25%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Cooldown Time\",\n\t\t\t\t\"values\": [[\"1.00 sec\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Cast Time\",\n\t\t\t\t\"values\": [[\"1.00 sec\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Damage Effectiveness\",\n\t\t\t\t\"values\": [[\"120%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"32948499\\/62872274\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 0.524054527283\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"66\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Int\",\n\t\t\t\t\"values\": [[\"146\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"secDescrText\": \"Channel lightning through your hands, adding lightning damage to spells and attacks. If you kill a shocked enemy, lightning bolts will strike enemies around you for a short duration.\",\n\t\t\t\"explicitMods\": [\"Deals 21-1026 Lightning Damage\",\n\t\t\t\"Cannot apply Shock\",\n\t\t\t\"Base duration is 6.00 seconds\",\n\t\t\t\"Adds 16-66 Lightning Damage to Spells\",\n\t\t\t\"Adds 16-66 Lightning Damage to Attacks\"],\n\t\t\t\"descrText\": \"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 0,\n\t\t\t\"colour\": \"I\",\n\t\t\t\"socketedItems\": []\n\t\t},\n\t\t{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/HeraldofIce.png?scale=1&w=1&h=1&v=098e32bf010edc365f1ec453f3477bc73\",\n\t\t\t\"support\": false,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Herald of Ice\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Cast, AoE, Cold\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"16\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Reserved\",\n\t\t\t\t\"values\": [[\"25%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Cooldown Time\",\n\t\t\t\t\"values\": [[\"1.00 sec\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Cast Time\",\n\t\t\t\t\"values\": [[\"1.00 sec\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Damage Effectiveness\",\n\t\t\t\t\"values\": [[\"80%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Quality\",\n\t\t\t\t\"values\": [[\"+7%\",\n\t\t\t\t1]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"13239285\\/15264208\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 0.867341756821\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"62\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Dex\",\n\t\t\t\t\"values\": [[\"87\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Int\",\n\t\t\t\t\"values\": [[\"60\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"secDescrText\": \"Channel ice through your hands, adding cold damage to spells and attacks. If you shatter an enemy, they explode and deal AoE cold damage to enemies near them.\",\n\t\t\t\"explicitMods\": [\"Deals 214-321 Cold Damage\",\n\t\t\t\"Damage cannot be Reflected\",\n\t\t\t\"Adds 28-42 Cold Damage to Spells\",\n\t\t\t\"Adds 28-42 Cold Damage to Attacks\",\n\t\t\t\"5% increased Cold Damage\"],\n\t\t\t\"descrText\": \"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 1,\n\t\t\t\"colour\": \"D\",\n\t\t\t\"socketedItems\": []\n\t\t},\n\t\t{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/AssassinsMark.png?scale=1&w=1&h=1&v=8c4b5e92ec890630d572e4f48d930ca23\",\n\t\t\t\"support\": false,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Assassin's Mark\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Curse, Spell, AoE, Duration\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"17\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Cost\",\n\t\t\t\t\"values\": [[\"46\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Cast Time\",\n\t\t\t\t\"values\": [[\"0.50 sec\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"7292279\\/26185582\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 0.278484523296\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"64\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Dex\",\n\t\t\t\t\"values\": [[\"62\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Int\",\n\t\t\t\t\"values\": [[\"90\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"secDescrText\": \"Curses all targets in an area, making them more vulnerable to Critical Strikes. Killing the cursed targets will grant life and mana, and a chance to gain a power charge.\",\n\t\t\t\"explicitMods\": [\"Base duration is 9.20 seconds\",\n\t\t\t\"32% increased Area of Effect radius\",\n\t\t\t\"Cursed enemies have a 29% chance to grant a Power Charge when slain\",\n\t\t\t\"Cursed enemies have an additional 9% chance to receive a Critical Strike\",\n\t\t\t\"Cursed enemies take 38% more extra damage from Critical Strikes\",\n\t\t\t\"Cursed enemies grant 24 Life when Killed\",\n\t\t\t\"Cursed enemies grant 24 Mana when Killed\"],\n\t\t\t\"descrText\": \"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 2,\n\t\t\t\"colour\": \"I\",\n\t\t\t\"socketedItems\": []\n\t\t},\n\t\t{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/Support\\/CurseOnHit.png?scale=1&w=1&h=1&v=05db155f8ee3abfd38be282240134f573\",\n\t\t\t\"support\": true,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Curse On Hit\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Curse, Trigger, Support\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"18\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"267518\\/86794448\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 0.00308220181614\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"68\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Int\",\n\t\t\t\t\"values\": [[\"108\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"explicitMods\": [\"16% reduced Curse Duration\",\n\t\t\t\"Supported Skills apply supported Curses on Hit\",\n\t\t\t\"You cannot Cast Supported Curses\"],\n\t\t\t\"descrText\": \"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Active Skill Gem you wish to augment. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 3,\n\t\t\t\"colour\": \"I\",\n\t\t\t\"socketedItems\": []\n\t\t}]\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Armours\\/Helmets\\/HelmetStrInt8.png?scale=1&w=2&h=2&v=59807b6bf308473f389a97b37513c89e3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Ghoul Corona\",\n\t\t\"typeLine\": \"Magistrate Crown\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+20%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"167\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"98\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"58\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"83\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"64\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"+90 to maximum Life\",\n\t\t\"+48 to maximum Mana\",\n\t\t\"+41 to maximum Energy Shield\",\n\t\t\"+34% to Fire Resistance\",\n\t\t\"+29% to Cold Resistance\",\n\t\t\"15% increased Stun Recovery\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Helm\",\n\t\t\"socketedItems\": [{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/ImmortalCall.png?scale=1&w=1&h=1&v=3843ced383e5dca18e076e57e9f678193\",\n\t\t\t\"support\": false,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Immortal Call\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Spell, Duration\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"2\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Cost\",\n\t\t\t\t\"values\": [[\"22\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Cooldown Time\",\n\t\t\t\t\"values\": [[\"3.00 sec\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Cast Time\",\n\t\t\t\t\"values\": [[\"0.85 sec\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"314394\\/314394\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 1\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"36\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Str\",\n\t\t\t\t\"values\": [[\"83\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"nextLevelRequirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"38\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Str\",\n\t\t\t\t\"values\": [[\"88\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"secDescrText\": \"Discharges Endurance Charges, making the character invulnerable to physical damage for a short time, proportional to how many endurance charges were expended.\",\n\t\t\t\"explicitMods\": [\"Base duration is 0.40 seconds\",\n\t\t\t\"103% increased Buff Duration Per Endurance Charge\"],\n\t\t\t\"descrText\": \"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 0,\n\t\t\t\"colour\": \"S\",\n\t\t\t\"socketedItems\": []\n\t\t},\n\t\t{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/TempestShield.png?scale=1&w=1&h=1&v=d8d34090b1ed5028a29f130836c7da0e3\",\n\t\t\t\"support\": false,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Tempest Shield\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Spell, Lightning, Chaining, Duration\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"6\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Cost\",\n\t\t\t\t\"values\": [[\"18\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Cast Time\",\n\t\t\t\t\"values\": [[\"0.50 sec\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\t\"values\": [[\"6.00%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Damage Effectiveness\",\n\t\t\t\t\"values\": [[\"60%\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"401344\\/401344\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 1\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"34\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Str\",\n\t\t\t\t\"values\": [[\"35\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Int\",\n\t\t\t\t\"values\": [[\"50\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"nextLevelRequirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"37\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Str\",\n\t\t\t\t\"values\": [[\"37\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Int\",\n\t\t\t\t\"values\": [[\"54\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"secDescrText\": \"Enchants your shield with the power of storms, which lashes out to deal arcing lightning damage to attackers when you block them. Blocking refreshes the duration of Tempest Shield.\",\n\t\t\t\"explicitMods\": [\"Deals 64-96 Lightning Damage\",\n\t\t\t\"Chain +1 Times\",\n\t\t\t\"Base duration is 12.00 seconds\",\n\t\t\t\"Additional 3% Shield Block Chance\"],\n\t\t\t\"descrText\": \"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 1,\n\t\t\t\"colour\": \"I\",\n\t\t\t\"socketedItems\": []\n\t\t},\n\t\t{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/WarlordsMark.png?scale=1&w=1&h=1&v=4492e7082047ecb230699e4bfb9312c53\",\n\t\t\t\"support\": false,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Warlord's Mark\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Curse, Spell, AoE, Duration\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"1\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Mana Cost\",\n\t\t\t\t\"values\": [[\"24\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Cast Time\",\n\t\t\t\t\"values\": [[\"0.50 sec\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"118383\\/118383\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 1\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"24\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Str\",\n\t\t\t\t\"values\": [[\"58\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"nextLevelRequirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"27\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Str\",\n\t\t\t\t\"values\": [[\"64\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"secDescrText\": \"Curses all targets in an area, making them more vulnerable to stuns. Hitting the cursed targets will leech life and mana, and killing them will result in a chance to gain an endurance charge.\",\n\t\t\t\"explicitMods\": [\"Base duration is 6.00 seconds\",\n\t\t\t\"Cursed enemies grant 2% Life Leech when Hit\",\n\t\t\t\"Cursed enemies grant 2% Mana Leech when Hit\",\n\t\t\t\"Cursed enemies have a 21% chance to grant an Endurance Charge when slain\",\n\t\t\t\"Cursed enemies have an additional 11% chance to be Stunned\",\n\t\t\t\"Cursed enemies have 21% reduced Stun Recovery\"],\n\t\t\t\"descrText\": \"Place into an item socket of the right colour to gain this skill. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 2,\n\t\t\t\"colour\": \"S\",\n\t\t\t\"socketedItems\": []\n\t\t},\n\t\t{\n\t\t\t\"verified\": false,\n\t\t\t\"w\": 1,\n\t\t\t\"h\": 1,\n\t\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Gems\\/Support\\/CastOnDmgTaken.png?scale=1&w=1&h=1&v=e03ceb1a31e457dbfe30e968c76fb0d63\",\n\t\t\t\"support\": true,\n\t\t\t\"sockets\": [],\n\t\t\t\"name\": \"\",\n\t\t\t\"typeLine\": \"Cast when Damage Taken\",\n\t\t\t\"identified\": true,\n\t\t\t\"corrupted\": false,\n\t\t\t\"lockedToCharacter\": false,\n\t\t\t\"properties\": [{\n\t\t\t\t\"name\": \"Support, Spell, Trigger\",\n\t\t\t\t\"values\": [],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"1\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Cooldown Time\",\n\t\t\t\t\"values\": [[\"0.25 sec\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t}],\n\t\t\t\"additionalProperties\": [{\n\t\t\t\t\"name\": \"Experience\",\n\t\t\t\t\"values\": [[\"388734\\/388734\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 2,\n\t\t\t\t\"progress\": 1\n\t\t\t}],\n\t\t\t\"requirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"38\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Str\",\n\t\t\t\t\"values\": [[\"39\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Int\",\n\t\t\t\t\"values\": [[\"27\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"nextLevelRequirements\": [{\n\t\t\t\t\"name\": \"Level\",\n\t\t\t\t\"values\": [[\"40\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 0\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Str\",\n\t\t\t\t\"values\": [[\"41\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Int\",\n\t\t\t\t\"values\": [[\"29\",\n\t\t\t\t0]],\n\t\t\t\t\"displayMode\": 1\n\t\t\t}],\n\t\t\t\"talismanTier\": 0,\n\t\t\t\"explicitMods\": [\"This Gem can only Support Skill Gems requiring Level 38 or lower\",\n\t\t\t\"70% less Damage\",\n\t\t\t\"You cannot Cast Supported Spells directly\",\n\t\t\t\"Casts Supported Spells when you take a total of 528 Damage\"],\n\t\t\t\"descrText\": \"This is a Support Gem. It does not grant a bonus to your character, but to skills in sockets connected to it. Place into an item socket connected to a socket containing the Active Skill Gem you wish to augment. Right click to remove from a socket.\",\n\t\t\t\"frameType\": 4,\n\t\t\t\"socket\": 3,\n\t\t\t\"colour\": \"S\",\n\t\t\t\"socketedItems\": []\n\t\t}]\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Armours\\/Shields\\/ShieldInt2.png?scale=1&w=2&h=2&v=f61607beff0c7673614474b800a091d93\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Foe Star\",\n\t\t\"typeLine\": \"Lacewood Spirit Shield\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+20%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Chance to Block\",\n\t\t\t\"values\": [[\"24%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"173\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"56\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"134\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"5% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"75% increased Critical Strike Chance for Spells\",\n\t\t\"+74 to maximum Life\",\n\t\t\"+48 to maximum Energy Shield\",\n\t\t\"+9% to Fire Resistance\",\n\t\t\"+37% to Lightning Resistance\"],\n\t\t\"craftedMods\": [\"43% increased Energy Shield\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Offhand\",\n\t\t\"socketedItems\": []\n\t}],\n\t\"character\": {\n\t\t\"class\": 3,\n\t\t\"league\": \"Talisman\"\n\t}\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleInventoryWithPantheonSoul.json",
    "content": "﻿{\n  \"items\": [\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 59,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Rings/TopazRuby.png?scale=1&scaleIndex=0&w=1&h=1&v=0bd3c7197b952981eb21cb0dc278c04d\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"900504aca8b996685fe0e2dd5b4daa624dd072358bb4025f42c5a195fb0c891f\",\n      \"name\": \"<<set:MS>><<set:M>><<set:S>>Soul Band\",\n      \"typeLine\": \"Two-Stone Ring\",\n      \"identified\": true,\n      \"requirements\": [\n        {\n          \"name\": \"Level\",\n          \"values\": [ [ \"35\", 0 ] ],\n          \"displayMode\": 0\n        }\n      ],\n      \"implicitMods\": [ \"+14% to Fire and Lightning Resistances\" ],\n      \"explicitMods\": [ \"+28 to Intelligence\", \"+159 to Accuracy Rating\", \"8% increased Accuracy Rating\", \"+47 to maximum Mana\", \"15% increased Light Radius\" ],\n      \"craftedMods\": [ \"Adds 4 to 36 Lightning Damage to Attacks\" ],\n      \"frameType\": 2,\n      \"category\": { \"accessories\": [ \"ring\" ] },\n      \"x\": 0,\n      \"y\": 0,\n      \"inventoryId\": \"Ring2\"\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Currency/CurrencyUpgradeToMagic.png?scale=1&scaleIndex=0&stackSize=10&w=1&h=1&v=333b8b5e28b73c62972fc66e7634c5c8\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"2de199a7b3b44e6b85988398d2839b1d6e8e8a8970637f03665c7209b378fe3a\",\n      \"name\": \"\",\n      \"typeLine\": \"Orb of Transmutation\",\n      \"identified\": true,\n      \"properties\": [\n        {\n          \"name\": \"Stack Size\",\n          \"values\": [ [ \"10/40\", 0 ] ],\n          \"displayMode\": 0\n        }\n      ],\n      \"explicitMods\": [ \"Upgrades a normal item to a magic item\" ],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 10,\n      \"maxStackSize\": 40,\n      \"category\": { \"currency\": [] },\n      \"x\": 7,\n      \"y\": 4,\n      \"inventoryId\": \"MainInventory\"\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 2,\n      \"ilvl\": 0,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Maps/SinFlaskFull.png?scale=1&scaleIndex=0&w=1&h=2&v=5b5013c16e62ef679c9b044358ff87cf\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"324fd79cea5be0b3d3a521251edd6417fb470bb8262d4af865298d84a6429674\",\n      \"name\": \"\",\n      \"typeLine\": \"Captured Soul of The Forgotten Soldier\",\n      \"identified\": true,\n      \"lockedToCharacter\": true,\n      \"descrText\": \"A captured Soul. Give to Sin to unlock a secondary Pantheon Power.\",\n      \"flavourText\": [ \"Though his mind decayed with each passing wave,\\r\", \"the Brine King stood steadfast in his hatred,\\r\", \"and wore it like a shell, protecting himself \\r\", \"from his failure to sire a worthy heir.\" ],\n      \"frameType\": 5,\n      \"category\": { \"currency\": [ \"soul\" ] },\n      \"x\": 0,\n      \"y\": 3,\n      \"inventoryId\": \"MainInventory\"\n    }\n  ],\n  \"character\": {\n    \"name\": \"Tsuesaki\",\n    \"league\": \"SSF Bestiary\",\n    \"classId\": 3,\n    \"ascendancyClass\": 2,\n    \"class\": \"Elementalist\",\n    \"level\": 76,\n    \"experience\": 631062590\n  }\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleInventoryWithQuestItems.json",
    "content": "{\n    \"items\":[\n        {\n            \"verified\":false,\n            \"w\":2,\n            \"h\":1,\n            \"ilvl\":0,\n            \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/QuestItems\\/ShaperFragment.png?scale=1&scaleIndex=0&w=2&h=1&v=9dd9e55ad566c4d9a39405ac5ad3e122\",\n            \"league\":\"Betrayal\",\n            \"id\":\"1a2735bd17e6097f4a6ac2d84b4e4aaa6e074de952ca480f98e38a016dc32634\",\n            \"name\":\"\",\n            \"typeLine\":\"Memory Fragment III\",\n            \"identified\":true,\n            \"flavourText\":[\n                \"\\\"...I awoke in the most beautiful of places, and as I wandered this strange new land, \\r\",\n                \"I felt a growing sense of realization that I was not alone. \\r\",\n                \"A Shade, a whisper of embodied smoke, spoke to me through thoughts and pictures.\\r\",\n                \"I found myself enthusiastically volunteering information in detail of Oriath...\\\"\"\n            ],\n            \"frameType\":7,\n            \"category\":{\n                \"misc\":[\n\n                ]\n            },\n            \"x\":7,\n            \"y\":4,\n            \"inventoryId\":\"MainInventory\"\n        },\n        {\n            \"verified\":false,\n            \"w\":1,\n            \"h\":1,\n            \"ilvl\":0,\n            \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/UpgradeMapToYellow.png?scale=1&scaleIndex=0&w=1&h=1&v=7488cce9d150b823260f1ad1eb4352e8\",\n            \"league\":\"Betrayal\",\n            \"id\":\"380241d55ddc755689b46cee68e07e81c231b32cfaa4a9f5725ac25251faf096\",\n            \"name\":\"\",\n            \"typeLine\":\"Shaper's Orb (Tier 1)\",\n            \"identified\":true,\n            \"explicitMods\":[\n                \"Upgrades a Tier 1 map on the Atlas by five tiers\"\n            ],\n            \"descrText\":\"Right click this item then left click on a map on the Atlas to upgrade it by five tiers.\",\n            \"frameType\":7,\n            \"category\":{\n                \"misc\":[\n\n                ]\n            },\n            \"x\":5,\n            \"y\":4,\n            \"inventoryId\":\"MainInventory\"\n        }\n    ],\n    \"character\":{\n        \"name\":\"LordMelpheus\",\n        \"league\":\"Betrayal\",\n        \"classId\":5,\n        \"ascendancyClass\":2,\n        \"class\":\"Hierophant\",\n        \"level\":56,\n        \"experience\":104279764,\n        \"lastActive\":true\n    }\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleStash.json",
    "content": "{\n\t\"numTabs\": 17,\n\t\"items\": [{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyArmourQuality.png?scale=1&stackSize=40&w=1&h=1&v=251e204e4ec325f75ce8ef75b2dfbeb83\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Armourer's Scrap\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"40\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of an armour\"],\n\t\t\"descrText\": \"Right click this item then left click an armour to apply it. Has greater effect on lower rarity armours. The maximum quality is 20%.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeToMagic.png?scale=1&stackSize=40&w=1&h=1&v=333b8b5e28b73c62972fc66e7634c5c83\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Transmutation\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"40\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Upgrades a normal item to a magic item\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 2,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Armours\\/Gloves\\/GlovesInt4.png?scale=1&w=2&h=2&v=373419137bbd6b0e4ba9439b3ff1a7d53\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Brood Grip\",\n\t\t\"typeLine\": \"Conjurer Gloves\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"46\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"55\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"79\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"+50 to maximum Mana\",\n\t\t\"+40% to Fire Resistance\",\n\t\t\"+29% to Cold Resistance\",\n\t\t\"+17% to Lightning Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 6,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"icon\": \"\\/gen\\/image\\/YTozOntpOjI7YTozOntz\\/OjE6ImYiO3M6MjY6IkFy\\/dC8yREl0ZW1zL0ZsYXNr\\/cy9ncmFuaXRlIjtzOjI6\\/InNwIjtkOjAuNjA4NTE5\\/MjY5Nzc2ODc2MzE0ODE0\\/NzI4NjMwMTUzNjk1MTIx\\/NDA3NTA4ODUwMDk3NjU2\\/MjU7czo1OiJsZXZlbCI7\\/aTowO31pOjE7aTo0O2k6\\/MDtpOjk7fQ,,\\/3470cb8988\\/Item.png\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Granite Flask of Gluttony\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Lasts %0 Seconds\",\n\t\t\t\"values\": [[\"4.00\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"30\",\n\t\t\t0],\n\t\t\t[\"60\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"0\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"\",\n\t\t\t\"values\": [[\"+3000 to Armour\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"27\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"0.4% of Physical Attack Damage Leeched as Life during Flask effect\"],\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 5,\n\t\t\"y\": 10,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketColours.png?scale=1&stackSize=20&w=1&h=1&v=9d377f2cf04a16a39aac7b14abc9d7c33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chromatic Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the colour of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyAddModToMagic.png?scale=1&stackSize=30&w=1&h=1&v=97e63b85807f2419f4208482fd0b48593\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Augmentation\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"30\\/30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Enchants a magic item with a new random property\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it. Magic items can have up to two random properties.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyArmourQuality.png?scale=1&stackSize=40&w=1&h=1&v=251e204e4ec325f75ce8ef75b2dfbeb83\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Armourer's Scrap\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"40\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of an armour\"],\n\t\t\"descrText\": \"Right click this item then left click an armour to apply it. Has greater effect on lower rarity armours. The maximum quality is 20%.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 1,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketNumbers.png?scale=1&stackSize=9&w=1&h=1&v=2946b0825af70f796b8f15051d75164d3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Jeweller's Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"9\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the number of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it. The item's quality value is consumed to increase the chances of obtaining more sockets.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 1,\n\t\t\"y\": 11,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyAddModToMagic.png?scale=1&stackSize=30&w=1&h=1&v=97e63b85807f2419f4208482fd0b48593\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Augmentation\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"30\\/30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Enchants a magic item with a new random property\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it. Magic items can have up to two random properties.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 1,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketColours.png?scale=1&stackSize=20&w=1&h=1&v=9d377f2cf04a16a39aac7b14abc9d7c33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chromatic Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the colour of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 2,\n\t\t\"y\": 11,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyAddModToMagic.png?scale=1&stackSize=30&w=1&h=1&v=97e63b85807f2419f4208482fd0b48593\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Augmentation\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"30\\/30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Enchants a magic item with a new random property\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it. Magic items can have up to two random properties.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 2,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketColours.png?scale=1&stackSize=20&w=1&h=1&v=9d377f2cf04a16a39aac7b14abc9d7c33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chromatic Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the colour of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 5,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Jewels\\/basicint.png?scale=1&w=1&h=1&v=cd579ea22c05f1c6ad2fd015d7a710bd3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Foe Ornament\",\n\t\t\"typeLine\": \"Cobalt Jewel\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"15% increased Trap Damage\",\n\t\t\"12% increased Chaos Damage\",\n\t\t\"+13% to Lightning Resistance\"],\n\t\t\"descrText\": \"Place into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.\",\n\t\t\"frameType\": 2,\n\t\t\"x\": 8,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyWeaponQuality.png?scale=1&stackSize=20&w=1&h=1&v=d2ce9167e23a74cef5d8465433e864823\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Blacksmith's Whetstone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of a weapon\"],\n\t\t\"descrText\": \"Right click this item then left click a weapon to apply it. Has greater effect on lower rarity weapons. The maximum quality is 20%.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 11,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyArmourQuality.png?scale=1&stackSize=24&w=1&h=1&v=251e204e4ec325f75ce8ef75b2dfbeb83\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Armourer's Scrap\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"24\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of an armour\"],\n\t\t\"descrText\": \"Right click this item then left click an armour to apply it. Has greater effect on lower rarity armours. The maximum quality is 20%.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 4,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=20&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 1,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyConvertToNormal.png?scale=1&stackSize=4&w=1&h=1&v=15e3ef97f04a39ae284359309697ef7d3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Scouring\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"4\\/30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Removes all properties from an item\"],\n\t\t\"descrText\": \"Right click this item then left click on a magic or rare item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 4,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketNumbers.png?scale=1&stackSize=9&w=1&h=1&v=2946b0825af70f796b8f15051d75164d3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Jeweller's Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"9\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the number of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it. The item's quality value is consumed to increase the chances of obtaining more sockets.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 5,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=20&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 6,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyAddModToMagic.png?scale=1&stackSize=30&w=1&h=1&v=97e63b85807f2419f4208482fd0b48593\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Augmentation\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"30\\/30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Enchants a magic item with a new random property\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it. Magic items can have up to two random properties.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 3,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"icon\": \"\\/gen\\/image\\/YTozOntpOjI7YTozOntz\\/OjE6ImYiO3M6MzM6IkFy\\/dC8yREl0ZW1zL0ZsYXNr\\/cy9ldmFzaW9uZmxhc2sw\\/MSI7czoyOiJzcCI7ZDow\\/LjYwODUxOTI2OTc3Njg3\\/NjMxNDgxNDcyODYzMDE1\\/MzY5NTEyMTQwNzUwODg1\\/MDA5NzY1NjI1O3M6NToi\\/bGV2ZWwiO2k6MDt9aTox\\/O2k6NDtpOjA7aTo5O30,\\/e1cbf52b85\\/Item.png\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Superior Jade Flask\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+6%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Lasts %0 Seconds\",\n\t\t\t\"values\": [[\"5.30\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"40\",\n\t\t\t0],\n\t\t\t[\"60\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"0\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"\",\n\t\t\t\"values\": [[\"+3000 to Evasion Rating\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"27\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 11,\n\t\t\"y\": 10,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=20&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeToRare.png?scale=1&stackSize=9&w=1&h=1&v=89c110be97333995522c7b2c29cae7283\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alchemy\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"9\\/10\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Upgrades a normal item to a rare item\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 2,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyIdentification.png?scale=1&stackSize=40&w=1&h=1&v=1b9b38c45be95c59d8900f91b2afd58b3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Scroll of Wisdom\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"40\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Identifies an item\"],\n\t\t\"descrText\": \"Right click this item then left click an unidentified item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 5,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeRandomly.png?scale=1&stackSize=20&w=1&h=1&v=e4049939b9cd61291562f94364ee0f003\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Chance\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Upgrades a normal item to a random rarity\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 1,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketLinks.png?scale=1&stackSize=2&w=1&h=1&v=0ad7134a62e5c45e4f8bc8a44b95540f3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Fusing\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the links between sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it. The item's quality value is consumed to increase the chances of obtaining more links.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 5,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Armours\\/Gloves\\/GlovesStrDex1.png?scale=1&w=2&h=2&v=0b1675257aaa7b52d127c9f72074dcb33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Demon Vise\",\n\t\t\"typeLine\": \"Steelscale Gauntlets\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"99\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Evasion Rating\",\n\t\t\t\"values\": [[\"57\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"36\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"29\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"29\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"+8 to Strength\",\n\t\t\"Adds 8-13 Cold Damage to Attacks\",\n\t\t\"+42 to Armour\",\n\t\t\"+26 to maximum Life\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 8,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Belts\\/Belt5.png?scale=1&w=2&h=1&v=5aa764352f06af8fd3231e6a52d710f53\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Rage Cord\",\n\t\t\"typeLine\": \"Heavy Belt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"+27 to Strength\"],\n\t\t\"explicitMods\": [\"+63 to maximum Life\",\n\t\t\"+28% to Fire Resistance\",\n\t\t\"+35% to Cold Resistance\",\n\t\t\"+16% to Lightning Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyImplicitMod.png?scale=1&stackSize=5&w=1&h=1&v=472eeef04846d8a25d65b3d4f9ceecc83\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Blessed Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"5\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Randomises the numeric values of the implicit properties of an item\"],\n\t\t\"descrText\": \"Right click this item then left click another item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 8,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyPortal.png?scale=1&stackSize=11&w=1&h=1&v=728696ea10d4fb1e789039debc5d8c3c3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Portal Scroll\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"11\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Creates a portal to town\"],\n\t\t\"descrText\": \"Right click on this item to use it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 5,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketColours.png?scale=1&stackSize=20&w=1&h=1&v=9d377f2cf04a16a39aac7b14abc9d7c33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chromatic Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the colour of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 3,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketColours.png?scale=1&stackSize=20&w=1&h=1&v=9d377f2cf04a16a39aac7b14abc9d7c33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chromatic Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the colour of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 6,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeToMagic.png?scale=1&stackSize=40&w=1&h=1&v=333b8b5e28b73c62972fc66e7634c5c83\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Transmutation\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"40\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Upgrades a normal item to a magic item\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 1,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=20&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 9,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyIdentificationFragment.png?scale=1&stackSize=2&w=1&h=1&v=9d03025ab8229c652060781fb2f4b7f93\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Scroll Fragment\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"descrText\": \"A stack of 5 fragments becomes a Scroll of Wisdom.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 2,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Rings\\/Ring6.png?scale=1&w=1&h=1&v=23acb19022be4c89b3260db63dd1ca053\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Sapphire Ring\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"8\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"+30% to Cold Resistance\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 5,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyWeaponQuality.png?scale=1&stackSize=20&w=1&h=1&v=d2ce9167e23a74cef5d8465433e864823\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Blacksmith's Whetstone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of a weapon\"],\n\t\t\"descrText\": \"Right click this item then left click a weapon to apply it. Has greater effect on lower rarity weapons. The maximum quality is 20%.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Jewels\\/basicint.png?scale=1&w=1&h=1&v=cd579ea22c05f1c6ad2fd015d7a710bd3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Trapping Cobalt Jewel of Insulation\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"14% increased Trap Damage\",\n\t\t\"+10% to Fire and Lightning Resistances\"],\n\t\t\"descrText\": \"Place into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 8,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyAddModToRare.png?scale=1&stackSize=1&w=1&h=1&v=1745ebafbd533b6f91bccf588ab5efc53\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Exalted Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/10\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Enchants a rare item with a new random property\"],\n\t\t\"descrText\": \"Right click this item then left click a rare item to apply it. Rare items can have up to six random properties.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 7,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagicShard.png?scale=1&stackSize=6&w=1&h=1&v=937a56eea2dcf9b009ee8f61348187953\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Alteration Shard\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"6\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"descrText\": \"A stack of 20 shards becomes an Orb of Alteration.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 3,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyArmourQuality.png?scale=1&stackSize=20&w=1&h=1&v=251e204e4ec325f75ce8ef75b2dfbeb83\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Armourer's Scrap\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of an armour\"],\n\t\t\"descrText\": \"Right click this item then left click an armour to apply it. Has greater effect on lower rarity armours. The maximum quality is 20%.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 3,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=19&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"19\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 1,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=20&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 2,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeToRare.png?scale=1&stackSize=10&w=1&h=1&v=89c110be97333995522c7b2c29cae7283\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alchemy\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"10\\/10\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Upgrades a normal item to a rare item\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 8,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketNumbers.png?scale=1&stackSize=9&w=1&h=1&v=2946b0825af70f796b8f15051d75164d3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Jeweller's Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"9\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the number of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it. The item's quality value is consumed to increase the chances of obtaining more sockets.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketNumbers.png?scale=1&stackSize=10&w=1&h=1&v=2946b0825af70f796b8f15051d75164d3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Jeweller's Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"10\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the number of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it. The item's quality value is consumed to increase the chances of obtaining more sockets.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 1,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketColours.png?scale=1&stackSize=20&w=1&h=1&v=9d377f2cf04a16a39aac7b14abc9d7c33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chromatic Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the colour of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 2,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeToRareShard.png?scale=1&stackSize=7&w=1&h=1&v=d8fb5f5edca4b67035081f1eb9955d803\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Alchemy Shard\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"7\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"descrText\": \"A stack of 20 shards becomes an Orb of Alchemy.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 5,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"icon\": \"\\/gen\\/image\\/YTozOntpOjI7YTozOntz\\/OjE6ImYiO3M6Mjc6IkFy\\/dC8yREl0ZW1zL0ZsYXNr\\/cy9BbWV0aHlzdCI7czoy\\/OiJzcCI7ZDowLjYwODUx\\/OTI2OTc3Njg3NjMxNDgx\\/NDcyODYzMDE1MzY5NTEy\\/MTQwNzUwODg1MDA5NzY1\\/NjI1O3M6NToibGV2ZWwi\\/O2k6MDt9aToxO2k6NDtp\\/OjA7aTo5O30,\\/c41220cd46\\/Item.png\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Perpetual Amethyst Flask of Dousing\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Lasts %0 Seconds\",\n\t\t\t\"values\": [[\"3.50\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"30\",\n\t\t\t0],\n\t\t\t[\"60\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"0\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"\",\n\t\t\t\"values\": [[\"+35% to Chaos Resistance\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"18\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"29% increased Charge Recovery\",\n\t\t\"Immunity to Ignite during Flask effect\",\n\t\t\"Removes Burning on use\"],\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 11,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketColours.png?scale=1&stackSize=20&w=1&h=1&v=9d377f2cf04a16a39aac7b14abc9d7c33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chromatic Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the colour of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 4,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyAddModToMagic.png?scale=1&stackSize=4&w=1&h=1&v=97e63b85807f2419f4208482fd0b48593\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Augmentation\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"4\\/30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Enchants a magic item with a new random property\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it. Magic items can have up to two random properties.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 1,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=20&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 3,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyFlaskQuality.png?scale=1&stackSize=1&w=1&h=1&v=ca8bd0dd43d2adf8b021578a398eb9de3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Glassblower's Bauble\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of a flask\"],\n\t\t\"descrText\": \"Right click this item then left click a flask to apply it. Has greater effect on lower rarity flasks. The maximum quality is 20%.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 3,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketColours.png?scale=1&stackSize=20&w=1&h=1&v=9d377f2cf04a16a39aac7b14abc9d7c33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chromatic Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the colour of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 1,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=20&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 7,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeToMagic.png?scale=1&stackSize=40&w=1&h=1&v=333b8b5e28b73c62972fc66e7634c5c83\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Transmutation\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"40\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Upgrades a normal item to a magic item\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=20&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 5,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"icon\": \"\\/gen\\/image\\/YTozOntpOjI7YTozOntz\\/OjE6ImYiO3M6Mjc6IkFy\\/dC8yREl0ZW1zL0ZsYXNr\\/cy9BbWV0aHlzdCI7czoy\\/OiJzcCI7ZDowLjYwODUx\\/OTI2OTc3Njg3NjMxNDgx\\/NDcyODYzMDE1MzY5NTEy\\/MTQwNzUwODg1MDA5NzY1\\/NjI1O3M6NToibGV2ZWwi\\/O2k6MDt9aToxO2k6NDtp\\/OjA7aTo5O30,\\/c41220cd46\\/Item.png\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Amethyst Flask of Craving\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Lasts %0 Seconds\",\n\t\t\t\"values\": [[\"3.50\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"30\",\n\t\t\t0],\n\t\t\t[\"60\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"0\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"\",\n\t\t\t\"values\": [[\"+35% to Chaos Resistance\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"18\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"0.4% of Physical Attack Damage Leeched as Mana during Flask effect\"],\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 8,\n\t\t\"y\": 10,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyIdentification.png?scale=1&stackSize=18&w=1&h=1&v=1b9b38c45be95c59d8900f91b2afd58b3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Scroll of Wisdom\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"18\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Identifies an item\"],\n\t\t\"descrText\": \"Right click this item then left click an unidentified item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 2,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketNumbers.png?scale=1&stackSize=10&w=1&h=1&v=2946b0825af70f796b8f15051d75164d3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Jeweller's Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"10\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the number of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it. The item's quality value is consumed to increase the chances of obtaining more sockets.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 3,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyWeaponQuality.png?scale=1&stackSize=20&w=1&h=1&v=d2ce9167e23a74cef5d8465433e864823\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Blacksmith's Whetstone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of a weapon\"],\n\t\t\"descrText\": \"Right click this item then left click a weapon to apply it. Has greater effect on lower rarity weapons. The maximum quality is 20%.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 1,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeMagicToRare.png?scale=1&stackSize=4&w=1&h=1&v=1187a8511b47b35815bd75698de1fa2a3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Regal Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"4\\/10\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Upgrades a magic item to a rare item\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it. Current properties are retained and a new one is added.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 7,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeRandomly.png?scale=1&stackSize=20&w=1&h=1&v=e4049939b9cd61291562f94364ee0f003\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Chance\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Upgrades a normal item to a random rarity\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyMapQuality.png?scale=1&stackSize=18&w=1&h=1&v=f46e0a1af7223e2d4cae52bc3f9f7a1f3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Cartographer's Chisel\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"18\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of a map\"],\n\t\t\"descrText\": \"Right click this item then left click a map to apply it. Has greater effect on lower rarity maps. The maximum quality is 20%.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 3,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=20&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 8,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyGemQuality.png?scale=1&stackSize=6&w=1&h=1&v=f11792b6dbd2f5f869351151bc3a45393\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Gemcutter's Prism\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"6\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of a gem\"],\n\t\t\"descrText\": \"Right click this item then left click a gem to apply it. The maximum quality is 20%.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 3,\n\t\t\"y\": 11,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=20&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 4,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyArmourQuality.png?scale=1&stackSize=40&w=1&h=1&v=251e204e4ec325f75ce8ef75b2dfbeb83\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Armourer's Scrap\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"40\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of an armour\"],\n\t\t\"descrText\": \"Right click this item then left click an armour to apply it. Has greater effect on lower rarity armours. The maximum quality is 20%.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 2,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Armours\\/Shields\\/ShieldInt2.png?scale=1&w=2&h=2&v=f61607beff0c7673614474b800a091d93\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Honour Duty\",\n\t\t\"typeLine\": \"Yew Spirit Shield\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Chance to Block\",\n\t\t\t\"values\": [[\"24%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"11\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"13\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"28\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"5% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"27% increased Spell Damage\",\n\t\t\"+13 to Intelligence\",\n\t\t\"+3% to all Elemental Resistances\",\n\t\t\"14% increased Stun Recovery\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=20&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 1,\n\t\t\"y\": 10,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketNumbers.png?scale=1&stackSize=10&w=1&h=1&v=2946b0825af70f796b8f15051d75164d3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Jeweller's Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"10\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the number of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it. The item's quality value is consumed to increase the chances of obtaining more sockets.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 2,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketColours.png?scale=1&stackSize=20&w=1&h=1&v=9d377f2cf04a16a39aac7b14abc9d7c33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chromatic Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the colour of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Jewels\\/basicstr.png?scale=1&w=1&h=1&v=5496129c557831c118a679c1001f3df93\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Deflecting Crimson Jewel\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"1% additional Chance to Block with Staves\"],\n\t\t\"descrText\": \"Place into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 8,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"icon\": \"\\/gen\\/image\\/YTozOntpOjI7YTozOntz\\/OjE6ImYiO3M6MjM6IkFy\\/dC8yREl0ZW1zL0ZsYXNr\\/cy9ydWJ5IjtzOjI6InNw\\/IjtkOjAuNjA4NTE5MjY5\\/Nzc2ODc2MzE0ODE0NzI4\\/NjMwMTUzNjk1MTIxNDA3\\/NTA4ODUwMDk3NjU2MjU7\\/czo1OiJsZXZlbCI7aTow\\/O31pOjE7aTo0O2k6MDtp\\/Ojk7fQ,,\\/8f55f91a6d\\/Item.png\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Ruby Flask\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Lasts %0 Seconds\",\n\t\t\t\"values\": [[\"3.50\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"30\",\n\t\t\t0],\n\t\t\t[\"60\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"0\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"\",\n\t\t\t\"values\": [[\"+10% to maximum Fire Resistance\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"\",\n\t\t\t\"values\": [[\"+50% to Fire Resistance\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"18\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 10,\n\t\t\"y\": 10,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"icon\": \"\\/gen\\/image\\/YTozOntpOjI7YTozOntz\\/OjE6ImYiO3M6Mjc6IkFy\\/dC8yREl0ZW1zL0ZsYXNr\\/cy9zYXBwaGlyZSI7czoy\\/OiJzcCI7ZDowLjYwODUx\\/OTI2OTc3Njg3NjMxNDgx\\/NDcyODYzMDE1MzY5NTEy\\/MTQwNzUwODg1MDA5NzY1\\/NjI1O3M6NToibGV2ZWwi\\/O2k6MDt9aToxO2k6NDtp\\/OjA7aTo5O30,\\/1f3958ae58\\/Item.png\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Perpetual Sapphire Flask\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Lasts %0 Seconds\",\n\t\t\t\"values\": [[\"3.50\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"30\",\n\t\t\t0],\n\t\t\t[\"60\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"0\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"\",\n\t\t\t\"values\": [[\"+10% to maximum Cold Resistance\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"\",\n\t\t\t\"values\": [[\"+50% to Cold Resistance\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"18\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"22% increased Charge Recovery\"],\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 9,\n\t\t\"y\": 10,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyWeaponQuality.png?scale=1&stackSize=20&w=1&h=1&v=d2ce9167e23a74cef5d8465433e864823\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Blacksmith's Whetstone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of a weapon\"],\n\t\t\"descrText\": \"Right click this item then left click a weapon to apply it. Has greater effect on lower rarity weapons. The maximum quality is 20%.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Jewels\\/basicstr.png?scale=1&w=1&h=1&v=5496129c557831c118a679c1001f3df93\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Deflecting Crimson Jewel of Berserking\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"1% additional Chance to Block with Staves\",\n\t\t\"5% increased Attack Speed\"],\n\t\t\"descrText\": \"Place into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 8,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyPassiveSkillRefund.png?scale=1&stackSize=2&w=1&h=1&v=1de687952ce56385b74ac450f97fcc333\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Regret\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Grants a passive skill refund point\"],\n\t\t\"descrText\": \"Right click on this item to use it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 9,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketColours.png?scale=1&stackSize=19&w=1&h=1&v=9d377f2cf04a16a39aac7b14abc9d7c33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chromatic Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"19\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the colour of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 2,\n\t\t\"y\": 10,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeToMagicShard.png?scale=1&stackSize=3&w=1&h=1&v=764a2f94c7a77f06a56252299246af533\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Transmutation Shard\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"3\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"descrText\": \"A stack of 20 shards becomes an Orb of Transmutation.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 4,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollSocketColours.png?scale=1&stackSize=20&w=1&h=1&v=9d377f2cf04a16a39aac7b14abc9d7c33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chromatic Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges the colour of sockets on an item\"],\n\t\t\"descrText\": \"Right click this item then left click a socketed item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 4,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=20&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 4,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyAddModToMagic.png?scale=1&stackSize=30&w=1&h=1&v=97e63b85807f2419f4208482fd0b48593\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Augmentation\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"30\\/30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Enchants a magic item with a new random property\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it. Magic items can have up to two random properties.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 4,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"icon\": \"\\/gen\\/image\\/YTozOntpOjI7YTozOntz\\/OjE6ImYiO3M6MjY6IkFy\\/dC8yREl0ZW1zL0ZsYXNr\\/cy9ncmFuaXRlIjtzOjI6\\/InNwIjtkOjAuNjA4NTE5\\/MjY5Nzc2ODc2MzE0ODE0\\/NzI4NjMwMTUzNjk1MTIx\\/NDA3NTA4ODUwMDk3NjU2\\/MjU7czo1OiJsZXZlbCI7\\/aTowO31pOjE7aTo0O2k6\\/MDtpOjk7fQ,,\\/3470cb8988\\/Item.png\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Perpetual Granite Flask of Reflexes\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Lasts %0 Seconds\",\n\t\t\t\"values\": [[\"4.00\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"30\",\n\t\t\t0],\n\t\t\t[\"60\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"0\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"\",\n\t\t\t\"values\": [[\"+3000 to Armour\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"27\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"33% increased Charge Recovery\",\n\t\t\"61% increased Evasion Rating during Flask effect\"],\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 9,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyWeaponQuality.png?scale=1&stackSize=9&w=1&h=1&v=d2ce9167e23a74cef5d8465433e864823\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Blacksmith's Whetstone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"9\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of a weapon\"],\n\t\t\"descrText\": \"Right click this item then left click a weapon to apply it. Has greater effect on lower rarity weapons. The maximum quality is 20%.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 4,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollMagic.png?scale=1&stackSize=20&w=1&h=1&v=6d9520174f6643e502da336e76b730d33\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Alteration\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a magic item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a magic item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 3,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Armours\\/Helmets\\/HelmetInt10.png?scale=1&w=2&h=2&v=95b3b9abd4831891cb01ceead65b055a3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Armageddon Corona\",\n\t\t\"typeLine\": \"Mind Cage\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+20%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"163\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"65\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"138\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"59% increased Energy Shield\",\n\t\t\"13% increased Rarity of Items found\",\n\t\t\"+35% to Cold Resistance\",\n\t\t\"+39% to Lightning Resistance\"],\n\t\t\"craftedMods\": [\"+63 to maximum Life\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 9,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyWeaponQuality.png?scale=1&stackSize=20&w=1&h=1&v=d2ce9167e23a74cef5d8465433e864823\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Blacksmith's Whetstone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"20\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Improves the quality of a weapon\"],\n\t\t\"descrText\": \"Right click this item then left click a weapon to apply it. Has greater effect on lower rarity weapons. The maximum quality is 20%.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 0,\n\t\t\"y\": 10,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand6.png?scale=1&w=1&h=3&v=54ba351a078c22737d02dfcec84665853\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Dire Thirst\",\n\t\t\"typeLine\": \"Omen Wand\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Wand\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"25-46\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"9.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"53\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"200\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"16% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"48% increased Spell Damage\",\n\t\t\"24% increased Fire Damage\",\n\t\t\"Adds 2-61 Lightning Damage to Spells\",\n\t\t\"+15 to maximum Mana\"],\n\t\t\"craftedMods\": [\"11% increased Cast Speed\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 4,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Jewels\\/basicdex.png?scale=1&w=1&h=1&v=7375b3bb90a9809870b31d1aa4aa68b93\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Viper Spark\",\n\t\t\"typeLine\": \"Viridian Jewel\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"14% increased Trap Damage\",\n\t\t\"13% increased Physical Weapon Damage while Dual Wielding\",\n\t\t\"Totems gain +10% to all Elemental Resistances\"],\n\t\t\"descrText\": \"Place into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.\",\n\t\t\"frameType\": 2,\n\t\t\"x\": 7,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyRerollRare.png?scale=1&stackSize=7&w=1&h=1&v=c60aa876dd6bab31174df91b1da1b4f93\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chaos Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"7\\/10\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Reforges a rare item with new random properties\"],\n\t\t\"descrText\": \"Right click this item then left click a rare item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 8,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Jewels\\/basicint.png?scale=1&w=1&h=1&v=cd579ea22c05f1c6ad2fd015d7a710bd3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Thwarting Cobalt Jewel of Efficiency\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"1% additional Chance to Block Spells with Shields\",\n\t\t\"3% reduced Mana Cost of Skills\"],\n\t\t\"descrText\": \"Place into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 10,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Armours\\/Shields\\/ShieldInt3.png?scale=1&w=2&h=2&v=0b4ca72b3f1678f750402c910c3fb09c3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Grim Pith\",\n\t\t\"typeLine\": \"Fossilised Spirit Shield\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Chance to Block\",\n\t\t\t\"values\": [[\"22%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"61\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"59\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"141\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"15% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"56% increased Spell Damage\",\n\t\t\"10% increased Critical Strike Chance for Spells\",\n\t\t\"+53 to maximum Life\",\n\t\t\"+33 to maximum Mana\",\n\t\t\"19% increased Stun Recovery\"],\n\t\t\"craftedMods\": [\"+23% to Lightning Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Rings\\/Ring3.png?scale=1&w=1&h=1&v=bc351f5121b5d5d052733fa5be0f79ca3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Oblivion Whorl\",\n\t\t\"typeLine\": \"Paua Ring\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"49\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"+20 to maximum Mana\"],\n\t\t\"explicitMods\": [\"+34 to Dexterity\",\n\t\t\"Adds 1-2 Cold Damage to Attacks\",\n\t\t\"+52 to maximum Life\",\n\t\t\"21% increased Rarity of Items found\",\n\t\t\"+8% to all Elemental Resistances\",\n\t\t\"+24% to Lightning Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyVaal.png?scale=1&stackSize=1&w=1&h=1&v=64114709d67069cd665f8f1a918cd12a3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Vaal Orb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/10\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Corrupts an item, modifying it unpredictably\"],\n\t\t\"descrText\": \"Right click this item then left click an item to corrupt it. Corrupted items cannot be modified again.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 5,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Rings\\/Ring3.png?scale=1&w=1&h=1&v=bc351f5121b5d5d052733fa5be0f79ca3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Plague Hold\",\n\t\t\"typeLine\": \"Paua Ring\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"59\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"+24 to maximum Mana\"],\n\t\t\"explicitMods\": [\"+49 to Dexterity\",\n\t\t\"+60 to maximum Life\",\n\t\t\"+25 to maximum Mana\",\n\t\t\"+38% to Lightning Resistance\"],\n\t\t\"craftedMods\": [\"+20 to Strength\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 11,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Belts\\/Belt5.png?scale=1&w=2&h=1&v=5aa764352f06af8fd3231e6a52d710f53\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Entropy Snare\",\n\t\t\"typeLine\": \"Heavy Belt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"43\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"+27 to Strength\"],\n\t\t\"explicitMods\": [\"+83 to Armour\",\n\t\t\"+87 to maximum Life\",\n\t\t\"+28% to Fire Resistance\",\n\t\t\"17% increased Stun Recovery\"],\n\t\t\"craftedMods\": [\"+22% to Lightning Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Jewels\\/basicint.png?scale=1&w=1&h=1&v=cd579ea22c05f1c6ad2fd015d7a710bd3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Apocalypse Drop\",\n\t\t\"typeLine\": \"Cobalt Jewel\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"+1% Chance to Block with Shields\",\n\t\t\"14% increased Fire Damage\",\n\t\t\"4% increased Attack and Cast Speed\"],\n\t\t\"descrText\": \"Place into an allocated Jewel Socket on the Passive Skill Tree. Right click to remove from the Socket.\",\n\t\t\"frameType\": 2,\n\t\t\"x\": 11,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeToMagic.png?scale=1&stackSize=32&w=1&h=1&v=333b8b5e28b73c62972fc66e7634c5c83\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Transmutation\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"32\\/40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Upgrades a normal item to a magic item\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 3,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Currency\\/CurrencyUpgradeRandomly.png?scale=1&stackSize=16&w=1&h=1&v=e4049939b9cd61291562f94364ee0f003\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Orb of Chance\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"16\\/20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"Upgrades a normal item to a random rarity\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\\nShift click to unstack.\",\n\t\t\"frameType\": 5,\n\t\t\"x\": 2,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Armours\\/Gloves\\/GlovesStr3.png?scale=1&w=2&h=2&v=8a687dd11fc5368392d6ba84321867ce3\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Dusk Nails\",\n\t\t\"typeLine\": \"Vaal Gauntlets\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+20%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"366\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"63\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"100\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"explicitMods\": [\"+21 to Strength\",\n\t\t\"9% increased Attack Speed\",\n\t\t\"+60 to maximum Life\",\n\t\t\"16% increased Rarity of Items found\",\n\t\t\"+19% to Lightning Resistance\"],\n\t\t\"craftedMods\": [\"62% increased Armour\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 6,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/TabulaRasa.png?scale=1&w=2&h=3&v=099db24f7dadb353bb90d1853996ca743\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"G\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"G\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"G\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"G\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"G\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"G\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Tabula Rasa\",\n\t\t\"typeLine\": \"Simple Robe\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+11%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"frameType\": 3,\n\t\t\"x\": 6,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"icon\": \"https:\\/\\/p7p4m6s5.ssl.hwcdn.net\\/image\\/Art\\/2DItems\\/Rings\\/Ring5.png?scale=1&w=1&h=1&v=d645f9adfc012c52674c94d16b4292b23\",\n\t\t\"support\": true,\n\t\t\"league\": \"Talisman\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Oblivion Whorl\",\n\t\t\"typeLine\": \"Topaz Ring\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"28\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"talismanTier\": 0,\n\t\t\"implicitMods\": [\"+29% to Lightning Resistance\"],\n\t\t\"explicitMods\": [\"+10 to Strength\",\n\t\t\"Adds 1-23 Lightning Damage to Attacks\",\n\t\t\"+61 to maximum Life\",\n\t\t\"9% increased Rarity of Items found\",\n\t\t\"+5% to all Elemental Resistances\",\n\t\t\"+6% to Cold Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 9,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash2\",\n\t\t\"socketedItems\": []\n\t}],\n\t\"tabs\": [{\n\t\t\"n\": \"1\",\n\t\t\"i\": 0,\n\t\t\"pi\": false,\n\t\t\"hidden\": true,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1\",\n\t\t\"i\": 1,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": true,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"2\",\n\t\t\"i\": 2,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"3\",\n\t\t\"i\": 3,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"4\",\n\t\t\"i\": 4,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"5\",\n\t\t\"i\": 5,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"6\",\n\t\t\"i\": 6,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"7\",\n\t\t\"i\": 7,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"8\",\n\t\t\"i\": 8,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"9\",\n\t\t\"i\": 9,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"10\",\n\t\t\"i\": 10,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"11\",\n\t\t\"i\": 11,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"12\",\n\t\t\"i\": 12,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"13\",\n\t\t\"i\": 13,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"14\",\n\t\t\"i\": 14,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"15\",\n\t\t\"i\": 15,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"16\",\n\t\t\"i\": 16,\n\t\t\"pi\": false,\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t}]\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleStashWithDivineVessel.json",
    "content": "{\"numTabs\":26,\"tabs\":[{\"n\":\"\\u00a3\",\"i\":0,\"id\":\"7f660cd09b22c160be4d87bad8b1ec68fcbff20d54ba1155520848c395cc9eae\",\"type\":\"CurrencyStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"},{\"n\":\"Maps\",\"i\":1,\"id\":\"2e77cc15c3c2db01157285bacb57b631634545d2e4e5e21d48ead6c1e1677276\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":true,\"colour\":{\"r\":90,\"g\":0,\"b\":179},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/5721d0efa7\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/a46989dc8a\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/577a5b5203\\/Stash_TabR.png\"},{\"n\":\"\\u2666\",\"i\":2,\"id\":\"50af5b5664673202e176561179a0dcf34deeadb705203e924ed3b7afa6fc92fe\",\"type\":\"DivinationCardStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":0,\"g\":0,\"b\":128},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/7baaab4c91\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/c6786cda39\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/997b161859\\/Stash_TabR.png\"},{\"n\":\"E\",\"i\":3,\"id\":\"29a4daf241fdcf6faf72eac73c274f4699a09a40c0f1843a9e34bb87f10f4d17\",\"type\":\"EssenceStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"},{\"n\":\"Superiour\",\"i\":4,\"id\":\"fbba8e0871a392f64ed2c78b68429dd7238955a1cd5221ecd4facc695f6af43e\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":0,\"g\":0,\"b\":128},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/7baaab4c91\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/c6786cda39\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/997b161859\\/Stash_TabR.png\"},{\"n\":\"Gems\",\"i\":5,\"id\":\"4412a291f296758d45d96aa7098caa473a0788e795527e2c2f93c847cf6da1f1\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":191,\"g\":0,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/98a058fc32\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/edc7e2c501\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/42ff0bf3e8\\/Stash_TabR.png\"},{\"n\":\"$\",\"i\":6,\"id\":\"db32259be9c859e8eff4ab37f64308f88a35e832e805c8ce362715e581a96d10\",\"type\":\"QuadStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"},{\"n\":\"Upgrades\",\"i\":7,\"id\":\"cc79ed8b17b622e2e49d5e0d3bde4d7d7f467c178d7f5b9cdd8b5af31687db62\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"},{\"n\":\"1\",\"i\":8,\"id\":\"390c8b07159bd2ec401d5a76d01e5bd34d3bfb1ab3869d7f5ac8f86fa2df1226\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"},{\"n\":\"2\",\"i\":9,\"id\":\"5489b57494ba283487ec2f96bf0922bd7656b803480d81edacdeac5a375cab04\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"},{\"n\":\"3\",\"i\":10,\"id\":\"aee648154918ab32478e30848c368b69d6d05a0fa01bc20f0e33b431aef6a48a\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"},{\"n\":\"4\",\"i\":11,\"id\":\"56594344b41e28b88d7b463e84862a261fe9b3dbeeadbf7eb6036f3fcf5d20f3\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"},{\"n\":\"5\",\"i\":12,\"id\":\"ccd8c41342ceaa40f1ca1f69a9b2d27e69a49913c6e07ac26511512b96efe202\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"},{\"n\":\"6\",\"i\":13,\"id\":\"6a73fe06b52be1f773b9b0b41d9b02d7ab6eb0aeb32a64d3d3fb165374e0006c\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"},{\"n\":\"7\",\"i\":14,\"id\":\"eaf5bba6d72be7e8de6db049611557c9f3e98f0a1a5af41dddb27976a9195ba0\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"},{\"n\":\"8\",\"i\":15,\"id\":\"dc25397e0227c3b6af49a20991f3b3ba3b5891ec89d3389f421ef9d0acbcd7af\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"},{\"n\":\"9\",\"i\":16,\"id\":\"165e7a76e0ba6fa0892214d509acd58944ebf14fb853762c642bff06b4dde08d\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"},{\"n\":\"10\",\"i\":17,\"id\":\"5ae5cd4abd067cdff4e7c5d5e55098f9791f1c18d056d0f4a8e5d72b115af3e4\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"},{\"n\":\"11\",\"i\":18,\"id\":\"6ad6517f2b013fbffb202c3e3a2459ffb1bca4c9ef96e8365c5fd323d648f083\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"},{\"n\":\"12\",\"i\":19,\"id\":\"f619080a4f94a8e771594d4053ad4166cb98932daa060ced4ee8f3d24f369630\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"},{\"n\":\"18\",\"i\":20,\"id\":\"73654693399d0311d79288766fdeb9da27209361c9f27508e5fee0a531ff10a4\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"},{\"n\":\"19\",\"i\":21,\"id\":\"eac06aa98e2e336611adb9a5d43259f1ca851a330c0e9f58c11f801d1f1bde69\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"},{\"n\":\"20\",\"i\":22,\"id\":\"c5e5a8af3a1a35b7b371c269286413ab458f2600613c4448ad8362568acb057c\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"},{\"n\":\"21\",\"i\":23,\"id\":\"700cdc33315d5802bddbbe51bb97eaa9a79c256785e254ae8b7037f725db7d18\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"},{\"n\":\"22\",\"i\":24,\"id\":\"18e9367e1ac452bfd0e5e88ee2fc7170eb835154d8c8c0a1a2ef41051b4ed411\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"},{\"n\":\"23\",\"i\":25,\"id\":\"6736d5dbe91782c6d23d4e747be1b7d9e0bce92a239844d4c66b95d7d3588636\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"}],\"items\":[{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":73,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Strand2.png?scale=1&scaleIndex=0&w=1&h=1&v=64bf7bd568a8cac43b9266ddc30ba8d33\",\"league\":\"Harbinger\",\"id\":\"af685f6125ee5120530988d3442dbf6c9302ea7bb6ac009a92c86a52ff60dab1\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Strand Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"6\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":1,\"y\":9,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":76,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/PrimordialPool1.png?scale=1&scaleIndex=0&w=1&h=1&v=bdaa9bfd4696a1c01ad47a0446c6180b3\",\"league\":\"Harbinger\",\"id\":\"589790e77f87349f0a520d2fbd16cd9aed1c6342084d310e9ec3a5f339d3d480\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Primordial Pool Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":1,\"y\":7,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":80,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Orchard2.png?scale=1&scaleIndex=0&w=1&h=1&v=cf7ee600a464b10d08e479bc1e3fa3a43\",\"league\":\"Harbinger\",\"id\":\"726bd0ee7558d0f3f866a04b769c5e0601e616e36d7da9cb34f2e67d52dbb23b\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Orchard Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"9\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":0,\"y\":7,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Beach1.png?scale=1&scaleIndex=0&w=1&h=1&v=0d1102a89802153c18de5757a42d8cde3\",\"league\":\"Harbinger\",\"id\":\"8b20b344c38fa9e3b1554c93612a3ec66e464b93e5d0dd7e0e660cad5acd146e\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Beach Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":11,\"y\":8,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":75,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Tower1.png?scale=1&scaleIndex=0&w=1&h=1&v=c1bc5db0fd6fdfec77bd028a27bfa75b3\",\"league\":\"Harbinger\",\"id\":\"7d6f4146412c8ca32ad29ef3f40fa74503ae9042690d7d31684131016bba3df8\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Tower Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":11,\"y\":1,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":79,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Promenade2.png?scale=1&scaleIndex=0&w=1&h=1&v=00729aa3e86f0a056e092fb39c302c633\",\"league\":\"Harbinger\",\"id\":\"f07717a79a6137decbb2da9437a78db082eae77e996118f288986f6f36504d4e\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Promenade Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"9\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":2,\"y\":6,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/WastePool1.png?scale=1&scaleIndex=0&w=1&h=1&v=8ea37ac6d2aa1ef611b66cbdc9ffe0e53\",\"league\":\"Harbinger\",\"id\":\"fc6a081c9227161be18cca0c0d5dae89ec96d1dfaab88a53e68aaf5abf9e37c5\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Waste Pool Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":8,\"y\":10,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":69,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Factory1.png?scale=1&scaleIndex=0&w=1&h=1&v=1b8f5d109ede8682f16322085d3b06023\",\"league\":\"Harbinger\",\"id\":\"b10c68ccbd9d99bba00bce0b2367884929340a394a1b1645ff03ea66361974e4\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Factory Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":0,\"y\":3,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":73,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Dungeon1.png?scale=1&scaleIndex=0&w=1&h=1&v=6f33e509834393233cf337bfcf013a7e3\",\"league\":\"Harbinger\",\"id\":\"486f86de9dd77c64dbd42e2cf4c86de64adc7b3112d3499bcdaf3b1fbd5da368\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"<<set:MS>><<set:M>><<set:S>>Twinned Dungeon Map of Giants\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+27%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Item Rarity\",\"values\":[[\"+14%\",1]],\"displayMode\":0,\"type\":3}],\"explicitMods\":[\"Monsters have 45% increased Area of Effect\",\"Area contains two Unique Bosses\"],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"x\":11,\"y\":5,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":78,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Arena2.png?scale=1&scaleIndex=0&w=1&h=1&v=f19c81119592f5239fdc6caf2e2d991b3\",\"league\":\"Harbinger\",\"id\":\"0cb9c4e251b3104a9c7439c3973568f96df4e76c1051ee664d985c2961f52d60\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Arena Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"8\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":6,\"y\":2,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":79,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Colonnade2.png?scale=1&scaleIndex=0&w=1&h=1&v=fc32e10bce122e68a133852db775249b3\",\"league\":\"Harbinger\",\"id\":\"3e9d8b5db41c977170244494bf0a13abca3d8922befd1b551f35fd48eab3aeee\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Colonnade Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"10\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":3,\"y\":3,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":75,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Catacomb2.png?scale=1&scaleIndex=0&w=1&h=1&v=462f39acd8966d56ea327ac642c1a45e3\",\"league\":\"Harbinger\",\"id\":\"f02841a2db534cd303e69c3c5fbb2a24aa47da61d8e3e216666965f5a1722723\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Superior Catacombs Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"7\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+20%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Quality\",\"values\":[[\"+20%\",1]],\"displayMode\":0,\"type\":6}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":1,\"y\":11,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":72,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Labyrinth.png?scale=1&scaleIndex=0&w=1&h=1&v=ef005aef5d2f9135d6922f4b1b912f783\",\"league\":\"Harbinger\",\"id\":\"2f72d658ad17101813b243a737b5a31c5776a18a1e3331fa5cbb0b7937cd9cd5\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Offering to the Goddess\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"descrText\":\"Travel to the Aspirants' Plaza and spend this item to open the Eternal Labyrinth. You must have completed the six different Trials of Ascendancy found in Maps in order to access this area.\",\"flavourText\":[\"It is time for the Goddess to give her final verdict.\\r\",\"Your fate rests in her even hands.\"],\"frameType\":0,\"x\":0,\"y\":11,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":70,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Marshes1.png?scale=1&scaleIndex=0&w=1&h=1&v=0327fc3ce97603e3399f1edca242dd743\",\"league\":\"Harbinger\",\"id\":\"da60053bf86f6730e0b1b74ac0481ecdbadd2c7b592607764324a036430f78dd\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Marshes Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":0,\"y\":6,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":78,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Arsenal2.png?scale=1&scaleIndex=0&w=1&h=1&v=af9c1a0a8aacdaab4d877eeba46fa55e3\",\"league\":\"Harbinger\",\"id\":\"19130910022cf244facd2883680284fc9966497919c7340818a892155a2b250b\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Arsenal Map\",\"identified\":false,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"10\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"x\":3,\"y\":2,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":75,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Tower1.png?scale=1&scaleIndex=0&w=1&h=1&v=c1bc5db0fd6fdfec77bd028a27bfa75b3\",\"league\":\"Harbinger\",\"id\":\"15e491a384852ff08597973f0f81e2a687b2b00d42c32c896ce7d2d37b862980\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Tower Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":11,\"y\":6,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":79,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Beach2.png?scale=1&scaleIndex=0&w=1&h=1&v=502b712baed1eca77f130331f3640d7c3\",\"league\":\"Harbinger\",\"id\":\"ca615c64bd1905d153c5daa80af052942c53ea57fa09da4fee14fc6b31dbbabc\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Superior Shaped Beach Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"7\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+6%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Quality\",\"values\":[[\"+6%\",1]],\"displayMode\":0,\"type\":6}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":0,\"y\":2,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Academy1.png?scale=1&scaleIndex=0&w=1&h=1&v=9c919b843125e5f90edc210e67f27e1d3\",\"league\":\"Harbinger\",\"id\":\"bda06a5be0a63c0d62e973392da96430043caf55660d147a46934212fad31a54\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Academy Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":7,\"y\":3,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/VaalPyramid1.png?scale=1&scaleIndex=0&w=1&h=1&v=1bcf90bc8244d243de0f8d7f4f7bf90d3\",\"league\":\"Harbinger\",\"id\":\"2f761a21ceb0736b2ba4794d374f15141d0fe1e752a7ae2796f92f5433681f0d\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Vaal Pyramid Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":0,\"y\":1,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":76,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/AridLake1.png?scale=1&scaleIndex=0&w=1&h=1&v=1a6f512c443b8e7add6c7bcbdbd42dd73\",\"league\":\"Harbinger\",\"id\":\"77b50d49b152baeec6ed47684e5b60a7c11d531e219b27396f1a1cb7ff2d2c90\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Arid Lake Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":6,\"y\":11,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/VaalPyramid1.png?scale=1&scaleIndex=0&w=1&h=1&v=1bcf90bc8244d243de0f8d7f4f7bf90d3\",\"league\":\"Harbinger\",\"id\":\"d6d4724f10617ecc9ced253cd88e068b9cdcab991d05377b63a5b5f6b499c43b\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Vaal Pyramid Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":1,\"y\":1,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Phantasmagoria1.png?scale=1&scaleIndex=0&w=1&h=1&v=d6c562ed68d068a7129539ad038ab0803\",\"league\":\"Harbinger\",\"id\":\"720459155bec89111e52f2c06cd19998d0ff48043d44c4196a4250aab89651ec\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Phantasmagoria Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":7,\"y\":6,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":76,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Museum2.png?scale=1&scaleIndex=0&w=1&h=1&v=64da9d9055a7f58de5fe12e35cb3960c3\",\"league\":\"Harbinger\",\"id\":\"5c4742ba35f3d439d3dfa44cd3630f55223352fe8a47e241139f15084204da8a\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Museum Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"9\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":2,\"y\":1,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":70,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Cavern1.png?scale=1&scaleIndex=0&w=1&h=1&v=3c78898ba319dd7f91e5362a1e24fdfa3\",\"league\":\"Harbinger\",\"id\":\"b926d4d7c5f6f07b56bb806c095745d1db6d1def76e7704bfa03c3b5981d231a\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Cavern Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":9,\"y\":11,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":72,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Strand2.png?scale=1&scaleIndex=0&w=1&h=1&v=64bf7bd568a8cac43b9266ddc30ba8d33\",\"league\":\"Harbinger\",\"id\":\"a71f582b4528d19101f56c7adfa91f8b8518e76b5f9815c38ea93984b8900276\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Strand Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"6\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":0,\"y\":4,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":76,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Temple2.png?scale=1&scaleIndex=0&w=1&h=1&v=1655be2680e46408cbed5a6f0bce3fb63\",\"league\":\"Harbinger\",\"id\":\"e708424dd6b47b3b6600d4a5c240a98e8b689fbc5259a9ad43800b677d3e1914\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Temple Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"9\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":3,\"y\":1,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Labyrinth.png?scale=1&scaleIndex=0&w=1&h=1&v=ef005aef5d2f9135d6922f4b1b912f783\",\"league\":\"Harbinger\",\"id\":\"fb38e3f30061586943be04691a7b0c5d9ab8a51420ebca8caf99127cd175f701\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Offering to the Goddess\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"descrText\":\"Travel to the Aspirants' Plaza and spend this item to open the Eternal Labyrinth. You must have completed the six different Trials of Ascendancy found in Maps in order to access this area.\",\"flavourText\":[\"It is time for the Goddess to give her final verdict.\\r\",\"Your fate rests in her even hands.\"],\"frameType\":0,\"x\":1,\"y\":2,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":69,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/AridLake1.png?scale=1&scaleIndex=0&w=1&h=1&v=1a6f512c443b8e7add6c7bcbdbd42dd73\",\"league\":\"Harbinger\",\"id\":\"f2596b3ec5248b59d2a8d20badcc47288bbbd72e932f807457c032a18bf27edc\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Arid Lake Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":6,\"y\":10,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/ArachnidNest2.png?scale=1&scaleIndex=0&w=1&h=1&v=84cdaaef93e3ba1322ee921af31151343\",\"league\":\"Harbinger\",\"id\":\"c62c4b375fccb0adf199ca9ae1e3a6ffaaaaaa070295ef11d521d206a06c2784\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Arachnid Nest Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"8\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":1,\"y\":0,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":77,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Thicket2.png?scale=1&scaleIndex=0&w=1&h=1&v=5fd4315a73d26ede201484e0584a19b93\",\"league\":\"Harbinger\",\"id\":\"10fa7ee06436cfa2476292e92850c729896d255a2fbfe05d891f739c0b913478\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"<<set:MS>><<set:M>><<set:S>>Titan's Thicket Map of Temporal Chains\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"6\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+28%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Item Rarity\",\"values\":[[\"+14%\",1]],\"displayMode\":0,\"type\":3},{\"name\":\"Monster Pack Size\",\"values\":[[\"+14%\",1]],\"displayMode\":0,\"type\":4}],\"explicitMods\":[\"Players are Cursed with Temporal Chains\",\"Unique Boss has 30% increased Life\",\"Unique Boss has 55% increased Area of Effect\"],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"x\":1,\"y\":3,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":77,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Beach2.png?scale=1&scaleIndex=0&w=1&h=1&v=502b712baed1eca77f130331f3640d7c3\",\"league\":\"Harbinger\",\"id\":\"cb5cca5acaa055fc6e00949fd0140b68d9cc24d3622cad788767b3087aaeb809\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Shaped Beach Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"7\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":3,\"y\":8,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Marshes1.png?scale=1&scaleIndex=0&w=1&h=1&v=0327fc3ce97603e3399f1edca242dd743\",\"league\":\"Harbinger\",\"id\":\"ad7382f7220604c67a2f19ec092d84c867c727784aa75cbff19179f40efb6f81\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Marshes Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":1,\"y\":4,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":78,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Oasis1.png?scale=1&scaleIndex=0&w=1&h=1&v=9bf1b37030ccf7c99c000352c34700183\",\"league\":\"Harbinger\",\"id\":\"c3789997bf26c19bc2eaf0df1bec3cfd42512619564e9c7702124b8f2e8bb52e\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Oasis Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":10,\"y\":7,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":76,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Promenade2.png?scale=1&scaleIndex=0&w=1&h=1&v=00729aa3e86f0a056e092fb39c302c633\",\"league\":\"Harbinger\",\"id\":\"70a7aa0afaaff0d064fcaf129ad3e171a482636f410c400d1014a9970ea2bbdf\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Promenade Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"9\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":1,\"y\":6,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":52,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Ghetto1.png?scale=1&scaleIndex=0&w=1&h=1&v=d10e9927be6e64352cae0c4a2690bdfe3\",\"league\":\"Harbinger\",\"id\":\"ae5072203f67ee4257629ca0d153eabfc49be640d3084d1fef6990621b38a2fd\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Ghetto Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":10,\"y\":9,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":52,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Factory1.png?scale=1&scaleIndex=0&w=1&h=1&v=1b8f5d109ede8682f16322085d3b06023\",\"league\":\"Harbinger\",\"id\":\"1081cd88aa0d2c5cf1da0ed1e8234c5e1d7e6357cee106cc8d792ae01f6488ab\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Factory Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":10,\"y\":10,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":76,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Channel1.png?scale=1&scaleIndex=0&w=1&h=1&v=d08c67d09e84c51f45951b1a98b794173\",\"league\":\"Harbinger\",\"id\":\"58b1419c15d7af4cfd48372cb43ef5c480b2d2743318a28c888fe341fd54a1d2\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Channel Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":4,\"y\":10,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":76,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Channel1.png?scale=1&scaleIndex=0&w=1&h=1&v=d08c67d09e84c51f45951b1a98b794173\",\"league\":\"Harbinger\",\"id\":\"ff483b968aa1653ed3bc5673e2195642f9e49952f7cc1fcc62e94a1ae033e6f3\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Channel Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":4,\"y\":11,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":73,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Sewer1.png?scale=1&scaleIndex=0&w=1&h=1&v=3b6f4c028663cc670eb4e0c2e7bd11e93\",\"league\":\"Harbinger\",\"id\":\"4b0a323a205c7f037135043c6e2b7af453b61f833bce4830edec9d16d788c341\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Sewer Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":5,\"y\":11,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":75,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/ArachnidNest2.png?scale=1&scaleIndex=0&w=1&h=1&v=84cdaaef93e3ba1322ee921af31151343\",\"league\":\"Harbinger\",\"id\":\"11090a7cffa88cebd4ada9a1501a910d74cfff332aea81bac681369c2fceb65a\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Arachnid Nest Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"8\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":1,\"y\":5,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":77,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/PrimordialPool1.png?scale=1&scaleIndex=0&w=1&h=1&v=bdaa9bfd4696a1c01ad47a0446c6180b3\",\"league\":\"Harbinger\",\"id\":\"cbb1c7fc1800c0dbd5ab44caf560d096bde347b5b71ad2e050473a9e65050105\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Primordial Pool Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":9,\"y\":0,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":72,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/WastePool1.png?scale=1&scaleIndex=0&w=1&h=1&v=8ea37ac6d2aa1ef611b66cbdc9ffe0e53\",\"league\":\"Harbinger\",\"id\":\"8a0460f44fffa67ee2007bb52ae7e714c6d03f5a0a90a799b24c427f07a49e35\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Waste Pool Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":8,\"y\":11,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":58,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Ghetto1.png?scale=1&scaleIndex=0&w=1&h=1&v=d10e9927be6e64352cae0c4a2690bdfe3\",\"league\":\"Harbinger\",\"id\":\"42261ed858a8e964f051213a46e8aa7f7ebf827a18324e632690a68a65f16e50\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Ghetto Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":11,\"y\":10,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":2,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/SinFlaskEmpty.png?scale=1&scaleIndex=0&w=1&h=2&v=8b9f566d35bc00387e43f8ec4eefad313\",\"league\":\"Harbinger\",\"id\":\"80026b5ddfd2c757b4547643f3e744248e1865b8caf9caf673cd6610bb1e343d\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Divine Vessel\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"implicitMods\":[\"Unique Boss deals 10% increased Damage\",\"Unique Boss has 10% increased Attack and Cast Speed\",\"Unique Boss has 10% increased Life\",\"Unique Boss has 20% increased Area of Effect\"],\"descrText\":\"Can be used in the Templar Laboratory or a personal Map Device, allowing you to capture the Soul of the Map's Boss. The Vessel containing the captured Soul can be retrieved from the Map Device. You must be in the Map when the boss is defeated.\",\"flavourText\":[\"Power is a curious thing. \\r\",\"It can be contained, hidden, locked away, \\r\",\"and yet it always breaks free.\"],\"frameType\":0,\"x\":8,\"y\":0,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":78,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Dungeon1.png?scale=1&scaleIndex=0&w=1&h=1&v=6f33e509834393233cf337bfcf013a7e3\",\"league\":\"Harbinger\",\"id\":\"5b25e6e5082c4a53cc405fc2ebb33a4927f9419a72f3714e92644e0b31ccee11\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Dungeon Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":10,\"y\":5,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":73,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Phantasmagoria1.png?scale=1&scaleIndex=0&w=1&h=1&v=d6c562ed68d068a7129539ad038ab0803\",\"league\":\"Harbinger\",\"id\":\"4d0a53b967777ac42645be3cca948ec07340b995d2991761cc89ddccfc9052b2\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Phantasmagoria Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":7,\"y\":5,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/DryWoods2.png?scale=1&scaleIndex=0&w=1&h=1&v=85fef8f5455a53d878193a979771a2093\",\"league\":\"Harbinger\",\"id\":\"ba40f6961f80b59596f483829083d22ec7d9d9de5572ffc70db987ba4a7659db\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Ashen Wood Map\",\"identified\":false,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"7\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"x\":0,\"y\":8,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":76,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/DryWoods2.png?scale=1&scaleIndex=0&w=1&h=1&v=85fef8f5455a53d878193a979771a2093\",\"league\":\"Harbinger\",\"id\":\"2f2dba21b1e17a8a81c9729f32a0f6f4135adcbcf2e1620e94be60a2e5aad303\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Ashen Wood Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"7\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":2,\"y\":4,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Tower1.png?scale=1&scaleIndex=0&w=1&h=1&v=c1bc5db0fd6fdfec77bd028a27bfa75b3\",\"league\":\"Harbinger\",\"id\":\"524af6228ff8b91166a35770a65422b74333ffb1a742ac56c74dafd429a8273f\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Tower Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":10,\"y\":6,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Villa1.png?scale=1&scaleIndex=0&w=1&h=1&v=f8f12a7207f89126b2a36e46dbac05a03\",\"league\":\"Harbinger\",\"id\":\"d2effaa140e15597255b492442146694cd40f952a365ed99538c48e388fe2d61\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"<<set:MS>><<set:M>><<set:S>>Otherworldly Villa Map of Ice\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+24%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Item Rarity\",\"values\":[[\"+12%\",1]],\"displayMode\":0,\"type\":3}],\"explicitMods\":[\"Area has patches of chilled ground\",\"Slaying Enemies close together can attract monsters from Beyond\"],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"x\":11,\"y\":2,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":77,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Cemetery2.png?scale=1&scaleIndex=0&w=1&h=1&v=0e123ff2ea520a943138e8c8d793ec6f3\",\"league\":\"Harbinger\",\"id\":\"5543c6556a819cf74fbf17140fcc8d48a1520ecfa52425de9028ce1e4201c6f5\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Cemetery Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"8\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":5,\"y\":4,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":76,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Villa1.png?scale=1&scaleIndex=0&w=1&h=1&v=f8f12a7207f89126b2a36e46dbac05a03\",\"league\":\"Harbinger\",\"id\":\"4176b757fc9b2c6af8f97c21bf29aadad705bc8304e7cf5087d30d09c5ce3f99\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Villa Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":10,\"y\":2,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/SpiderLair1.png?scale=1&scaleIndex=0&w=1&h=1&v=17901400bd20fda48d7b12e0d27eca1d3\",\"league\":\"Harbinger\",\"id\":\"844451adff2c373e0d9ca5866ac241fe424e1d629b7259cfbf45fe81e8e7903e\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Superior Spider Lair Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+8%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Quality\",\"values\":[[\"+8%\",1]],\"displayMode\":0,\"type\":6}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":1,\"y\":8,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Oasis1.png?scale=1&scaleIndex=0&w=1&h=1&v=9bf1b37030ccf7c99c000352c34700183\",\"league\":\"Harbinger\",\"id\":\"a037978f7c8c1d4f6f98a7c621ba07d2fffe01ed705e9ac19d2038cac262340e\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Superior Oasis Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+9%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Quality\",\"values\":[[\"+9%\",1]],\"displayMode\":0,\"type\":6}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":11,\"y\":7,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Thicket2.png?scale=1&scaleIndex=0&w=1&h=1&v=5fd4315a73d26ede201484e0584a19b93\",\"league\":\"Harbinger\",\"id\":\"9aeac6ba3e1a316d937539d521b994928a5ff4b868c29fd99c96a00c34a000f8\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Thicket Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"6\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":1,\"y\":10,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":73,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Desert2.png?scale=1&scaleIndex=0&w=1&h=1&v=35992be1e075647f1c9c44738cbc90623\",\"league\":\"Harbinger\",\"id\":\"9656ab9438e06d05fc49524416f9150dc963505c928812a856900abeac301009\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Shaped Desert Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"6\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":2,\"y\":0,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":77,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Courtyard2.png?scale=1&scaleIndex=0&w=1&h=1&v=e9e8901e28f976aea904e60caf9277103\",\"league\":\"Harbinger\",\"id\":\"df0bc8436c9098fb159ff9d31a11b1c7a80899b497cbd51e5853a14177ea879f\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Courtyard Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"10\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":0,\"y\":9,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":78,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/AcidLakes2.png?scale=1&scaleIndex=0&w=1&h=1&v=86010907844d2b009a824de71b04a9eb3\",\"league\":\"Harbinger\",\"id\":\"9408be8a9b763a802260f635c4ad3ffa7a6f081d1d2cf1e4e5e81573d2c443f7\",\"sockets\":[],\"name\":\"<<set:MS>><<set:M>><<set:S>>Dark Edge\",\"typeLine\":\"Shaped Acid Lakes Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"9\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+92%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Item Rarity\",\"values\":[[\"+47%\",1]],\"displayMode\":0,\"type\":3},{\"name\":\"Monster Pack Size\",\"values\":[[\"+24%\",1]],\"displayMode\":0,\"type\":4}],\"explicitMods\":[\"Players are Cursed with Temporal Chains\",\"38% more Monster Life\",\"22% increased Monster Damage\",\"Monsters Poison on Hit\",\"40% less effect of Curses on Monsters\",\"Players gain 40% reduced Flask Charges\"],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":2,\"x\":2,\"y\":3,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":77,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Quay2.png?scale=1&scaleIndex=0&w=1&h=1&v=21c3e08e9f0debbf9467b520ea61e4153\",\"league\":\"Harbinger\",\"id\":\"8c0bb0ef1b8fd733543b19f4d04528e0746f74057ca90b4bf594cc181c928007\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Port Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"10\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":2,\"y\":2,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":75,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Arena2.png?scale=1&scaleIndex=0&w=1&h=1&v=f19c81119592f5239fdc6caf2e2d991b3\",\"league\":\"Harbinger\",\"id\":\"304c2739a5264d70641acf463f427c1e5282049cf47dec8ed62de5e50b44bace\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Arena Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"8\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":5,\"y\":2,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":72,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Labyrinth.png?scale=1&scaleIndex=0&w=1&h=1&v=ef005aef5d2f9135d6922f4b1b912f783\",\"league\":\"Harbinger\",\"id\":\"241a70abde14b12c785a5c2b026be3b77650a62cb08188e2fe8807a1b443500f\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Offering to the Goddess\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"descrText\":\"Travel to the Aspirants' Plaza and spend this item to open the Eternal Labyrinth. You must have completed the six different Trials of Ascendancy found in Maps in order to access this area.\",\"flavourText\":[\"It is time for the Goddess to give her final verdict.\\r\",\"Your fate rests in her even hands.\"],\"frameType\":0,\"x\":0,\"y\":5,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":78,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/JungleValley2.png?scale=1&scaleIndex=0&w=1&h=1&v=ea5ba5f7dc1ff1f4ff24c5143bb427b53\",\"league\":\"Harbinger\",\"id\":\"e9ec3f10427e92252e6dce339eda85609417e31594d50b2ffd298fb4d7fa1534\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Shaped Jungle Valley Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"6\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":0,\"y\":10,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Pit1.png?scale=1&scaleIndex=0&w=1&h=1&v=cb38e57c5923e24fbfaf4839b281ffd93\",\"league\":\"Harbinger\",\"id\":\"93149692304052dbb6b6a39df22f899789eb25ef78a4f6d42541a973a08dc6eb\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Pit Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":11,\"y\":3,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":75,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Factory1.png?scale=1&scaleIndex=0&w=1&h=1&v=1b8f5d109ede8682f16322085d3b06023\",\"league\":\"Harbinger\",\"id\":\"166c41c09961a3938639bcb020fa585b267be6c86753efc9dd0419acdfbc3c2e\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Factory Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":11,\"y\":9,\"inventoryId\":\"Stash2\",\"socketedItems\":[]},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":76,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/AtlasMaps\\/Crypt2.png?scale=1&scaleIndex=0&w=1&h=1&v=d18452b9a025d43500c24d3b5083999b3\",\"league\":\"Harbinger\",\"id\":\"284a944df1a6868386061f4192915b6ef744d3c6e1d83467ab5ffa8733bfe879\",\"sockets\":[],\"name\":\"\",\"typeLine\":\"Crypt Map\",\"identified\":true,\"corrupted\":false,\"lockedToCharacter\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"9\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"x\":0,\"y\":0,\"inventoryId\":\"Stash2\",\"socketedItems\":[]}]}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleStashWithEssences.json",
    "content": "{\n\t\"numTabs\": 83,\n\t\"items\": [{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 73,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Rings\\/Ring1.png?scale=1&w=1&h=1&v=7c04d5a65caa0371eccfe06a129a74073\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"c2553e6ca93aa82261088f16aa0ac3ee73c60c137f1574c56921f00259570720\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Glyph Turn\",\n\t\t\"typeLine\": \"Iron Ring\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"39\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"implicitMods\": [\"Adds 1 to 4 Physical Damage to Attacks\"],\n\t\t\"explicitMods\": [\"+14 to Strength\",\n\t\t\"Adds 2 to 22 Lightning Damage to Attacks\",\n\t\t\"+6% to Cold Resistance\",\n\t\t\"+32% to Lightning Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 7,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Hatred2.png?scale=1&stackSize=2&w=1&h=1&v=c4d6f1c773d20697ab194039c6734f363\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"cd5e6f68bce1029ee4c55f56984006a543b80cf6ad93d5018f1fed8975086180\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Muttering Essence of Hatred\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 45 and below\",\n\t\t\"\",\n\t\t\"Two Handed Melee Weapon: Adds (10-13) to (19-22) Cold Damage\",\n\t\t\"Other Weapon: Adds (6-8) to (13-15) Cold Damage\",\n\t\t\"Armour: (12-17)% to Cold Resistance\",\n\t\t\"Quiver: (12-17)% to Cold Resistance\",\n\t\t\"Belt: (12-17)% to Cold Resistance\",\n\t\t\"Other Jewellery: (10-13)% increased Cold Damage\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 3,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Fear5.png?scale=1&stackSize=2&w=1&h=1&v=98666642411b25e17b860dfa79499bef3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"4accfb1a1c78923c1bab8b14fc6e69c36a1b7871d69605d7ff6d0fc2b319e8c6\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Screaming Essence of Fear\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"\",\n\t\t\"One Handed Weapon: Minions deal (19-22)% increased Damage\",\n\t\t\"Two Handed Weapon: Minions deal (28-33)% increased Damage\",\n\t\t\"Armour: Minions have (19-22)% increased maximum Life\",\n\t\t\"Quiver: Minions have (19-22)% increased Movement Speed\",\n\t\t\"Belt: Minions have (19-22)% increased maximum Life\",\n\t\t\"Other Jewellery: Minions have (19-22)% increased Movement Speed\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 2,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 75,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Helmets\\/HelmetStrInt9.png?scale=1&w=2&h=2&v=a323fc68eab119f0020b9bfed06bb4633\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"790a45484f8b8436f3f9d07041275b92a3d0fb30079fcdecc15f1b1fd1829516\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Dragon Crest\",\n\t\t\"typeLine\": \"Prophet Crown\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"note\": \"~price 2 chaos\",\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"195\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 16\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"94\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 18\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"63\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"85\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"62\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"explicitMods\": [\"+48 to maximum Mana\",\n\t\t\"+54 to maximum Energy Shield\",\n\t\t\"+42% to Fire Resistance\",\n\t\t\"+14% to Cold Resistance\",\n\t\t\"+30% to Lightning Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 3,\n\t\t\"y\": 10,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Wrath3.png?scale=1&stackSize=1&w=1&h=1&v=3870a986ca4f5984a797427c40a4ab413\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"cfc26887b4fda9ce4fe1405e57c0e3e1a9881e8eccc0bab0e28dbf701793dee7\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Weeping Essence of Wrath\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 60 and below\",\n\t\t\"\",\n\t\t\"Two Handed Melee Weapon: Adds (2-7) to (87-92) Lightning Damage\",\n\t\t\"Other Weapon: Adds (2-5) to (58-61) Lightning Damage\",\n\t\t\"Armour: (18-23)% to Lightning Resistance\",\n\t\t\"Quiver: (18-23)% to Lightning Resistance\",\n\t\t\"Belt: (18-23)% to Lightning Resistance\",\n\t\t\"Other Jewellery: (8-12)% increased Lightning Damage\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 1,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Sorrow4.png?scale=1&stackSize=1&w=1&h=1&v=f5512f122d9c273e57c3eb4e1aa72fec3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"4b253c8c117031d2d27f7080532cf76db818dbe2dc3a81cb811524be8dcc4b5f\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Wailing Essence of Sorrow\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 75 and below\",\n\t\t\"\",\n\t\t\"Weapon: +1 to Level of Socketed Cold Gems\",\n\t\t\"Other Item: (28-32) to Dexterity\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 1,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Fear2.png?scale=1&stackSize=1&w=1&h=1&v=b87e37101af11df191863915c951c2de3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"68a0b16a4c6fc8b78fe96122b7f9e64760b4717aecaacc941232ce10cefc13ca\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Muttering Essence of Fear\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 45 and below\",\n\t\t\"\",\n\t\t\"One Handed Weapon: Minions deal (7-10)% increased Damage\",\n\t\t\"Two Handed Weapon: Minions deal (10-15)% increased Damage\",\n\t\t\"Armour: Minions have (7-10)% increased maximum Life\",\n\t\t\"Quiver: Minions have (7-10)% increased Movement Speed\",\n\t\t\"Belt: Minions have (7-10)% increased maximum Life\",\n\t\t\"Other Jewellery: Minions have (7-10)% increased Movement Speed\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 3,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 70,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Boots\\/BootsStr4.png?scale=1&w=2&h=2&v=e26e440ce9b34d249004f0c063d3fe123\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"7ef586b6fbd4287565f8d3d1057876b2182d60e41d86a93454f58147ddbd096c\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Armageddon Dash\",\n\t\t\"typeLine\": \"Goliath Greaves\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+8%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 6\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"166\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 16\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"54\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"95\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"explicitMods\": [\"+10 to maximum Life\",\n\t\t\"8% increased Rarity of Items found\",\n\t\t\"+41% to Fire Resistance\",\n\t\t\"30% increased Movement Speed\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Contempt2.png?scale=1&stackSize=1&w=1&h=1&v=54a248bdc119c25b458deaf1e48678213\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"dd56e46bc066dc83fd032ac1eb72e675da541a5e28e77f965b3005a8ac3abde1\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Muttering Essence of Contempt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 45 and below\",\n\t\t\"\",\n\t\t\"One Handed Weapon: Adds (4-5) to (8-9) Physical Damage\",\n\t\t\"Two Handed Weapon: Adds (6-8) to (12-14) Physical Damage\",\n\t\t\"Gloves: Adds (2-3) to (4-5) Physical Damage to Attacks\",\n\t\t\"Other Armour: Reflects (5-10) Physical Damage to Melee Attackers\",\n\t\t\"Quiver: Adds (2-3) to (4-5) Physical Damage to Attacks\",\n\t\t\"Belt: Reflects (5-10) Physical Damage to Melee Attackers\",\n\t\t\"Other Jewellery: Adds (2-3) to (4-5) Physical Damage to Attacks\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 2,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Zeal4.png?scale=1&stackSize=2&w=1&h=1&v=c09f456b095f7ecf967ff10b191fba2f3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"f62bf555ebb33620d86a3e97b2c9addaeeb1ec527a39ba5c8162294f05bbe7f4\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Wailing Essence of Zeal\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 75 and below\",\n\t\t\"\",\n\t\t\"Melee Weapon: (20-22)% increased Attack Speed\",\n\t\t\"Ranged Weapon: (8-9)% increased Attack Speed\",\n\t\t\"Gloves: (8-10)% increased Attack Speed\",\n\t\t\"Boots: 20% increased Movement Speed\",\n\t\t\"Other Armour: (20-22)% increased Stun and Block Recovery\",\n\t\t\"Quiver: (6-7)% increased Attack Speed\",\n\t\t\"Belt: (20-22)% increased Stun and Block Recovery\",\n\t\t\"Other Jewellery: (4-5)% increased Attack Speed\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Rage3.png?scale=1&stackSize=2&w=1&h=1&v=4e2cc03f5494682153e0209fda0e0e9d3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"1a1c729491618050c0dc93cfcff38200fc4e8c18d02cdcd4bce63cc2a2f1345b\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Weeping Essence of Rage\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 60 and below\",\n\t\t\"\",\n\t\t\"Weapon: +1 to Level of Socketed Fire Gems\",\n\t\t\"Other Item: (18-22) to Strength\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 0,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Greed2.png?scale=1&stackSize=1&w=1&h=1&v=2c3f8a3a5a1454ca0883d4c17109b6173\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"e9356b99bc7e70dca7d7801fb4c8814360d381908e45228c388534e661f7bc66\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Muttering Essence of Greed\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 45 and below\",\n\t\t\"\",\n\t\t\"Weapon: (0.6-0.8)% of Physical Attack Damage Leeched as Life\",\n\t\t\"Armour: (15-30) to maximum Life\",\n\t\t\"Quiver: (0.6-0.8)% of Physical Attack Damage Leeched as Life\",\n\t\t\"Belt: (12-15)% increased Flask Life Recovery rate\",\n\t\t\"Other Jewellery: (2-3) Life Regenerated per second\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 1,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Greed3.png?scale=1&stackSize=1&w=1&h=1&v=a673402a48dd5d1a6509515f5e249dab3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"01d3480b5f4fbe43bf7c7f4b361086c8494ae6a95da106a35cfe5ad88327b0c1\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Weeping Essence of Greed\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 60 and below\",\n\t\t\"\",\n\t\t\"Weapon: (0.7-0.9)% of Physical Attack Damage Leeched as Life\",\n\t\t\"Armour: (31-45) to maximum Life\",\n\t\t\"Quiver: (0.7-0.9)% of Physical Attack Damage Leeched as Life\",\n\t\t\"Belt: (16-19)% increased Flask Life Recovery rate\",\n\t\t\"Other Jewellery: (3-4) Life Regenerated per second\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 2,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 71,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Amulets\\/CitrineAmulet.png?scale=1&w=1&h=1&v=392b4ef08d8b72daaf1d0ec50d0173983\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"2814bbf05a131cca708e81ba93d643eee5a2388e006e72705e6f0c0088a80dd5\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Corruption Scarab\",\n\t\t\"typeLine\": \"Citrine Amulet\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"note\": \"~price 5 chaos\",\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"43\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"implicitMods\": [\"+17 to Strength and Dexterity\"],\n\t\t\"explicitMods\": [\"18% increased Global Critical Strike Chance\",\n\t\t\"+82 to maximum Life\",\n\t\t\"+41 to maximum Mana\",\n\t\t\"+28% to Cold Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 9,\n\t\t\"y\": 11,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Contempt5.png?scale=1&stackSize=2&w=1&h=1&v=b0890fd15d90c31d77f88b13d488dfe23\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"6cac422762980906013b5c310031336170193c6a402c69e663e5ae3807a023b7\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Screaming Essence of Contempt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"\",\n\t\t\"One Handed Weapon: Adds (12-16) to (24-28) Physical Damage\",\n\t\t\"Two Handed Weapon: Adds (18-24) to (36-42) Physical Damage\",\n\t\t\"Gloves: Adds (4-5) to (8-9) Physical Damage to Attacks\",\n\t\t\"Other Armour: Reflects (51-100) Physical Damage to Melee Attackers\",\n\t\t\"Quiver: Adds (4-5) to (8-9) Physical Damage to Attacks\",\n\t\t\"Amulet: Adds (9-12) to (19-22) Physical Damage to Attacks\",\n\t\t\"Ring: Adds (6-8) to (12-13) Physical Damage to Attacks\",\n\t\t\"Belt: Reflects (51-100) Physical Damage to Melee Attackers\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 0,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 75,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Belts\\/Belt6.png?scale=1&w=2&h=1&v=c6603b23e7ea1431c247869e74262a583\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"3b8ca0e8d81090226209a4fb43d04fbf9685ee643e2fb056eadcd16d3cde2650\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Sorrow Bond\",\n\t\t\"typeLine\": \"Studded Belt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"48\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"implicitMods\": [\"26% increased Stun Duration on Enemies\"],\n\t\t\"explicitMods\": [\"13% reduced Enemy Stun Threshold\",\n\t\t\"+121 to Armour\",\n\t\t\"3.3 Life Regenerated per second\",\n\t\t\"+8 to maximum Energy Shield\",\n\t\t\"+39% to Cold Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 8,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 74,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand7.png?scale=1&w=1&h=3&v=5a9080ee56477bb7a1386654d5bddd353\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"ccb556a45b984ea5e4581cb239089a60651067437885317f2bc37349844a7a5b\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 1,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Glyph Weaver\",\n\t\t\"typeLine\": \"Profane Wand\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"note\": \"~price 4 chaos\",\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Wand\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"23-43\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"8.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.35\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"70\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"237\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"12% increased Cast Speed\"],\n\t\t\"explicitMods\": [\"24% increased Fire Damage\",\n\t\t\"6% increased Lightning Damage\",\n\t\t\"Adds 35 to 65 Fire Damage to Spells\",\n\t\t\"13% increased Critical Strike Chance for Spells\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 5,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Doubt3.png?scale=1&stackSize=2&w=1&h=1&v=c9c89f93be1f54c06d99b9283a94af143\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"451c4a09a8c2666e89ed905ec8f09ef912bf421614838760ee722d230d0e302d\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Weeping Essence of Doubt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 60 and below\",\n\t\t\"\",\n\t\t\"Weapon: (101-130) to Accuracy Rating\",\n\t\t\"Gloves: (21-25) to Evasion Rating\",\n\t\t\"Boots: (21-25) to Evasion Rating\",\n\t\t\"Other Armour: (36-60) to Evasion Rating\",\n\t\t\"Quiver: (101-130) to Accuracy Rating\",\n\t\t\"Amulet: (8-10)% increased Evasion Rating\",\n\t\t\"Other Jewellery: (36-60) to Evasion Rating\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 1,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 75,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Belts\\/Belt3.png?scale=1&w=2&h=1&v=a559821037f54c94dae053b90bcea3633\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"d9edd5a53ccc9cfe0fb79ce71640573431f7464c0d0d3f8395c4f43f42815397\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Carrion Harness\",\n\t\t\"typeLine\": \"Leather Belt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"35\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"implicitMods\": [\"+25 to maximum Life\"],\n\t\t\"explicitMods\": [\"13% reduced Enemy Stun Threshold\",\n\t\t\"+20 to maximum Life\",\n\t\t\"+14 to maximum Energy Shield\",\n\t\t\"+20% to Lightning Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 8,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 75,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand2.png?scale=1&w=1&h=3&v=dd4e9f9ef8b06e3f3e3fa3ba400f8ae83\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"0d0358c5250977581560f0c9f44a2fa4f1421ee9a7435440f265ffc579a84f12\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Cataclysm Edge\",\n\t\t\"typeLine\": \"Demon's Horn\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Wand\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"26-48\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Elemental Damage\",\n\t\t\t\"values\": [[\"7-164\",\n\t\t\t6]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 10\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"10.48%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"59\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"179\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"34% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"Adds 7 to 164 Lightning Damage\",\n\t\t\"31% increased Critical Strike Chance\",\n\t\t\"+32% to Fire Resistance\",\n\t\t\"+3 Life gained on Kill\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 8,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Anger2.png?scale=1&stackSize=1&w=1&h=1&v=56963b86f3de434e89b427190f3c64663\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"93c8969f70a2229e82489af1d7cfb06d908a321e0355c649ff5025f7fcbb256b\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Muttering Essence of Anger\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 45 and below\",\n\t\t\"\",\n\t\t\"Two Handed Melee Weapon: Adds (12-16) to (23-27) Fire Damage\",\n\t\t\"Other Weapon: Adds (8-10) to (15-18) Fire Damage\",\n\t\t\"Armour: (12-17)% to Fire Resistance\",\n\t\t\"Quiver: (12-17)% to Fire Resistance\",\n\t\t\"Belt: (12-17)% to Fire Resistance\",\n\t\t\"Other Jewellery: (11-14)% increased Fire Damage\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 3,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 43,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyStr2B.png?scale=1&w=2&h=3&v=2f0e0b9bd3633f9501c66b41e85ea8373\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"2e21d6eff39a23fbc7159538e877e11676338cefc52698aff61043e1da6b867f\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Victory Mantle\",\n\t\t\"typeLine\": \"Battle Plate\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+20%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 6\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"594\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 16\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"41\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"114\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"explicitMods\": [\"+15 to Strength\",\n\t\t\"82% increased Armour\",\n\t\t\"+38 to maximum Life\",\n\t\t\"+29% to Fire Resistance\",\n\t\t\"+15% to Cold Resistance\",\n\t\t\"7% increased Stun and Block Recovery\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 6,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Wrath5.png?scale=1&stackSize=1&w=1&h=1&v=47288253244910c2da4f0bdda069b8323\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"8e051056e8db98e20947a697695c4d77b0cdf335b99a7d13413989d95b786113\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Screaming Essence of Wrath\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"\",\n\t\t\"Two Handed Melee Weapon: Adds (5-16) to (200-211) Lightning Damage\",\n\t\t\"Other Weapon: Adds (4-11) to (133-140) Lightning Damage\",\n\t\t\"Armour: (36-41)% to Lightning Resistance\",\n\t\t\"Quiver: (36-41)% to Lightning Resistance\",\n\t\t\"Belt: (36-41)% to Lightning Resistance\",\n\t\t\"Other Jewellery: (23-26)% increased Lightning Damage\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 3,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 75,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Daggers\\/Dagger5.png?scale=1&w=1&h=3&v=a1651ea7d4666506eba99122f5b927e43\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"a1ec821a260aaf2ad68338396bc628211da7accc392d4446136147225c7b057a\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Dragon Edge\",\n\t\t\"typeLine\": \"Boot Blade\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"note\": \"~price 3 chaos\",\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Dagger\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"14-55\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"6.60%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Weapon Range\",\n\t\t\t\"values\": [[\"8\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 14\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"59\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"63\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"90\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"40% increased Global Critical Strike Chance\"],\n\t\t\"explicitMods\": [\"Adds 4 to 129 Lightning Damage to Spells\",\n\t\t\"44% increased Critical Strike Chance for Spells\",\n\t\t\"27% increased Mana Regeneration Rate\",\n\t\t\"+31% to Lightning Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 9,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 76,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyStr2B.png?scale=1&w=2&h=3&v=2f0e0b9bd3633f9501c66b41e85ea8373\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"66075d45fc488dc2cbb375c2f5c97075e11433e1da849ae61259fae154fda593\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Blight Curtain\",\n\t\t\"typeLine\": \"Crusader Plate\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+20%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 6\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"1327\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 16\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"59\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"160\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"explicitMods\": [\"+11 to Strength\",\n\t\t\"+263 to Armour\",\n\t\t\"72% increased Armour\",\n\t\t\"+107 to maximum Life\",\n\t\t\"+35% to Cold Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 6,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Misery5.png?scale=1&stackSize=2&w=1&h=1&v=fe191e14d46d94e18c3650566fa1ceac3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"a7b8dea6f0a2cfa7adc8a3c394560eeb527fda7e642ff7c7f1d72fb5b79201f3\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Screaming Essence of Misery\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"\",\n\t\t\"One Handed Weapon: (17-19)% increased Cast Speed\",\n\t\t\"Two Handed Weapon: (26-29)% increased Cast Speed\",\n\t\t\"Shield: (50-59)% increased Mana Regeneration Rate\",\n\t\t\"Other Armour: (55-59) to maximum Mana\",\n\t\t\"Quiver: (11-15)% chance of Projectiles Piercing\",\n\t\t\"Belt: (11-15)% increased Flask Mana Recovery rate\",\n\t\t\"Other Jewellery: (50-59)% increased Mana Regeneration Rate\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 3,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Wrath4.png?scale=1&stackSize=1&w=1&h=1&v=1b78b631cf91f1d6ec48173183c262573\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"050c28a8687356f18b9e7c747542a5948b0f84ac86e9b6b526872ebcc21418db\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Wailing Essence of Wrath\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 75 and below\",\n\t\t\"\",\n\t\t\"Two Handed Melee Weapon: Adds (4-11) to (137-145) Lightning Damage\",\n\t\t\"Other Weapon: Adds (2-7) to (91-96) Lightning Damage\",\n\t\t\"Armour: (24-29)% to Lightning Resistance\",\n\t\t\"Quiver: (24-29)% to Lightning Resistance\",\n\t\t\"Belt: (24-29)% to Lightning Resistance\",\n\t\t\"Other Jewellery: (13-17)% increased Lightning Damage\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 1,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Woe3.png?scale=1&stackSize=1&w=1&h=1&v=e55316dbaaad843c3f96c0fc6b13fc723\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"5db4b70c4ce7193438980283c73be6dba92f9d82ba68334d942432c2d632e18e\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Weeping Essence of Woe\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 60 and below\",\n\t\t\"\",\n\t\t\"One Handed Weapon: (30-39)% increased Spell Damage\",\n\t\t\"Two Handed Weapon: (45-59)% increased Spell Damage\",\n\t\t\"Armour: (13-15) to maximum Energy Shield\",\n\t\t\"Quiver: (21-25)% increased Elemental Damage with Weapons\",\n\t\t\"Amulet: (8-10)% increased maximum Energy Shield\",\n\t\t\"Ring: (16-19) to maximum Energy Shield\",\n\t\t\"Belt: (16-19) to maximum Energy Shield\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 0,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Doubt5.png?scale=1&stackSize=2&w=1&h=1&v=8d3a34ab4f38108888a592ef53452eb53\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"5fe969b851d1564fae0b6fd85fd8f3001a3d4c7c637c3a55bbd6b0c1754201c6\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Screaming Essence of Doubt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"\",\n\t\t\"Weapon: (251-320) to Accuracy Rating\",\n\t\t\"Body Armour: (139-322) to Evasion Rating\",\n\t\t\"Helmet: (50-60) to Evasion Rating\",\n\t\t\"Shield: (139-322) to Evasion Rating\",\n\t\t\"Other Armour: (30-35) to Evasion Rating\",\n\t\t\"Quiver: (251-320) to Accuracy Rating\",\n\t\t\"Amulet: (14-16)% increased Evasion Rating\",\n\t\t\"Other Jewellery: (81-120) to Evasion Rating\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 3,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Suffering5.png?scale=1&stackSize=1&w=1&h=1&v=f308ffc5c350e8d224063040ad142f413\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"8ae510a529d33c5fc9c75e8407430609702e4a79487c9a685a133f91d3508dc8\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Screaming Essence of Suffering\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"\",\n\t\t\"One Handed Weapon: Adds (25-33) to (50-58) Cold Damage to Spells\",\n\t\t\"Two Handed Weapon: Adds (38-50) to (75-88) Cold Damage to Spells\",\n\t\t\"Gloves: Adds (6-8) to (12-15) Cold Damage to Attacks\",\n\t\t\"Body Armour: (7-8)% chance to Avoid Cold Damage when Hit\",\n\t\t\"Shield: (7-8)% chance to Avoid Cold Damage when Hit\",\n\t\t\"Other Armour: (23-26)% chance to Avoid being Frozen\",\n\t\t\"Quiver: Adds (6-8) to (12-15) Cold Damage to Attacks\",\n\t\t\"Belt: (23-26)% chance to Avoid being Frozen\",\n\t\t\"Other Jewellery: Adds (12-16) to (24-28) Cold Damage to Attacks\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 2,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Spite5.png?scale=1&stackSize=2&w=1&h=1&v=f1961cf6e92a2dfc1fcaca12c24ebf333\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"c932ef3d8a88fb519b186d5b5575895863c0e86ff266d64ec19b8dd5fd28ce44\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Screaming Essence of Spite\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"\",\n\t\t\"Weapon: +1 to Level of Socketed Lightning Gems\",\n\t\t\"Other Item: (33-37) to Intelligence\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 0,\n\t\t\"y\": 11,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 71,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Amulets\\/Amulet7.png?scale=1&w=1&h=1&v=ecac1e6f4574572eeef0379d955811cd3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"1953a083482d66f60a41c43fb4ed3dd5316011afb58659734220751b92d7afb5\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Hate Scarab\",\n\t\t\"typeLine\": \"Onyx Amulet\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"note\": \"~price 3 chaos\",\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"48\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"implicitMods\": [\"+12 to all Attributes\"],\n\t\t\"explicitMods\": [\"16% increased Fire Damage\",\n\t\t\"12% increased Rarity of Items found\",\n\t\t\"+27% to Fire Resistance\",\n\t\t\"+37% to Cold Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 11,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Anguish5.png?scale=1&stackSize=1&w=1&h=1&v=9769855172e3523de00e083ab3649ab83\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"6152edb3f44ef664d709a8445dce0efced54cca5ab9cbcd1a3573fca8acb1fa4\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Screaming Essence of Anguish\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"\",\n\t\t\"One Handed Weapon: Adds (31-41) to (61-71) Fire Damage to Spells\",\n\t\t\"Two Handed Weapon: Adds (41-55) to (83-96) Fire Damage to Spells\",\n\t\t\"Gloves: Adds (6-8) to (13-17) Fire Damage to Attacks\",\n\t\t\"Body Armour: (7-8)% chance to Avoid Fire Damage when Hit\",\n\t\t\"Shield: (7-8)% chance to Avoid Fire Damage when Hit\",\n\t\t\"Other Armour: (23-26)% chance to Avoid being Ignited\",\n\t\t\"Quiver: Adds (6-8) to (13-17) Fire Damage to Attacks\",\n\t\t\"Belt: (23-26)% chance to Avoid being Ignited\",\n\t\t\"Other Jewellery: Adds (16-22) to (32-38) Fire Damage to Attacks\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 2,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Suffering4.png?scale=1&stackSize=1&w=1&h=1&v=e764ac660e07b09bad94914c5bcb8dc03\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"79e5cfded785cf8e2082f178948d03b5bb039e42a344e79fc7f68b0eae6218d6\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Wailing Essence of Suffering\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 75 and below\",\n\t\t\"\",\n\t\t\"One Handed Weapon: Adds (17-23) to (34-40) Cold Damage to Spells\",\n\t\t\"Two Handed Weapon: Adds (26-34) to (52-60) Cold Damage to Spells\",\n\t\t\"Gloves: Adds (6-7) to (11-14) Cold Damage to Attacks\",\n\t\t\"Body Armour: (6-7)% chance to Avoid Cold Damage when Hit\",\n\t\t\"Shield: (6-7)% chance to Avoid Cold Damage when Hit\",\n\t\t\"Other Armour: (19-22)% chance to Avoid being Frozen\",\n\t\t\"Quiver: Adds (6-7) to (11-14) Cold Damage to Attacks\",\n\t\t\"Belt: (19-22)% chance to Avoid being Frozen\",\n\t\t\"Other Jewellery: Adds (10-13) to (20-24) Cold Damage to Attacks\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 2,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Hatred1.png?scale=1&stackSize=2&w=1&h=1&v=af1a86ff4108cc78b67a6b7199b8959f3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"d6bde35c245d092087eea0edee6d2efea7476273d1b3f0a1a2f18acef7715923\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Whispering Essence of Hatred\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 35 and below\",\n\t\t\"\",\n\t\t\"Two Handed Melee Weapon: Adds (2-3) to (4-5) Cold Damage\",\n\t\t\"Other Weapon: Adds (1-2) to 3 Cold Damage\",\n\t\t\"Armour: (6-11)% to Cold Resistance\",\n\t\t\"Quiver: (6-11)% to Cold Resistance\",\n\t\t\"Belt: (6-11)% to Cold Resistance\",\n\t\t\"Other Jewellery: (6-9)% increased Cold Damage\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 1,\n\t\t\"y\": 10,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Contempt3.png?scale=1&stackSize=1&w=1&h=1&v=d3673e9f9027fc270a8950d2998b1f6c3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"f0da3f51f490e8fb0a0d32f3aba1a4e2c2e7e803c8cfbe7c6115c8a8e6d52843\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Weeping Essence of Contempt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 60 and below\",\n\t\t\"\",\n\t\t\"One Handed Weapon: Adds (6-8) to (12-14) Physical Damage\",\n\t\t\"Two Handed Weapon: Adds (9-12) to (18-21) Physical Damage\",\n\t\t\"Gloves: Adds (3-4) to (6-7) Physical Damage to Attacks\",\n\t\t\"Other Armour: Reflects (11-24) Physical Damage to Melee Attackers\",\n\t\t\"Quiver: Adds (3-4) to (6-7) Physical Damage to Attacks\",\n\t\t\"Belt: Reflects (11-24) Physical Damage to Melee Attackers\",\n\t\t\"Other Jewellery: Adds (4-6) to (9-10) Physical Damage to Attacks\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 3,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Torment3.png?scale=1&stackSize=2&w=1&h=1&v=df38adcd8dfae9dc7ce43f8902aec8f33\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"780738f6fb3557aa2552a4666994e64d59309ebdfdacb307b7f899f399fe67c9\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Weeping Essence of Torment\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 60 and below\",\n\t\t\"\",\n\t\t\"One Handed Weapon: Adds (1-4) to (46-49) Lightning Damage to Spells\",\n\t\t\"Two Handed Weapon: Adds (2-6) to (69-73) Lightning Damage to Spells\",\n\t\t\"Gloves: Adds (1-2) to (21-22) Lightning Damage to Attacks\",\n\t\t\"Body Armour: (5-6)% chance to Avoid Lightning Damage when Hit\",\n\t\t\"Shield: (5-6)% chance to Avoid Lightning Damage when Hit\",\n\t\t\"Other Armour: (15-18)% chance to Avoid being Shocked\",\n\t\t\"Quiver: Adds (1-2) to (21-22) Lightning Damage to Attacks\",\n\t\t\"Belt: (15-18)% chance to Avoid being Shocked\",\n\t\t\"Other Jewellery: Adds (1-2) to (27-28) Lightning Damage to Attacks\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 3,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 77,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Belts\\/Belt3.png?scale=1&w=2&h=1&v=a559821037f54c94dae053b90bcea3633\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"29c004b02673416e2a88991dc70dc1453891d0d89e7e7682ad32bba5132bc43d\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Blight Trap\",\n\t\t\"typeLine\": \"Leather Belt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"implicitMods\": [\"+26 to maximum Life\"],\n\t\t\"explicitMods\": [\"+32 to Strength\",\n\t\t\"+28 to Dexterity\",\n\t\t\"+30 to maximum Energy Shield\",\n\t\t\"Reflects 4 Physical Damage to Melee Attackers\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Greed6.png?scale=1&stackSize=1&w=1&h=1&v=cbd2fb41eb4648a1b47915bab39b130b3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"5a5d925bf644f444e1c54a1ba50e0d85ed059de30728d7316117acabbf4422f7\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Shrieking Essence of Greed\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare or reforges a rare item, guaranteeing one property\",\n\t\t\"\",\n\t\t\"Weapon: (1-1.2)% of Physical Attack Damage Leeched as Life\",\n\t\t\"Body Armour: (110-119) to maximum Life\",\n\t\t\"Helmet: (90-99) to maximum Life\",\n\t\t\"Shield: (100-109) to maximum Life\",\n\t\t\"Other Armour: (80-89) to maximum Life\",\n\t\t\"Quiver: (1-1.2)% of Physical Attack Damage Leeched as Life\",\n\t\t\"Belt: (28-31)% increased Flask Life Recovery rate\",\n\t\t\"Other Jewellery: (6-7) Life Regenerated per second\"],\n\t\t\"descrText\": \"Right click this item then left click a normal or rare item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 0,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Anguish4.png?scale=1&stackSize=1&w=1&h=1&v=7f159be306f742b0e4845beacdecd6123\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"863bbdd64ed25edf732034c25069de832e82a789c2b2410b3f0a8dac5b99f501\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Wailing Essence of Anguish\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 75 and below\",\n\t\t\"\",\n\t\t\"One Handed Weapon: Adds (21-28) to (42-49) Fire Damage to Spells\",\n\t\t\"Two Handed Weapon: Adds (28-38) to (57-66) Fire Damage to Spells\",\n\t\t\"Gloves: Adds (5-7) to (11-14) Fire Damage to Attacks\",\n\t\t\"Body Armour: (6-7)% chance to Avoid Fire Damage when Hit\",\n\t\t\"Shield: (6-7)% chance to Avoid Fire Damage when Hit\",\n\t\t\"Other Armour: (19-22)% chance to Avoid being Ignited\",\n\t\t\"Quiver: Adds (5-7) to (11-14) Fire Damage to Attacks\",\n\t\t\"Belt: (19-22)% chance to Avoid being Ignited\",\n\t\t\"Other Jewellery: Adds (11-15) to (23-27) Fire Damage to Attacks\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 2,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Envy5.png?scale=1&stackSize=2&w=1&h=1&v=bac465c20f512b02d742b69f72d84b7a3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"8db63a54e88a9572269819cd247a0e5cd96b7aaeb4c9b83fd50fd35684eec328\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Screaming Essence of Envy\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"\",\n\t\t\"Weapon: (0.2-0.4)% of Physical Attack Damage Leeched as Mana\",\n\t\t\"Armour: (21-25)% to Chaos Resistance\",\n\t\t\"Quiver: (0.2-0.4)% of Physical Attack Damage Leeched as Mana\",\n\t\t\"Belt: (21-25)% to Chaos Resistance\",\n\t\t\"Other Jewellery: (23-26)% increased Chaos Damage\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 3,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Contempt4.png?scale=1&stackSize=1&w=1&h=1&v=31184aca892c0697a53adc523df41a713\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"ad08d1964a30b8d139f6029066a06f743496a0b8124493b5b3d0b1a5acc35235\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Wailing Essence of Contempt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 75 and below\",\n\t\t\"\",\n\t\t\"One Handed Weapon: Adds (7-10) to (15-18) Physical Damage\",\n\t\t\"Two Handed Weapon: Adds (11-15) to (23-27) Physical Damage\",\n\t\t\"Gloves: Adds (3-5) to (7-8) Physical Damage to Attacks\",\n\t\t\"Other Armour: Reflects (25-50) Physical Damage to Melee Attackers\",\n\t\t\"Quiver: Adds (3-5) to (7-8) Physical Damage to Attacks\",\n\t\t\"Amulet: Adds (6-9) to (13-15) Physical Damage to Attacks\",\n\t\t\"Ring: Adds (5-7) to (11-12) Physical Damage to Attacks\",\n\t\t\"Belt: Reflects (25-50) Physical Damage to Melee Attackers\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 2,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 67,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Belts\\/Belt3.png?scale=1&w=2&h=1&v=a559821037f54c94dae053b90bcea3633\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"3b1395973649742b80e199abc5dbe28846d390dc696a4894fb8c1559e15e32a0\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Loath Bind\",\n\t\t\"typeLine\": \"Leather Belt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"23\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"implicitMods\": [\"+33 to maximum Life\"],\n\t\t\"explicitMods\": [\"16% increased Elemental Damage with Weapons\",\n\t\t\"+11 to Strength\",\n\t\t\"+33 to Armour\",\n\t\t\"+16 to maximum Energy Shield\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Anger4.png?scale=1&stackSize=2&w=1&h=1&v=35c3aaa66bb84caf183a372d38a5a07c3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"6ac61120ade54b5dd3a1414dc74896accb1e19a138d9462ceed5c0e4d4c224f4\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Wailing Essence of Anger\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 75 and below\",\n\t\t\"\",\n\t\t\"Two Handed Melee Weapon: Adds (40-53) to (79-92) Fire Damage\",\n\t\t\"Other Weapon: Adds (26-35) to (53-61) Fire Damage\",\n\t\t\"Armour: (24-29)% to Fire Resistance\",\n\t\t\"Quiver: (24-29)% to Fire Resistance\",\n\t\t\"Belt: (24-29)% to Fire Resistance\",\n\t\t\"Other Jewellery: (19-22)% increased Fire Damage\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 2,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Sorrow3.png?scale=1&stackSize=2&w=1&h=1&v=3bb862824c36ee034a3a727a311432f83\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"fc16a8c39f7a108f461b4dc053712dfe60b22be37c7b5cd9b18b154ddaf836d9\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Weeping Essence of Sorrow\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 60 and below\",\n\t\t\"\",\n\t\t\"Weapon: +1 to Level of Socketed Cold Gems\",\n\t\t\"Other Item: (18-22) to Dexterity\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 2,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Fear4.png?scale=1&stackSize=1&w=1&h=1&v=19d61d301f7c14a3e26e4604b3273af53\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"cb904babc541efa183134d184cf61abac547a97db4406e919699efd989c5309b\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Wailing Essence of Fear\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 75 and below\",\n\t\t\"\",\n\t\t\"One Handed Weapon: Minions deal (15-18)% increased Damage\",\n\t\t\"Two Handed Weapon: Minions deal (22-27)% increased Damage\",\n\t\t\"Armour: Minions have (15-18)% increased maximum Life\",\n\t\t\"Quiver: Minions have (15-18)% increased Movement Speed\",\n\t\t\"Belt: Minions have (15-18)% increased maximum Life\",\n\t\t\"Other Jewellery: Minions have (15-18)% increased Movement Speed\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 0,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 75,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Belts\\/Belt5.png?scale=1&w=2&h=1&v=5aa764352f06af8fd3231e6a52d710f53\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"be0b8e44d1dab9b009c9e418add346934c4413f2816192bc16599ce3c84a0b7f\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Storm Trap\",\n\t\t\"typeLine\": \"Heavy Belt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"48\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"implicitMods\": [\"+30 to Strength\"],\n\t\t\"explicitMods\": [\"+29 to Strength\",\n\t\t\"5.7 Life Regenerated per second\",\n\t\t\"+12 to maximum Energy Shield\",\n\t\t\"+39% to Lightning Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Loathing5.png?scale=1&stackSize=1&w=1&h=1&v=f081b3de4779da9cb22b6fe0c8ca018c3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"b50b88c36a5972bf22508af4ead81cd0c0f064fdc6f5078d2d5480593dd22658\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Screaming Essence of Loathing\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"\",\n\t\t\"Weapon: (25-29)% increased Critical Strike Chance\",\n\t\t\"Gloves: (18-20)% increased Global Critical Strike Chance\",\n\t\t\"Helmet: 3% reduced Mana Reserved\",\n\t\t\"Shield: (3-4)% Chance to Block\",\n\t\t\"Other Armour: (5-6)% chance to Dodge Attacks\",\n\t\t\"Quiver: (30-34)% increased Global Critical Strike Chance\",\n\t\t\"Amulet: (30-34)% increased Global Critical Strike Chance\",\n\t\t\"Ring: (18-20)% increased Global Critical Strike Chance\",\n\t\t\"Belt: (26-30)% increased Stun Duration on Enemies\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 4,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Woe2.png?scale=1&stackSize=1&w=1&h=1&v=4214744a550dc61157b8d7c7becf9cbd3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"f5ddfecae0456f61c20b37ec0ff22f75f7a1f0a4f0cdd72487e6771a7e8d5096\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Muttering Essence of Woe\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 45 and below\",\n\t\t\"\",\n\t\t\"One Handed Weapon: (20-29)% increased Spell Damage\",\n\t\t\"Two Handed Weapon: (30-44)% increased Spell Damage\",\n\t\t\"Armour: (6-8) to maximum Energy Shield\",\n\t\t\"Quiver: (16-20)% increased Elemental Damage with Weapons\",\n\t\t\"Amulet: (5-7)% increased maximum Energy Shield\",\n\t\t\"Ring: (4-8) to maximum Energy Shield\",\n\t\t\"Belt: (4-8) to maximum Energy Shield\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 0,\n\t\t\"y\": 10,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Anger3.png?scale=1&stackSize=1&w=1&h=1&v=2386a07a358a9949b4f925f7b544c1d33\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"69fd7e50854ca612a287ab353a520beae468bab7816a42612a8efe0d8553b134\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Weeping Essence of Anger\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 60 and below\",\n\t\t\"\",\n\t\t\"Two Handed Melee Weapon: Adds (25-34) to (50-59) Fire Damage\",\n\t\t\"Other Weapon: Adds (17-22) to (33-39) Fire Damage\",\n\t\t\"Armour: (18-23)% to Fire Resistance\",\n\t\t\"Quiver: (18-23)% to Fire Resistance\",\n\t\t\"Belt: (18-23)% to Fire Resistance\",\n\t\t\"Other Jewellery: (15-18)% increased Fire Damage\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 3,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Horror1.png?scale=1&stackSize=1&w=1&h=1&v=8f0acc8500da53eb36f57e9109b3fb593\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"81b8272a27a4416825a13dc377e269d52f23a1d008bc00d316226ba58ec6cb21\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Essence of Horror\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"note\": \"~price 1 exa\",\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare or reforges a rare item, guaranteeing one property\",\n\t\t\"\",\n\t\t\"Weapon: 16% chance to gain a Power, Frenzy or Endurance Charge on Kill\",\n\t\t\"Gloves: Socketed Gems have +3.5% Critical Strike Chance\",\n\t\t\"Boots: 5% reduced Elemental Damage Taken while stationary\",\n\t\t\"Body Armour: 15% of Physical Damage taken as Cold Damage\",\n\t\t\"Helmet: Socketed Gems deal 30% more Elemental Damage\",\n\t\t\"Shield: Chill Nearby Enemies for 1 second on Block\",\n\t\t\"Quiver: Adds 4 to 7 Cold Damage per Frenzy Charge\",\n\t\t\"Amulet: 15% increased effect of Fortify on You\",\n\t\t\"Ring: Adds 4 to 7 Cold Damage per Frenzy Charge\",\n\t\t\"Belt: 5% additional Physical Damage Reduction while using a Flask\"],\n\t\t\"descrText\": \"Right click this item then left click a normal or rare item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 1,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 69,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Belts\\/Belt3.png?scale=1&w=2&h=1&v=a559821037f54c94dae053b90bcea3633\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"ed7af2148cee252e06172c4ec548ff89779e166e8edab4898c7d9dcf5cd1808d\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Brood Girdle\",\n\t\t\"typeLine\": \"Leather Belt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"45\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"implicitMods\": [\"+31 to maximum Life\"],\n\t\t\"explicitMods\": [\"+33 to Strength\",\n\t\t\"+213 to Armour\",\n\t\t\"2.8 Life Regenerated per second\",\n\t\t\"14% increased Stun and Block Recovery\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Woe5.png?scale=1&stackSize=2&w=1&h=1&v=719bf2e52c17d688e02fa3de0a7e4bf73\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"f5e20aeaaa6357f5be5dc48c42e7673a4ffcb1f5f722665858dd660e66ec7883\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Screaming Essence of Woe\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"2\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"\",\n\t\t\"One Handed Weapon: (50-56)% increased Spell Damage\",\n\t\t\"Two Handed Weapon: (75-84)% increased Spell Damage\",\n\t\t\"Body Armour: (49-72) to maximum Energy Shield\",\n\t\t\"Helmet: (30-42) to maximum Energy Shield\",\n\t\t\"Shield: (49-75) to maximum Energy Shield\",\n\t\t\"Other Armour: (27-32) to maximum Energy Shield\",\n\t\t\"Quiver: (30-34)% increased Elemental Damage with Weapons\",\n\t\t\"Amulet: (14-16)% increased maximum Energy Shield\",\n\t\t\"Ring: (27-31) to maximum Energy Shield\",\n\t\t\"Belt: (27-31) to maximum Energy Shield\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 2,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 0,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Fear3.png?scale=1&stackSize=1&w=1&h=1&v=89cdd73a4de987ebc1bd4136507f75763\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"4936dd432d1138c68b142d9875b6d19c69b8d82ce7571dd3091b095d21bb974c\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Weeping Essence of Fear\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"Properties restricted to level 60 and below\",\n\t\t\"\",\n\t\t\"One Handed Weapon: Minions deal (11-14)% increased Damage\",\n\t\t\"Two Handed Weapon: Minions deal (16-21)% increased Damage\",\n\t\t\"Armour: Minions have (11-14)% increased maximum Life\",\n\t\t\"Quiver: Minions have (11-14)% increased Movement Speed\",\n\t\t\"Belt: Minions have (11-14)% increased maximum Life\",\n\t\t\"Other Jewellery: Minions have (11-14)% increased Movement Speed\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 0,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 71,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Amulets\\/Amulet1.png?scale=1&w=1&h=1&v=c2401398cda6eebb43b7f7da63caa3313\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"a2df48a994e37ba3ebdf493dff4ff141af7020f1a7c3c0418c5a459a873ab89b\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Gloom Idol\",\n\t\t\"typeLine\": \"Paua Amulet\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"note\": \"~price 1 exa\",\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"56\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"implicitMods\": [\"26% increased Mana Regeneration Rate\"],\n\t\t\"explicitMods\": [\"Adds 7 to 11 Cold Damage to Attacks\",\n\t\t\"18% increased Evasion Rating\",\n\t\t\"+75 to maximum Life\",\n\t\t\"40% increased Mana Regeneration Rate\",\n\t\t\"+13% to all Elemental Resistances\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 11,\n\t\t\"y\": 11,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Greed5.png?scale=1&stackSize=1&w=1&h=1&v=f2cac5eb3527123b27ef94c99edbe3a23\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"ff94eeddfc44536f71d9d3274981e6195e811a03779f113226cbf260190931c6\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Screaming Essence of Greed\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"\",\n\t\t\"Weapon: (0.9-1.1)% of Physical Attack Damage Leeched as Life\",\n\t\t\"Body Armour: (90-99) to maximum Life\",\n\t\t\"Helmet: (80-89) to maximum Life\",\n\t\t\"Shield: (90-99) to maximum Life\",\n\t\t\"Other Armour: (70-79) to maximum Life\",\n\t\t\"Quiver: (0.9-1.1)% of Physical Attack Damage Leeched as Life\",\n\t\t\"Belt: (24-27)% increased Flask Life Recovery rate\",\n\t\t\"Other Jewellery: (5-6) Life Regenerated per second\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 4,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 73,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Rings\\/DiamondRing.png?scale=1&w=1&h=1&v=d53fabd123b7c64d59ffe8a6baf7d7783\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"813e209969604c260f4da1702f0da19dd2a18e4711ddd4074af5ae7ccd02b4ca\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Diamond Ring\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"implicitMods\": [\"22% increased Global Critical Strike Chance\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 7,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 75,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Belts\\/Belt2.png?scale=1&w=2&h=1&v=05d53adc2875453b6b6bb2652ee3d74d3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"bce2e5cd95d8dd2a9b901bfda3822ecaf3ec8d4e827281dd0d4a8b3f27a9d8d7\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Death Trap\",\n\t\t\"typeLine\": \"Chain Belt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"59\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"implicitMods\": [\"+19 to maximum Energy Shield\"],\n\t\t\"explicitMods\": [\"+56 to maximum Life\",\n\t\t\"+47 to maximum Energy Shield\",\n\t\t\"+41% to Fire Resistance\",\n\t\t\"13% increased Stun and Block Recovery\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 0,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Torment5.png?scale=1&stackSize=1&w=1&h=1&v=e771c7292c0e1885e657b0c84f9fe7e63\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"95c70c2fc251fc98f1eb3c6d45047193de85a96b101f856225609cbb6b39b5ba\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Screaming Essence of Torment\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Stack Size\",\n\t\t\t\"values\": [[\"1\\/9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n\t\t\"\",\n\t\t\"One Handed Weapon: Adds (3-9) to (106-112) Lightning Damage to Spells\",\n\t\t\"Two Handed Weapon: Adds (4-13) to (159-168) Lightning Damage to Spells\",\n\t\t\"Gloves: Adds (1-2) to (25-26) Lightning Damage to Attacks\",\n\t\t\"Body Armour: (7-8)% chance to Avoid Lightning Damage when Hit\",\n\t\t\"Shield: (7-8)% chance to Avoid Lightning Damage when Hit\",\n\t\t\"Other Armour: (23-26)% chance to Avoid being Shocked\",\n\t\t\"Quiver: Adds (1-2) to (25-26) Lightning Damage to Attacks\",\n\t\t\"Belt: (23-26)% chance to Avoid being Shocked\",\n\t\t\"Other Jewellery: Adds (3-6) to (57-61) Lightning Damage to Attacks\"],\n\t\t\"descrText\": \"Right click this item then left click a normal item to apply it.\",\n\t\t\"frameType\": 5,\n\t\t\"stackSize\": 1,\n\t\t\"maxStackSize\": 9,\n\t\t\"x\": 2,\n\t\t\"y\": 10,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 45,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyStrInt2C.png?scale=1&w=2&h=3&v=da51dd4c9ab2a0ddb4ea9e2edc4fb6b33\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"d9919babdbb720aaf9c54f667a6e057883b9ef3bbef0abb8d1e468addb7619b5\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Corpse Carapace\",\n\t\t\"typeLine\": \"Full Chainmail\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+20%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 6\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"152\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 16\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"46\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 18\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"57\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"48\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"48\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"explicitMods\": [\"+10 to Strength\",\n\t\t\"+15 to maximum Mana\",\n\t\t\"+43% to Cold Resistance\",\n\t\t\"+12% to Chaos Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 8,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash15\",\n\t\t\"socketedItems\": []\n\t}],\n\t\"tabs\": [{\n\t\t\"n\": \"Currency (Remove-only)\",\n\t\t\"i\": 0,\n\t\t\"id\": \"eec7b66c66143b4450e6cdacd9db050680a1c71608438ae7f2788bf0daf851d4\",\n\t\t\"type\": \"CurrencyStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1\",\n\t\t\"i\": 1,\n\t\t\"id\": \"8b7ef03e2510ffdc75fdb9488494abc7bb51f25d88a7ff6396c0fe0eff1ad814\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": true,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1\",\n\t\t\"i\": 2,\n\t\t\"id\": \"20ff66a2d42bbd34743874e5b2c024a533f760ecedd2d7b01c2a9efe94a24dcf\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": true,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Currency (Remove-only)\",\n\t\t\"i\": 3,\n\t\t\"id\": \"ed0d8ef85797a02684f44b11b5c5716bd052459cab01058054d79c128e5ea0a2\",\n\t\t\"type\": \"CurrencyStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Currency (Remove-only)\",\n\t\t\"i\": 4,\n\t\t\"id\": \"0f3ea3960f76d752f38d404f422b417db531cee632d276e705823d55873d8a4e\",\n\t\t\"type\": \"CurrencyStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1 (Remove-only)\",\n\t\t\"i\": 5,\n\t\t\"id\": \"4e9e7b415b55169b08093737af1f8cffc0c04a5cf4db05a284e752b6dd213df1\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1 (Remove-only)\",\n\t\t\"i\": 6,\n\t\t\"id\": \"131a031575f19cd7df6fcf42352250bb34211462ec5f214f0a128a3e2518e4d2\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1 (Remove-only)\",\n\t\t\"i\": 7,\n\t\t\"id\": \"5c3e4c4f358f38b426a38b62b06c3d30f8e979315d066105a465af4c10badcc1\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1 (Remove-only)\",\n\t\t\"i\": 8,\n\t\t\"id\": \"87628c06be302aa89331bdf092571ed3047ddbd0c25e5886009effe1072003f7\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"2 (Remove-only)\",\n\t\t\"i\": 9,\n\t\t\"id\": \"307a57d180b06e66fb476202933ac7e54e988b3baebef9aeb82b721cd70a738c\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"2 (Remove-only)\",\n\t\t\"i\": 10,\n\t\t\"id\": \"fe18fbca2160f411d2c152d04fbdbe4b991f8fbcc7b4cebfe098845d956ed955\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1\",\n\t\t\"i\": 11,\n\t\t\"id\": \"21234ce2eb777d3bd543d87bb10168f860c5d05978b8ffa180e1119c8ddb1d42\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1 (Remove-only)\",\n\t\t\"i\": 12,\n\t\t\"id\": \"5fb022b590232f51d262e81cc7b83093cb2840ddc2f2708d057e3c507065e06c\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"2 (Remove-only)\",\n\t\t\"i\": 13,\n\t\t\"id\": \"8a76f65e597fd4f8d45bba60799db10d2f5ea110b8d43d9380b261f842bb8043\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Essences (Remove-only)\",\n\t\t\"i\": 14,\n\t\t\"id\": \"03a0f544b56d7abaf94c27b429cc39ccd881ca004e921cc3db199f204467c7d3\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": true,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"3 (Remove-only)\",\n\t\t\"i\": 15,\n\t\t\"id\": \"a2f3942af736ef63129d44198177bf8b781a15058f6ca9361a3493685429774d\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Maps (Remove-only)\",\n\t\t\"i\": 16,\n\t\t\"id\": \"53021e12abed251f196af66d5f1b13c62e15592d37a43652efcf2da2b0843ee6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"2 (Remove-only)\",\n\t\t\"i\": 17,\n\t\t\"id\": \"a262f06b4f38a606ac075268085b97d41af774c345dc2080015ccd56b9814794\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"2 (Remove-only)\",\n\t\t\"i\": 18,\n\t\t\"id\": \"9561f3f67446be20664471d07eee2bc50f9dd9fedf354a0ac366573bae86b9a4\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"3 (Remove-only)\",\n\t\t\"i\": 19,\n\t\t\"id\": \"4ab81ee19c98f9525b83b56b6c325f4870b8d397773f2a3098539238a58c685d\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"3 (Remove-only)\",\n\t\t\"i\": 20,\n\t\t\"id\": \"0fcb00b8632566ac6acf4e49db711be1a8c9bc478105d9889aebdf6b103e5aa5\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"2\",\n\t\t\"i\": 21,\n\t\t\"id\": \"1759edcb99a616380a58060fd590b0d0031e0ab9ed53cd88e3c320dde62ecf62\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"3 (Remove-only)\",\n\t\t\"i\": 22,\n\t\t\"id\": \"b3edb0c0efd95c0107cfc2af290b35cc6de42c7fa86db91c8a3ad95ecdab9fc1\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"16\",\n\t\t\"i\": 23,\n\t\t\"id\": \"6581a94f8a5730340544e18f02626a3996ecc9c714734d5aeefa320254e2a1c7\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"3\",\n\t\t\"i\": 24,\n\t\t\"id\": \"a78f2998bf7564b4be2504259500ccc6e2f1507dd0aa68b0a5569c8701ed1b7e\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"3 (Remove-only)\",\n\t\t\"i\": 25,\n\t\t\"id\": \"9f605ac1317ad42b209f18b5409109cafb25e91225eead71221b2c3f5b595f92\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1 (Remove-only)\",\n\t\t\"i\": 26,\n\t\t\"id\": \"0456b6eb1cf1eb9ec1ff9aae86ea31ced55bc09352698c9d09d8ba94255c26e7\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"4 (Remove-only)\",\n\t\t\"i\": 27,\n\t\t\"id\": \"6ce102620ee5b64fa91f46fbbad26dc8a0fdee17acc5494bfd2a379ac0b9c02c\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"4 (Remove-only)\",\n\t\t\"i\": 28,\n\t\t\"id\": \"aa5589b87dae6b8bd5581845ef696e15b2ac79228d369d586cf3dfad47682d2a\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"4\",\n\t\t\"i\": 29,\n\t\t\"id\": \"6dc93a81b6f78c7cbaadfc86ca0178bb2fbdad8c0a62a3793a1ade233be69216\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"15\",\n\t\t\"i\": 30,\n\t\t\"id\": \"6396eb3f1d7e189d9a3afd0a530e506fc0627dffa8c55b1182bf85d5dd28b4eb\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"2 (Remove-only)\",\n\t\t\"i\": 31,\n\t\t\"id\": \"395f5a81260f402e3f29d1005fb1eea964ab22fd1d6d506a4f1e1531ca652b30\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"4 (Remove-only)\",\n\t\t\"i\": 32,\n\t\t\"id\": \"6605f586668105d7d13cc5dc4e97382d1280b662cfd6174995b05dbfc1d3d41e\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"5 (Remove-only)\",\n\t\t\"i\": 33,\n\t\t\"id\": \"57ecfac3fa45d74346d215aafd5a4e225b47e4f0ddf6ff7ed055d98fd882b1c8\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"4 (Remove-only)\",\n\t\t\"i\": 34,\n\t\t\"id\": \"e676b47598b67db614ecc191a795a8e5633ba2e3eb07c5eb49a69c83f34cbb96\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"5 (Remove-only)\",\n\t\t\"i\": 35,\n\t\t\"id\": \"4019b24bd230dd8a7a0c4dc202622cecfc5f2c61a18c60f6facb519b45e84947\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"5 (Remove-only)\",\n\t\t\"i\": 36,\n\t\t\"id\": \"f15109c826bf14a2bb04569759099dc77c80e8226e399871f7381970c23a0dfb\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"5 (Remove-only)\",\n\t\t\"i\": 37,\n\t\t\"id\": \"8a7337be72db7e3c8f2d77bc4afbeedf444db7095441b80c5196f7cf6f334221\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"6 (Remove-only)\",\n\t\t\"i\": 38,\n\t\t\"id\": \"66b3a4870d4cb9c127fb021635e22fcaa81e54355f4bdfeb3f977a2106945ade\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"14\",\n\t\t\"i\": 39,\n\t\t\"id\": \"2ed245873b752bcf716aec384de6883b3461134e370cc592785b5dbe8d21dc0e\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"3 (Remove-only)\",\n\t\t\"i\": 40,\n\t\t\"id\": \"a7b049d3d05a9e43db1b4aada58ec3105fee405f54917b9e10cd7d13aa653a31\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"6 (Remove-only)\",\n\t\t\"i\": 41,\n\t\t\"id\": \"979d80abca2d3f513a2805ec079b1a7006e3ac26dcafbb3b685097048cd67dc4\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"4 (Remove-only)\",\n\t\t\"i\": 42,\n\t\t\"id\": \"700634b4f6a2d1b0bb2e685a3184c81e79bae466adfb68eb8b081096ddd13461\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"6 (Remove-only)\",\n\t\t\"i\": 43,\n\t\t\"id\": \"0b6ccdf29f7a3a12819dc83f1a400b73d1fa617979917f0400460a01a5216c00\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"7 (Remove-only)\",\n\t\t\"i\": 44,\n\t\t\"id\": \"a6466368867910e584bd2384cebc3da0a7c00e04ea6fc9d8abe0f3c11116191d\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"13\",\n\t\t\"i\": 45,\n\t\t\"id\": \"0b45d2a4bd5237acd441321985a0c4487241cbd034c96bc481fad9398b6075a2\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"7 (Remove-only)\",\n\t\t\"i\": 46,\n\t\t\"id\": \"c1c23a6ee887215d8c63a890354c1ded76e6a2970249de3c0fc5dfea04c3cb7f\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"7 (Remove-only)\",\n\t\t\"i\": 47,\n\t\t\"id\": \"42d37cf899cc91bd5341fa958f1965956d5529d93e96b6311f074aaae3be99fb\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"5 (Remove-only)\",\n\t\t\"i\": 48,\n\t\t\"id\": \"538240faa37c4d828bd390c8c66d8a9632d4be8ab971794a822c18776ff34df3\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"6 (Remove-only)\",\n\t\t\"i\": 49,\n\t\t\"id\": \"a495118bc9760447bc8e3a241c3a6006aba9e293edfdc9270f37e1abe1918488\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"8 (Remove-only)\",\n\t\t\"i\": 50,\n\t\t\"id\": \"82c4668d1fd2740dd2e6ffe3044b502e2379d9957f18d95c941eefb7dc9a0710\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"12\",\n\t\t\"i\": 51,\n\t\t\"id\": \"a35f6c49de5306a55eb2f4d64712852cb94436e4e93fad52c79b7737d4701d56\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"7 (Remove-only)\",\n\t\t\"i\": 52,\n\t\t\"id\": \"59a39afd3ee0097a732ebb8844e71cc33d0ea285e86ceb43dd44973db7623439\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"8 (Remove-only)\",\n\t\t\"i\": 53,\n\t\t\"id\": \"37178e7aaaad8eb69e39d697def4f1adb214c9f3cfbd2d82e3bdc5dd0cfadcbf\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"6 (Remove-only)\",\n\t\t\"i\": 54,\n\t\t\"id\": \"cdd9f06bdb78006fc03421a21fe8fe7204b531ca32624bf68d77ddc86397d665\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"9 (Remove-only)\",\n\t\t\"i\": 55,\n\t\t\"id\": \"e8f3aecd815bb725b92bc03d36e10cc5d72063b7820827c232f04967698d7a39\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"9 (Remove-only)\",\n\t\t\"i\": 56,\n\t\t\"id\": \"55a052b4e0bd72a790f08cde9584f502cb42750b5185b0a8f404846df679196a\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"8 (Remove-only)\",\n\t\t\"i\": 57,\n\t\t\"id\": \"bdb189100c6e3e2bb17dc18c0684a8d7709ee81bdd854b5a8aab45ea4e849140\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"8 (Remove-only)\",\n\t\t\"i\": 58,\n\t\t\"id\": \"616387e9149351965bcbb429191d367444679659e5dd01d5b7ec89a8401d2920\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"11\",\n\t\t\"i\": 59,\n\t\t\"id\": \"47ec717fcb16553b2d1b7b6ccf0415a116e0ac0567bcfceb7f8fddca99a7c927\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"10 (Remove-only)\",\n\t\t\"i\": 60,\n\t\t\"id\": \"9595f5bfc58e183687c18a6eb5cbc0914fbd6040064fbdc75829fd7526e0865c\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"10 (Remove-only)\",\n\t\t\"i\": 61,\n\t\t\"id\": \"f5d78fa42d7c82a7480cbe9291e0b12498011c3107d674cf72fc5c2c51ce0dc9\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"9 (Remove-only)\",\n\t\t\"i\": 62,\n\t\t\"id\": \"5ffe053675340f94026aab7f2e9070b92ee6705c6bf85d314151b4c392f48301\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"10\",\n\t\t\"i\": 63,\n\t\t\"id\": \"0fa49a78ed1b2a12fc82b1587db84b8789f2881e6dd1be9286c5c8ed70792677\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"7 (Remove-only)\",\n\t\t\"i\": 64,\n\t\t\"id\": \"12424ea547a5c55813f733bbdb21f8e8fcf11e989d5e7c9e5dba0b2394dd5b1d\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"8 (Remove-only)\",\n\t\t\"i\": 65,\n\t\t\"id\": \"23d93e66d94e2b7f526ef1fabf6c8d4a1ec0e8baa4a996ea93c2cf4a0fc1a28c\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"11 (Remove-only)\",\n\t\t\"i\": 66,\n\t\t\"id\": \"62bdda5abdfce21d6a23cc10aca9153886cea1d0974d899c51e163d443f21da4\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"10 (Remove-only)\",\n\t\t\"i\": 67,\n\t\t\"id\": \"a45913f1bf6049bb3d49b61b39991e82fa827b06b3b5adbd4ae5bc1bedb4c5f9\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"9\",\n\t\t\"i\": 68,\n\t\t\"id\": \"451180f9dfcafaeb549fdd9546202d236153d5f21a6946da4c6f94d1f7448b79\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"12 (Remove-only)\",\n\t\t\"i\": 69,\n\t\t\"id\": \"cf9cdbfacccf757140a733706d82d1ba8b7fab547671659f01880bcec18e68e6\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"9 (Remove-only)\",\n\t\t\"i\": 70,\n\t\t\"id\": \"4f53bb52853e54afd3b6e3e683c1c2d018f93fb58928566628f6111e0be0a839\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"8\",\n\t\t\"i\": 71,\n\t\t\"id\": \"b0c1c121d72614dfaae00dd63b23a6aabf9c444c963aa9aa0cceaa4992484bed\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"13 (Remove-only)\",\n\t\t\"i\": 72,\n\t\t\"id\": \"8a52297eba88e66329075bcd7764ded6a61d094606093d47dd9d587a4b8d7d32\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"14 (Remove-only)\",\n\t\t\"i\": 73,\n\t\t\"id\": \"2895d7bb9c28ae9b0ef916af887449cb3300d2e90172881d9f160d86f0db738d\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"7\",\n\t\t\"i\": 74,\n\t\t\"id\": \"f3f7c1baf62a14a4f26f57e27fa0efb0aeb09194bf7b87a5c39ec1245bd00a04\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"15 (Remove-only)\",\n\t\t\"i\": 75,\n\t\t\"id\": \"734d2ef62eb229fea944087ef05a09b22a9a416fc793d11a71ec8e1452f9787e\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"15 (Remove-only)\",\n\t\t\"i\": 76,\n\t\t\"id\": \"4054487a2a1ff3877145cff6e6071baf155066f12ee6abc85d940e4d4e90269a\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"6\",\n\t\t\"i\": 77,\n\t\t\"id\": \"b2cda6cf2676d5581ec613afd4a95ea125ec44ba7e1f63e13a9d43f3b533ce86\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"15 (Remove-only)\",\n\t\t\"i\": 78,\n\t\t\"id\": \"ac5727210252c80ae48be8abf136aa4ac236a12b617e66d8827232cc19874ca5\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"5\",\n\t\t\"i\": 79,\n\t\t\"id\": \"612059c6fa84c3fe61cd38aaf5854c65ce59b5d2371f746b26cea72f9eead505\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"16 (Remove-only)\",\n\t\t\"i\": 80,\n\t\t\"id\": \"81b2e9913a76f490d687b3a3790a162a60858cdcd1c7794915275292111c5226\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"16 (Remove-only)\",\n\t\t\"i\": 81,\n\t\t\"id\": \"6b2b9eac1cfef5f4341ce86b5fb712083612e42414789a9b490cb23350bcf775\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"~price 1 chaos (Remove-only)\",\n\t\t\"i\": 82,\n\t\t\"id\": \"f36224843eb467539360cc76a460fa579569b950063b628165aa4ba5a25fd3d6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t}]\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleStashWithLeagueStoneChargeInfo.json",
    "content": "{\n\t\"numTabs\": 361,\n\t\"tabs\": [{\n\t\t\"n\": \"$$\",\n\t\t\"i\": 0,\n\t\t\"id\": \"d36039f429b8608b4db60108fca7c1e02ac41facd390701dd8966a4cd9db6b7f\",\n\t\t\"type\": \"CurrencyStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 170,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"$ (Remove-only)\",\n\t\t\"i\": 1,\n\t\t\"id\": \"b2f889d66f27befceaea928dd1f75f0682eefa20bbba71eb340f7d26c47df2e2\",\n\t\t\"type\": \"CurrencyStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 170,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"$ (Remove-only)\",\n\t\t\"i\": 2,\n\t\t\"id\": \"43a33e12fd8f11542c002173b04263024de722cdba9b3687e62248de8b262a4e\",\n\t\t\"type\": \"CurrencyStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 170,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1 (Remove-only)\",\n\t\t\"i\": 3,\n\t\t\"id\": \"57f1dd7e87a6c86d719112c4aff425cf076ba6dd846692222f00a2c80a695847\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Currency\",\n\t\t\"i\": 4,\n\t\t\"id\": \"e6322b5d176ba548db5b4d95f6bcbd2bc274770ba7d18f54a883025c6ff345a2\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 213,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/4fd846c823\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/8842f2d7ef\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/0916f3ec87\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"2 (Remove-only)\",\n\t\t\"i\": 5,\n\t\t\"id\": \"8d168d917ee8b206ab4f5266869681ad734649224d80d09787ce642a4eefb861\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": true,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Essence (Remove-only)\",\n\t\t\"i\": 6,\n\t\t\"id\": \"bbe4c91fad96df7f0abec15f8abc7fd6d5c8bf1d5ea4307426c0e00f61df32c6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 191,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjUxMjt9fX0,\\/bb01c61c4f\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjUxMjt9fX0,\\/2555475f96\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjUxMjt9fX0,\\/ff0e063243\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"3 (Remove-only)\",\n\t\t\"i\": 7,\n\t\t\"id\": \"3a695bd3cd69a714ae3d58f8c089292882aefbb3f9cb29aa9dcbdd879c2b5bf6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Quad (Remove-only)\",\n\t\t\"i\": 8,\n\t\t\"id\": \"194fbd2c8451b4dbbf214a17c028a53d0b557e1eeacd6cfb07165050725fc71c\",\n\t\t\"type\": \"QuadStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 221,\n\t\t\t\"g\": 221,\n\t\t\t\"b\": 221\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/ee8a4216f9\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/e0ce46cb01\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/f8f378ce64\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Cards (Remove-only)\",\n\t\t\"i\": 9,\n\t\t\"id\": \"e218890206631a4ea218c51705b824cc754c37e712f45ce4dcc7e2f73c76427c\",\n\t\t\"type\": \"DivinationCardStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 213,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/4fd846c823\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/8842f2d7ef\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/0916f3ec87\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1\",\n\t\t\"i\": 10,\n\t\t\"id\": \"df4272065e4841b0dd8aca23587c9372af535aa2fec5b46272a01c42d22c30ea\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Maps\",\n\t\t\"i\": 11,\n\t\t\"id\": \"4e52b17b4ffb9db2c3c946d38de74e7806cf66cbee9b2fdfd1ee3fdf441d9ada\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 136,\n\t\t\t\"g\": 136,\n\t\t\t\"b\": 136\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/3e1c96f156\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/9da13bb4dc\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/5ff1e90713\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Essences (Remove-only)\",\n\t\t\"i\": 12,\n\t\t\"id\": \"e9686c296a4e3f43ddef7031f57d8d6384736ea8fedec4522a4e288ad4bed0a1\",\n\t\t\"type\": \"EssenceStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 223\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjU0NTt9fX0,\\/9aa6ef60b7\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjU0NTt9fX0,\\/0fb4c41aab\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjU0NTt9fX0,\\/d2784cca4f\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Skills (Remove-only)\",\n\t\t\"i\": 13,\n\t\t\"id\": \"2c114daac8972047a4e3a872fb27f24a7e68b9a5c1cfa30824777c15f5598c67\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 0,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/7baaab4c91\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/c6786cda39\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/997b161859\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Skills (Remove-only)\",\n\t\t\"i\": 14,\n\t\t\"id\": \"582fd18b060296f528d8f608e5b1b61cc5dda0b17b9956880fca8d691000fac4\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 245,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/b0a652cf06\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/3efc6bd8be\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/9e2d61628d\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Unique\",\n\t\t\"i\": 15,\n\t\t\"id\": \"de9fc4d07b77a54936d2a6d7c787cf75a4aeaef5a11b2e17dcfeba9069e4dd0c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 94,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/ae5b956193\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/368b80b1e3\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/8cafb9c169\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Skills (Remove-only)\",\n\t\t\"i\": 16,\n\t\t\"id\": \"961c8e6dafc28a23c2330d53330cfbf88f16734535c07e21f4795fbc5e850855\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 90,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 179\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/5721d0efa7\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/a46989dc8a\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/577a5b5203\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Sort\",\n\t\t\"i\": 17,\n\t\t\"id\": \"34d4aeabceef33492f21ce13ad0b0ddacf46315de966506a43e83f43d32870f1\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Skills (Remove-only)\",\n\t\t\"i\": 18,\n\t\t\"id\": \"a2d8bf974ef99363414a6a974cabcd78fc93e41b29d63e8624001c5fc155b537\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 128,\n\t\t\t\"g\": 255,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzIzMjAwO319fQ,,\\/21d6a945b0\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzIzMjAwO319fQ,,\\/b36dcdd84f\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzIzMjAwO319fQ,,\\/3a56bd0acc\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Skill (Remove-only)\",\n\t\t\"i\": 19,\n\t\t\"id\": \"cab13d0b1cc7b9da5a6b2a01a55233ce20cc00bd2e08174eb0484bd67f32a64c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/98a058fc32\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/edc7e2c501\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/42ff0bf3e8\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Jewellry (Remove-only)\",\n\t\t\"i\": 20,\n\t\t\"id\": \"10ee39a6d6a254e5be0975479b68899eeb7e9b978ad09bc231780d46e2461211\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 0,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/7baaab4c91\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/c6786cda39\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/997b161859\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"* (Remove-only)\",\n\t\t\"i\": 21,\n\t\t\"id\": \"a671c9c1afd5212e0cd1f4106042523b1c5f16e58bf5111c19a61749712629df\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 240,\n\t\t\t\"g\": 255,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05ODMxNjg7fX19\\/f0094a0c50\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05ODMxNjg7fX19\\/b33be143fc\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05ODMxNjg7fX19\\/8e9ec1995a\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Rings\",\n\t\t\"i\": 22,\n\t\t\"id\": \"8e8b8f4c3ed4657bdbfb0c5914a33830725ef48ca58d0a5ae4a9c399f100f9e9\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 221,\n\t\t\t\"g\": 221,\n\t\t\t\"b\": 221\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/ee8a4216f9\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/e0ce46cb01\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/f8f378ce64\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Neck\",\n\t\t\"i\": 23,\n\t\t\"id\": \"b32abaaafff262353ce90aa2ec861c770639077bfa233475ef9f58200398da5f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 94,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/ae5b956193\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/368b80b1e3\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/8cafb9c169\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"BuildThis (Remove-only)\",\n\t\t\"i\": 24,\n\t\t\"id\": \"3e5b4ede504729773fb5214043f511e66336269919f6ab9574e03d08b69fb8b0\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 0,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/49ca92df25\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/36ac864ec2\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/ebc3169574\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Unique (Remove-only)\",\n\t\t\"i\": 25,\n\t\t\"id\": \"c8747ecd123070420b40bae7f9f568816e1a90f4c98d57be104a7cfb5d02699c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 94,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/ae5b956193\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/368b80b1e3\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/8cafb9c169\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Jewels (Remove-only)\",\n\t\t\"i\": 26,\n\t\t\"id\": \"8c67ca47e4f12ef9beb42064945bf707caf3167a8197745a753b051fbc790210\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 213,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/4fd846c823\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/8842f2d7ef\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/0916f3ec87\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Jewellry\",\n\t\t\"i\": 27,\n\t\t\"id\": \"07017e527a1d8ea431ae74094cb5423e3deabceba3435592cac21ce8afe6497b\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 0,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/49ca92df25\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/36ac864ec2\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/ebc3169574\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Gems\",\n\t\t\"i\": 28,\n\t\t\"id\": \"1d28f95a52acfb39de399f0c17141b8d98ae4d8417b597953b18c2f0d1d0b7a6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 128,\n\t\t\t\"g\": 179,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/ce67a12d5c\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/b0c1218fe0\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/3690bb27e5\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Gems\",\n\t\t\"i\": 29,\n\t\t\"id\": \"7278ee26d14c5819b4ff42573d1caadb006e76e99ddc0e791936456733389aae\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 245,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/b0a652cf06\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/3efc6bd8be\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/9e2d61628d\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Gems\",\n\t\t\"i\": 30,\n\t\t\"id\": \"d292b3880b98910597c2d96d34e6bd9c8fae02383ee6692a2960ac51fc5ac30a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/98a058fc32\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/edc7e2c501\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/42ff0bf3e8\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Unique (Remove-only)\",\n\t\t\"i\": 31,\n\t\t\"id\": \"77db1190699a16b60f05c195fdb1e8a3d6d196191b97db414939498f39c81819\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 94,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/ae5b956193\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/368b80b1e3\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/8cafb9c169\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Unique (Remove-only)\",\n\t\t\"i\": 32,\n\t\t\"id\": \"202c4b3d9c72ae75cbdbd986c8a8f826b89aaf7cb33143d46c039ad96f5bc3ac\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 94,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/ae5b956193\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/368b80b1e3\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/8cafb9c169\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Jewellry (Remove-only)\",\n\t\t\"i\": 33,\n\t\t\"id\": \"793181c6ce0c43b76ae1e61d3e91413374035808725348c17791830a8c56124b\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 221,\n\t\t\t\"g\": 221,\n\t\t\t\"b\": 221\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/ee8a4216f9\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/e0ce46cb01\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/f8f378ce64\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1 (Remove-only)\",\n\t\t\"i\": 34,\n\t\t\"id\": \"f9727eb9198c7fa49a20f0c8e3320688d80773e79b614b65b1f7cfc2b074b873\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Crafted (Remove-only)\",\n\t\t\"i\": 35,\n\t\t\"id\": \"010646574a0f1ffb84956903da14faa7a848501bfc1d155bb8ecbd00a56ffce8\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 50,\n\t\t\t\"g\": 50,\n\t\t\t\"b\": 50\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Flask (Remove-only)\",\n\t\t\"i\": 36,\n\t\t\"id\": \"067ebc33d1967108d42cf4097f857ce624a72f4eb845645e7e4bc000be23bf7f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 50,\n\t\t\t\"g\": 50,\n\t\t\t\"b\": 50\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"3 (Remove-only)\",\n\t\t\"i\": 37,\n\t\t\"id\": \"18916408ecbd6ec0ee377531442f3940f7e15f9c03729f7a26e7bedc015edb2d\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Jewelry (Remove-only)\",\n\t\t\"i\": 38,\n\t\t\"id\": \"5221897fe1b5dc2e58c3ae71cd3ed9fc138ae4507164340c9eed35fe0fdc82dd\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 192,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/8838d97f87\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/23ecc5b004\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/b4dd7a01b4\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Rare (Remove-only)\",\n\t\t\"i\": 39,\n\t\t\"id\": \"5aee4065a548283aaee1d778fcdff3bdc51560a12d5654526aa52a60896891db\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 170,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Sup\",\n\t\t\"i\": 40,\n\t\t\"id\": \"cbbcb828936d439d0157d616f188b3644eaf42b6b926acd55b569f72c3256322\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 128,\n\t\t\t\"g\": 179,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/ce67a12d5c\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/b0c1218fe0\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/3690bb27e5\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"* (Remove-only)\",\n\t\t\"i\": 41,\n\t\t\"id\": \"4f5ec0187f6e7f61deab3c1379eac90b8c47a07ebd8f9ca2f51378bc8cd50c65\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 136,\n\t\t\t\"g\": 136,\n\t\t\t\"b\": 136\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/3e1c96f156\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/9da13bb4dc\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/5ff1e90713\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Currency\",\n\t\t\"i\": 42,\n\t\t\"id\": \"c66b822c64569772614e7e22d3d041a62142b576906020cd7b11dee461592057\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 136,\n\t\t\t\"g\": 136,\n\t\t\t\"b\": 136\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/3e1c96f156\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/9da13bb4dc\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/5ff1e90713\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Link (Remove-only)\",\n\t\t\"i\": 43,\n\t\t\"id\": \"7e71abad82439c14d637e486e9e93ff15c4caa80fb339712f431f48c0c9c6704\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 128,\n\t\t\t\"g\": 179,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/ce67a12d5c\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/b0c1218fe0\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/3690bb27e5\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"8 (Remove-only)\",\n\t\t\"i\": 44,\n\t\t\"id\": \"9de9ff60bd88da757437c5422da807ab4bdfd559b5746cad2370fbc8e9a1875d\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"2 (Remove-only)\",\n\t\t\"i\": 45,\n\t\t\"id\": \"11a1476eac2186e49e736a3538beacf6dbd9f303094c4a72a110a7f57bbab95c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Fire (Remove-only)\",\n\t\t\"i\": 46,\n\t\t\"id\": \"ff9487555d35ca11d72a12583a86031970b2603ec20912080d32212f8a7a23ea\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 89,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/8ade9bb940\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/ba64385447\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/55c7c28a3a\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Rarity\",\n\t\t\"i\": 47,\n\t\t\"id\": \"8e9ec551465fac4f08cd50c234d70c1ad6e0333f046075ef817e6fb6a1b73eb5\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 170,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Spell (Remove-only)\",\n\t\t\"i\": 48,\n\t\t\"id\": \"2e615203fabfc1aca9bc6d1448b4f0c7be8d2a2dd770e0ef1d69b804d20c4a18\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 0,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/7baaab4c91\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/c6786cda39\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/997b161859\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"3 (Remove-only)\",\n\t\t\"i\": 49,\n\t\t\"id\": \"3685a391b3f8a6c7d6e6bc062934bd07c709e36bcffec9dac89a456b99370c35\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"3\",\n\t\t\"i\": 50,\n\t\t\"id\": \"54fa49127890158f0a162debd7c1dc3d8135c8c3624fd4df827ba1e01bc2a498\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"2\",\n\t\t\"i\": 51,\n\t\t\"id\": \"bef7b28dd6afa2a8901e51f44035bcf7431b06029ea95a8998c5fbd99779b406\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Tri (Remove-only)\",\n\t\t\"i\": 52,\n\t\t\"id\": \"aa57dee5d1571f021fe0720210c3b393758d42ac4315a6d295487ad649661e64\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 115,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 85\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/9124912871\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/25eb8a934b\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/732ef43793\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"4 (Remove-only)\",\n\t\t\"i\": 53,\n\t\t\"id\": \"7ff1548e3d6a6ef9958abf1018336c9c8190aa0cb4217b1c42377fab469c50f6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Belt\",\n\t\t\"i\": 54,\n\t\t\"id\": \"f2072c3f36a1d39cb0349c0f7d86b60f18766a7a8d91a3c3c7abc9109f90e2dd\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 94,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/ae5b956193\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/368b80b1e3\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/8cafb9c169\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"63\",\n\t\t\"i\": 55,\n\t\t\"id\": \"4645d4218d76c2bc3d25d137021d59565c1a3a0d087afa658b19afde041fe596\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"5 (Remove-only)\",\n\t\t\"i\": 56,\n\t\t\"id\": \"afad58e85f14052822d72c55b689a0c6770bbcd9c17be1d5a063393cbea8c959\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Tank\",\n\t\t\"i\": 57,\n\t\t\"id\": \"66d5008c1ff84ea6867993c723981177417f73d6b48caab74015fb5344fb659b\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 94,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/ae5b956193\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/368b80b1e3\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/8cafb9c169\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"6 (Remove-only)\",\n\t\t\"i\": 58,\n\t\t\"id\": \"a974d55047ce6a31d1964e416c1a79bbaab93aefcaac7233b969824b8f473481\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Shadow (Remove-only)\",\n\t\t\"i\": 59,\n\t\t\"id\": \"84599531940e550f7f22da9d4ec035a2b23bb12ff6224a2d0bce52afbdccc10f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 0,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/7baaab4c91\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/c6786cda39\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/997b161859\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"7 (Remove-only)\",\n\t\t\"i\": 60,\n\t\t\"id\": \"8623216bd8f3b85b90a6d7c3aa2ab873a87fb1ee799d435c853578e9e4f72d24\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Unique\",\n\t\t\"i\": 61,\n\t\t\"id\": \"f4be6e9dda4d5722e9fb095dfca99bf2d2734ab2bfbec61011d28edcea128f69\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 191,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjUxMjt9fX0,\\/bb01c61c4f\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjUxMjt9fX0,\\/2555475f96\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjUxMjt9fX0,\\/ff0e063243\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Six (Remove-only)\",\n\t\t\"i\": 62,\n\t\t\"id\": \"8ee257f0b99bc6ce6f0048f13249ac2ea2c668c7100d7bb1cc6c526c56d6c003\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 115,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 85\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/9124912871\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/25eb8a934b\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/732ef43793\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"5 Socket (Remove-only)\",\n\t\t\"i\": 63,\n\t\t\"id\": \"627a0a4aaf0dab0936045fb2eb96af53d5a61871241c0302d1a1b0e5ad871fd1\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 170,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Tri\",\n\t\t\"i\": 64,\n\t\t\"id\": \"ccf2aa6243a61bef37e90e2298bb0c4ef230670aa5506fadcd46250550bd84f6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 204,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 154\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zNDA3NzE4O319fQ,,\\/b5a6e7231f\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zNDA3NzE4O319fQ,,\\/7f17957d2b\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zNDA3NzE4O319fQ,,\\/0ac5e6a211\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"9 (Remove-only)\",\n\t\t\"i\": 65,\n\t\t\"id\": \"e449e318db2cd6cb6ef603906e5e994530b8e137cabdcb60cf52d2f693d2e347\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Corrupt\",\n\t\t\"i\": 66,\n\t\t\"id\": \"596b142e9d4fae0200b1e96cf2c4182032ccbdf09d002221351ad573ef31be66\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/98a058fc32\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/edc7e2c501\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/42ff0bf3e8\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Regen (Remove-only)\",\n\t\t\"i\": 67,\n\t\t\"id\": \"93548fab9ae2dac273f7dbfbd439546bbf5d67a39db9e0067d14d9a5f7249de2\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 89,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/8ade9bb940\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/ba64385447\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/55c7c28a3a\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Lightning (Remove-only)\",\n\t\t\"i\": 68,\n\t\t\"id\": \"54f4749c276d4f35d80c3c90c668c5680b2db043224b57c70f85f62251d780fe\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 128,\n\t\t\t\"g\": 179,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/ce67a12d5c\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/b0c1218fe0\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/3690bb27e5\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Normal\",\n\t\t\"i\": 69,\n\t\t\"id\": \"86837a26c3017937283b47a1a11118d3623bb8700dbe49e3d42293be80f28e8b\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 136,\n\t\t\t\"g\": 136,\n\t\t\t\"b\": 136\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/3e1c96f156\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/9da13bb4dc\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/5ff1e90713\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"11 (Remove-only)\",\n\t\t\"i\": 70,\n\t\t\"id\": \"117a237f1f8aa68e9a9df9c50e6f4a49bd4ceb02de62a5ab38254db655f987e4\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Wand (Remove-only)\",\n\t\t\"i\": 71,\n\t\t\"id\": \"05b7441af1a5c5863241477c9a38d74bbae67da9724230c708d0cc6467bce4c6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 255,\n\t\t\t\"b\": 153\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/8ff4253efe\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/bb73f12637\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/22745ba921\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Elemental (Remove-only)\",\n\t\t\"i\": 72,\n\t\t\"id\": \"969bdd60f2eaaf9768c92d1d2e5f5f79fb881d50404d48eaebe893ea3a81544e\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/635831eed6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/ab3648496e\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/416089aa6f\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"13 (Remove-only)\",\n\t\t\"i\": 73,\n\t\t\"id\": \"ac6f8a6660b7b4846376f24aa173cbb4c7101cf7efff0b2c16ba69f280725242\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Shadow\",\n\t\t\"i\": 74,\n\t\t\"id\": \"b4d7dea0e0db20b4ee9518b9a3c26b23fe4aff21d5e3f821ebc2176a103acd93\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"14 (Remove-only)\",\n\t\t\"i\": 75,\n\t\t\"id\": \"f27f54ac77fca110ab5c037b487797bc8ef315ca8dff403f4aa1a1fba21165fe\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Duelist\",\n\t\t\"i\": 76,\n\t\t\"id\": \"e372f3453364c8cd7a8387a8aecd1e7acd6beea4fb11d0df8d7507d412fe1a9b\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Dagger (Remove-only)\",\n\t\t\"i\": 77,\n\t\t\"id\": \"2334049b42314607ff7732606a33ec0a07e4681e9c5b48a3c651910541420ce7\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 115,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 85\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/9124912871\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/25eb8a934b\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/732ef43793\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"45 (Remove-only)\",\n\t\t\"i\": 78,\n\t\t\"id\": \"c86e20293f9c06981e4a3ba65b2e398fd5d72249e71f4db89ea9dc77be806f70\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 89,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/8ade9bb940\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/ba64385447\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/55c7c28a3a\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Life\",\n\t\t\"i\": 79,\n\t\t\"id\": \"2ed95a845432b297a07825a8bc293ad1a9d8e7ab5d183c304571b5fc57c777a7\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 89,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/8ade9bb940\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/ba64385447\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/55c7c28a3a\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"15 (Remove-only)\",\n\t\t\"i\": 80,\n\t\t\"id\": \"d86af139aa1218a1e2bec50a1aeb71daefb334855ccada6ddd15d91762af8691\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"16 (Remove-only)\",\n\t\t\"i\": 81,\n\t\t\"id\": \"62c6d5e6d7aa1a8c4df9e840e65229fbc8dee9b32df660f9b826e616c62f93f6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Reflect (Remove-only)\",\n\t\t\"i\": 82,\n\t\t\"id\": \"2a914c642d37eba285e5a574128453540d218cc3d36e32af3aa81a7b8dd1f49f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 89,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/8ade9bb940\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/ba64385447\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/55c7c28a3a\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Pots\",\n\t\t\"i\": 83,\n\t\t\"id\": \"7cbc59fd42a6da298f17d7595a97a74ee8015a42cd80ee89b4ab223d6cca0394\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Flask\",\n\t\t\"i\": 84,\n\t\t\"id\": \"74d4a2f33dfd6280d8972f3ebb86e415041c7da7db4eeaff6802627a1be29f6a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 136,\n\t\t\t\"g\": 136,\n\t\t\t\"b\": 136\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/3e1c96f156\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/9da13bb4dc\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/5ff1e90713\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"17 (Remove-only)\",\n\t\t\"i\": 85,\n\t\t\"id\": \"59d08b0fee6b0ffb2cf33f8586846143808faf46ce3f115cfdc53e604d5f8802\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"19 (Remove-only)\",\n\t\t\"i\": 86,\n\t\t\"id\": \"17432fcfc3607d790c86d9e70c67c2b4a8fcde65d750d4cb9b6bc22b8e0bd303\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"20 (Remove-only)\",\n\t\t\"i\": 87,\n\t\t\"id\": \"25764aaf5f6e0283bada3201bcf03e6faff9db3d174f913975aa40460b2ab264\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Thorns\",\n\t\t\"i\": 88,\n\t\t\"id\": \"a124e29b961466c62533005b5c64b819794edf6e41291bec10fb3e66c0ce88a9\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 90,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 179\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/5721d0efa7\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/a46989dc8a\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/577a5b5203\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"18 (Remove-only)\",\n\t\t\"i\": 89,\n\t\t\"id\": \"aaf22617950d0d2c7de6f6da406e0f5a2aae8862ea868ef15a72767ef4f9edad\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Ranger\",\n\t\t\"i\": 90,\n\t\t\"id\": \"b2f5f2c13e1bbcc28d9cd1fc676ebfb5f7851fb6346ebac925d57d773ddd515d\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"21 (Remove-only)\",\n\t\t\"i\": 91,\n\t\t\"id\": \"3d69124eddf1e8c7630660f909919600f5cb00890b15cd6a4bf504ca0d752e9d\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"19 (Remove-only)\",\n\t\t\"i\": 92,\n\t\t\"id\": \"2be756691b41adce1d2c1220b833bf563f3f850a6a77d2d378d27acc6c59963f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"22 (Remove-only)\",\n\t\t\"i\": 93,\n\t\t\"id\": \"62f5777c7f3d33a88fef11c7328643db840b25e4491544981f4e9d98680d6eb5\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Elemental\\/Shield (Remove-only)\",\n\t\t\"i\": 94,\n\t\t\"id\": \"5fe6d22bea3a9763bb17949f3bd3d70afcdd2f0b727b6131fee1e2734d086e8e\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 221,\n\t\t\t\"g\": 221,\n\t\t\t\"b\": 221\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/ee8a4216f9\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/e0ce46cb01\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/f8f378ce64\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Rare\",\n\t\t\"i\": 95,\n\t\t\"id\": \"2c9fc64e9ba02207cbce074745f9f86df69eeeeb97792c770275218ced8ee1e4\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 170,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"4Link\",\n\t\t\"i\": 96,\n\t\t\"id\": \"8cf09197eb40020025c58d10e3a9357713bba4921b24fde2e5263f2aaf2b35fb\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"23 (Remove-only)\",\n\t\t\"i\": 97,\n\t\t\"id\": \"df0b5bd8c631316ec2ea09e9c48e5b971e88e6595614556d0d99438433eeb3ba\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Reflect (Remove-only)\",\n\t\t\"i\": 98,\n\t\t\"id\": \"2da483e5aeec51adfb049613a177744cb5a9f39aec6a209e0c86f7165a724cd5\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/98a058fc32\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/edc7e2c501\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/42ff0bf3e8\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Fives\",\n\t\t\"i\": 99,\n\t\t\"id\": \"8b73ddba31cf8bae3de605c9c3edd1f3489ef0b17deda62938546b0d7529e3e9\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"24 (Remove-only)\",\n\t\t\"i\": 100,\n\t\t\"id\": \"734351cb180ce3239db450aacb24df6f93dc4c16bf4b2a840d837783cffff334\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Crit (Remove-only)\",\n\t\t\"i\": 101,\n\t\t\"id\": \"5eb73765ac17cef83169d418ef2e13a47fd6f0ae753bb2a4e653f23237286c40\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 94,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/ae5b956193\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/368b80b1e3\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjM1Nzc2O319fQ,,\\/8cafb9c169\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"25 (Remove-only)\",\n\t\t\"i\": 102,\n\t\t\"id\": \"6f308b5ecab3a4efd431f22072cd8d121820c7c3b4e3183a2bba19deee747719\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Six\",\n\t\t\"i\": 103,\n\t\t\"id\": \"34bb8f02bd2c75d1fec8e58c670a40a7ece1261b72d6e501a847c7aa3beced1b\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 50,\n\t\t\t\"g\": 50,\n\t\t\t\"b\": 50\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"4Link (Remove-only)\",\n\t\t\"i\": 104,\n\t\t\"id\": \"a27daf41f1ef44789ee9c8d7599e514318988a91c8869ca86f51cb36ac03a767\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 192,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/8838d97f87\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/23ecc5b004\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/b4dd7a01b4\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Mirror\",\n\t\t\"i\": 105,\n\t\t\"id\": \"087e51294d216f2209d4c3f36b2397a6ef51d3e0bfc81e24ac4b8a94be8a08a8\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 0,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/7baaab4c91\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/c6786cda39\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3NzA4ODt9fX0,\\/997b161859\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"22 (Remove-only)\",\n\t\t\"i\": 106,\n\t\t\"id\": \"fb9cc309e787836af66dc212517b9a76f9f194c72d9a27ab6f9ffe0072782e4f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"26 (Remove-only)\",\n\t\t\"i\": 107,\n\t\t\"id\": \"5559a1ab3167e2d0a23f7a03c9fed627b4866cacbd0471d64d2b66eb96fb1c92\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"4Link (Remove-only)\",\n\t\t\"i\": 108,\n\t\t\"id\": \"358a3cc454ed36294befe8bf62accfd5ade43f3f058699292606101b9429e1ae\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 90,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 179\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/5721d0efa7\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/a46989dc8a\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/577a5b5203\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Ranger (Remove-only)\",\n\t\t\"i\": 109,\n\t\t\"id\": \"d65238031605b28109b47c09708129c5ce7ced82a08c7673e8d92966f69fc8a3\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 245,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/b0a652cf06\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/3efc6bd8be\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/9e2d61628d\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Head\",\n\t\t\"i\": 110,\n\t\t\"id\": \"92c5baa28dc3229a2479a8a19eaff62ef1d994aaf7e3cb7ccc77c8070bf0448a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/635831eed6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/ab3648496e\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/416089aa6f\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Torso\",\n\t\t\"i\": 111,\n\t\t\"id\": \"f6be8cb92d704fbd234d937997f134a837a56438993e680f2fd28f41e1a8b44d\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/635831eed6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/ab3648496e\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/416089aa6f\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"5s (Remove-only)\",\n\t\t\"i\": 112,\n\t\t\"id\": \"e30b69008949b2ee08fa8db16be4d171ac437519536927032c23a52d072a8e58\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 204,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 154\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zNDA3NzE4O319fQ,,\\/b5a6e7231f\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zNDA3NzE4O319fQ,,\\/7f17957d2b\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zNDA3NzE4O319fQ,,\\/0ac5e6a211\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"28 (Remove-only)\",\n\t\t\"i\": 113,\n\t\t\"id\": \"24897ba2bdaed7ddb6f1cb31c8613a85655cfd0c781b9d7a6dd4d00cdae48a3b\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Link (Remove-only)\",\n\t\t\"i\": 114,\n\t\t\"id\": \"9f406a0c2a33f45334dc3d338b558f0895240823ada3db9491304547e15ba873\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 128,\n\t\t\t\"g\": 179,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/ce67a12d5c\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/b0c1218fe0\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/3690bb27e5\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Six (Remove-only)\",\n\t\t\"i\": 115,\n\t\t\"id\": \"17ca5609f927a1aa706c92084fe3acad59ba0c3039fe416741d56d49046723d1\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/635831eed6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/ab3648496e\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/416089aa6f\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Feet\",\n\t\t\"i\": 116,\n\t\t\"id\": \"70b055a2703aa719c3dda95648106798d9bd780aa780e5fcb4f526ff788c13f2\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/635831eed6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/ab3648496e\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/416089aa6f\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"30 (Remove-only)\",\n\t\t\"i\": 117,\n\t\t\"id\": \"5edce3a406bc4e10384c2c4dfdf6628205809158d66c2b5ff77a694182820dec\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Rares (Remove-only)\",\n\t\t\"i\": 118,\n\t\t\"id\": \"263b3621f53c82ec71731fba5aa1e06c53b13dd243aa9a7523779ee2be9d8826\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 170,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Hands\",\n\t\t\"i\": 119,\n\t\t\"id\": \"244de32c17f90bc5f9fa7c3ea461be6a05481c924341e9b378ecf48196023f64\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/635831eed6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/ab3648496e\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjY0MDt9fX0,\\/416089aa6f\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"24 (Remove-only)\",\n\t\t\"i\": 120,\n\t\t\"id\": \"0516b3a2cffc060ecc559b9e2b648ac5b395137bbf582cb0a94ef04d35450a4a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Head\",\n\t\t\"i\": 121,\n\t\t\"id\": \"fed34196274734af8575b9e27c91781291678ba77dbf9f33966a702ace24b7ff\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 223\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjU0NTt9fX0,\\/9aa6ef60b7\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjU0NTt9fX0,\\/0fb4c41aab\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjU0NTt9fX0,\\/d2784cca4f\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"31 (Remove-only)\",\n\t\t\"i\": 122,\n\t\t\"id\": \"3bfa6ef9f47a0f9b7989de5c510f8a6d7ef811310ec9952b7c0caef1b4a49261\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"25 (Remove-only)\",\n\t\t\"i\": 123,\n\t\t\"id\": \"b762a502ff0c6da23c287b646ad2bf7355e227920f25df878c65edaa98ebf7eb\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Rarity (Remove-only)\",\n\t\t\"i\": 124,\n\t\t\"id\": \"59ca2bc076ba1a073ac9f154dbcfa91c8eedf135433e4a3b04fc90ca1d030343\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 170,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Torso\",\n\t\t\"i\": 125,\n\t\t\"id\": \"e1ba83b027914092e187745f6dfcf2ad29a07086805f6075f805bee0461a72eb\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 223\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjU0NTt9fX0,\\/9aa6ef60b7\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjU0NTt9fX0,\\/0fb4c41aab\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0zMjU0NTt9fX0,\\/d2784cca4f\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"26 (Remove-only)\",\n\t\t\"i\": 126,\n\t\t\"id\": \"d9755796e2f760f098f02a5be441a9a23a1be33ff97f4c5b473835c343aa1fa7\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Torso\",\n\t\t\"i\": 127,\n\t\t\"id\": \"eef9bef568c3f458ca9cfa4eb0de9efdff88a59335b818cbbbdb3e5258d33791\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 191,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjUxMjt9fX0,\\/bb01c61c4f\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjUxMjt9fX0,\\/2555475f96\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjUxMjt9fX0,\\/ff0e063243\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"33 (Remove-only)\",\n\t\t\"i\": 128,\n\t\t\"id\": \"b3b63d8ee117f504a3415d6ec99e0b3d80d332944a150e27e36a206f4e3f4857\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Torso\",\n\t\t\"i\": 129,\n\t\t\"id\": \"3a71a6be51cd9f1f5cceb8b3f956d0116748ee51bc3c3f06b43868d03146439f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 213,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/4fd846c823\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/8842f2d7ef\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/0916f3ec87\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"27 (Remove-only)\",\n\t\t\"i\": 130,\n\t\t\"id\": \"d03645e541af636bb08304eae217c583a2d8876c3f99f445bff87a36383d0daf\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"34 (Remove-only)\",\n\t\t\"i\": 131,\n\t\t\"id\": \"2ec37ba8afc104c10173d6bb04f8fb2cd525fb6261e30466e77f25b92bd149f3\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Shield\",\n\t\t\"i\": 132,\n\t\t\"id\": \"8e976b0e5455da40fd235bf47ccde4e332673eeb2c2bf8c007db8bb171a865f1\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 245,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/b0a652cf06\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/3efc6bd8be\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/9e2d61628d\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"hammer (Remove-only)\",\n\t\t\"i\": 133,\n\t\t\"id\": \"0595cf1aeaf6f1ed66e7364a043e12bb841bf28a3824e029de5a6b2082628604\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 0,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/49ca92df25\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/36ac864ec2\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/ebc3169574\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Chain (Remove-only)\",\n\t\t\"i\": 134,\n\t\t\"id\": \"d198aa9dbad7e4cb9b1adbe01fcde445050b380c7c8357e32fbfa008ae296203\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 128,\n\t\t\t\"g\": 179,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/ce67a12d5c\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/b0c1218fe0\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzQyNTI5O319fQ,,\\/3690bb27e5\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"36 (Remove-only)\",\n\t\t\"i\": 135,\n\t\t\"id\": \"c64e9d35b08dd76779e3094bbdd4ec8bca62cb8a99c3335fbbbef7f4aeec2b9a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Shield\",\n\t\t\"i\": 136,\n\t\t\"id\": \"fbc775dc0190aa053664f2cfc278d02e3d7e3efdd4e4082e5826604c946650ca\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 240,\n\t\t\t\"g\": 255,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05ODMxNjg7fX19\\/f0094a0c50\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05ODMxNjg7fX19\\/b33be143fc\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05ODMxNjg7fX19\\/8e9ec1995a\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"29 (Remove-only)\",\n\t\t\"i\": 137,\n\t\t\"id\": \"8908eb303bc356cb54e65487a87ebe1c598bc4e84e9b489853c89ac038cde4fc\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Shield\",\n\t\t\"i\": 138,\n\t\t\"id\": \"d864da485e053ae087c004b6a763f892c3f8ca19f6773faf9497baaaf9619dbe\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"38 (Remove-only)\",\n\t\t\"i\": 139,\n\t\t\"id\": \"f6d8e709ffe4526aa1efd15b46f190e8dbb27cc5bb5501dd96eed319a542fe15\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"30 (Remove-only)\",\n\t\t\"i\": 140,\n\t\t\"id\": \"19a79a44947fadff425fecd2d84e4a3739113d36aaeef0644091b8e29bec90ba\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"32 (Remove-only)\",\n\t\t\"i\": 141,\n\t\t\"id\": \"035fff9fc033d5cc256bc4d1a5e4c0b93891df571c7590522b24f8b75d8b46e8\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Flask (Remove-only)\",\n\t\t\"i\": 142,\n\t\t\"id\": \"240fd7f0bee7b2f8134eabfb44219c28ecb86bde01c7532848ca1a71777fcea5\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 50,\n\t\t\t\"g\": 50,\n\t\t\t\"b\": 50\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Wand\",\n\t\t\"i\": 143,\n\t\t\"id\": \"507a643c2b0119367ee8b30c48b0369dc9234d13c70b3d0d9127970e3ef905ef\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Mace\",\n\t\t\"i\": 144,\n\t\t\"id\": \"76d7ac982f9590660d931730535cc5f5d9f664c2e1ea8bf62d0df06fb8d8df84\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Flask (Remove-only)\",\n\t\t\"i\": 145,\n\t\t\"id\": \"6daed9adbbe9e6043a4fe611743f9eac1597b473c143778dffaa8da58a6ffb84\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 136,\n\t\t\t\"g\": 136,\n\t\t\t\"b\": 136\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/3e1c96f156\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/9da13bb4dc\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/5ff1e90713\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"33 (Remove-only)\",\n\t\t\"i\": 146,\n\t\t\"id\": \"88b2d9310f37d1d14106fbe3122e011620ea4209de5dd22787f8841e68a8d53c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"35 (Remove-only)\",\n\t\t\"i\": 147,\n\t\t\"id\": \"38fa1d3a89d0d7c21cec56a98f30069c0d5e2c2864e1f6231395cced8b8e8370\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Mace\",\n\t\t\"i\": 148,\n\t\t\"id\": \"ecc66706ad025bb42a7120e96263a7e057e4b9f006e61429838036c59a2baf88\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"40 (Remove-only)\",\n\t\t\"i\": 149,\n\t\t\"id\": \"a6dfac634055303ccd2e134990e7aec169b3dc236ccd1d3cf2d113cd17c391c5\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Scion (Remove-only)\",\n\t\t\"i\": 150,\n\t\t\"id\": \"78d4f0be63a50e22e3df828b080b612b384b17cf8065f2ae8884d33e27da3978\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 192,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/8838d97f87\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/23ecc5b004\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/b4dd7a01b4\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"36 (Remove-only)\",\n\t\t\"i\": 151,\n\t\t\"id\": \"2e0ace4c559efcb20ad36c38dc2f0ec67652f149b0ef080754f84052b3fb197a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Mace\",\n\t\t\"i\": 152,\n\t\t\"id\": \"8f5d0d5a7b56e8648051b12a70377c04340276ad38ccd13823d52387e8aaf0b1\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"37 (Remove-only)\",\n\t\t\"i\": 153,\n\t\t\"id\": \"087dbe84aff4171ae2d764fac644ea8ab4e2a90d49af41114aa718a51e492856\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Block (Remove-only)\",\n\t\t\"i\": 154,\n\t\t\"id\": \"4939308ecc490de74466cad21dcc4133d7c15c693a9dde8b769615f5312d7cfa\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 90,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 179\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/5721d0efa7\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/a46989dc8a\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDg3ODc5Nzt9fX0,\\/577a5b5203\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Claw\",\n\t\t\"i\": 155,\n\t\t\"id\": \"4f5043053dda53eb297d7cdc14489c8e9b85b3cd42bda6ea7ce2f0825d9ae58a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"38 (Remove-only)\",\n\t\t\"i\": 156,\n\t\t\"id\": \"ca27c4e019c062fb6fa372d2476b503639b590f029f1f12ae48a5d7a2780bf02\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"43 (Remove-only)\",\n\t\t\"i\": 157,\n\t\t\"id\": \"04b92fa6a873ae76c1ab07d552a6fb8fa7a15993f1aeb63bc23dd9a912c8599b\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Bow\",\n\t\t\"i\": 158,\n\t\t\"id\": \"1c7f504981712366eeb2d5c9a8ab8f100a273dbb51a3daf761f3f09dd8101533\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"44 (Remove-only)\",\n\t\t\"i\": 159,\n\t\t\"id\": \"96b3ef94470c309125c2ea290346617f06463c56c3ba30d0d92d55d531fdce2c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"39 (Remove-only)\",\n\t\t\"i\": 160,\n\t\t\"id\": \"649a0b3fc55c050e0928fa2692860a0522e2ea5323d6ed82df84e356d987ef38\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Staff\",\n\t\t\"i\": 161,\n\t\t\"id\": \"f9728624b0eb7b6cf0b38cb6c1dcb0d372f8da7de51867d0ab73a4dc4b26abae\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"45 (Remove-only)\",\n\t\t\"i\": 162,\n\t\t\"id\": \"c8bd8daa0d8b934babed961b289aeefdb89d429be292a07b357cdcbd0e17b663\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"40 (Remove-only)\",\n\t\t\"i\": 163,\n\t\t\"id\": \"6bca2cd64db1f6c141f883ee005dabed3fe30ee4b536151afda01fff3e96c3ee\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Axe\",\n\t\t\"i\": 164,\n\t\t\"id\": \"eaeadb13528f2d81647c7e73408f6143b39f1788a963e688dd83dc366355d7d5\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"41 (Remove-only)\",\n\t\t\"i\": 165,\n\t\t\"id\": \"080b6c06884c90db81a1647890d0cf2919808f5d4a6caa780f37b993c4cdae1f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Dagger\",\n\t\t\"i\": 166,\n\t\t\"id\": \"36a3d3e8edd810f243ef834d578922d6028ed277bd395e67b9a7a3f932e4668c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"46 (Remove-only)\",\n\t\t\"i\": 167,\n\t\t\"id\": \"2f32d9b193acf97daa55fef4e66a94a63b7e3f036dfcdb94e8a6fc66f302d63a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"42 (Remove-only)\",\n\t\t\"i\": 168,\n\t\t\"id\": \"6921ac6e2cf42ba244cd8cd50a5a79787927e30ea024266cff10233f127792c6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Sword\",\n\t\t\"i\": 169,\n\t\t\"id\": \"35f2d7028781eb181821cbbb2a7893c0b5697fa13c622cdda59b5af6039840b6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"47 (Remove-only)\",\n\t\t\"i\": 170,\n\t\t\"id\": \"0ae4ed23a3169ba4f5fef80e1a43434788ec69445ff518e506c80898f4ceca53\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Quiver\",\n\t\t\"i\": 171,\n\t\t\"id\": \"e9c44302074f3b4e00ff3b370f9f0569085f1067e1293eacf692e200dc6d2ec7\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Fire (Remove-only)\",\n\t\t\"i\": 172,\n\t\t\"id\": \"99b1ae4ed2b519f2897633fbbf89810cd5ffff808459cc61df23c367f7ceed38\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/98a058fc32\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/edc7e2c501\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/42ff0bf3e8\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"43 (Remove-only)\",\n\t\t\"i\": 173,\n\t\t\"id\": \"353e3f5fcb5257a898408a8e52977d3b01eee256f043967e844066757381c231\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Head\",\n\t\t\"i\": 174,\n\t\t\"id\": \"92a0f7808153a806235621f19da6d1f3ce83969526b8eec579255e32d2daba5c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 191,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjUxMjt9fX0,\\/bb01c61c4f\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjUxMjt9fX0,\\/2555475f96\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjUxMjt9fX0,\\/ff0e063243\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"49 (Remove-only)\",\n\t\t\"i\": 175,\n\t\t\"id\": \"4203b05c5d7283ab390ab17c155164ad95dcf6d4e2814d17776498478edf849d\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"45 (Remove-only)\",\n\t\t\"i\": 176,\n\t\t\"id\": \"1329917e403f6b89d2aacd9e227146d9ab354fb2364d2a7ddc9e5e3e2227afb7\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"50 (Remove-only)\",\n\t\t\"i\": 177,\n\t\t\"id\": \"ec500dc817384c3a46cc950b2a7c9c0d1a34e95197a5ec62ced4805beae2e41c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Feet\",\n\t\t\"i\": 178,\n\t\t\"id\": \"055cdbbf28fa3f41c004b2ed363da74e7da2f1f653df39abb0fc86bb6af6b1a3\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 170,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"46 (Remove-only)\",\n\t\t\"i\": 179,\n\t\t\"id\": \"cbd31133aa46f63564cc0bb80b1eb9cc5989b82c16edfb6b53fb9abfaf8c9312\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"51 (Remove-only)\",\n\t\t\"i\": 180,\n\t\t\"id\": \"525a80afe5985e84277a51c54793ff685be57aa080ecb0bc87a8b4f9d8c9173a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"47 (Remove-only)\",\n\t\t\"i\": 181,\n\t\t\"id\": \"9aff6b120e1c29422d0345c10bb7d08db6b2c089193e161e90b61963952fa6a5\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"35\",\n\t\t\"i\": 182,\n\t\t\"id\": \"c18b3f4d3dcbf5d0ce4c6cd244df3aa2a077cd59809fe25d68fb7092a4592887\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Lightning (Remove-only)\",\n\t\t\"i\": 183,\n\t\t\"id\": \"d70fb75f580d3eb75ae288af49c938d71f189b0b763771e749d1eb245a7e96b3\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 0,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/49ca92df25\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/36ac864ec2\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/ebc3169574\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"48 (Remove-only)\",\n\t\t\"i\": 184,\n\t\t\"id\": \"f5c0ef88b821a951e5d4720ddfad7997e5a911e1052e7f19b61c84f5ac0f56b3\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"36\",\n\t\t\"i\": 185,\n\t\t\"id\": \"257ec89d3952aa59cc2708429779f3b4270ff336de4c3076156ecccd66c6e673\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"7\",\n\t\t\"i\": 186,\n\t\t\"id\": \"c043410ebd690395f9eeed1485091d0e72c0d437db31a99fecc7695136111382\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"49 (Remove-only)\",\n\t\t\"i\": 187,\n\t\t\"id\": \"99eba64879fd05bc3bc212b54a8435c94e314a0fd9662e8732c64eb34c1d4443\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"53 (Remove-only)\",\n\t\t\"i\": 188,\n\t\t\"id\": \"6444c625a992aff6ffdb54f58335fea02294461581449cd7ade067823078bc34\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"39\",\n\t\t\"i\": 189,\n\t\t\"id\": \"76ea80dcad12136c33bb29946dafce261c25c4834d193ed8e39de12c13165d21\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"54 (Remove-only)\",\n\t\t\"i\": 190,\n\t\t\"id\": \"5109548eed027e709596f374ff042d795853cd2c3eccad2c95315b53de72b76a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"51 (Remove-only)\",\n\t\t\"i\": 191,\n\t\t\"id\": \"e7604a2480908ecc17ff627c69e238f899f9363609b72cc7be4e42e849da11a2\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"40\",\n\t\t\"i\": 192,\n\t\t\"id\": \"f9d13c4f40080f3088e19a68f36c7a6fc3574cb52a2d2aa85d0c8d1bc1bd3a74\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"55 (Remove-only)\",\n\t\t\"i\": 193,\n\t\t\"id\": \"58cef4dac09b6f02f780f96a3b0c79f20dbcb30389ff19f2b0ac2f718a8cb9c0\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"52 (Remove-only)\",\n\t\t\"i\": 194,\n\t\t\"id\": \"ddbcc485047e4f4ff4306acb32972e8f2fd9de08bfbdb8072f00ebf67ad0427c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"53 (Remove-only)\",\n\t\t\"i\": 195,\n\t\t\"id\": \"44b334ea4a6c22b13b943cdd93b38d3f441d26e1d07c37c562dd0ffd34614ff6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"56 (Remove-only)\",\n\t\t\"i\": 196,\n\t\t\"id\": \"9bd88f4f2a2aa2a4b539cd754c7bd23847bce1d6f81dabf8dad7af1cdc971a50\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"42\",\n\t\t\"i\": 197,\n\t\t\"id\": \"10707a4376e5151db6000ff514c7384a19c8c10a70f0271705366060cdbd68c4\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"54 (Remove-only)\",\n\t\t\"i\": 198,\n\t\t\"id\": \"457b8835fa925628acbfd4ce4781d58593faade46fd569528061cc4313239cfc\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"57 (Remove-only)\",\n\t\t\"i\": 199,\n\t\t\"id\": \"d025d3860c3788d48de61e7da3d77d96734080850de285ace85be0350eff36d0\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"43\",\n\t\t\"i\": 200,\n\t\t\"id\": \"1b722de9252487bfda17b5be1ff33a60938f552d3b71a6e55c1d5def7e6377bd\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"58 (Remove-only)\",\n\t\t\"i\": 201,\n\t\t\"id\": \"d0b58906ec6fb8cac4e251eb982d39831b034363145b457d3a14b661abd10d2a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"55 (Remove-only)\",\n\t\t\"i\": 202,\n\t\t\"id\": \"40f9e9df2bf42ce5dd22b099ef4991b528f0e12676eba9b74dc35b5449864afa\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"44\",\n\t\t\"i\": 203,\n\t\t\"id\": \"b13d6a6037c7d4d0e72ef77ad5822ab5c3b0225afcd8427716bc777136334e12\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"59 (Remove-only)\",\n\t\t\"i\": 204,\n\t\t\"id\": \"af3751fc52d44471543a1aee2e26087a350a9b624b4ec6256cf9302e416c2924\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"45\",\n\t\t\"i\": 205,\n\t\t\"id\": \"b1d1b7cfb5b332f149f1a67a03b1a2624ce6784a26b22a119de70059cafc4016\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"56 (Remove-only)\",\n\t\t\"i\": 206,\n\t\t\"id\": \"29f6a479285efea6510dbd8bd491d872b5e9b2713dcd973754065f72f5f508bb\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"57 (Remove-only)\",\n\t\t\"i\": 207,\n\t\t\"id\": \"d7eb78b93dfb5166e5e27a547056de6eaef7c74b75db0ffb00dfea7245118a31\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"ES (Remove-only)\",\n\t\t\"i\": 208,\n\t\t\"id\": \"33c437846fd88a276ecf0e8aab16c64f652c884770082f9fe7acc26fd1f1aa8f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 221,\n\t\t\t\"g\": 221,\n\t\t\t\"b\": 221\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/ee8a4216f9\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/e0ce46cb01\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/f8f378ce64\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Fire Resist\",\n\t\t\"i\": 209,\n\t\t\"id\": \"149bdfe089e7aa16f6c08b7168b5918acdc7c6a694e468c7211797cac88cb545\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 89,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/8ade9bb940\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/ba64385447\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/55c7c28a3a\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Fire\",\n\t\t\"i\": 210,\n\t\t\"id\": \"57a4183ca707bd75db4a1f73e9c5077349eeabb1c4ed8e2b75c4445e20355911\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 89,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/8ade9bb940\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/ba64385447\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/55c7c28a3a\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"59 (Remove-only)\",\n\t\t\"i\": 211,\n\t\t\"id\": \"f93381eab90b1e94b8bb9ab2bae0d7615c3613bba13a2a13bb68990abc515fa9\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"61 (Remove-only)\",\n\t\t\"i\": 212,\n\t\t\"id\": \"1f547c11f2cc53bdd1ddfaf8d3c5c8cc5c3b49e9397aa4fed1e898d51ec73fcf\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"61 (Remove-only)\",\n\t\t\"i\": 213,\n\t\t\"id\": \"63fe8fd1009c47368240e54c19d415ab6855c801f072683735e32f5066f033c6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"59\",\n\t\t\"i\": 214,\n\t\t\"id\": \"f76b3d30d59a819dadabeb4cf2ca071a2c1ba1cfd7dfaff87baef382397eabcd\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"48\",\n\t\t\"i\": 215,\n\t\t\"id\": \"62c8d94577c6d461e7be86560e83dfdfdb209b1715f9344c1bc7175aee3bb6e5\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"63 (Remove-only)\",\n\t\t\"i\": 216,\n\t\t\"id\": \"5ed6689395cc0a16cbdf0d015a38ab44509a9f6997fbc7a3aca4e97e7e701b1a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"49\",\n\t\t\"i\": 217,\n\t\t\"id\": \"e582f2f3a70370a4f59f765d9af5024a7529db86d73ae24c0654c4ee97c59f74\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"62 (Remove-only)\",\n\t\t\"i\": 218,\n\t\t\"id\": \"26c3d6378d0d4512caaebae83f9de9572d4e7a3274b6c0ed4bf68d7b00bf21d5\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"50\",\n\t\t\"i\": 219,\n\t\t\"id\": \"efaba159bee0e05687100af95736e4061a694188a8c1afaa9a96c216c2701d6a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"64 (Remove-only)\",\n\t\t\"i\": 220,\n\t\t\"id\": \"2388f710d98e6bf73ccae45dbbe9fae10cfc90cbcc61aa6745844e6536c629bb\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"51\",\n\t\t\"i\": 221,\n\t\t\"id\": \"43746ee3ab1ef8c295662410d25380f3b9ec7a9c8a9bf4352cbe592ef5a42565\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"65 (Remove-only)\",\n\t\t\"i\": 222,\n\t\t\"id\": \"517742d46c5129cae5afef0de9be174d0939b3afcf01ff0892d9ea6068e3a2bc\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"64 (Remove-only)\",\n\t\t\"i\": 223,\n\t\t\"id\": \"ab1273efe00acd2074bd1b343a5e5665d03c956ff09038ff8393809f98393a14\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"65 (Remove-only)\",\n\t\t\"i\": 224,\n\t\t\"id\": \"9d5b369d9e4240d5147ed69fd821a3f00011f9f60ef141fa37350d6110be4fb3\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"66 (Remove-only)\",\n\t\t\"i\": 225,\n\t\t\"id\": \"9db990f66fb49c83107d6cdf7dbff9ea1a740e284c8b077a6c97a5e014f3c7fd\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"52\",\n\t\t\"i\": 226,\n\t\t\"id\": \"00cf0ffb446f46804ecec0061106bae0eb78c70a3910c070825786fd50b859a9\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Chaos (Remove-only)\",\n\t\t\"i\": 227,\n\t\t\"id\": \"27c65a3a13f26f956d09bba9e6775c8770bed0214df9ccb776459778c83c4bec\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 192,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/8838d97f87\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/23ecc5b004\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/b4dd7a01b4\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"53\",\n\t\t\"i\": 228,\n\t\t\"id\": \"6eef3fdfcca24d6edfde9c872bff4778924e989840f0d78511170465af77cb55\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"68 (Remove-only)\",\n\t\t\"i\": 229,\n\t\t\"id\": \"cbfffffbec79bc616c2aabfc72ac0eb3dc018db079b26e5be98d07ecc7a2706d\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"54\",\n\t\t\"i\": 230,\n\t\t\"id\": \"c880cddb1d1bc279d0f87a1d102ff6a69c636220f4ab35eb47ddda9774dd6d42\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"67 (Remove-only)\",\n\t\t\"i\": 231,\n\t\t\"id\": \"8e0e1e5c62c9ba886290730ef3183734081918db1cf6ff996a6ab3ac7409a13f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"70 (Remove-only)\",\n\t\t\"i\": 232,\n\t\t\"id\": \"b66a311284e89f0acda985ecb383b72e8f5c8014b721a397352fede44f269980\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"5\",\n\t\t\"i\": 233,\n\t\t\"id\": \"c91b7bc773dd6245529cef6b0502abb827cf0c95067fdd42490fb4e11f74ac0c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"68 (Remove-only)\",\n\t\t\"i\": 234,\n\t\t\"id\": \"e30166282878f346dc28b63d6b6781bc0e6089bfc8f631b28d1806affcf80bf5\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"69 (Remove-only)\",\n\t\t\"i\": 235,\n\t\t\"id\": \"dec35465166a039f2de7cd9f33ec206525cf37e88efe9cf09772dc058c36258f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Shield\",\n\t\t\"i\": 236,\n\t\t\"id\": \"97bffb593273ae83ae3e4abca852685f66b714f949bc5efd002e9020d90ef94e\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"71 (Remove-only)\",\n\t\t\"i\": 237,\n\t\t\"id\": \"7201d78649e9a971171c72e5f1dff00ad000c5ab915298d330fdbbcf9bd8b18a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"72 (Remove-only)\",\n\t\t\"i\": 238,\n\t\t\"id\": \"bc4c747e9f69678074a5faf62c994dfe2bd520fabd9f0e95eb7b640804178503\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"70 (Remove-only)\",\n\t\t\"i\": 239,\n\t\t\"id\": \"7b0b1934cac21da6f1d85a30139ad740d6f67415dd385019cb682ba40d12dbe5\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"8\",\n\t\t\"i\": 240,\n\t\t\"id\": \"bce98886c41dbb0e37cb7337d4535a7cda118a139b6a164e7add294b5cb39831\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"71 (Remove-only)\",\n\t\t\"i\": 241,\n\t\t\"id\": \"49fadc48d4c91f0a7ac26665b7f3e5ca39996596b1af96ef05431a4e5f1c4c33\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"9\",\n\t\t\"i\": 242,\n\t\t\"id\": \"50117f8f293d19965f2075ff7b60b50b1cee6b75e7efdedfc4a7821cccd2f20d\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"73 (Remove-only)\",\n\t\t\"i\": 243,\n\t\t\"id\": \"c573226d11e798e4e5cb66fb7edac8e27d8184df2e9734883e51978fc419d655\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"72 (Remove-only)\",\n\t\t\"i\": 244,\n\t\t\"id\": \"7711ade4370de0df6cd6dbec48d07ed55f0932636bcfe92ed5ad71d205725e7f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"74 (Remove-only)\",\n\t\t\"i\": 245,\n\t\t\"id\": \"c869ed187db6b095c05fec8ad16bd5633cb51e63403d32ce462410695ff9da5f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Store\",\n\t\t\"i\": 246,\n\t\t\"id\": \"193984e2a0c750067a8ff50b37578bea273e0311812b52e5f088cbaf30c26330\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/98a058fc32\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/edc7e2c501\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/42ff0bf3e8\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Rarity\",\n\t\t\"i\": 247,\n\t\t\"id\": \"33bf30c6e58b5bc35ed99eac48aac692f2ea01a1e02fcaf667499ef819591843\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 170,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"EV\\/ES (Remove-only)\",\n\t\t\"i\": 248,\n\t\t\"id\": \"63fba4c91fb76c2f9b2c4f945683edfd8d1eb8c1727d559dc7e4fc3b09cd5f75\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 240,\n\t\t\t\"g\": 255,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05ODMxNjg7fX19\\/f0094a0c50\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05ODMxNjg7fX19\\/b33be143fc\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05ODMxNjg7fX19\\/8e9ec1995a\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"73 (Remove-only)\",\n\t\t\"i\": 249,\n\t\t\"id\": \"7bd9b847b60d922af3d60287af3dc20e87bb1986deee93d012be3f2e26fbad51\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Witch (Remove-only)\",\n\t\t\"i\": 250,\n\t\t\"id\": \"b7980fd918da5998c1a0a33d6586fdf943d53852e25d056746eec66ce378521d\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 192,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/8838d97f87\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/23ecc5b004\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTYxMjgxO319fQ,,\\/b4dd7a01b4\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"74 (Remove-only)\",\n\t\t\"i\": 251,\n\t\t\"id\": \"8d914a0422b969bc5ee49a44a720c0d1a111cec2e6f9694668b624e2e7b4c6fe\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"6\",\n\t\t\"i\": 252,\n\t\t\"id\": \"512de30b172833070367663670b3668c7b7c654e6fe06222751a1f5bba68f18e\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"10\",\n\t\t\"i\": 253,\n\t\t\"id\": \"710503bf473fd16e1c4cbe19a663ffb5585e8baa9fb17df43a85e084f5000899\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"77 (Remove-only)\",\n\t\t\"i\": 254,\n\t\t\"id\": \"01001afd7aeb12523cc4c38590722584a8a48f72f7b4b1ddbcd8342e75343f64\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"75 (Remove-only)\",\n\t\t\"i\": 255,\n\t\t\"id\": \"54601b4dc0d26f76c5475d10b5436c3fa8746352a19cfde6235d0c48090075a0\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"11\",\n\t\t\"i\": 256,\n\t\t\"id\": \"bd9477544d1e330ce162631438decf9f19dccd74841bfee98280513f7953430a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"78 (Remove-only)\",\n\t\t\"i\": 257,\n\t\t\"id\": \"aad8e871f3f6b08dfb55f8fed2a9c84c1f5a0da1ee1cfa7f4b136883a250ccb6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"76 (Remove-only)\",\n\t\t\"i\": 258,\n\t\t\"id\": \"ed8ec1ebda65b90e8d3eed340b8081c053a185a027444f75bac7521b53593b20\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"77 (Remove-only)\",\n\t\t\"i\": 259,\n\t\t\"id\": \"cdb8fa7c1b2a46012b1ace0aee405911da3fd9626ef3cefe9ef2bb0d248a4e8a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"79 (Remove-only)\",\n\t\t\"i\": 260,\n\t\t\"id\": \"807cf9115d1d7d285ae9b5462b8d0bf10f6d094df201f764fe16401b4b7fe4b8\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"12\",\n\t\t\"i\": 261,\n\t\t\"id\": \"c256af910eb31e3f6bcfbe392b43e22a22a6336317ea77144a07bd1dfb4cf1af\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"13\",\n\t\t\"i\": 262,\n\t\t\"id\": \"8f230fcd973a713cc07eaf36da9aa1e5ee2b5828025fe95bdfee5093295ee648\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"78 (Remove-only)\",\n\t\t\"i\": 263,\n\t\t\"id\": \"5ce428148fd7488d8580859f073d263ed7cfed0c7cb75542b8ac7b5892c34201\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Dagger (Remove-only)\",\n\t\t\"i\": 264,\n\t\t\"id\": \"8122df1d150b29764d6c8ff91cb3f5e2be03ec06d94d804ccf055e15d1fa0866\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 115,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 85\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/9124912871\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/25eb8a934b\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/732ef43793\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"84 (Remove-only)\",\n\t\t\"i\": 265,\n\t\t\"id\": \"c231e7aa22a6553f47399f3a4cfe4c6e0b042f8b9ae85ffe2469168277fbd72f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"79 (Remove-only)\",\n\t\t\"i\": 266,\n\t\t\"id\": \"e5c9edd5b1b6d36c485b4e60e909df4cd65d877ea9d8027c1837b9747d768b69\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"14\",\n\t\t\"i\": 267,\n\t\t\"id\": \"95d263c8c0cdfef2a93657a4f487ee37fe99f160d9be79995a2d8a63a25e6b29\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"85 (Remove-only)\",\n\t\t\"i\": 268,\n\t\t\"id\": \"6637b49bf1c7ce7f8656f8033c0597470fa6994dfa4940fe64dba03250377438\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"80 (Remove-only)\",\n\t\t\"i\": 269,\n\t\t\"id\": \"bb5334eb3ded56b99abbb3fff9e4085fc790ff5300cb9169942af2aaa3814d7d\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"15\",\n\t\t\"i\": 270,\n\t\t\"id\": \"514c66098fd56f82f13fc1d03d3b11d622fe2cd14dbf459fb44a4170bac68796\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"16\",\n\t\t\"i\": 271,\n\t\t\"id\": \"498f3656674c6619231b50eb7c21ed1c3968cc2d1b60f7ea1cb9fdf77a12773f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"87 (Remove-only)\",\n\t\t\"i\": 272,\n\t\t\"id\": \"d0b3e7da2098e69a8be4ab83046827ba21c4451c26c98fc815af1e6c5c44ab8d\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"82 (Remove-only)\",\n\t\t\"i\": 273,\n\t\t\"id\": \"7e4fc2d676f0f09690c945c107a85ddf9c0f46b7266aab732bf3734350c3b118\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"17\",\n\t\t\"i\": 274,\n\t\t\"id\": \"2bf438dc3dce61c245d92349d83975288ca88c2896400994d25d8f07945a9dbd\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"88 (Remove-only)\",\n\t\t\"i\": 275,\n\t\t\"id\": \"b4c9cac27f3ef61b0ed7bdd89e03e55ab27211244af74883f0684ef58ce358a5\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"83 (Remove-only)\",\n\t\t\"i\": 276,\n\t\t\"id\": \"b92f75742d031275b72148b0045a22474da7069b76ac48104e8c8c5ae86a4a57\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"85 (Remove-only)\",\n\t\t\"i\": 277,\n\t\t\"id\": \"6d7052d3210ab787030fd52333e0ab01d5f90bb02de46975e53eb71e621b1685\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"89 (Remove-only)\",\n\t\t\"i\": 278,\n\t\t\"id\": \"3192a3413919bde3a5ca126d3bdeb0433356d8e44cdf64a6b008322002b6cb2a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"19\",\n\t\t\"i\": 279,\n\t\t\"id\": \"c04140749c2231af461ec56fcb25335344526a87e11c7891722d37f7e1265f9c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"18\",\n\t\t\"i\": 280,\n\t\t\"id\": \"9966d1e4d8206dff23f93d1e6c14a6b05851aac117be2f8944a241d0105aaeec\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"91 (Remove-only)\",\n\t\t\"i\": 281,\n\t\t\"id\": \"319129e1574eee210bbbaf9405da1124dde9ead35ed830c419d05fd97aad241b\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"86 (Remove-only)\",\n\t\t\"i\": 282,\n\t\t\"id\": \"b7f4aa25465ba69f4dca93a985de72384d5bf3e5473bc0332387fb874fde6716\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"20\",\n\t\t\"i\": 283,\n\t\t\"id\": \"8b754430afe8e9561c039c9bf645c63b5cbc9097b9e4118924485950283df851\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"88 (Remove-only)\",\n\t\t\"i\": 284,\n\t\t\"id\": \"41615c595ea1aa4b22877869c912fb06af8abf6ffd70a8b8690a08394c279eb3\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"92 (Remove-only)\",\n\t\t\"i\": 285,\n\t\t\"id\": \"259a04a4e6c13a1a222318f8a94f330014e24408be418320e971317eefb55312\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"89 (Remove-only)\",\n\t\t\"i\": 286,\n\t\t\"id\": \"6f0690706abaef602b37d2786792d9e5fa63a73a8f90f305f1fda73b24e8facf\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"93 (Remove-only)\",\n\t\t\"i\": 287,\n\t\t\"id\": \"281d70c91f639ac0b6b5a67f3ad67fc21d0c06e9b0871f18c6d90a9cbea5e853\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"21\",\n\t\t\"i\": 288,\n\t\t\"id\": \"e2131fa8227b35d8a7cc6ded6c246923f966a6688403a20121224d1061b9998b\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"90 (Remove-only)\",\n\t\t\"i\": 289,\n\t\t\"id\": \"34b8a3fae4d63b887deb49d0d5cbca1595867802f4fa8e1f59e9227f473d9bd3\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"94 (Remove-only)\",\n\t\t\"i\": 290,\n\t\t\"id\": \"b85ca5945f2f90b65b88a5809c996e7fefa64a2660085a86211a2f33c7465d95\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"22\",\n\t\t\"i\": 291,\n\t\t\"id\": \"3be6bbd64809f81eba12d8024d1f8d58bff2c1cc5144d7a48f9e93e5c04bed1f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"95 (Remove-only)\",\n\t\t\"i\": 292,\n\t\t\"id\": \"c7c6db6fbfc75bd093baba704d86d80677996e6440f2b6707db301a8a31a3a1b\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"23\",\n\t\t\"i\": 293,\n\t\t\"id\": \"c3b144f8c3819d89c13fb252f70b2954a4e97bc14ea3ec0550cbe6ccce648fe9\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"91 (Remove-only)\",\n\t\t\"i\": 294,\n\t\t\"id\": \"78af06a5c3716f132997b3c49827346e0cc3d3093b0773a40b1fb55f1dbcfa16\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"24\",\n\t\t\"i\": 295,\n\t\t\"id\": \"5aa5da3ad103339f23b1aae514e80516bc94a61e7a859628beffda4eb5d76577\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"92 (Remove-only)\",\n\t\t\"i\": 296,\n\t\t\"id\": \"a9640431fb5dfa73c48d2be8b511d8c150fa5b0c33f03cfd67dd242cba2f69ec\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"96 (Remove-only)\",\n\t\t\"i\": 297,\n\t\t\"id\": \"b04cc6508622915713c8bc194950087c88cd34acec0bda25385775408a0fa762\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"26\",\n\t\t\"i\": 298,\n\t\t\"id\": \"09679e89b649637b28c354335896001aeb8c78f8acb2d1a4aa7fad93457558dd\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"93 (Remove-only)\",\n\t\t\"i\": 299,\n\t\t\"id\": \"d01569f550077881d66ec1b29e6dc9cfe46693659818b4b259f6ba4a9ed3d4dc\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"97 (Remove-only)\",\n\t\t\"i\": 300,\n\t\t\"id\": \"ab7d7ab56098b4c701c3d11a6239988c04d520778de0b9e485afb82af7b10e55\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"28\",\n\t\t\"i\": 301,\n\t\t\"id\": \"92332f021665bfa61ec8513ab2873c19ffb5f1b761aacc43a72caff28ac327fe\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Resists (Remove-only)\",\n\t\t\"i\": 302,\n\t\t\"id\": \"a89124525a4be5f7a61c0215a482b0418d345a0c21911c4dc2daa8381d47f2f4\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 240,\n\t\t\t\"g\": 255,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05ODMxNjg7fX19\\/f0094a0c50\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05ODMxNjg7fX19\\/b33be143fc\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05ODMxNjg7fX19\\/8e9ec1995a\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"99 (Remove-only)\",\n\t\t\"i\": 303,\n\t\t\"id\": \"e8e11d8785c0b07aea335094f24daceed637b239fac08965ec6044560511e954\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Fours\",\n\t\t\"i\": 304,\n\t\t\"id\": \"b229b546857ebbe379e98a3eaead1d5645b9e761926923c52a61b71f2015f072\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 245,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/b0a652cf06\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/3efc6bd8be\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MTk3MTIwO319fQ,,\\/9e2d61628d\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"95 (Remove-only)\",\n\t\t\"i\": 305,\n\t\t\"id\": \"e77cc5b6af82b732c99f68b76d871a3cf486a57b743db30685715912a9549ad1\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"25\",\n\t\t\"i\": 306,\n\t\t\"id\": \"412cdb5f5f860033a2a27fcad0a60f0b17ed1c41a7297c61620ce095d5f261b2\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"100 (Remove-only)\",\n\t\t\"i\": 307,\n\t\t\"id\": \"71dddd34df6e7329fbcd8916f507b26549305372d5cf98178108dd0ad87d030c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"96 (Remove-only)\",\n\t\t\"i\": 308,\n\t\t\"id\": \"f53b65e61fb38720160be976cde589985b7750ed003ec84230c8df5b60e316e3\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"97 (Remove-only)\",\n\t\t\"i\": 309,\n\t\t\"id\": \"9a479e7d2df7c824cff862cbd04ba8f5775aead5f41f867eaa2496b4e4018d8c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"101 (Remove-only)\",\n\t\t\"i\": 310,\n\t\t\"id\": \"5c2c8784f7735bf7c6fd1bf9869f76ef91c21ce843d62364e8a678346424ec85\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"27\",\n\t\t\"i\": 311,\n\t\t\"id\": \"635c15afd41921ae81f559e53f5689170be16e6d6db8e33256984f53ab295ae9\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"98 (Remove-only)\",\n\t\t\"i\": 312,\n\t\t\"id\": \"0eac73beb2b7d866c66e695b1e2104753c66d9dddf9aa510b794cf78f5ff16e4\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"29\",\n\t\t\"i\": 313,\n\t\t\"id\": \"412b1b34eba0f45cf5d1014b7988fb9f32c26b902880e0fd69e6446e5e34658d\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"102 (Remove-only)\",\n\t\t\"i\": 314,\n\t\t\"id\": \"8620bce6c98ee84d08b2e09d67f5f060c379ee781fd6e3bede798754e26a588e\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"99 (Remove-only)\",\n\t\t\"i\": 315,\n\t\t\"id\": \"e51e8fe0c6e8d9ee0eadd9d4af1f4a525cfce9c2f4cb0b494f1aec44f5f882d7\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"30\",\n\t\t\"i\": 316,\n\t\t\"id\": \"c43daf1daf19de6d756e3a7cd06be850234f01f2e25532d6f83733172a06204a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Phys (Remove-only)\",\n\t\t\"i\": 317,\n\t\t\"id\": \"685a79fd72c3c7c946594a50b321db7905c89e394cd727dd73e81b3ffb673781\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 0,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 255\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/49ca92df25\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/36ac864ec2\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjc3Njk2MTt9fX0,\\/ebc3169574\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"31\",\n\t\t\"i\": 318,\n\t\t\"id\": \"aa0b439215064a6321d0d3b8e31849ae68e5108647a60b5b909a43928b2221f3\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"104 (Remove-only)\",\n\t\t\"i\": 319,\n\t\t\"id\": \"bc7f6c6a426f51eed06d328ecfa43f031037be30575daa319b94cabe31e2bb3e\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"100 (Remove-only)\",\n\t\t\"i\": 320,\n\t\t\"id\": \"314368faeb860198a5f1e8b9638b16263e1f42fc6e7e6b264c1d7905990aad1c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"105 (Remove-only)\",\n\t\t\"i\": 321,\n\t\t\"id\": \"ec2e0416111d3cdcc90d6a39a72c77e83c1a43885f318853895591f421ee8000\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"101 (Remove-only)\",\n\t\t\"i\": 322,\n\t\t\"id\": \"2877e5755157cde86df9e1e32c707d9da2e712189def2fd9373833b023e3df1a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"102 (Remove-only)\",\n\t\t\"i\": 323,\n\t\t\"id\": \"af773d9501c67262d56d1ab4314e3d2012e5b59b899283cbb05bf394bbfa3f29\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"106 (Remove-only)\",\n\t\t\"i\": 324,\n\t\t\"id\": \"1a7be38b9f153668c8b809e73e6776595441cdf951f879c686d92f50cbb1f593\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Boots (Remove-only)\",\n\t\t\"i\": 325,\n\t\t\"id\": \"d7b27a840e36d42f60907e1a90f6718c15fea9b3e6ccfbf61eba57a34ab3b4f5\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 115,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 85\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/9124912871\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/25eb8a934b\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi05MjQwNDkxO319fQ,,\\/732ef43793\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"103 (Remove-only)\",\n\t\t\"i\": 326,\n\t\t\"id\": \"52a8c46a1b8c09f7553183f96c200d50261c12c953593e56813a6235461c39d4\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"32\",\n\t\t\"i\": 327,\n\t\t\"id\": \"7ac834d92ec257449ba1fa321556c551f8f3438ba3cc9b966559902c7a88db27\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"33\",\n\t\t\"i\": 328,\n\t\t\"id\": \"7e55d72ad2f172a7f9b5c3874aafb7030c7af80a521eaeb854220e6543ddc419\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"104 (Remove-only)\",\n\t\t\"i\": 329,\n\t\t\"id\": \"1cad091a249cdae63d435105d4de12781ae90342b55ea1d67e91f88e0f7f9161\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Inc Phys (Remove-only)\",\n\t\t\"i\": 330,\n\t\t\"id\": \"162565c207052251a4b96b0262e377a97cf3a05fb2df8e4564f77c8e0c811b61\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 221,\n\t\t\t\"g\": 221,\n\t\t\t\"b\": 221\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/ee8a4216f9\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/e0ce46cb01\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/f8f378ce64\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"34\",\n\t\t\"i\": 331,\n\t\t\"id\": \"d4344c219f6250574ccffc2c9e0a5e32bd4086bf8b5ea6d5fb9ae000e6735f6c\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Move (Remove-only)\",\n\t\t\"i\": 332,\n\t\t\"id\": \"fd05492d7fdd7a2ee24f0c121bbd89695fd444955a5ec5a1f2e1f3d2974a2fb6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 255,\n\t\t\t\"b\": 153\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/8ff4253efe\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/bb73f12637\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/22745ba921\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"105 (Remove-only)\",\n\t\t\"i\": 333,\n\t\t\"id\": \"a170307d52f87a7f3e0f048bbcb2009c837e6000194095fbf06c731b50e8c3d1\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"8 (Remove-only)\",\n\t\t\"i\": 334,\n\t\t\"id\": \"2ec0357a34739a46d0b586228cf7e19579322934e7e2d0b12774a27cc799d404\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"106 (Remove-only)\",\n\t\t\"i\": 335,\n\t\t\"id\": \"cf7ee601413a23564443e1ebb0cf4be938e19d483345dacc9c3bdfcd26429fa2\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"37\",\n\t\t\"i\": 336,\n\t\t\"id\": \"a900877906fba7a3cce8084db342e3a6431fb95fc8ff0bc10beba62579beaf58\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"38\",\n\t\t\"i\": 337,\n\t\t\"id\": \"c87835cc834101a459ed39073a13bd6f4b0c45defe4118a30fb70cce178a553e\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"107 (Remove-only)\",\n\t\t\"i\": 338,\n\t\t\"id\": \"147d21b01e1c3a32cdbfa7490cbe6fed3a6f3fce0b8b617a155950e643db8674\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"41\",\n\t\t\"i\": 339,\n\t\t\"id\": \"667831be4fd1804eea8f5498a9d642f563df417d16da79a61347d9899dbf0c22\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"108 (Remove-only)\",\n\t\t\"i\": 340,\n\t\t\"id\": \"fbd39e4189c70b7a0eb0e64971976e38119767707e6d703eb65d6c7ea94fd92f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"46\",\n\t\t\"i\": 341,\n\t\t\"id\": \"61cfe29a9c9b84fa9399eb367ba63ad98095656e1fe6c71b664033f2a739040d\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"109 (Remove-only)\",\n\t\t\"i\": 342,\n\t\t\"id\": \"48e0b7c716c7c68047fb1a3e945c082f1d0ff6ff93d71606362f33ab4fba36b4\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"47\",\n\t\t\"i\": 343,\n\t\t\"id\": \"c39d140bdc0013e85789c58442105e98326b3394b3f5e90ea9360f3c2176172f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"111 (Remove-only)\",\n\t\t\"i\": 344,\n\t\t\"id\": \"e70b206fe7df0c1588ba29a8fa0497eb9fa3741ef5e4704cb59fe9a11780cb84\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"55\",\n\t\t\"i\": 345,\n\t\t\"id\": \"b91083c783e71112fc048ac23412f5f25f3dc93d13c1cfebc8a701775ee5835a\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"112 (Remove-only)\",\n\t\t\"i\": 346,\n\t\t\"id\": \"132cbeeb3e3820c8f7a964b573f7ae9ca33e0146bdb666b8f36585b932d92405\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"56\",\n\t\t\"i\": 347,\n\t\t\"id\": \"4445757df31d3f02545ffa53c4f08a5d29d36760d68790b7a84a8517cf560cb1\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"114 (Remove-only)\",\n\t\t\"i\": 348,\n\t\t\"id\": \"803dcd19415447fbad463d12cd46d142bcaf31d33a086220854c7c17fad5262d\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"116 (Remove-only)\",\n\t\t\"i\": 349,\n\t\t\"id\": \"b0f1ecf8bab902c3486c3ae6479d0b9d8bc1f627f18d496b517b495ed349fa06\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"57\",\n\t\t\"i\": 350,\n\t\t\"id\": \"dd1fcd742d860d634cc46af9d6c3b6dc8ee9c828f85ae7a3a934454c8d5b2ff7\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"117 (Remove-only)\",\n\t\t\"i\": 351,\n\t\t\"id\": \"dbaaecdf73a4727d8cb8fdaaa39b99a18ee8a4db7c72f03d088baf24cee5d4a6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"58\",\n\t\t\"i\": 352,\n\t\t\"id\": \"90a17e89689ab640960524275c8eb8a7d8ea337d224655beca7fa2d2cfcbc1db\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"118 (Remove-only)\",\n\t\t\"i\": 353,\n\t\t\"id\": \"f14f46e952bcfd6ab67afb347688018c4f479b91f0941983e8323c493a722401\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Jewellry (Remove-only)\",\n\t\t\"i\": 354,\n\t\t\"id\": \"c3a7d74e18d8028ce63aae88fd190cddaf06c9ccd4fa394e14b8055e2991a1ea\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 128,\n\t\t\t\"g\": 255,\n\t\t\t\"b\": 128\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzIzMjAwO319fQ,,\\/21d6a945b0\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzIzMjAwO319fQ,,\\/b36dcdd84f\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi04MzIzMjAwO319fQ,,\\/3a56bd0acc\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"60\",\n\t\t\"i\": 355,\n\t\t\"id\": \"dadbe855696dd83d8082a27b16c7cdcb0a6a7eeeadaae7712588bea898fd41a2\",\n\t\t\"type\": \"DivinationCardStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"61\",\n\t\t\"i\": 356,\n\t\t\"id\": \"29d270fdcd1d4b8fa1d2a631bdbe3a739b80f174beafa81fe8d3bf3f9a7caac8\",\n\t\t\"type\": \"QuadStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1 (Remove-only)\",\n\t\t\"i\": 357,\n\t\t\"id\": \"cfd12ff82ac9ae53c450ecc8e2ec16458dd8cf5c8a5ea6db090d59d45d729d04\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Q2 (Remove-only)\",\n\t\t\"i\": 358,\n\t\t\"id\": \"38afb408c4cb5cbeb530c90c66a02e1bd54f6195cad6d6a6cdafdf199ababded\",\n\t\t\"type\": \"QuadStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 89,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/8ade9bb940\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/ba64385447\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/55c7c28a3a\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"62\",\n\t\t\"i\": 359,\n\t\t\"id\": \"13660e147dfcf4008d75efbe3ea92ecdf91da09a99b045b304794607e30625be\",\n\t\t\"type\": \"EssenceStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"64\",\n\t\t\"i\": 360,\n\t\t\"id\": \"934163221687482b860222b1bf9922c7a0dd16ea01bda6a97c93aff640f5bec5\",\n\t\t\"type\": \"QuadStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t}],\n\t\"items\": [{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 1,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTo1OntzOjExOiJ1c2VM\\/ZWFndWVJZCI7TzoxODoi\\/R3JpbmRiXERhdGFiYXNl\\/XElkIjoxOntzOjI6Imlk\\/IjtpOjA7fXM6OToiYWNj\\/b3VudElkIjtPOjE4OiJH\\/cmluZGJcRGF0YWJhc2Vc\\/SWQiOjE6e3M6MjoiaWQi\\/O2k6MDt9aToyO2E6Mzp7\\/czoxOiJmIjtzOjI5OiJB\\/cnQvMkRJdGVtcy9GbGFz\\/a3MvbGlmZWZsYXNrMSI7\\/czoyOiJzcCI7ZDowLjYw\\/ODUxOTI2OTc3Njg3NjM7\\/czo1OiJsZXZlbCI7aTow\\/O31pOjE7aTo0O2k6MDtp\\/Ojk7fQ,,\\/ca829b3057\\/Item.png\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"19b9c026da4c9c9fc891510a9eeece03ab2cf3dd3566c914e83f7773a0c34551\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Small Life Flask\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Recovers %0 Life over %1 Seconds\",\n\t\t\t\"values\": [[\"70\",\n\t\t\t0],\n\t\t\t[\"6.00\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"7\",\n\t\t\t0],\n\t\t\t[\"21\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"0\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 0,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 1,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTo1OntzOjExOiJ1c2VM\\/ZWFndWVJZCI7TzoxODoi\\/R3JpbmRiXERhdGFiYXNl\\/XElkIjoxOntzOjI6Imlk\\/IjtpOjA7fXM6OToiYWNj\\/b3VudElkIjtPOjE4OiJH\\/cmluZGJcRGF0YWJhc2Vc\\/SWQiOjE6e3M6MjoiaWQi\\/O2k6MDt9aToyO2E6Mzp7\\/czoxOiJmIjtzOjI5OiJB\\/cnQvMkRJdGVtcy9GbGFz\\/a3MvbGlmZWZsYXNrMSI7\\/czoyOiJzcCI7ZDowLjYw\\/ODUxOTI2OTc3Njg3NjM7\\/czo1OiJsZXZlbCI7aTow\\/O31pOjE7aTo0O2k6MDtp\\/Ojk7fQ,,\\/ca829b3057\\/Item.png\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"d47abef819ea36e8afd92fd0d90c3671ff7fd45af2d2237538ae0e32bd5270d8\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Small Life Flask\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Recovers %0 Life over %1 Seconds\",\n\t\t\t\"values\": [[\"70\",\n\t\t\t0],\n\t\t\t[\"6.00\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"7\",\n\t\t\t0],\n\t\t\t[\"21\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"0\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 0,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 1,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTo1OntzOjExOiJ1c2VM\\/ZWFndWVJZCI7TzoxODoi\\/R3JpbmRiXERhdGFiYXNl\\/XElkIjoxOntzOjI6Imlk\\/IjtpOjA7fXM6OToiYWNj\\/b3VudElkIjtPOjE4OiJH\\/cmluZGJcRGF0YWJhc2Vc\\/SWQiOjE6e3M6MjoiaWQi\\/O2k6MDt9aToyO2E6Mzp7\\/czoxOiJmIjtzOjI5OiJB\\/cnQvMkRJdGVtcy9GbGFz\\/a3MvbWFuYWZsYXNrMSI7\\/czoyOiJzcCI7ZDowLjYw\\/ODUxOTI2OTc3Njg3NjM7\\/czo1OiJsZXZlbCI7aTow\\/O31pOjE7aTo0O2k6MDtp\\/Ojk7fQ,,\\/eb5115356c\\/Item.png\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"8bf89075934389d3ab0a70d015f76a4a338d5abd4caaf4950e49c7379b91da21\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Small Mana Flask\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Recovers %0 Mana over %1 Seconds\",\n\t\t\t\"values\": [[\"60\",\n\t\t\t0],\n\t\t\t[\"5.00\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Consumes %0 of %1 Charges on use\",\n\t\t\t\"values\": [[\"10\",\n\t\t\t0],\n\t\t\t[\"30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Currently has %0 Charges\",\n\t\t\t\"values\": [[\"0\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 4,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 11,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Rings\\/Ring1.png?scale=1&scaleIndex=0&w=1&h=1&v=7c04d5a65caa0371eccfe06a129a74073\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"70e8fc69b06f15133fb0aa5ddaca69c399edd68b11ab3acc981de05767f5baf1\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Iron Ring\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"implicitMods\": [\"Adds 1 to 4 Physical Damage to Attacks\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 1,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 2,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Domination.png?scale=1&scaleIndex=0&w=1&h=1&v=4bf316471c84ca2d0993d7245ebb1f6d3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"8e5cff22cc74f3068ff3cd513b5de10e7d067860e8d185fbd964cb01b2727e07\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Lucrative Domination Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"21\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain up to 1 Shrine\"],\n\t\t\"explicitMods\": [\"Shrines in the next Area will drop 3 Currency Items when used\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 15,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Helmets\\/HelmetDexInt1.png?scale=1&scaleIndex=0&w=2&h=2&v=1f13693aeafe9ef41ed01ed763a79acb3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"52df999f7bd35174566b4c3e5f2878b6cbe12784d98b487d5d28ab2e84b8ae4a\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 1,\n\t\t\t\"attr\": \"D\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Miracle Crown\",\n\t\t\"typeLine\": \"Scare Mask\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Evasion Rating\",\n\t\t\t\"values\": [[\"13\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 17\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"7\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 18\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"+26 to Accuracy Rating\",\n\t\t\"+21 to maximum Life\",\n\t\t\"+3 to maximum Energy Shield\",\n\t\t\"+8% to Cold Resistance\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 6,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 2,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Boots\\/BootsStr1.png?scale=1&scaleIndex=0&w=2&h=2&v=daae1c087d57b7a6400a9b495262ff6f3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"de61748d4863f1444ec8267a03dabc662120b422c06ddcd54b7a9132fcf84cbc\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Iron Greaves\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"6\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 16\n\t\t}],\n\t\t\"frameType\": 0,\n\t\t\"x\": 4,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 15,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Shields\\/ShieldInt3.png?scale=1&scaleIndex=0&w=2&h=2&v=0b4ca72b3f1678f750402c910c3fb09c3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"08a1bb23d26c930b284dacd43682c3798fb460dce78c854452712d71126ffcd6\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Victory Mark\",\n\t\t\"typeLine\": \"Bone Spirit Shield\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Chance to Block\",\n\t\t\t\"values\": [[\"22%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 15\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"16\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 18\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"15\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"42\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"15% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"22% increased Spell Damage\",\n\t\t\"1.5 Life Regenerated per second\",\n\t\t\"11% increased Energy Shield\",\n\t\t\"+8% to Lightning Resistance\",\n\t\t\"13% increased Stun and Block Recovery\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 15,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Scepters\\/scepter4.png?scale=1&scaleIndex=0&w=2&h=3&v=04408fd7636eac8bea6e569f440e36e13\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"3410b0822445cf31a3b7f378da0b185c00fcad8cb523cb53d143005fdecb0cae\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Adept's Quartz Sceptre of Sparks\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"One Handed Mace\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"17-26\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"6.50%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.25\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Weapon Range\",\n\t\t\t\"values\": [[\"9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 14\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"15\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"25\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"35\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"20% increased Elemental Damage\"],\n\t\t\"explicitMods\": [\"28% increased Spell Damage\",\n\t\t\"4% increased Lightning Damage\"],\n\t\t\"frameType\": 1,\n\t\t\"x\": 10,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 4,\n\t\t\"ilvl\": 15,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/TwoHandWeapons\\/TwoHandAxes\\/TwoHandAxe3.png?scale=1&scaleIndex=0&w=2&h=4&v=7969092be53d097db457968516b473ed3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"705d29624df6da34cc890b170c6007abdc04e1fc63a9539e8d0ecc05e80338be\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Dread Slayer\",\n\t\t\"typeLine\": \"Woodsplitter\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Two Handed Axe\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"34-69\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"5.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.38\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Weapon Range\",\n\t\t\t\"values\": [[\"11\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 14\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"13\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"36\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"17\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"explicitMods\": [\"43% increased Physical Damage\",\n\t\t\"Adds 7 to 13 Physical Damage\",\n\t\t\"10% increased Attack Speed\",\n\t\t\"+33 to Accuracy Rating\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 9,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 3,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Belts\\/Belt2.png?scale=1&scaleIndex=0&w=2&h=1&v=05d53adc2875453b6b6bb2652ee3d74d3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"1049c65cbb9499d11cca836eafc46b1cfb7fc517bde42029f0bebe595a183def\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chain Belt\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"implicitMods\": [\"+12 to maximum Energy Shield\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 6,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 6,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Helmets\\/HelmetStrInt1.png?scale=1&scaleIndex=0&w=2&h=2&v=018258b72ff054fd117fc86fc5d6dced3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"96674023d02c0172e71689db9ebeb402a383965304a8aecd8b1c068f93592789\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Rusted Coif\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"16\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 16\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"4\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 18\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"frameType\": 0,\n\t\t\"x\": 5,\n\t\t\"y\": 10,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 6,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyStr2A.png?scale=1&scaleIndex=0&w=2&h=3&v=6522259e77d149052a4b4cadf67f4e843\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"354d37f1074a654a4227785380d5a36645af09d115bb810ab15cebaaf16403ad\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Chestplate\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"68\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 16\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"6\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"25\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"frameType\": 0,\n\t\t\"x\": 0,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 5,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand1.png?scale=1&scaleIndex=0&w=1&h=3&v=29d882fad76634e6d9feda1b35808e0b3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"d7e65f953e1ea638d5556ac9fbe7d007c4e29734c9bb8b53e28e8bf641cbf575\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Driftwood Wand\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Wand\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"4-8\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"7.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t}],\n\t\t\"implicitMods\": [\"11% increased Spell Damage\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 2,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 11,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Scepters\\/scepter3.png?scale=1&scaleIndex=0&w=2&h=3&v=d3b8c53aaafdd458d20041a30de3c3723\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"978129eb15aa4829ca90a8ca3838eeb73c6975f3f56884c5902801658b640f68\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Superior Bronze Sceptre\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"One Handed Mace\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+15%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 6\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"14-26\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"6.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.25\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Weapon Range\",\n\t\t\t\"values\": [[\"9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 14\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"10\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"22\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"22\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"12% increased Elemental Damage\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 5,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 8,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand2.png?scale=1&scaleIndex=0&w=1&h=3&v=dd4e9f9ef8b06e3f3e3fa3ba400f8ae83\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"d71f4a20bdb6ccff91bb266dd64144cd766c3a32d92945f50cdfc48aec52d434\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Hypnotic Spell\",\n\t\t\"typeLine\": \"Goat's Horn\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Wand\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"10-19\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Elemental Damage\",\n\t\t\t\"values\": [[\"2-3\",\n\t\t\t5]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 10\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"7.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"6\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"29\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"14% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"+1 to Level of Socketed Chaos Gems\",\n\t\t\"47% increased Physical Damage\",\n\t\t\"Adds 2 to 3 Cold Damage\",\n\t\t\"17% increased Mana Regeneration Rate\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 1,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 6,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Essence.png?scale=1&scaleIndex=0&w=1&h=1&v=028061155ce7c153afb4a5bdf1a7785c3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"deac044974434c0dc3c2a25ddd9e6958aff8f22f8ad3f6fbe91c8597719e94e5\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Essence Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"24\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain up to 1 Monster imprisoned by Essences\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 0,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 17,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Rampage.png?scale=1&scaleIndex=0&w=1&h=1&v=e3a14dab7e6e9b492b0564aabd03ad283\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"52b3358ee9f508f475123899c9d07568607756dac9d1442673df1a0657ff6282\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Rampage Leaguestone of Mirages\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"33\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Slaying Enemies in a kill streak in next Area will grant Rampage bonuses\"],\n\t\t\"explicitMods\": [\"Next Area will contain 5 additional Animated Weapon Packs\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 1,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 17,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Shields\\/ShieldStrDex2.png?scale=1&scaleIndex=0&w=2&h=3&v=f0d3d7427f8b4e502a8b247bb6f2220e3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"ab7ce9513dc94a857d1de0583e4e63eb8a3962884280c8a5c14d1c7283aeccee\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Kraken Fend\",\n\t\t\"typeLine\": \"Fir Round Shield\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+5%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 6\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Chance to Block\",\n\t\t\t\"values\": [[\"23%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 15\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"34\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 16\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Evasion Rating\",\n\t\t\t\"values\": [[\"34\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 17\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"12\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"19\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"19\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"180% increased Block Recovery\"],\n\t\t\"explicitMods\": [\"+9 to Strength\",\n\t\t\"+16 to Dexterity\",\n\t\t\"11% increased Armour and Evasion\",\n\t\t\"18% increased Stun and Block Recovery\",\n\t\t\"Reflects 10 Physical Damage to Melee Attackers\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 8,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 8,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Daggers\\/Dagger2.png?scale=1&scaleIndex=0&w=1&h=3&v=0b5adb61edbf8b3f80a27b5a4064d2413\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"0eb9486d3181e908239b8c2b72dd8fbaeae35f9b5676cdf7e73b01be6ef04c2e\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Woe Barb\",\n\t\t\"typeLine\": \"Skinning Knife\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Dagger\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"5-19\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Elemental Damage\",\n\t\t\t\"values\": [[\"1-6\",\n\t\t\t6]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 10\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"6.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Weapon Range\",\n\t\t\t\"values\": [[\"8\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 14\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"16\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"30% increased Global Critical Strike Chance\"],\n\t\t\"explicitMods\": [\"+1 to Level of Socketed Cold Gems\",\n\t\t\"Adds 1 to 6 Lightning Damage\",\n\t\t\"Adds 1 to 5 Lightning Damage to Spells\",\n\t\t\"13% increased Stun Duration on Enemies\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 1,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 4,\n\t\t\"ilvl\": 17,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/TwoHandWeapons\\/TwoHandAxes\\/TwoHandAxe1.png?scale=1&scaleIndex=0&w=2&h=4&v=f1faf77db969965f1b5db3f32f14c1a33\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"e95460ef2873ce27826b0756085fc15e4d51e32229a090173ebcc434ea6ee28b\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Phoenix Splitter\",\n\t\t\"typeLine\": \"Stone Axe\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Two Handed Axe\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"12-22\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"5.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Weapon Range\",\n\t\t\t\"values\": [[\"11\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 14\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"6\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"17\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"explicitMods\": [\"+1 to Level of Socketed Melee Gems\",\n\t\t\"Adds 2 to 5 Physical Damage\",\n\t\t\"+8 to Strength\",\n\t\t\"+11 to Dexterity\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 8,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 14,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Rings\\/Ring3.png?scale=1&scaleIndex=0&w=1&h=1&v=bc351f5121b5d5d052733fa5be0f79ca3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"d7da1d7ecc5b3a131d206a7d891dadd687d40671c60b4ebd38ff3b47d14da53d\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Paua Ring\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"implicitMods\": [\"+20 to maximum Mana\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 3,\n\t\t\"y\": 11,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 4,\n\t\t\"ilvl\": 4,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/TwoHandWeapons\\/Staves\\/Staff1.png?scale=1&scaleIndex=0&w=1&h=4&v=26a87feea81436ab4c0fb777aca3e2973\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"2e7da41b09cc0fa35a756c2130e90c4b4cf0f62706f6fcd251e278c05fbfdda0\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Gnarled Branch\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Staff\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"8-17\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"6.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Weapon Range\",\n\t\t\t\"values\": [[\"11\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 14\n\t\t}],\n\t\t\"implicitMods\": [\"18% Chance to Block\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 11,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 11,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Shields\\/ShieldDex1.png?scale=1&scaleIndex=0&w=2&h=2&v=bf3af1a3d16a7102dbd8b4dff0ee09a13\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"6ddf457ae74a0a47a53d1a4176871dbeef76bfdad9034438fe295313dca08221\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Torment Tower\",\n\t\t\"typeLine\": \"Goathide Buckler\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Chance to Block\",\n\t\t\t\"values\": [[\"28%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 15\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Evasion Rating\",\n\t\t\t\"values\": [[\"13\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 17\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"8\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"explicitMods\": [\"+1 to Level of Socketed Melee Gems\",\n\t\t\"+14 to Dexterity\",\n\t\t\"11% increased Evasion Rating\",\n\t\t\"+13 to maximum Life\",\n\t\t\"19% increased Stun and Block Recovery\",\n\t\t\"+3% Chance to Block\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 4,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 16,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Essence.png?scale=1&scaleIndex=0&w=1&h=1&v=028061155ce7c153afb4a5bdf1a7785c3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"1d7743958d4e0692a9e9ffa838887cab9e3e33b0d759f87edd207d902d50f9ff\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Ample Essence Leaguestone of Protection\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"32\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain up to 1 Monster imprisoned by Essences\"],\n\t\t\"explicitMods\": [\"Next Area will contain up to 1 additional Monster imprisoned by Essences\",\n\t\t\"Monsters Imprisoned around Essences in next Area are Magic\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 0,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 7,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Domination.png?scale=1&scaleIndex=0&w=1&h=1&v=4bf316471c84ca2d0993d7245ebb1f6d3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"fdcccad01f89fea0226475ce395a548a459a8ab5fec4e3cee0ff14ed81f25370\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Domination Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"25\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain up to 1 Shrine\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 1,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 11,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Scepters\\/scepter3.png?scale=1&scaleIndex=0&w=2&h=3&v=d3b8c53aaafdd458d20041a30de3c3723\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"025a063fd3cbca9d0b10f58b2c04fb1001ac86faad8258f040adc676f28fb625\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Eagle Grinder\",\n\t\t\"typeLine\": \"Bronze Sceptre\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"One Handed Mace\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"12-23\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"6.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.25\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Weapon Range\",\n\t\t\t\"values\": [[\"9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 14\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"10\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"22\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"22\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"12% increased Elemental Damage\"],\n\t\t\"explicitMods\": [\"+1 to Level of Socketed Lightning Gems\",\n\t\t\"6% increased Lightning Damage\",\n\t\t\"Adds 1 to 4 Lightning Damage to Spells\",\n\t\t\"+22 to maximum Mana\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 15,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Gloves\\/GlovesStrDex2.png?scale=1&scaleIndex=0&w=2&h=2&v=385517339bcc890605b26256f1265e883\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"093bd8e619f1118bf34f993bd78920396ff0bc8b51a779b3bd31a2c89cb663bf\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Ironscale Gauntlets\",\n\t\t\"identified\": false,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"28\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 16\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Evasion Rating\",\n\t\t\t\"values\": [[\"28\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 17\n\t\t}],\n\t\t\"frameType\": 1,\n\t\t\"x\": 7,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 12,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand3.png?scale=1&scaleIndex=0&w=1&h=3&v=ac9f7eee09f5a8f580151298712f2a9e3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"32a8e1b499b33ca59345b7a6518db39dbd210b95e30c0d50b5ddd9d0b9e0e0d5\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Carved Wand\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Wand\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"8-14\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"7.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.50\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"12\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"47\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"11% increased Spell Damage\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 4,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 15,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Shields\\/ShieldInt2.png?scale=1&scaleIndex=0&w=2&h=2&v=f61607beff0c7673614474b800a091d93\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"0d77656440d24307097a6a4c994311110c678f44274c87d3d7ea537047774a12\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Horror Mark\",\n\t\t\"typeLine\": \"Yew Spirit Shield\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Chance to Block\",\n\t\t\t\"values\": [[\"24%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 15\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"11\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 18\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"10\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"28\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"5% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"+1 to Level of Socketed Lightning Gems\",\n\t\t\"14% increased Mana Regeneration Rate\",\n\t\t\"21% increased Energy Shield\",\n\t\t\"+15% to Lightning Resistance\",\n\t\t\"Reflects 10 Physical Damage to Melee Attackers\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 5,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 15,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Scepters\\/scepter4.png?scale=1&scaleIndex=0&w=2&h=3&v=04408fd7636eac8bea6e569f440e36e13\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"9646998a4866db2a1dd10885b22e7bbe749bd2f5812444a483c11c631dcbebea\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Quartz Sceptre\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"One Handed Mace\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"17-26\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"6.50%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.25\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Weapon Range\",\n\t\t\t\"values\": [[\"9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 14\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"15\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"25\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"35\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"20% increased Elemental Damage\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 7,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 4,\n\t\t\"ilvl\": 6,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/TwoHandWeapons\\/TwoHandAxes\\/TwoHandAxe1.png?scale=1&scaleIndex=0&w=2&h=4&v=f1faf77db969965f1b5db3f32f14c1a33\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"8c5e3c1c889c29c95ef1200d4bfcda378a88e86e3ed57a84399dc12403621cc8\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Stone Axe\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Two Handed Axe\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"10-17\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"5.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Weapon Range\",\n\t\t\t\"values\": [[\"11\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 14\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"17\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"frameType\": 0,\n\t\t\"x\": 2,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 6,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Rings\\/Ring1.png?scale=1&scaleIndex=0&w=1&h=1&v=7c04d5a65caa0371eccfe06a129a74073\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"0a6e1d74b209305ea50ac4d024842f39abe8077916509d626dd90889957a145e\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Iron Ring\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"implicitMods\": [\"Adds 1 to 4 Physical Damage to Attacks\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 5,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 7,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Rings\\/Ring2.png?scale=1&scaleIndex=0&w=1&h=1&v=ea80f60b4a8ead920044707ed65698493\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"0fe9b3629f5471184c5b55be0db4900ceefb1a2f3dfdbb313f496d5a88f318e0\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Coral Ring\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"implicitMods\": [\"+21 to maximum Life\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 2,\n\t\t\"y\": 11,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 7,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Amulets\\/Amulet3.png?scale=1&scaleIndex=0&w=1&h=1&v=ab799e48c3d205973c8cd93ab478d20c3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"f879e94380d74e7a69bc2b443def4e5af10ad7b169102193e3a28bd25e568572\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Amber Amulet\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t}],\n\t\t\"implicitMods\": [\"+29 to Strength\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 0,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 8,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Essence.png?scale=1&scaleIndex=0&w=1&h=1&v=028061155ce7c153afb4a5bdf1a7785c3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"ac8ab617ea58c9e9cf70efef4f9b98d2b2eea03c7f2fe63f8f65a8efed4e56af\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Essence Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"26\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain up to 1 Monster imprisoned by Essences\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 0,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 8,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyStrDex2A.png?scale=1&scaleIndex=0&w=2&h=3&v=b608460887bd4e0b70ae8afd555d78753\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"616e7356f929096405bc6fd89085317a2317220dda4b78fef60f1e009a0f9eb1\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 1,\n\t\t\t\"attr\": \"D\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Light Brigandine\",\n\t\t\"identified\": false,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"48\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 16\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Evasion Rating\",\n\t\t\t\"values\": [[\"48\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 17\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"16\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"16\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"frameType\": 1,\n\t\t\"x\": 3,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 14,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/OneHandMaces\\/OneHandMace2.png?scale=1&scaleIndex=0&w=1&h=3&v=a46820a7c96f601ec6412fa51e8a86cd3\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"e4e3e8cf96220e358a5975369d7670ab2ec3560aa0e822c90ffc13b613c30651\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Vengeance Breaker\",\n\t\t\"typeLine\": \"Tribal Club\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"One Handed Mace\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"14-23\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Elemental Damage\",\n\t\t\t\"values\": [[\"2-28\",\n\t\t\t6]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 10\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"5.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.35\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Weapon Range\",\n\t\t\t\"values\": [[\"9\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 14\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"10\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"26\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"10% reduced Enemy Stun Threshold\"],\n\t\t\"explicitMods\": [\"Adds 5 to 9 Physical Damage\",\n\t\t\"Adds 2 to 28 Lightning Damage\",\n\t\t\"+13% to Global Critical Strike Multiplier\",\n\t\t\"+50 to Accuracy Rating\",\n\t\t\"5% increased Light Radius\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 7,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 4,\n\t\t\"ilvl\": 7,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/TwoHandWeapons\\/TwoHandAxes\\/TwoHandAxe1.png?scale=1&scaleIndex=0&w=2&h=4&v=f1faf77db969965f1b5db3f32f14c1a33\",\n\t\t\"league\": \"Standard\",\n\t\t\"id\": \"7302f08bd9d50dc65dbb567fe4c9147a85127d3ba512cc243ef9b98e5616565b\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Stone Axe\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Two Handed Axe\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"10-17\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"5.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Weapon Range\",\n\t\t\t\"values\": [[\"11\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 14\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"17\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"frameType\": 0,\n\t\t\"x\": 2,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash6\",\n\t\t\"socketedItems\": []\n\t}]\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleStashWithLitheBlade.json",
    "content": "{\n  \"numTabs\":39,\n  \"tabs\":[\n    {\n      \"n\":\"$\",\n      \"i\":0,\n      \"id\":\"32f0afa0ee1a53dc6e1c95c42e2a608f265b8de1a9dd53fcaa7ca556e967c745\",\n      \"type\":\"CurrencyStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":99,\n        \"g\":128,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"V\",\n      \"i\":1,\n      \"id\":\"cec0bd9bd875e3dd09ca2d2ae697c4a027a5b503cb12d0d3d96987772c373ce1\",\n      \"type\":\"EssenceStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":99,\n        \"g\":128,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"[]\",\n      \"i\":2,\n      \"id\":\"f91ea8524290944155b2d6025bac63bb65bd16b5085c141ebfa951ef53390ba7\",\n      \"type\":\"DivinationCardStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":99,\n        \"g\":128,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"O\",\n      \"i\":3,\n      \"id\":\"ece793bbada528fd4c613408db582eb4a6a8c9ed6225b6ca99b7565f6373daa6\",\n      \"type\":\"QuadStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":136,\n        \"g\":136,\n        \"b\":136\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/3e1c96f156\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/9da13bb4dc\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/5ff1e90713\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"!\",\n      \"i\":4,\n      \"id\":\"14f784f26c96093e57006a8f63e8cc2fc814320d139fc5b2e6c330d167263143\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":89,\n        \"g\":0,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/8ade9bb940\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/ba64385447\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/55c7c28a3a\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"!sh\",\n      \"i\":5,\n      \"id\":\"2cf349c9413683f230ec9e097d9105e0d534a607b9942adabb1689454916dbe6\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":89,\n        \"g\":0,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/8ade9bb940\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/ba64385447\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/55c7c28a3a\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 1 chaos\",\n      \"i\":6,\n      \"id\":\"98d994c69488bb74479007649c8863be6cdff79fb12aa268682d98c6825a6b88\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":99,\n        \"g\":128,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"8\",\n      \"i\":7,\n      \"id\":\"21cd3009393693322ce46775c56e11edd9f2e288223eccb270289467937d721d\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":99,\n        \"g\":128,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"U\",\n      \"i\":8,\n      \"id\":\"99a9bea30146e0a5c7abb3d3d1038110349452fba02d80fff9d8730fc7f6fa6b\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":50,\n        \"g\":50,\n        \"b\":50\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"U\",\n      \"i\":9,\n      \"id\":\"8dd690325c2549d75f71785ed2150c59965c994320da450723fb11c15f4c40c2\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":50,\n        \"g\":50,\n        \"b\":50\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"U\",\n      \"i\":10,\n      \"id\":\"abce09ba66a82be4ca615ce99aa3932a5a74fbcd391ce431659f13984ad23471\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":50,\n        \"g\":50,\n        \"b\":50\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"U\",\n      \"i\":11,\n      \"id\":\"0ab99605f0c118897b37b183be31b814483377ac803eee49c0d892e67cbc6f0e\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":50,\n        \"g\":50,\n        \"b\":50\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"U\",\n      \"i\":12,\n      \"id\":\"e59c570c1ed31f3271be896502812798180a1faf7ce46f1cd30eafae239f68a5\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":true,\n      \"colour\":{\n        \"r\":50,\n        \"g\":50,\n        \"b\":50\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"U\",\n      \"i\":13,\n      \"id\":\"228c3d17faf9bf72984117f2c535b73f4ed6bdbe2e30bb119e58f4eba57550f4\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":50,\n        \"g\":50,\n        \"b\":50\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"U\",\n      \"i\":14,\n      \"id\":\"f8a7d500ba17b10020223013ac5c3f9119c9d2221d784467086cf167edc99a85\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":50,\n        \"g\":50,\n        \"b\":50\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"U\",\n      \"i\":15,\n      \"id\":\"b98335db484c234e46c0a4755a4946f218030ec6ea83bf799646a331f4e590cb\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":50,\n        \"g\":50,\n        \"b\":50\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"U\",\n      \"i\":16,\n      \"id\":\"95296b048ff8a98ef2b99ce5fb1fac65d7a2d682a679196b5275fc834b7c3651\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":50,\n        \"g\":50,\n        \"b\":50\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"U\",\n      \"i\":17,\n      \"id\":\"f9466b0ab418eb3453ac7bba374d608a41c42989cfda0e89ff6915fa9ea82188\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":50,\n        \"g\":50,\n        \"b\":50\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 1 chaos\",\n      \"i\":18,\n      \"id\":\"f8ef7febb4577c7f4a7318b54f1d5615d5fdab79429a5472c8134fccbc3fbac1\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":255,\n        \"b\":153\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/8ff4253efe\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/bb73f12637\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/22745ba921\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 2 chaos\",\n      \"i\":19,\n      \"id\":\"9304d44b0866984e98844763737671bdda3f185fb653aa5537e9c1cb1e5c98ae\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":255,\n        \"b\":153\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/8ff4253efe\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/bb73f12637\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/22745ba921\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 3 chaos\",\n      \"i\":20,\n      \"id\":\"113c05c760ddc236f02b517b52a4334465752d6c7abedcf9125a71941b402d95\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":255,\n        \"b\":153\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/8ff4253efe\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/bb73f12637\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/22745ba921\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"bit\",\n      \"i\":21,\n      \"id\":\"f26bdcf73d96dec26621dccfc0a8404e082d8945ce9ac0c8901942cde4d03df4\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":255,\n        \"b\":153\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/8ff4253efe\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/bb73f12637\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/22745ba921\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 1 chaos\",\n      \"i\":22,\n      \"id\":\"45c8f452b5df69705eff655df6653974bb6d5bf06a725cedd647a6d69d17cb6e\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":170,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 3 chaos\",\n      \"i\":23,\n      \"id\":\"99b5dbde7bc15a58a0a97c4780888824c67c6d7b1938f9d3383e13543e5f651f\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":170,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 1 chaos\",\n      \"i\":24,\n      \"id\":\"6ab927d81495be3e96269b75064f01bbeda91e6caed6dde7630e1a2099b5a2a0\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":213,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/4fd846c823\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/8842f2d7ef\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/0916f3ec87\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 2 chaos\",\n      \"i\":25,\n      \"id\":\"d5cba00a919394855356033c0170fbd3aa1f8a11759f9fc936e55abaaaf9fadb\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":213,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/4fd846c823\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/8842f2d7ef\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/0916f3ec87\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 1 chaos\",\n      \"i\":26,\n      \"id\":\"5a482dca8bb93a20a1e71ca5350577e55be77da9b14fb3718c3f7589a6aa414b\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":221,\n        \"g\":221,\n        \"b\":221\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/ee8a4216f9\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/e0ce46cb01\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/f8f378ce64\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 1 chaos\",\n      \"i\":27,\n      \"id\":\"258fee2352503c83d3cc8b83192dde56f375d19cedc8c439bac44528b7daacd2\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":170,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 2 chaos\",\n      \"i\":28,\n      \"id\":\"cc0423fe648c49a1d1d3a1d2904c693c0ca96042c27940767c1f09bde63c276a\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":170,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"bit\",\n      \"i\":29,\n      \"id\":\"29f617a3cece7c5321ae53b2e37ce491d76bd8d45429dffa9afa6d75ed101284\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":170,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 1 chaos\",\n      \"i\":30,\n      \"id\":\"b4d105f009f5a1e5415501f5b8ef6331960d5a4e8c6c37d7acf40949e7b86cbf\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":213,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/4fd846c823\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/8842f2d7ef\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/0916f3ec87\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 1 chaos\",\n      \"i\":31,\n      \"id\":\"8803145e29e08d84eb6bd452629a7163ff351194211ab62b19ddbcf460ac2aaa\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":170,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 1 chaos\",\n      \"i\":32,\n      \"id\":\"ac2154dfe022f0282b6ea491bb3d45a37436ce285eb378ba39dc5b2e792dd197\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":170,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 2 chaos\",\n      \"i\":33,\n      \"id\":\"605093f3e1839709bf84250ea430384f53799e0153e40860d7a1a45c9f727cfb\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":170,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 1 chaos\",\n      \"i\":34,\n      \"id\":\"e3125308b344889ff62612bfb927785e0d7d9ddb4539011cd3481d9d4ce0cab6\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":213,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/4fd846c823\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/8842f2d7ef\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/0916f3ec87\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 2 chaos\",\n      \"i\":35,\n      \"id\":\"abb0e6189175e55cd9c21751e34676aee9c844eeb93cf20f42fc034e46f5886e\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":213,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/4fd846c823\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/8842f2d7ef\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/0916f3ec87\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 1 chaos\",\n      \"i\":36,\n      \"id\":\"4d160dfbd2eb2c5813c7b81bded7116d2c826f0e646d61af42908f49f9561ad2\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":255,\n        \"g\":170,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"hammertime\",\n      \"i\":37,\n      \"id\":\"abf69dbe5cc6b2a1d51682bd76fb8a3500e0432758af37f812376ef548b0a94f\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":99,\n        \"g\":128,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\":\"~b\\/o 1 chaos\",\n      \"i\":38,\n      \"id\":\"7bdd61be7177a8bb6a3bf0ebecfd049797b049d9450bb36b67020581a6d86b9f\",\n      \"type\":\"PremiumStash\",\n      \"hidden\":false,\n      \"selected\":false,\n      \"colour\":{\n        \"r\":191,\n        \"g\":0,\n        \"b\":0\n      },\n      \"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/98a058fc32\\/Stash_TabL.png\",\n      \"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/edc7e2c501\\/Stash_TabC.png\",\n      \"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/42ff0bf3e8\\/Stash_TabR.png\"\n    }\n  ],\n  \"items\":[\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":3,\n      \"ilvl\":72,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Daggers\\/Dagger8.png?scale=1&scaleIndex=0&w=1&h=3&v=38fabe95a1bb32ddc27d7279b70286773\",\n      \"league\":\"Harbinger\",\n      \"id\":\"74e4d85e0c53fef527a4bd1d55de278f389cae957d96e9900ded4e4abc84c73b\",\n      \"sockets\":[\n        {\n          \"group\":0,\n          \"attr\":\"D\"\n        },\n        {\n          \"group\":1,\n          \"attr\":\"I\"\n        }\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Death Edge\",\n      \"typeLine\":\"Fiend Dagger\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"properties\":[\n        {\n          \"name\":\"Dagger\",\n          \"values\":[\n\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Physical Damage\",\n          \"values\":[\n            [\n              \"26-104\",\n              1\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":9\n        },\n        {\n          \"name\":\"Elemental Damage\",\n          \"values\":[\n            [\n              \"1-4\",\n              4\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":10\n        },\n        {\n          \"name\":\"Critical Strike Chance\",\n          \"values\":[\n            [\n              \"6.50%\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":12\n        },\n        {\n          \"name\":\"Attacks per Second\",\n          \"values\":[\n            [\n              \"1.45\",\n              1\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":13\n        },\n        {\n          \"name\":\"Weapon Range\",\n          \"values\":[\n            [\n              \"8\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":14\n        }\n      ],\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"53\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Dex\",\n          \"values\":[\n            [\n              \"58\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        },\n        {\n          \"name\":\"Int\",\n          \"values\":[\n            [\n              \"123\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        }\n      ],\n      \"implicitMods\":[\n        \"40% increased Global Critical Strike Chance\"\n      ],\n      \"explicitMods\":[\n        \"19% increased Physical Damage\",\n        \"Adds 1 to 4 Fire Damage\",\n        \"Adds 21 to 41 Cold Damage to Spells\",\n        \"21% increased Attack Speed\",\n        \"+7 to Accuracy Rating\"\n      ],\n      \"frameType\":2,\n      \"x\":11,\n      \"y\":3,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    },\n    {\n      \"verified\":false,\n      \"w\":2,\n      \"h\":3,\n      \"ilvl\":71,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyDex1B.png?scale=1&scaleIndex=0&w=2&h=3&v=6c54a5109d16d454488c1d342c00154e3\",\n      \"league\":\"Harbinger\",\n      \"id\":\"1d658f8eff27e913538efba367e5b5650fb99a5dae3f71a0e11f5aaf81527a28\",\n      \"sockets\":[\n        {\n          \"group\":0,\n          \"attr\":\"D\"\n        }\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Loath Skin\",\n      \"typeLine\":\"Sharkskin Tunic\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"properties\":[\n        {\n          \"name\":\"Evasion Rating\",\n          \"values\":[\n            [\n              \"916\",\n              1\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":17\n        }\n      ],\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"56\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Dex\",\n          \"values\":[\n            [\n              \"124\",\n              1\n            ]\n          ],\n          \"displayMode\":1\n        }\n      ],\n      \"explicitMods\":[\n        \"+357 to Evasion Rating\",\n        \"+75 to maximum Life\",\n        \"+22% to Cold Resistance\",\n        \"18% reduced Attribute Requirements\"\n      ],\n      \"frameType\":2,\n      \"x\":10,\n      \"y\":0,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    },\n    {\n      \"verified\":false,\n      \"w\":2,\n      \"h\":2,\n      \"ilvl\":77,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Shields\\/ShieldDex6.png?scale=1&scaleIndex=0&w=2&h=2&v=6fcdafa6de903a61cc0a358d95a8562f3\",\n      \"league\":\"Harbinger\",\n      \"id\":\"74f44deadc6a19eeb8a6f4b08b73518a7ee0abc83c1dabc033a4b8ece1acf9fb\",\n      \"sockets\":[\n        {\n          \"group\":0,\n          \"attr\":\"D\"\n        },\n        {\n          \"group\":0,\n          \"attr\":\"D\"\n        }\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Cataclysm Guard\",\n      \"typeLine\":\"Golden Buckler\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"properties\":[\n        {\n          \"name\":\"Chance to Block\",\n          \"values\":[\n            [\n              \"25%\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":15\n        },\n        {\n          \"name\":\"Evasion Rating\",\n          \"values\":[\n            [\n              \"310\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":17\n        }\n      ],\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"57\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Dex\",\n          \"values\":[\n            [\n              \"130\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        }\n      ],\n      \"implicitMods\":[\n        \"6% increased Movement Speed\"\n      ],\n      \"explicitMods\":[\n        \"+1 to Level of Socketed Melee Gems\",\n        \"+61 to Accuracy Rating\",\n        \"+16 to maximum Life\",\n        \"+43% to Fire Resistance\",\n        \"+21% to Chaos Resistance\"\n      ],\n      \"frameType\":2,\n      \"x\":2,\n      \"y\":3,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    },\n    {\n      \"verified\":false,\n      \"w\":2,\n      \"h\":1,\n      \"ilvl\":77,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Belts\\/Belt2.png?scale=1&scaleIndex=0&w=2&h=1&v=05d53adc2875453b6b6bb2652ee3d74d3\",\n      \"league\":\"Harbinger\",\n      \"id\":\"765f25aa5a9880241a2e1e9427f1ae1bc66b1a6a378a0214b1c13be464acbf48\",\n      \"sockets\":[\n\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Victory Locket\",\n      \"typeLine\":\"Chain Belt\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"48\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        }\n      ],\n      \"implicitMods\":[\n        \"+15 to maximum Energy Shield\"\n      ],\n      \"explicitMods\":[\n        \"+18 to Strength\",\n        \"+31 to maximum Life\",\n        \"+39% to Fire Resistance\",\n        \"20% increased Stun and Block Recovery\"\n      ],\n      \"frameType\":2,\n      \"x\":6,\n      \"y\":0,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    },\n    {\n      \"verified\":false,\n      \"w\":2,\n      \"h\":4,\n      \"ilvl\":77,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/TwoHandWeapons\\/TwoHandSwords\\/TwoHandSword8.png?scale=1&scaleIndex=0&w=2&h=4&v=44d717ffd2668094350ae6065f0f3b623\",\n      \"league\":\"Harbinger\",\n      \"id\":\"f5bcb6ac3124dd3720df1a6fe7bf376fc60cee315a1af62bda11e3e4fec6835c\",\n      \"sockets\":[\n        {\n          \"group\":0,\n          \"attr\":\"S\"\n        },\n        {\n          \"group\":1,\n          \"attr\":\"D\"\n        }\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Spirit Impaler\",\n      \"typeLine\":\"Lithe Blade\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"properties\":[\n        {\n          \"name\":\"Two Handed Sword\",\n          \"values\":[\n\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Physical Damage\",\n          \"values\":[\n            [\n              \"54-89\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":9\n        },\n        {\n          \"name\":\"Elemental Damage\",\n          \"values\":[\n            [\n              \"62-128\",\n              4\n            ],\n            [\n              \"1-43\",\n              6\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":10\n        },\n        {\n          \"name\":\"Critical Strike Chance\",\n          \"values\":[\n            [\n              \"6.84%\",\n              1\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":12\n        },\n        {\n          \"name\":\"Attacks per Second\",\n          \"values\":[\n            [\n              \"1.35\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":13\n        },\n        {\n          \"name\":\"Weapon Range\",\n          \"values\":[\n            [\n              \"11\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":14\n        }\n      ],\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"56\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Str\",\n          \"values\":[\n            [\n              \"96\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        },\n        {\n          \"name\":\"Dex\",\n          \"values\":[\n            [\n              \"113\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        }\n      ],\n      \"implicitMods\":[\n        \"+40% to Global Critical Strike Multiplier\"\n      ],\n      \"explicitMods\":[\n        \"+1 to Level of Socketed Melee Gems\",\n        \"Adds 62 to 128 Fire Damage\",\n        \"Adds 1 to 43 Lightning Damage\",\n        \"14% increased Critical Strike Chance\",\n        \"10% chance to cause Bleeding on Hit\",\n        \"30% increased Damage with Poison\"\n      ],\n      \"frameType\":2,\n      \"x\":2,\n      \"y\":5,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    },\n    {\n      \"verified\":false,\n      \"w\":2,\n      \"h\":2,\n      \"ilvl\":77,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Boots\\/BootsDexInt4.png?scale=1&scaleIndex=0&w=2&h=2&v=bfbd6b83d1a5a8dafbae030a0041b5fe3\",\n      \"league\":\"Harbinger\",\n      \"id\":\"6fa23e9134786814c9c1fc0de8cb48f7ae56301c3b004103c6f5c019f0d86f27\",\n      \"sockets\":[\n        {\n          \"group\":0,\n          \"attr\":\"I\"\n        },\n        {\n          \"group\":0,\n          \"attr\":\"I\"\n        },\n        {\n          \"group\":1,\n          \"attr\":\"I\"\n        },\n        {\n          \"group\":1,\n          \"attr\":\"D\"\n        }\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Havoc Span\",\n      \"typeLine\":\"Carnal Boots\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"properties\":[\n        {\n          \"name\":\"Evasion Rating\",\n          \"values\":[\n            [\n              \"117\",\n              1\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":17\n        },\n        {\n          \"name\":\"Energy Shield\",\n          \"values\":[\n            [\n              \"29\",\n              1\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":18\n        }\n      ],\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"59\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Dex\",\n          \"values\":[\n            [\n              \"52\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        },\n        {\n          \"name\":\"Int\",\n          \"values\":[\n            [\n              \"52\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        }\n      ],\n      \"explicitMods\":[\n        \"+47 to Dexterity\",\n        \"+18 to Evasion Rating\",\n        \"+10 to maximum Energy Shield\",\n        \"+10% to Fire Resistance\",\n        \"+30% to Chaos Resistance\"\n      ],\n      \"frameType\":2,\n      \"x\":2,\n      \"y\":9,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    },\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":1,\n      \"ilvl\":77,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Rings\\/Empty-Socket.png?scale=1&scaleIndex=0&w=1&h=1&v=3671f6d79d7190b43879b830e63fc0783\",\n      \"league\":\"Harbinger\",\n      \"id\":\"f0eec56e139693a1045c0383f13b314584213c0f8628da198512f7d68e9df815\",\n      \"sockets\":[\n        {\n          \"group\":0,\n          \"attr\":\"D\"\n        }\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Carrion Coil\",\n      \"typeLine\":\"Unset Ring\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"26\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        }\n      ],\n      \"implicitMods\":[\n        \"Has 1 Socket\"\n      ],\n      \"explicitMods\":[\n        \"Adds 4 to 7 Physical Damage to Attacks\",\n        \"+27 to Dexterity\",\n        \"+14% to Cold Resistance\",\n        \"+2 Mana gained on Kill\"\n      ],\n      \"frameType\":2,\n      \"x\":5,\n      \"y\":5,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    },\n    {\n      \"verified\":false,\n      \"w\":2,\n      \"h\":4,\n      \"ilvl\":76,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/TwoHandWeapons\\/Staves\\/Staff8.png?scale=1&scaleIndex=0&w=2&h=4&v=5d30a1d3a760f0522067dfb2e62f59383\",\n      \"league\":\"Harbinger\",\n      \"id\":\"52b509f198c65a772410e8c17b35950a7032b5739f9f358185bc6a70c2c19786\",\n      \"sockets\":[\n        {\n          \"group\":0,\n          \"attr\":\"S\"\n        },\n        {\n          \"group\":0,\n          \"attr\":\"I\"\n        },\n        {\n          \"group\":0,\n          \"attr\":\"S\"\n        },\n        {\n          \"group\":1,\n          \"attr\":\"I\"\n        },\n        {\n          \"group\":1,\n          \"attr\":\"D\"\n        }\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Carrion Spell\",\n      \"typeLine\":\"Eclipse Staff\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"properties\":[\n        {\n          \"name\":\"Staff\",\n          \"values\":[\n\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Physical Damage\",\n          \"values\":[\n            [\n              \"60-125\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":9\n        },\n        {\n          \"name\":\"Critical Strike Chance\",\n          \"values\":[\n            [\n              \"6.00%\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":12\n        },\n        {\n          \"name\":\"Attacks per Second\",\n          \"values\":[\n            [\n              \"1.20\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":13\n        },\n        {\n          \"name\":\"Weapon Range\",\n          \"values\":[\n            [\n              \"11\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":14\n        }\n      ],\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"70\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Str\",\n          \"values\":[\n            [\n              \"117\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        },\n        {\n          \"name\":\"Int\",\n          \"values\":[\n            [\n              \"117\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        }\n      ],\n      \"implicitMods\":[\n        \"100% increased Global Critical Strike Chance\"\n      ],\n      \"explicitMods\":[\n        \"+1 to Level of Socketed Cold Gems\",\n        \"15% increased Fire Damage\",\n        \"14% reduced Enemy Stun Threshold\",\n        \"10% increased Accuracy Rating\",\n        \"15% increased Light Radius\"\n      ],\n      \"frameType\":2,\n      \"x\":0,\n      \"y\":6,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    },\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":1,\n      \"ilvl\":78,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Rings\\/Ring4.png?scale=1&scaleIndex=0&w=1&h=1&v=6ef89e2afcf83dc3cc86b1522597ed2b3\",\n      \"league\":\"Harbinger\",\n      \"id\":\"037bbec00b11aec3dd7a867f45de9a042805cac4e4e0d86b669a8fde1b79f7f2\",\n      \"sockets\":[\n\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Honour Grip\",\n      \"typeLine\":\"Gold Ring\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"30\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        }\n      ],\n      \"implicitMods\":[\n        \"9% increased Rarity of Items found\"\n      ],\n      \"explicitMods\":[\n        \"Adds 7 to 12 Cold Damage to Attacks\",\n        \"+42 to maximum Life\",\n        \"11% increased Rarity of Items found\",\n        \"+29% to Cold Resistance\"\n      ],\n      \"frameType\":2,\n      \"x\":5,\n      \"y\":4,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    },\n    {\n      \"verified\":false,\n      \"w\":2,\n      \"h\":2,\n      \"ilvl\":75,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Boots\\/BootsDexInt3.png?scale=1&scaleIndex=0&w=2&h=2&v=9f826dcdb6b39a4c91d0e6ef83212f743\",\n      \"league\":\"Harbinger\",\n      \"id\":\"4b67bd7f36346a756debc894ac79bc04e87594958cfddac05dbeb7daff859ee4\",\n      \"sockets\":[\n        {\n          \"group\":0,\n          \"attr\":\"D\"\n        },\n        {\n          \"group\":0,\n          \"attr\":\"I\"\n        },\n        {\n          \"group\":1,\n          \"attr\":\"I\"\n        }\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Dread Pace\",\n      \"typeLine\":\"Clasped Boots\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"properties\":[\n        {\n          \"name\":\"Evasion Rating\",\n          \"values\":[\n            [\n              \"96\",\n              1\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":17\n        },\n        {\n          \"name\":\"Energy Shield\",\n          \"values\":[\n            [\n              \"19\",\n              1\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":18\n        }\n      ],\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"57\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Dex\",\n          \"values\":[\n            [\n              \"27\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        },\n        {\n          \"name\":\"Int\",\n          \"values\":[\n            [\n              \"27\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        }\n      ],\n      \"explicitMods\":[\n        \"91% increased Evasion and Energy Shield\",\n        \"+43 to maximum Mana\",\n        \"+15% to Fire Resistance\",\n        \"+44% to Lightning Resistance\",\n        \"30% increased Movement Speed\"\n      ],\n      \"frameType\":2,\n      \"x\":10,\n      \"y\":10,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    },\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":3,\n      \"ilvl\":77,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand2.png?scale=1&scaleIndex=0&w=1&h=3&v=dd4e9f9ef8b06e3f3e3fa3ba400f8ae83\",\n      \"league\":\"Harbinger\",\n      \"id\":\"04b6aa9e591d2673f8cd91f581fc5f60b02cd622f7fe7388739f2e04e65ac64c\",\n      \"sockets\":[\n        {\n          \"group\":0,\n          \"attr\":\"I\"\n        },\n        {\n          \"group\":0,\n          \"attr\":\"I\"\n        },\n        {\n          \"group\":1,\n          \"attr\":\"I\"\n        }\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Honour Bane\",\n      \"typeLine\":\"Demon's Horn\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"properties\":[\n        {\n          \"name\":\"Wand\",\n          \"values\":[\n\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Physical Damage\",\n          \"values\":[\n            [\n              \"40-73\",\n              1\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":9\n        },\n        {\n          \"name\":\"Critical Strike Chance\",\n          \"values\":[\n            [\n              \"7.00%\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":12\n        },\n        {\n          \"name\":\"Attacks per Second\",\n          \"values\":[\n            [\n              \"1.37\",\n              1\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":13\n        }\n      ],\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"56\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Int\",\n          \"values\":[\n            [\n              \"179\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        }\n      ],\n      \"implicitMods\":[\n        \"31% increased Spell Damage\"\n      ],\n      \"explicitMods\":[\n        \"+1 to Level of Socketed Lightning Gems\",\n        \"24% increased Physical Damage\",\n        \"26% increased Fire Damage\",\n        \"6% increased Cold Damage\",\n        \"14% increased Attack Speed\",\n        \"0.36% of Physical Attack Damage Leeched as Mana\",\n        \"+13 to Accuracy Rating\"\n      ],\n      \"frameType\":2,\n      \"x\":5,\n      \"y\":9,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    },\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":1,\n      \"ilvl\":76,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Amulets\\/TurquoiseAmulet.png?scale=1&scaleIndex=0&w=1&h=1&v=484a8eac4316c65308deea4efcfbb6213\",\n      \"league\":\"Harbinger\",\n      \"id\":\"808dd9ef73ffc06fd62f4769fcacf65939c8d9b268d4264324c028f163f477c3\",\n      \"sockets\":[\n\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Tempest Rosary\",\n      \"typeLine\":\"Turquoise Amulet\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"47\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        }\n      ],\n      \"implicitMods\":[\n        \"+17 to Dexterity and Intelligence\"\n      ],\n      \"explicitMods\":[\n        \"Adds 3 to 5 Physical Damage to Attacks\",\n        \"+8 to Intelligence\",\n        \"5.9 Life Regenerated per second\",\n        \"+19% to Fire Resistance\"\n      ],\n      \"frameType\":2,\n      \"x\":2,\n      \"y\":0,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    },\n    {\n      \"verified\":false,\n      \"w\":1,\n      \"h\":1,\n      \"ilvl\":77,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Rings\\/DiamondRing.png?scale=1&scaleIndex=0&w=1&h=1&v=d53fabd123b7c64d59ffe8a6baf7d7783\",\n      \"league\":\"Harbinger\",\n      \"id\":\"59e06033306fb2457d02f379ca05830c796117baf55974aad5700409a0ec3931\",\n      \"sockets\":[\n\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Victory Loop\",\n      \"typeLine\":\"Diamond Ring\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"57\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        }\n      ],\n      \"implicitMods\":[\n        \"27% increased Global Critical Strike Chance\"\n      ],\n      \"explicitMods\":[\n        \"4% increased Fire Damage\",\n        \"+130 to Evasion Rating\",\n        \"+7 to maximum Energy Shield\",\n        \"+15% to all Elemental Resistances\"\n      ],\n      \"frameType\":2,\n      \"x\":2,\n      \"y\":11,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    },\n    {\n      \"verified\":false,\n      \"w\":2,\n      \"h\":4,\n      \"ilvl\":72,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/TwoHandWeapons\\/Staves\\/Staff3.png?scale=1&scaleIndex=0&w=2&h=4&v=15d15e5f67e45a703a09d5249d6ab7a43\",\n      \"league\":\"Harbinger\",\n      \"id\":\"6945dcbc4a585e06a4c07c659b1c627b77006110292ec90406a0a06313a524e1\",\n      \"sockets\":[\n        {\n          \"group\":0,\n          \"attr\":\"I\"\n        },\n        {\n          \"group\":0,\n          \"attr\":\"S\"\n        },\n        {\n          \"group\":0,\n          \"attr\":\"S\"\n        },\n        {\n          \"group\":0,\n          \"attr\":\"S\"\n        }\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Behemoth Cry\",\n      \"typeLine\":\"Long Staff\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"properties\":[\n        {\n          \"name\":\"Staff\",\n          \"values\":[\n\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Quality\",\n          \"values\":[\n            [\n              \"+7%\",\n              1\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":6\n        },\n        {\n          \"name\":\"Physical Damage\",\n          \"values\":[\n            [\n              \"18-30\",\n              1\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":9\n        },\n        {\n          \"name\":\"Critical Strike Chance\",\n          \"values\":[\n            [\n              \"6.00%\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":12\n        },\n        {\n          \"name\":\"Attacks per Second\",\n          \"values\":[\n            [\n              \"1.30\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":13\n        },\n        {\n          \"name\":\"Weapon Range\",\n          \"values\":[\n            [\n              \"11\",\n              0\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":14\n        }\n      ],\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"47\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Str\",\n          \"values\":[\n            [\n              \"27\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        },\n        {\n          \"name\":\"Int\",\n          \"values\":[\n            [\n              \"27\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        }\n      ],\n      \"implicitMods\":[\n        \"18% Chance to Block\"\n      ],\n      \"explicitMods\":[\n        \"7% increased Fire Damage\",\n        \"+30% to Global Critical Strike Multiplier\",\n        \"+38 to maximum Mana\",\n        \"+58 to Accuracy Rating\"\n      ],\n      \"frameType\":2,\n      \"x\":8,\n      \"y\":0,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    },\n    {\n      \"verified\":false,\n      \"w\":2,\n      \"h\":3,\n      \"ilvl\":72,\n      \"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyDex1B.png?scale=1&scaleIndex=0&w=2&h=3&v=6c54a5109d16d454488c1d342c00154e3\",\n      \"league\":\"Harbinger\",\n      \"id\":\"47c1b65c1298559f4bf447afc42fa3b7cab77bde3a681534e85a4a7ef07ba2f6\",\n      \"sockets\":[\n        {\n          \"group\":0,\n          \"attr\":\"D\"\n        },\n        {\n          \"group\":0,\n          \"attr\":\"I\"\n        },\n        {\n          \"group\":0,\n          \"attr\":\"S\"\n        }\n      ],\n      \"name\":\"<<set:MS>><<set:M>><<set:S>>Bramble Pelt\",\n      \"typeLine\":\"Eelskin Tunic\",\n      \"identified\":true,\n      \"corrupted\":false,\n      \"lockedToCharacter\":false,\n      \"properties\":[\n        {\n          \"name\":\"Evasion Rating\",\n          \"values\":[\n            [\n              \"692\",\n              1\n            ]\n          ],\n          \"displayMode\":0,\n          \"type\":17\n        }\n      ],\n      \"requirements\":[\n        {\n          \"name\":\"Level\",\n          \"values\":[\n            [\n              \"48\",\n              0\n            ]\n          ],\n          \"displayMode\":0\n        },\n        {\n          \"name\":\"Dex\",\n          \"values\":[\n            [\n              \"104\",\n              0\n            ]\n          ],\n          \"displayMode\":1\n        }\n      ],\n      \"explicitMods\":[\n        \"+18 to Evasion Rating\",\n        \"77% increased Evasion Rating\",\n        \"+23 to maximum Life\",\n        \"+33% to Fire Resistance\",\n        \"+23% to Cold Resistance\"\n      ],\n      \"frameType\":2,\n      \"x\":8,\n      \"y\":4,\n      \"inventoryId\":\"Stash13\",\n      \"socketedItems\":[\n\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleStashWithMaps.json",
    "content": "{\"numTabs\":32,\"tabs\":[{\"n\":\"\\u00a3\",\"i\":0,\"id\":\"c6b922e0a4b9f1c27ddd20c6e5bc462479af102764995e76312782394f312ef2\",\"type\":\"CurrencyStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":191,\"g\":0,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTQyNTk4NDB9XV0\\/74c27d86ea\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTQyNTk4NDB9XV0\\/e12a049a95\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTQyNTk4NDB9XV0\\/45c3d1c171\\/Stash_TabR.png\"},{\"n\":\"E\",\"i\":1,\"id\":\"9f32bde1a2cbb8033eab580635eb39a1261683669e1d34f14b102c7915c2da00\",\"type\":\"EssenceStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":0,\"g\":191,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTE2NzI4MzIwfV1d\\/8d96af3be0\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTE2NzI4MzIwfV1d\\/807d8eb198\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTE2NzI4MzIwfV1d\\/aefc2792d2\\/Stash_TabR.png\"},{\"n\":\"Cards\",\"i\":2,\"id\":\"c2e6ccf3f6b076311c9542538162840fe93e460db8aae9d6c72a3a01113446b0\",\"type\":\"DivinationCardStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"Fractured\",\"i\":3,\"id\":\"175d85713fe3911f2dc23de6405d34dfbdd6134a1af05ec14e6fbada42e59040\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"Mips\",\"i\":4,\"id\":\"e9acd6ffad7a7b2df621954948767e5cf5987792aebbc52df2e58726fb2d942c\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":true,\"colour\":{\"r\":192,\"g\":128,\"b\":255},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTQxNjEyODF9XV0\\/68852f592c\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTQxNjEyODF9XV0\\/52a869f94a\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTQxNjEyODF9XV0\\/798b415c4d\\/Stash_TabR.png\"},{\"n\":\"Project\",\"i\":5,\"id\":\"0b4d32bd2789911df7a98b5af3fe0ba7a168a150d4a6c03ab090fbed08a1a1dc\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":204,\"g\":0,\"b\":154},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTM0MDc3MTh9XV0\\/683277c853\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTM0MDc3MTh9XV0\\/b675b743bb\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTM0MDc3MTh9XV0\\/9b2a238e2e\\/Stash_TabR.png\"},{\"n\":\"1\",\"i\":6,\"id\":\"73842c61098128a59171e65168bdfa7e69d145049f36378ee48b17f77c2e0a2c\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/7b7f0a8838\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/372d724b13\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/89540fbe1c\\/Stash_TabR.png\"},{\"n\":\"2\",\"i\":7,\"id\":\"b95519dc854b33b6ee4f1e87e44ea9d4090ffbcae370a36be72d5eedb321e9c1\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/7b7f0a8838\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/372d724b13\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/89540fbe1c\\/Stash_TabR.png\"},{\"n\":\"3\",\"i\":8,\"id\":\"12d48dac7f02ada5a53d526486a2368011c2ee827269c09e74f3c46ef5c72775\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/7b7f0a8838\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/372d724b13\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/89540fbe1c\\/Stash_TabR.png\"},{\"n\":\"4\",\"i\":9,\"id\":\"99a67d82b37b2ede1fc8c14b21b6390782ba779069c700dd26f0c05773ca835c\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/7b7f0a8838\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/372d724b13\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/89540fbe1c\\/Stash_TabR.png\"},{\"n\":\"5\",\"i\":10,\"id\":\"34b0467cb16f76eff35437ddc33a0ede193e4dc6c51fe4dea1e0c833db0c966f\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/7b7f0a8838\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/372d724b13\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/89540fbe1c\\/Stash_TabR.png\"},{\"n\":\"6\",\"i\":11,\"id\":\"e676eb832839fcc31426bd9ee4ffdb770c3b86e5feb1a33d7bd5bd91449873bf\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/7b7f0a8838\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/372d724b13\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/89540fbe1c\\/Stash_TabR.png\"},{\"n\":\"7\",\"i\":12,\"id\":\"62fc1b2dc8fe316653638d1dd68f3ee8b95e3887e4e112ece1f7fd0e881320a0\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/7b7f0a8838\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/372d724b13\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/89540fbe1c\\/Stash_TabR.png\"},{\"n\":\"8\",\"i\":13,\"id\":\"0b714903387ba8da50893889a03660a35c0359966bf87d91e974464e8068747f\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/7b7f0a8838\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/372d724b13\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/89540fbe1c\\/Stash_TabR.png\"},{\"n\":\"9\",\"i\":14,\"id\":\"617efa396692b9f1e2e1bbd6989a66fcc29a136028f1c00ee96c49fc7bd26244\",\"type\":\"NormalStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":124,\"g\":84,\"b\":54},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/7b7f0a8838\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/372d724b13\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTg2MjkxOTR9XV0\\/89540fbe1c\\/Stash_TabR.png\"},{\"n\":\"12\",\"i\":15,\"id\":\"c0dbeaa9f0b924635b9e8a6bb3ff048f79fd6b63c40fc454ead4040c10f92220\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"13\",\"i\":16,\"id\":\"45654101d45d011589ca88f0411c155358fd363714428454c45d87999f1d6a9f\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"14\",\"i\":17,\"id\":\"5cbf66aa63b40b266d2325d4f47f14fd6e4c79430bb392fb2184a370537b0075\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"15\",\"i\":18,\"id\":\"0238f7ea0987f56bdcab92eb8a44ca25e3e09f57b3cae0392a53b97ff438faae\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"16\",\"i\":19,\"id\":\"c5fac18803be48945d7845e9aa0a64ed5f83d76bbbc7238647f1294c0007bb32\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"18\",\"i\":20,\"id\":\"3625a2cfc04de623d541ca45a87323cbb59c41d2cc167a0bcd361f644c8b47dd\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"Shaper\\/Elder\",\"i\":21,\"id\":\"7b2f00b1a6f3620d19874a8f69214601f65dfcaa1b2bea181eaf13857e788eb1\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":90,\"g\":0,\"b\":179},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwODc4Nzk3fV1d\\/dfbbb0d5d7\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwODc4Nzk3fV1d\\/cd1781a8c2\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwODc4Nzk3fV1d\\/059f48f33a\\/Stash_TabR.png\"},{\"n\":\"20\",\"i\":22,\"id\":\"af28b66b51a76e67d0c3b71906bc44886fc7d605f7e30d676f7878d688cba408\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"21\",\"i\":23,\"id\":\"376ffe0c926c96a5dd654bea992c64e163678e78bbf1709bd62a3aa1059435c3\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"22\",\"i\":24,\"id\":\"91a8d6d6c7deb14372df3bee81f41cbdea70ced8eb96fe4597ab6196626994dc\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"23\",\"i\":25,\"id\":\"710cfb5dd76e61ad2a2b877395e2445167a72c940e92756ae0557569e528a726\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"24\",\"i\":26,\"id\":\"f50a286d703e292a88da973b292c5e2fc3425bb6578a1c15e536c5c26f669cc1\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"25\",\"i\":27,\"id\":\"7ce9409c54145f064c73fc2f51eea785c439475898282f3f7cad2fa53be5842c\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"26\",\"i\":28,\"id\":\"e08892259ec6fb61adb2d5706798825eea1d2c9fef64f051609d4d8d3bc9eb94\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"27\",\"i\":29,\"id\":\"53938b56ee316f51ca96a259ff400b57bd0ca3769870ff7ab249fc1cb35ef1c1\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":99,\"g\":128,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/c57316bb25\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/6ba878fab8\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTEwMjU2Mzg0fV1d\\/ff8c574799\\/Stash_TabR.png\"},{\"n\":\"Fossils\",\"i\":30,\"id\":\"9e0fbcc833de87ddcb4672bbc6c49ac4e4c374c1df469d2df478d9118ef682bb\",\"type\":\"PremiumStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":204,\"g\":0,\"b\":154},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTM0MDc3MTh9XV0\\/683277c853\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTM0MDc3MTh9XV0\\/b675b743bb\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTM0MDc3MTh9XV0\\/9b2a238e2e\\/Stash_TabR.png\"},{\"n\":\"Shop\",\"i\":31,\"id\":\"f70203e83376e2e320f76ec1fbc7cca615dd897d15f056b636f809911471b33a\",\"type\":\"QuadStash\",\"hidden\":false,\"selected\":false,\"colour\":{\"r\":0,\"g\":191,\"b\":0},\"srcL\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTE2NzI4MzIwfV1d\\/8d96af3be0\\/Stash_TabL.png\",\"srcC\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTE2NzI4MzIwfV1d\\/807d8eb198\\/Stash_TabC.png\",\"srcR\":\"https:\\/\\/web.poecdn.com\\/gen\\/image\\/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTE2NzI4MzIwfV1d\\/aefc2792d2\\/Stash_TabR.png\"}],\"items\":[{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":0,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Divination\\/InventoryIcon.png?scale=1&w=1&h=1&v=a8ae131b97fad3c64de0e6d9f250d743\",\"league\":\"Synthesis\",\"id\":\"2beed648f961ccbdef5b77aae04152d76f5de6c6551ed73cc84404c5a7ad538a\",\"name\":\"\",\"typeLine\":\"The Gambler\",\"identified\":true,\"properties\":[{\"name\":\"Stack Size\",\"values\":[[\"1\\/5\",0]],\"displayMode\":0}],\"explicitMods\":[\"<divination>{Divination Card}\"],\"flavourText\":[\"\\\"I don't believe in karma. If it were real, I would never win.\\\"\"],\"frameType\":6,\"stackSize\":1,\"maxStackSize\":5,\"artFilename\":\"TheGambler\",\"category\":{\"cards\":[]},\"x\":4,\"y\":11,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":79,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Chateau.png?scale=1&w=1&h=1&mn=3&mt=10&v=d56ba4d4937d1b71d376d6e76bdefbe8\",\"league\":\"Synthesis\",\"id\":\"3d08207b122ad1524da3b6acd313b395069b0412ca415ef7e7674eca26f9c91b\",\"name\":\"\",\"typeLine\":\"Chateau Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"10\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":2,\"y\":1,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":69,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Strand.png?scale=1&w=1&h=1&mn=3&mt=2&v=9762a3d69debf5c039cb13c693061f0c\",\"league\":\"Synthesis\",\"id\":\"2ae274c464e082ed9570323e4cafe777944db1458828e5362e80e31ccf1fec69\",\"name\":\"\",\"typeLine\":\"Zana's Strand Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+15%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Item Rarity\",\"values\":[[\"+15%\",1]],\"displayMode\":0,\"type\":3},{\"name\":\"Monster Pack Size\",\"values\":[[\"+10%\",1]],\"displayMode\":0,\"type\":4}],\"explicitMods\":[\"This Map's Modifiers to Quantity of Items found also apply to Rarity\"],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"category\":{\"maps\":[]},\"x\":0,\"y\":9,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":0,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal03.png?scale=1&w=1&h=1&v=ba374d543316349b87de121039c3cc6f\",\"league\":\"Synthesis\",\"id\":\"8d111904d63ca8fb02bc5c0ee99a78ab798bc94201dfd13647f66e9911902394\",\"name\":\"\",\"typeLine\":\"Sacrifice at Noon\",\"identified\":true,\"descrText\":\"Can be used in the Templar Laboratory or a personal Map Device.\",\"flavourText\":[\"The light without pales in comparison to the light within.\"],\"frameType\":0,\"category\":{\"maps\":[\"fragment\"]},\"x\":10,\"y\":11,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":0,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal04.png?scale=1&w=1&h=1&v=72207b7e72a4ed4fafd3e72f7b0b2a93\",\"league\":\"Synthesis\",\"id\":\"b62bbb5cccfc0fe00284a63302205d2b2f3c04ed9fea6003599d98343969a724\",\"name\":\"\",\"typeLine\":\"Sacrifice at Dusk\",\"identified\":true,\"descrText\":\"Can be used in the Templar Laboratory or a personal Map Device.\",\"flavourText\":[\"The Vaal shall never fear the setting of our sun.\"],\"frameType\":0,\"category\":{\"maps\":[\"fragment\"]},\"x\":8,\"y\":10,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Desert.png?scale=1&w=1&h=1&mn=3&mt=3&v=9d3cd4f63f746af76128812cd24e55af\",\"league\":\"Synthesis\",\"id\":\"88d483c29df4776d6a4b38c9c3ffbb3c5bac8ac82beb763879d74713c3a43d9a\",\"name\":\"\",\"typeLine\":\"Desert Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":0,\"y\":1,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/SulphurWastes.png?scale=1&w=1&h=1&mn=3&mt=3&v=f5a023e5406b723bcd376372129d8dfc\",\"league\":\"Synthesis\",\"id\":\"221dc7bb0a4010a7b449fb66af4fea664f2fed321a8f10f282fd1c6ca43a6a46\",\"name\":\"\",\"typeLine\":\"Leyline Map\",\"identified\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"category\":{\"maps\":[]},\"x\":4,\"y\":9,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":77,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Dungeon.png?scale=1&w=1&h=1&mn=3&mt=2&v=577753cfdeaa5599711f3fce35251633\",\"league\":\"Synthesis\",\"id\":\"ae014ef0bbc51b3408ae9dada13e383315d0aaf041d4fc97175bb491ae8be70c\",\"name\":\"\",\"typeLine\":\"Dungeon Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":4,\"y\":1,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":0,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal03.png?scale=1&w=1&h=1&v=ba374d543316349b87de121039c3cc6f\",\"league\":\"Synthesis\",\"id\":\"2e43a2893b2622e69ec238b399ed3a31fb92be014a694931bcee2c48025ffb65\",\"name\":\"\",\"typeLine\":\"Sacrifice at Noon\",\"identified\":true,\"descrText\":\"Can be used in the Templar Laboratory or a personal Map Device.\",\"flavourText\":[\"The light without pales in comparison to the light within.\"],\"frameType\":0,\"category\":{\"maps\":[\"fragment\"]},\"x\":10,\"y\":9,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":78,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Wasteland.png?scale=1&w=1&h=1&mn=3&mt=11&v=5d1affdc3acdf45ca6ae0ec004c441a0\",\"league\":\"Synthesis\",\"id\":\"dfb753b0aad88eb579e3dea299ecea3912c44c30559b6bf3e8d3c3b55a8dcbbf\",\"name\":\"\",\"typeLine\":\"Superior Wasteland Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"11\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+7%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Quality\",\"values\":[[\"+7%\",1]],\"displayMode\":0,\"type\":6}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":4,\"y\":10,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":0,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal04.png?scale=1&w=1&h=1&v=72207b7e72a4ed4fafd3e72f7b0b2a93\",\"league\":\"Synthesis\",\"id\":\"36d4c9f14eae555a57fc9fa0db801549e97e98e237319033149049700702808b\",\"name\":\"\",\"typeLine\":\"Sacrifice at Dusk\",\"identified\":true,\"descrText\":\"Can be used in the Templar Laboratory or a personal Map Device.\",\"flavourText\":[\"The Vaal shall never fear the setting of our sun.\"],\"frameType\":0,\"category\":{\"maps\":[\"fragment\"]},\"x\":10,\"y\":8,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Alleyways.png?scale=1&w=1&h=1&mn=3&mt=1&v=03a6e03f8da743331b2f57a9229d748b\",\"league\":\"Synthesis\",\"id\":\"108cf93782c755e2906f642aac0fad46fdab855a5292457813ab5af3fa29f23c\",\"name\":\"\",\"typeLine\":\"Alleyways Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"1\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":0,\"y\":2,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":79,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Strand.png?scale=1&w=1&h=1&mr=1&mn=3&mt=7&v=9762a3d69debf5c039cb13c693061f0c\",\"league\":\"Synthesis\",\"id\":\"90de60b53c0724465b5bfbaed48453e7861da0eccf745b1ce788a7bde68af751\",\"name\":\"\",\"typeLine\":\"Shaped Strand Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"7\",1]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":3,\"y\":1,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":0,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal02.png?scale=1&w=1&h=1&v=3ead6455599ec6c303f54ba98d6f8eb2\",\"league\":\"Synthesis\",\"id\":\"53272ec6ea56686e86608d2ef89e01443cadbe667dc7804ec7166dd43ce2e384\",\"name\":\"\",\"typeLine\":\"Sacrifice at Dawn\",\"identified\":true,\"descrText\":\"Can be used in the Templar Laboratory or a personal Map Device.\",\"flavourText\":[\"Only those who aspire can dare to hope.\"],\"frameType\":0,\"category\":{\"maps\":[\"fragment\"]},\"x\":11,\"y\":9,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":2,\"ilvl\":0,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/SinFlaskEmpty.png?scale=1&w=1&h=2&v=8b9f566d35bc00387e43f8ec4eefad31\",\"league\":\"Synthesis\",\"id\":\"08c7612ecde9d04fcae3141c86745ef499dae31b94d1c785f7d427911d982997\",\"name\":\"\",\"typeLine\":\"Divine Vessel\",\"identified\":true,\"explicitMods\":[\"Unique Boss deals 10% increased Damage\\r\\nUnique Boss has 10% increased Attack and Cast Speed\\r\\nUnique Boss has 10% increased Life\\r\\nUnique Boss has 20% increased Area of Effect\"],\"descrText\":\"Can be used in the Templar Laboratory or a personal Map Device, allowing you to capture the Soul of the Map's Boss. The Vessel containing the captured Soul can be retrieved from the Map Device. You must be in the Map when the boss is defeated.\",\"flavourText\":[\"Power is a curious thing. \\r\",\"It can be contained, hidden, locked away, \\r\",\"and yet it always breaks free.\"],\"frameType\":0,\"category\":{\"maps\":[\"fragment\"]},\"x\":11,\"y\":5,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":73,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/BurialChambers.png?scale=1&w=1&h=1&mn=3&mt=6&v=51fb154b1afc8fa2cc2b54b64d16a0a0\",\"league\":\"Synthesis\",\"id\":\"df163cb56c668d9d090aa0a3e758b58fcb6a14087158add7216a68001575c78b\",\"name\":\"\",\"typeLine\":\"Zana's Burial Chambers Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"6\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+15%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Item Rarity\",\"values\":[[\"+15%\",1]],\"displayMode\":0,\"type\":3},{\"name\":\"Monster Pack Size\",\"values\":[[\"+10%\",1]],\"displayMode\":0,\"type\":4}],\"explicitMods\":[\"This Map's Modifiers to Quantity of Items found also apply to Rarity\"],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"category\":{\"maps\":[]},\"x\":6,\"y\":8,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":0,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Labyrinth.png?scale=1&w=1&h=1&v=ef005aef5d2f9135d6922f4b1b912f78\",\"league\":\"Synthesis\",\"id\":\"69cc8d0db05d2041e6b8f53b9f96e4735e472ec0ba937d66fc410a2b7c9ee3cc\",\"name\":\"\",\"typeLine\":\"Offering to the Goddess\",\"identified\":true,\"descrText\":\"Travel to the Aspirants' Plaza and spend this item to open the Eternal Labyrinth. You must have completed the six different Trials of Ascendancy found in Maps in order to access this area.\",\"flavourText\":[\"It is time for the Goddess to give her final verdict.\\r\",\"Your fate rests in her even hands.\"],\"frameType\":0,\"category\":{\"maps\":[\"fragment\"]},\"x\":11,\"y\":10,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":62,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Dungeon.png?scale=1&w=1&h=1&mn=3&mt=2&v=577753cfdeaa5599711f3fce35251633\",\"league\":\"Synthesis\",\"id\":\"2d9596bf6d531cc7b113270095f2aed3bc4e0a8a4699ee07ed3f661aef9bc7af\",\"name\":\"\",\"typeLine\":\"Dungeon Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":1,\"y\":1,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/VaalCity.png?scale=1&w=1&h=1&mn=3&mt=5&v=063b43c2e61e11d2f58f6169bcde1947\",\"league\":\"Synthesis\",\"id\":\"05a3be413196c8b389192d0aec868f0c331467be0493660aef549679b937d108\",\"name\":\"\",\"typeLine\":\"Ancient City Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":0,\"y\":4,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":69,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/SpiderLair.png?scale=1&w=1&h=1&mn=3&mt=3&v=3fdf59f25deb7ae9170356c02424e297\",\"league\":\"Synthesis\",\"id\":\"e4407c488533bef5d2e3a8c6425e01c36a524863ee985682c35a3f902fdeec7b\",\"name\":\"\",\"typeLine\":\"Spider Lair Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":0,\"y\":3,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":70,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Desert.png?scale=1&w=1&h=1&mn=3&mt=3&v=9d3cd4f63f746af76128812cd24e55af\",\"league\":\"Synthesis\",\"id\":\"a58732da04a8d3881d995bb5ac970f478a08103010d3a0e8ea9c73d7f5260091\",\"name\":\"\",\"typeLine\":\"Desert Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":2,\"y\":5,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":70,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Arcade.png?scale=1&w=1&h=1&mn=3&mt=4&v=8fe0a84965d9058be869e897a58f5499\",\"league\":\"Synthesis\",\"id\":\"dcb1e735a643438ee1df4ecee05845a7ef6ca08fe6c1c242bde27f670457a193\",\"name\":\"\",\"typeLine\":\"Arcade Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":1,\"y\":9,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":72,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Pit1.png?scale=1&w=1&h=1&mn=3&mt=6&v=25768874b632a8a16d8d82fba8cdeced\",\"league\":\"Synthesis\",\"id\":\"a5227a441abe4f8866a92cfe49ab659e761827776581cd24e1c7009ea925c134\",\"name\":\"\",\"typeLine\":\"Pit Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"6\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":0,\"y\":10,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":79,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/DryWoods.png?scale=1&w=1&h=1&mr=1&mn=3&mt=8&v=131f82a66fb4bc6f7de721715b06300f\",\"league\":\"Synthesis\",\"id\":\"2de76c935be469558397e3952d13fa60bf9b9781fba86dea0d50eda24b381cca\",\"name\":\"\",\"typeLine\":\"Shaped Ashen Wood Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"8\",1]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":2,\"y\":3,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Cavern.png?scale=1&w=1&h=1&mn=3&mt=4&v=a7aba9ac2cf171c2d328c5eda3739446\",\"league\":\"Synthesis\",\"id\":\"c7d4432930b38dba70a4f6d9277e969e104061f3fc6f7ebbfd7bdb9ea2976769\",\"name\":\"\",\"typeLine\":\"Flooded Mine Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":4,\"y\":7,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":0,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal04.png?scale=1&w=1&h=1&v=72207b7e72a4ed4fafd3e72f7b0b2a93\",\"league\":\"Synthesis\",\"id\":\"bcb488777dd6ad277f442bce96c781669a3a0f597053216672c7cb156638bbc5\",\"name\":\"\",\"typeLine\":\"Sacrifice at Dusk\",\"identified\":true,\"descrText\":\"Can be used in the Templar Laboratory or a personal Map Device.\",\"flavourText\":[\"The Vaal shall never fear the setting of our sun.\"],\"frameType\":0,\"category\":{\"maps\":[\"fragment\"]},\"x\":9,\"y\":10,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":75,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Barrows.png?scale=1&w=1&h=1&mn=3&mt=3&v=d33fdd2ee8d5227f4e9c14ed20ec1af5\",\"league\":\"Synthesis\",\"id\":\"e661926b393609cddfd68fdc9b490f7e85998d25144f50d8fb442209a5cb8561\",\"name\":\"\",\"typeLine\":\"Barrows Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":2,\"y\":7,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":70,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Armory.png?scale=1&w=1&h=1&mn=3&mt=4&v=a79293d2fd6ce14a70b5d95077792dbc\",\"league\":\"Synthesis\",\"id\":\"aed5c675bfca8dd0e359aca8726c339f8af9e834cf7645eb0714650709f7d54e\",\"name\":\"\",\"typeLine\":\"Armoury Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":0,\"y\":5,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Catacomb.png?scale=1&w=1&h=1&mn=3&mt=7&v=32fe2c54f99bad8d4ef1f907d2fa62e3\",\"league\":\"Synthesis\",\"id\":\"e2b8740c6c5babcd6f97c53fdbf1b114ec9a3b933ea754c2df8c15d6991568d9\",\"name\":\"\",\"typeLine\":\"Bone Crypt Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"7\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":6,\"y\":9,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":75,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Sewer.png?scale=1&w=1&h=1&mn=3&mt=8&v=f2a5bee4e068ef7fd6422c3e211b6810\",\"league\":\"Synthesis\",\"id\":\"fd5ec59b8522d5d893b6525c6cf96cbd02c68900cb141280f893e9a9e20d3fd6\",\"name\":\"\",\"typeLine\":\"Zana's Toxic Sewer Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"8\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+15%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Item Rarity\",\"values\":[[\"+15%\",1]],\"displayMode\":0,\"type\":3},{\"name\":\"Monster Pack Size\",\"values\":[[\"+10%\",1]],\"displayMode\":0,\"type\":4}],\"explicitMods\":[\"This Map's Modifiers to Quantity of Items found also apply to Rarity\"],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"category\":{\"maps\":[]},\"x\":4,\"y\":5,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":0,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Labyrinth.png?scale=1&w=1&h=1&v=ef005aef5d2f9135d6922f4b1b912f78\",\"league\":\"Synthesis\",\"id\":\"4614102cbe22e0caedd8748fe7713561cdb6eb381631755f1e34e9889aaccc21\",\"name\":\"\",\"typeLine\":\"Offering to the Goddess\",\"identified\":true,\"descrText\":\"Travel to the Aspirants' Plaza and spend this item to open the Eternal Labyrinth. You must have completed the six different Trials of Ascendancy found in Maps in order to access this area.\",\"flavourText\":[\"It is time for the Goddess to give her final verdict.\\r\",\"Your fate rests in her even hands.\"],\"frameType\":0,\"category\":{\"maps\":[\"fragment\"]},\"x\":11,\"y\":11,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":78,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Scriptorium.png?scale=1&w=1&h=1&mn=3&mt=10&v=46212669dc20e4ffa2b37d3b9a60d326\",\"league\":\"Synthesis\",\"id\":\"4d95bb1051a67364e3b8e252105986ad758b625ed3a837dc115724be955454a5\",\"name\":\"\",\"typeLine\":\"Scriptorium Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"10\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":1,\"y\":3,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":79,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Strand.png?scale=1&w=1&h=1&mr=1&mn=3&mt=7&v=9762a3d69debf5c039cb13c693061f0c\",\"league\":\"Synthesis\",\"id\":\"6a01acdcab40722cd496d8ede2d019e4c31b00bb4e6fc30ccd46a67fac4826e6\",\"name\":\"\",\"typeLine\":\"Shaped Strand Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"7\",1]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":3,\"y\":7,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":69,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/FungalCaverns.png?scale=1&w=1&h=1&mn=3&mt=1&v=46499aa7762466a6f392bbb624917034\",\"league\":\"Synthesis\",\"id\":\"c3116e0f1b6108ae913d9f0b931c971b6039e1ab5e8d2bc5f4bdbcb4026b6de9\",\"name\":\"\",\"typeLine\":\"Fungal Hollow Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"1\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":0,\"y\":8,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":82,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Lair.png?scale=1&w=1&h=1&mn=3&mt=6&v=e9c7f9bb82d13c344a97694f350b06e1\",\"league\":\"Synthesis\",\"id\":\"993550d6a50519720a1ec54381f1d531e248e233d9874208cf21eb73b43d4dd1\",\"name\":\"\",\"typeLine\":\"Lair Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"6\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":6,\"y\":11,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":80,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Courthouse.png?scale=1&w=1&h=1&mn=3&mt=12&v=f8d06189bde4f0b6923d3fc12c90a48a\",\"league\":\"Synthesis\",\"id\":\"fb52491334dc4d2dcc0bef95638b58ddc1ad2976722595c1fa6475948ab6df90\",\"name\":\"\",\"typeLine\":\"Courthouse Map\",\"identified\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"12\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"category\":{\"maps\":[]},\"x\":5,\"y\":1,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Ghetto.png?scale=1&w=1&h=1&mn=3&mt=7&v=563a280f8f779cd5a1e25c4c833245a4\",\"league\":\"Synthesis\",\"id\":\"46473c99a43889fe988593d766231e8204a575947a46803c8344b679bc1f99d6\",\"name\":\"\",\"typeLine\":\"Zana's Ghetto Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"7\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+15%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Item Rarity\",\"values\":[[\"+15%\",1]],\"displayMode\":0,\"type\":3},{\"name\":\"Monster Pack Size\",\"values\":[[\"+10%\",1]],\"displayMode\":0,\"type\":4}],\"explicitMods\":[\"This Map's Modifiers to Quantity of Items found also apply to Rarity\"],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"category\":{\"maps\":[]},\"x\":7,\"y\":1,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/UndergroundSea.png?scale=1&w=1&h=1&mn=3&mt=4&v=05381bba62ec9a55c09f79afc830b5dc\",\"league\":\"Synthesis\",\"id\":\"a26683b56593c5ab6a8d02b32266b98e01d64f16351eb1182a80283fd50f1f94\",\"name\":\"\",\"typeLine\":\"Zana's Underground Sea Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+15%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Item Rarity\",\"values\":[[\"+15%\",1]],\"displayMode\":0,\"type\":3},{\"name\":\"Monster Pack Size\",\"values\":[[\"+10%\",1]],\"displayMode\":0,\"type\":4}],\"explicitMods\":[\"This Map's Modifiers to Quantity of Items found also apply to Rarity\"],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"category\":{\"maps\":[]},\"x\":3,\"y\":6,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Grotto.png?scale=1&w=1&h=1&mn=3&mt=5&v=b4a021e0b97f473c7c4bf525d3112c1b\",\"league\":\"Synthesis\",\"id\":\"45a5fc74551839e880a27defb150597e31335d7bad03f05b7fffa0fc8d263291\",\"name\":\"\",\"typeLine\":\"Grotto Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":1,\"y\":7,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":68,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Alleyways.png?scale=1&w=1&h=1&mn=3&mt=1&v=03a6e03f8da743331b2f57a9229d748b\",\"league\":\"Synthesis\",\"id\":\"55d4dafdece7ce6e66d559ebb1cd30828fd5aedd9b5483c7e562f0461414355a\",\"name\":\"\",\"typeLine\":\"Superior Alleyways Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"1\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+7%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Quality\",\"values\":[[\"+7%\",1]],\"displayMode\":0,\"type\":6}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":0,\"y\":0,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":80,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Mesa.png?scale=1&w=1&h=1&mn=3&mt=10&v=754d5940836ed0c153b16f434d044ad7\",\"league\":\"Synthesis\",\"id\":\"774eb219e7a4dbf796bf2fe719e0af2efd1ba53f6fe275d2e4c2dec01fd58521\",\"name\":\"\",\"typeLine\":\"Mesa Map\",\"identified\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"10\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"category\":{\"maps\":[]},\"x\":0,\"y\":11,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":72,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Grotto.png?scale=1&w=1&h=1&mn=3&mt=5&v=b4a021e0b97f473c7c4bf525d3112c1b\",\"league\":\"Synthesis\",\"id\":\"99cb65bc8c66c816c70127936c7895e396fd9947cf7fb676d552f47a37b3a2e6\",\"name\":\"\",\"typeLine\":\"Zana's Grotto Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+15%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Item Rarity\",\"values\":[[\"+15%\",1]],\"displayMode\":0,\"type\":3},{\"name\":\"Monster Pack Size\",\"values\":[[\"+10%\",1]],\"displayMode\":0,\"type\":4}],\"explicitMods\":[\"This Map's Modifiers to Quantity of Items found also apply to Rarity\"],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"category\":{\"maps\":[]},\"x\":4,\"y\":8,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":72,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Tribunal.png?scale=1&w=1&h=1&mn=3&mt=5&v=3156b4e9700e3cf317e811c04eaf04d0\",\"league\":\"Synthesis\",\"id\":\"5d2747c07c043c7d0fe66eb57540336f9a9261a454cfbf0efdfbf0d4f91d6350\",\"name\":\"\",\"typeLine\":\"Crater Map\",\"identified\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":2,\"category\":{\"maps\":[]},\"x\":5,\"y\":9,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/VaalCity.png?scale=1&w=1&h=1&mn=3&mt=5&v=063b43c2e61e11d2f58f6169bcde1947\",\"league\":\"Synthesis\",\"id\":\"aff1888a53f4a5ca4e9721e33a5920f6c20522de51bb091b064ed583a3ef71ec\",\"name\":\"\",\"typeLine\":\"Ancient City Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":3,\"y\":2,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":72,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Crypt.png?scale=1&w=1&h=1&mn=3&mt=1&v=2b05e74a8841707f1c3de9d922121a3f\",\"league\":\"Synthesis\",\"id\":\"895f4dafc45c6e23a4fd04e3db14420936e94607d27aabdf01c2c0ba11392cfc\",\"name\":\"\",\"typeLine\":\"Cursed Crypt Map\",\"identified\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"1\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":2,\"category\":{\"maps\":[]},\"x\":5,\"y\":3,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":79,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/MudGeyser.png?scale=1&w=1&h=1&mn=3&mt=7&v=d278c08ef3132917ef92210c1207532c\",\"league\":\"Synthesis\",\"id\":\"b44e250060171133eb401ac9c14e962ff2052f3a96e188a06e694e2f95baa0a8\",\"name\":\"\",\"typeLine\":\"Mud Geyser Map\",\"identified\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"7\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"category\":{\"maps\":[]},\"x\":2,\"y\":4,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Courtyard.png?scale=1&w=1&h=1&mn=3&mt=5&v=698a4a6437292d5ae9ff3c30e019cfba\",\"league\":\"Synthesis\",\"id\":\"c0df08ebb8311e3087d2d4b6d0395d215cb6c1c70bd9abba2dff1f19e055d34a\",\"name\":\"\",\"typeLine\":\"Courtyard Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":1,\"y\":5,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":79,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Barrows.png?scale=1&w=1&h=1&mn=3&mt=3&v=d33fdd2ee8d5227f4e9c14ed20ec1af5\",\"league\":\"Synthesis\",\"id\":\"d563f96c98effe28c39b58035b2cb0c6f3109f7dd16cfbe615344b1355fa0096\",\"name\":\"\",\"typeLine\":\"Barrows Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":5,\"y\":0,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":70,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Tribunal.png?scale=1&w=1&h=1&mn=3&mt=5&v=3156b4e9700e3cf317e811c04eaf04d0\",\"league\":\"Synthesis\",\"id\":\"32d36cc284d81d9054284948b5824f30262500fff1a51ef0eeea88e210dc253e\",\"name\":\"\",\"typeLine\":\"Crater Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":1,\"y\":11,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":0,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal03.png?scale=1&w=1&h=1&v=ba374d543316349b87de121039c3cc6f\",\"league\":\"Synthesis\",\"id\":\"4ce8022f318b86909f8c8a4f6e130805fe38417055a5b89c3b0208f9cf9db8f1\",\"name\":\"\",\"typeLine\":\"Sacrifice at Noon\",\"identified\":true,\"descrText\":\"Can be used in the Templar Laboratory or a personal Map Device.\",\"flavourText\":[\"The light without pales in comparison to the light within.\"],\"frameType\":0,\"category\":{\"maps\":[\"fragment\"]},\"x\":8,\"y\":11,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":78,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Ramparts.png?scale=1&w=1&h=1&mn=3&mt=2&v=2d528b0e091879d9106eb96ebe2730c4\",\"league\":\"Synthesis\",\"id\":\"be6b603819c245e4fcff2d11cae6c2f85284ae3fea656d9355c79591a63368d5\",\"name\":\"\",\"typeLine\":\"Superior Ramparts Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+5%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Quality\",\"values\":[[\"+5%\",1]],\"displayMode\":0,\"type\":6}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":3,\"y\":11,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":81,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Wasteland.png?scale=1&w=1&h=1&mn=3&mt=11&v=5d1affdc3acdf45ca6ae0ec004c441a0\",\"league\":\"Synthesis\",\"id\":\"10041894f2b5d5cd70271c46ef0860448fe63f248b0b677db9c55e00b75d5bb2\",\"name\":\"\",\"typeLine\":\"Wasteland Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"11\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":0,\"y\":6,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":78,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Excavation.png?scale=1&w=1&h=1&mn=3&mt=2&v=0865662d02ed16444ca01e8752c31c49\",\"league\":\"Synthesis\",\"id\":\"40282afdfed10170ba34c7cc064313c025d3cc0992693b2c638c4b9c61e51a6d\",\"name\":\"\",\"typeLine\":\"Excavation Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":4,\"y\":6,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":81,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Courtyard.png?scale=1&w=1&h=1&mn=3&mt=5&v=698a4a6437292d5ae9ff3c30e019cfba\",\"league\":\"Synthesis\",\"id\":\"4fccbc66a6839afdf5d185817251bd1fcf92ed66e6db884176bb8f8b5ac5e56a\",\"name\":\"\",\"typeLine\":\"Courtyard Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":9,\"y\":3,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":72,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Thicket.png?scale=1&w=1&h=1&mn=3&mt=5&v=3fa8574afcfe3969cae7bc639119c549\",\"league\":\"Synthesis\",\"id\":\"62f3dbbf0fad74797c670b912a2a9fdd33b60b25dc0c7dc897649c4456fdebe1\",\"name\":\"\",\"typeLine\":\"Thicket Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":3,\"y\":4,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":76,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/UndergroundRiver.png?scale=1&w=1&h=1&mn=3&mt=9&v=eba93f0719682fa7729829f2bcfa2699\",\"league\":\"Synthesis\",\"id\":\"80a15a2c27300a300f09cab1c44f4dbe2d890870ad77e1fe7ac13442eadaf6ad\",\"name\":\"\",\"typeLine\":\"Underground River Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"9\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":7,\"y\":5,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":79,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Lookout.png?scale=1&w=1&h=1&mn=3&mt=4&v=58c4e5558f3d3b6566d5bf1bf29a267a\",\"league\":\"Synthesis\",\"id\":\"d356f62b55583e4e945257effcd91a8a947edbfd4ad3988278d5e38918d331d5\",\"name\":\"\",\"typeLine\":\"Lookout Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":1,\"y\":10,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":83,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/TropicalIsland.png?scale=1&w=1&h=1&mn=3&mt=9&v=a6cda07645e5963bc8fa850f808695f5\",\"league\":\"Synthesis\",\"id\":\"0e33ff97dc90fc963621adf7b44fbd4fff72790ef1652f42f6ac58a52ce4c96e\",\"name\":\"\",\"typeLine\":\"Tropical Island Map\",\"identified\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"9\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":1,\"category\":{\"maps\":[]},\"x\":8,\"y\":5,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":73,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/VaalCity.png?scale=1&w=1&h=1&mn=3&mt=5&v=063b43c2e61e11d2f58f6169bcde1947\",\"league\":\"Synthesis\",\"id\":\"ada7acd8809cccac8b285ad3bd71144d7e7ec21d087b04436693438fb502764a\",\"name\":\"\",\"typeLine\":\"Ancient City Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":2,\"y\":6,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":80,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Tribunal.png?scale=1&w=1&h=1&mn=3&mt=5&v=3156b4e9700e3cf317e811c04eaf04d0\",\"league\":\"Synthesis\",\"id\":\"5f0774abe6e53a06b27f697f1256924ab4bbbffdff2f44ed1f064f7c1b9d0b21\",\"name\":\"\",\"typeLine\":\"Crater Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":0,\"y\":7,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":77,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Cage.png?scale=1&w=1&h=1&mn=3&mt=5&v=997216b56385c3993385fe2b9b1ce65f\",\"league\":\"Synthesis\",\"id\":\"107d1a23a911860231b5aa506f0c7c6b6e34eb231f1215f64a238435e099598c\",\"name\":\"\",\"typeLine\":\"Cage Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":2,\"y\":0,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":77,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/CastleRuins.png?scale=1&w=1&h=1&mn=3&mt=9&v=ee491c1089f00756f47334698cee53f9\",\"league\":\"Synthesis\",\"id\":\"adf41aaef4f07c9582706b82b68c5ad4c4247e1bb1400f72aedbaa50acdb0feb\",\"name\":\"\",\"typeLine\":\"Castle Ruins Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"9\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":7,\"y\":8,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/DryPeninsula.png?scale=1&w=1&h=1&mn=3&mt=2&v=913c7bcae2772d747bffaf1e9084a3aa\",\"league\":\"Synthesis\",\"id\":\"172b3e05916842fad017264117b32d2d245a5d5457fcd624ab9736c874fa8b8f\",\"name\":\"\",\"typeLine\":\"Peninsula Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":5,\"y\":7,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":77,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Glacier.png?scale=1&w=1&h=1&mn=3&mt=4&v=fb79382fc7872864b786fb72b177b716\",\"league\":\"Synthesis\",\"id\":\"9cbffba5a596aa6ce22289bdf390f87e91e38938f64e0b8869d9aac91d87d24e\",\"name\":\"\",\"typeLine\":\"Glacier Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":2,\"y\":8,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":78,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Lookout.png?scale=1&w=1&h=1&mn=3&mt=4&v=58c4e5558f3d3b6566d5bf1bf29a267a\",\"league\":\"Synthesis\",\"id\":\"93f3279e8f7d63ea1c50a0e5c7d45d2e56620d59442c429bb6085d0fa682f7c6\",\"name\":\"\",\"typeLine\":\"Lookout Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":2,\"y\":11,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Iceberg.png?scale=1&w=1&h=1&mn=3&mt=1&v=9b76473ba37f8083301bff97e689e4b9\",\"league\":\"Synthesis\",\"id\":\"6d3166cb3c334eaaa3cdda7d3eef39f3ea0578899fdfef43549f23c142a88625\",\"name\":\"\",\"typeLine\":\"Iceberg Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"1\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":5,\"y\":2,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":76,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/FairgravesMap01.png?scale=1&w=1&h=1&v=1329a9107022a7a8ddaebb2e1168e0c3\",\"league\":\"Synthesis\",\"id\":\"28e6e3579969d11d9f2f703156c3351bdaa5dd7e5a0553b5340d945ae5ce146c\",\"name\":\"Mao Kun\",\"typeLine\":\"Shore Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"7\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+119%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Quality\",\"values\":[[\"+8%\",1]],\"displayMode\":0,\"type\":6}],\"explicitMods\":[\"86% increased Experience gain\",\"Monsters deal 175% extra Damage as Lightning\",\"Monsters gain an Endurance Charge on Hit\",\"Monsters gain a Power Charge on Hit\"],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"flavourText\":[\"The Treasures of the Tides wait\\r\",\"in agony at the End of the World.\"],\"frameType\":3,\"category\":{\"maps\":[]},\"x\":1,\"y\":6,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/PrimordialPool.png?scale=1&w=1&h=1&mn=3&mt=6&v=3fee13efd2ec6ca911507122bc74cc9f\",\"league\":\"Synthesis\",\"id\":\"3e51c47ebea7bfacf57750c4cdb02c0d2aace46f257d8aa1e80068020e5061cd\",\"name\":\"\",\"typeLine\":\"Primordial Pool Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"6\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":5,\"y\":4,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":72,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Mausoleum.png?scale=1&w=1&h=1&mn=3&mt=4&v=1e038628422d0c7f34e76d3a2d03e4d7\",\"league\":\"Synthesis\",\"id\":\"8d43f160908e051c89bd73419542dae5a9dc0b5b1f9f253a3a730d2c433b9c34\",\"name\":\"\",\"typeLine\":\"Mausoleum Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":1,\"y\":8,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":73,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/SulphurWastes.png?scale=1&w=1&h=1&mn=3&mt=3&v=f5a023e5406b723bcd376372129d8dfc\",\"league\":\"Synthesis\",\"id\":\"2e0ba702a789f544dd0f3d9b94f06d8c4e3a6b199213c67099b647a30aed01f9\",\"name\":\"\",\"typeLine\":\"Leyline Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":3,\"y\":8,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":79,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/AridLake.png?scale=1&w=1&h=1&mn=3&mt=3&v=9f9ef8b0126d5ed98825962195cc4e86\",\"league\":\"Synthesis\",\"id\":\"d9d3c0bede754d0d98566e2ebcb3357925384f8601df1c676a4009df5442f7fc\",\"name\":\"\",\"typeLine\":\"Superior Arid Lake Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+10%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Quality\",\"values\":[[\"+10%\",1]],\"displayMode\":0,\"type\":6}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":3,\"y\":10,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/PrimordialPool.png?scale=1&w=1&h=1&mn=3&mt=6&v=3fee13efd2ec6ca911507122bc74cc9f\",\"league\":\"Synthesis\",\"id\":\"e92e62d5da05c4a1229e5531e3d4f3dd5e11294ba98def401d64a4b0e9cdd209\",\"name\":\"\",\"typeLine\":\"Primordial Pool Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"6\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":6,\"y\":5,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Fields.png?scale=1&w=1&h=1&mn=3&mt=7&v=b0b1c5fc45266879b18db4e2b9a09387\",\"league\":\"Synthesis\",\"id\":\"6ddb22749927e2e4f0ebf873886ae470bc88da93c690c98f0adf70a65bcb8d3c\",\"name\":\"\",\"typeLine\":\"Fields Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"7\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":6,\"y\":2,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Iceberg.png?scale=1&w=1&h=1&mn=3&mt=1&v=9b76473ba37f8083301bff97e689e4b9\",\"league\":\"Synthesis\",\"id\":\"2b3dddeaf2c3fa6c41d72b4d38b56d306a998234a4f75a84820a625dd55c0b44\",\"name\":\"\",\"typeLine\":\"Iceberg Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"1\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":6,\"y\":10,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Catacomb.png?scale=1&w=1&h=1&mn=3&mt=7&v=32fe2c54f99bad8d4ef1f907d2fa62e3\",\"league\":\"Synthesis\",\"id\":\"839ff3a690eb7c279548c2d58cebf53010059a2cbe57050636702da794400419\",\"name\":\"\",\"typeLine\":\"Bone Crypt Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"7\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":6,\"y\":3,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":71,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Arcade.png?scale=1&w=1&h=1&mn=3&mt=4&v=8fe0a84965d9058be869e897a58f5499\",\"league\":\"Synthesis\",\"id\":\"3c81f3822bc3ef49b5040c80261f3b075cc484ee36abbbfb074572a05072e853\",\"name\":\"\",\"typeLine\":\"Arcade Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":2,\"y\":2,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Academy.png?scale=1&w=1&h=1&mn=3&mt=7&v=58a6b3b4c6676531465aa1ac306c71a4\",\"league\":\"Synthesis\",\"id\":\"73f72642098e56277003934e700ffbc6b7e748c18947591ec7f8679add5dfeac\",\"name\":\"\",\"typeLine\":\"Academy Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"7\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":3,\"y\":0,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":77,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/OvergrownRuin.png?scale=1&w=1&h=1&mn=3&mt=10&v=83c3868e461fbb6d821a6a9368fa63e8\",\"league\":\"Synthesis\",\"id\":\"699507168e5422c18620fd72b9b50e5fa416cd539e68750f9535162345bad242\",\"name\":\"\",\"typeLine\":\"Overgrown Ruin Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"10\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":7,\"y\":6,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":77,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/JungleValley.png?scale=1&w=1&h=1&mn=3&mt=3&v=246d274bc5dcf0c630aa80c295b6677a\",\"league\":\"Synthesis\",\"id\":\"8f6ca9afe19edfb37eaace163776a465568101f7742d8aee40fab4c681b95f55\",\"name\":\"\",\"typeLine\":\"Jungle Valley Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"3\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":1,\"y\":2,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":83,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Courthouse.png?scale=1&w=1&h=1&mn=3&mt=12&v=f8d06189bde4f0b6923d3fc12c90a48a\",\"league\":\"Synthesis\",\"id\":\"6d3d73b3226bc44d9666eb789eecf246d750e28845918507abadba2d840a3885\",\"name\":\"\",\"typeLine\":\"Courthouse Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"12\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":7,\"y\":9,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":79,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Tribunal.png?scale=1&w=1&h=1&mn=3&mt=5&v=3156b4e9700e3cf317e811c04eaf04d0\",\"league\":\"Synthesis\",\"id\":\"0bbe6deb406dd65bc20a1f988bdad4ce5065ab63809fc54b0e0788c90d25b1f6\",\"name\":\"\",\"typeLine\":\"Crater Map\",\"identified\":false,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":2,\"category\":{\"maps\":[]},\"x\":1,\"y\":4,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":81,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Oasis.png?scale=1&w=1&h=1&mn=3&mt=11&v=5a6d013c5c75cf067c7e9108bcf9a2bd\",\"league\":\"Synthesis\",\"id\":\"6b42e0302dd104813377c0bbd24bef0331b046e7262cfd6242480093127c2d14\",\"name\":\"\",\"typeLine\":\"Desert Spring Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"11\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":8,\"y\":0,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":82,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Crematorium.png?scale=1&w=1&h=1&mn=3&mt=8&v=7668e7b4e18a525b428abecd3ee32be3\",\"league\":\"Synthesis\",\"id\":\"f2287784f116d6f8df9dab1b7dc6bd7d265c9919b73c3757e2bfc0f56f137786\",\"name\":\"\",\"typeLine\":\"Lava Chamber Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"8\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":4,\"y\":4,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":78,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/VaalCity.png?scale=1&w=1&h=1&mn=3&mt=5&v=063b43c2e61e11d2f58f6169bcde1947\",\"league\":\"Synthesis\",\"id\":\"1dd84f67b8b654aaee6bcb900332e79f1b7eb0e79a914a940c467fae2844ec60\",\"name\":\"\",\"typeLine\":\"Ancient City Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":2,\"y\":10,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":79,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Pen.png?scale=1&w=1&h=1&mn=3&mt=5&v=8fa1f6fc7a74598f89cdea20e18d8d34\",\"league\":\"Synthesis\",\"id\":\"6cac86871f0d186e07a51f59d8f6e5886235b64b810edeaa4845637aac43f304\",\"name\":\"\",\"typeLine\":\"Pen Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":4,\"y\":0,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":70,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/FungalCaverns.png?scale=1&w=1&h=1&mn=3&mt=1&v=46499aa7762466a6f392bbb624917034\",\"league\":\"Synthesis\",\"id\":\"2b2d40f848d5a6ba4f279ba92e8929400fa45ee959f1e3ab519aef37a776ed7e\",\"name\":\"\",\"typeLine\":\"Fungal Hollow Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"1\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":3,\"y\":5,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":76,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/VaalPyramid.png?scale=1&w=1&h=1&mn=3&mt=9&v=12ea2eeca573de962cbaa0f165f688e6\",\"league\":\"Synthesis\",\"id\":\"5d1646a985c1a68bbcc5dde82e57be7014c678bb2ddb51e6efaa83f39f642391\",\"name\":\"\",\"typeLine\":\"Vaal Pyramid Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"9\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":7,\"y\":7,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":81,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Laboratory.png?scale=1&w=1&h=1&mn=3&mt=9&v=740177484c1ccc3c0f4e2222c6cbaba3\",\"league\":\"Synthesis\",\"id\":\"9e44caa698bff70361cfceeaed80dc7c281c1777e1ec9b2277301485bc555d5a\",\"name\":\"\",\"typeLine\":\"Laboratory Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"9\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":9,\"y\":2,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":74,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Strand.png?scale=1&w=1&h=1&mn=3&mt=2&v=9762a3d69debf5c039cb13c693061f0c\",\"league\":\"Synthesis\",\"id\":\"98248883ded305cdf27f9218b748da9b195790795013de50883850cc9c39a90f\",\"name\":\"\",\"typeLine\":\"Superior Strand Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"2\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+18%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Quality\",\"values\":[[\"+18%\",1]],\"displayMode\":0,\"type\":6}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":7,\"y\":0,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":79,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Courtyard.png?scale=1&w=1&h=1&mn=3&mt=5&v=698a4a6437292d5ae9ff3c30e019cfba\",\"league\":\"Synthesis\",\"id\":\"9ad04eec38d414f62db9208108562ad43924dd89c3e9e2b47ea31e250fce8a59\",\"name\":\"\",\"typeLine\":\"Courtyard Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":3,\"y\":3,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":73,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Graveyard.png?scale=1&w=1&h=1&mn=3&mt=5&v=826e3828c489f10c05baaffd71637953\",\"league\":\"Synthesis\",\"id\":\"1084b91845af02bb2307c08c406015a561740167c68abf23babd744b3274bbcf\",\"name\":\"\",\"typeLine\":\"Graveyard Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":9,\"y\":1,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":81,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Pit1.png?scale=1&w=1&h=1&mn=3&mt=6&v=25768874b632a8a16d8d82fba8cdeced\",\"league\":\"Synthesis\",\"id\":\"281f6ff872b10aaa6f5c74d94468d60733963deb35528017a8e61de3209f4103\",\"name\":\"\",\"typeLine\":\"Pit Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"6\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":8,\"y\":6,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":72,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Armory.png?scale=1&w=1&h=1&mn=3&mt=4&v=a79293d2fd6ce14a70b5d95077792dbc\",\"league\":\"Synthesis\",\"id\":\"7b6d39a018ed96da9ab2022ecaf3e73d6b5f57b2a37042b3e7ab514c6046ff90\",\"name\":\"Dread Refuge\",\"typeLine\":\"Armoury Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+52%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Item Rarity\",\"values\":[[\"+31%\",1]],\"displayMode\":0,\"type\":3},{\"name\":\"Monster Pack Size\",\"values\":[[\"+20%\",1]],\"displayMode\":0,\"type\":4}],\"explicitMods\":[\"28% more Magic Monsters\",\"22% more Monster Life\",\"Monsters reflect 13% of Elemental Damage\",\"Monsters fire 2 additional Projectiles\",\"Magic Monster Packs each have a Bloodline Mod\"],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":2,\"category\":{\"maps\":[]},\"x\":2,\"y\":9,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":75,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Pen.png?scale=1&w=1&h=1&mn=3&mt=5&v=8fa1f6fc7a74598f89cdea20e18d8d34\",\"league\":\"Synthesis\",\"id\":\"7cb36e25839374733a4056a768ecc61ab952b8819b16135dda8277365ef1f8cf\",\"name\":\"\",\"typeLine\":\"Pen Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"5\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":3,\"y\":9,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":78,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Infestation.png?scale=1&w=1&h=1&mn=3&mt=11&v=afb5acd20ec19f260765bd08b12de4d7\",\"league\":\"Synthesis\",\"id\":\"ad09bf59e01b936d499aca769379f224828c0150e82f24c60980007aaac2ae40\",\"name\":\"\",\"typeLine\":\"Infested Valley Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"11\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":7,\"y\":2,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":70,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/FungalCaverns.png?scale=1&w=1&h=1&mn=3&mt=1&v=46499aa7762466a6f392bbb624917034\",\"league\":\"Synthesis\",\"id\":\"7ffd65fa01e0fa6b11934227fa4ffa5c000bc1b4529dac3fd5c5689746a04778\",\"name\":\"\",\"typeLine\":\"Fungal Hollow Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"1\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":1,\"y\":0,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":0,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal03.png?scale=1&w=1&h=1&v=ba374d543316349b87de121039c3cc6f\",\"league\":\"Synthesis\",\"id\":\"7fb09e2072d3f7349472aa95b63df4f4c86d0a5b9963ce0cfa3d42edb8d49b70\",\"name\":\"\",\"typeLine\":\"Sacrifice at Noon\",\"identified\":true,\"descrText\":\"Can be used in the Templar Laboratory or a personal Map Device.\",\"flavourText\":[\"The light without pales in comparison to the light within.\"],\"frameType\":0,\"category\":{\"maps\":[\"fragment\"]},\"x\":9,\"y\":11,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":81,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Infestation.png?scale=1&w=1&h=1&mn=3&mt=11&v=afb5acd20ec19f260765bd08b12de4d7\",\"league\":\"Synthesis\",\"id\":\"4a222c5d71952381d584eb3bedd24c808ad9977a5c09c927dc3040630a6c29e7\",\"name\":\"\",\"typeLine\":\"Infested Valley Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"11\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":8,\"y\":1,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":82,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Laboratory.png?scale=1&w=1&h=1&mn=3&mt=9&v=740177484c1ccc3c0f4e2222c6cbaba3\",\"league\":\"Synthesis\",\"id\":\"3197155b5992e1d482c979d681228f9798d9ced07e156d5d64b9c9f91c4355c7\",\"name\":\"\",\"typeLine\":\"Laboratory Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"9\",0]],\"displayMode\":0,\"type\":1}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":8,\"y\":7,\"inventoryId\":\"Stash5\"},{\"verified\":false,\"w\":1,\"h\":1,\"ilvl\":72,\"icon\":\"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Atlas2Maps\\/New\\/Quay.png?scale=1&w=1&h=1&mn=3&mt=4&v=33af3177425ab2e30775aa4b79a5adce\",\"league\":\"Synthesis\",\"id\":\"e7c2ee86783d1ac145cca2c6c90f30ec2bac2a836580150de966264ae23d722b\",\"name\":\"\",\"typeLine\":\"Superior Port Map\",\"identified\":true,\"properties\":[{\"name\":\"Map Tier\",\"values\":[[\"4\",0]],\"displayMode\":0,\"type\":1},{\"name\":\"Item Quantity\",\"values\":[[\"+10%\",1]],\"displayMode\":0,\"type\":2},{\"name\":\"Quality\",\"values\":[[\"+10%\",1]],\"displayMode\":0,\"type\":6}],\"descrText\":\"Travel to this Map by using it in the Templar Laboratory or a personal Map Device. Maps can only be used once.\",\"frameType\":0,\"category\":{\"maps\":[]},\"x\":4,\"y\":3,\"inventoryId\":\"Stash5\"}]}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleStashWithMirroredItems.json",
    "content": "﻿{\n  \"numTabs\": 1,\n  \"tabs\": [\n    {\n      \"n\": \"Mirrored Items\",\n      \"i\": 54,\n      \"id\": \"67ad1b9e8423c2f37ae6e39e2a49733a2e8ff172c5d8f3b00883be4b9b6e6514\",\n      \"type\": \"PremiumStash\",\n      \"hidden\": false,\n      \"selected\": true,\n      \"colour\": {\n        \"r\": 128,\n        \"g\": 255,\n        \"b\": 128\n      },\n      \"srcL\": \"https://web.poecdn.com/gen/image/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTgzMjMyMDB9XV0,/e1364b1909/Stash_TabL.png\",\n      \"srcC\": \"https://web.poecdn.com/gen/image/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTgzMjMyMDB9XV0,/feb73574c9/Stash_TabC.png\",\n      \"srcR\": \"https://web.poecdn.com/gen/image/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTgzMjMyMDB9XV0,/d92085ce8a/Stash_TabR.png\"\n    }\n  ],\n  \"items\": [\n    {\n      \"verified\": false,\n      \"w\": 2,\n      \"h\": 2,\n      \"ilvl\": 69,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Armours/Helmets/HelmetInt7.png?scale=1&scaleIndex=0&w=2&h=2&v=0f230458eaf985d877912eae780a91fc\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"b65e38fd5150c0cc65078ed2a0357203b0867b421a627c096c10171b2aa18c3c\",\n      \"sockets\": [\n        {\n          \"group\": 0,\n          \"attr\": \"I\",\n          \"sColour\": \"B\"\n        },\n        {\n          \"group\": 0,\n          \"attr\": \"I\",\n          \"sColour\": \"B\"\n        },\n        {\n          \"group\": 1,\n          \"attr\": \"I\",\n          \"sColour\": \"B\"\n        }\n      ],\n      \"name\": \"\",\n      \"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Pulsing Steel Circlet of Thick Skin\",\n      \"identified\": true,\n      \"properties\": [\n        {\n          \"name\": \"Energy Shield\",\n          \"values\": [\n            [\n              \"83\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 18\n        }\n      ],\n      \"requirements\": [\n        {\n          \"name\": \"Level\",\n          \"values\": [\n            [\n              \"48\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        },\n        {\n          \"name\": \"Int\",\n          \"values\": [\n            [\n              \"101\",\n              0\n            ]\n          ],\n          \"displayMode\": 1\n        }\n      ],\n      \"explicitMods\": [\n        \"+37 to maximum Energy Shield\",\n        \"13% increased Stun and Block Recovery\"\n      ],\n      \"frameType\": 1,\n      \"category\": {\n        \"armour\": [\n          \"helmet\"\n        ]\n      },\n      \"x\": 0,\n      \"y\": 0,\n      \"inventoryId\": \"Stash55\",\n      \"socketedItems\": [\n\n      ]\n    },\n    {\n      \"verified\": false,\n      \"w\": 2,\n      \"h\": 2,\n      \"ilvl\": 69,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Armours/Boots/BootsStrDex2.png?scale=1&scaleIndex=0&w=2&h=2&v=bdfb39d9a0b60c4ac542bedd8ff06e08\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"4b8dc82f32499aa2b88b1ee3e6a1dc51aa1044e97149cd06c1567f7f4a5db319\",\n      \"sockets\": [\n        {\n          \"group\": 0,\n          \"attr\": \"D\",\n          \"sColour\": \"G\"\n        },\n        {\n          \"group\": 1,\n          \"attr\": \"S\",\n          \"sColour\": \"R\"\n        }\n      ],\n      \"name\": \"\",\n      \"typeLine\": \"Superior Hydrascale Boots\",\n      \"identified\": true,\n      \"properties\": [\n        {\n          \"name\": \"Quality\",\n          \"values\": [\n            [\n              \"+5%\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 6\n        },\n        {\n          \"name\": \"Armour\",\n          \"values\": [\n            [\n              \"111\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 16\n        },\n        {\n          \"name\": \"Evasion Rating\",\n          \"values\": [\n            [\n              \"111\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 17\n        }\n      ],\n      \"requirements\": [\n        {\n          \"name\": \"Level\",\n          \"values\": [\n            [\n              \"59\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        },\n        {\n          \"name\": \"Str\",\n          \"values\": [\n            [\n              \"56\",\n              0\n            ]\n          ],\n          \"displayMode\": 1\n        },\n        {\n          \"name\": \"Dex\",\n          \"values\": [\n            [\n              \"56\",\n              0\n            ]\n          ],\n          \"displayMode\": 1\n        }\n      ],\n      \"frameType\": 0,\n      \"category\": {\n        \"armour\": [\n          \"boots\"\n        ]\n      },\n      \"x\": 2,\n      \"y\": 0,\n      \"inventoryId\": \"Stash55\",\n      \"socketedItems\": [\n\n      ]\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 2,\n      \"ilvl\": 69,\n      \"icon\": \"https://web.poecdn.com/gen/image/WzksNCx7ImYiOiJBcnRcLzJESXRlbXNcL0ZsYXNrc1wvbWFuYWZsYXNrOSIsInNwIjowLjYwODUsImxldmVsIjowfV0,/447a77cd93/Item.png\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"574b3c400662750309ce5d083b83c82f6f415f4dff43c69be6a759d626841324\",\n      \"name\": \"\",\n      \"typeLine\": \"Sanctified Mana Flask\",\n      \"identified\": true,\n      \"properties\": [\n        {\n          \"name\": \"Recovers %0 Mana over %1 Seconds\",\n          \"values\": [\n            [\n              \"1050\",\n              0\n            ],\n            [\n              \"14.00\",\n              0\n            ]\n          ],\n          \"displayMode\": 3\n        },\n        {\n          \"name\": \"Consumes %0 of %1 Charges on use\",\n          \"values\": [\n            [\n              \"10\",\n              0\n            ],\n            [\n              \"40\",\n              0\n            ]\n          ],\n          \"displayMode\": 3\n        },\n        {\n          \"name\": \"Currently has %0 Charges\",\n          \"values\": [\n            [\n              \"0\",\n              0\n            ]\n          ],\n          \"displayMode\": 3\n        }\n      ],\n      \"requirements\": [\n        {\n          \"name\": \"Level\",\n          \"values\": [\n            [\n              \"50\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        }\n      ],\n      \"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n      \"frameType\": 0,\n      \"category\": {\n        \"flasks\": [\n\n        ]\n      },\n      \"x\": 0,\n      \"y\": 4,\n      \"inventoryId\": \"Stash55\"\n    },\n    {\n      \"verified\": false,\n      \"w\": 2,\n      \"h\": 2,\n      \"ilvl\": 69,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Armours/Helmets/HelmetInt7.png?scale=1&scaleIndex=0&duplicated=1&w=2&h=2&v=0f230458eaf985d877912eae780a91fc\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"143be52189aa1c4ab7d314038bc950e9a72a73bbdd3ef7958225fa29b3598bf3\",\n      \"sockets\": [\n        {\n          \"group\": 0,\n          \"attr\": \"I\",\n          \"sColour\": \"B\"\n        },\n        {\n          \"group\": 0,\n          \"attr\": \"I\",\n          \"sColour\": \"B\"\n        },\n        {\n          \"group\": 1,\n          \"attr\": \"I\",\n          \"sColour\": \"B\"\n        }\n      ],\n      \"name\": \"\",\n      \"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Pulsing Steel Circlet of Thick Skin\",\n      \"identified\": true,\n      \"duplicated\": true,\n      \"properties\": [\n        {\n          \"name\": \"Energy Shield\",\n          \"values\": [\n            [\n              \"83\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 18\n        }\n      ],\n      \"requirements\": [\n        {\n          \"name\": \"Level\",\n          \"values\": [\n            [\n              \"48\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        },\n        {\n          \"name\": \"Int\",\n          \"values\": [\n            [\n              \"101\",\n              0\n            ]\n          ],\n          \"displayMode\": 1\n        }\n      ],\n      \"explicitMods\": [\n        \"+37 to maximum Energy Shield\",\n        \"13% increased Stun and Block Recovery\"\n      ],\n      \"frameType\": 1,\n      \"category\": {\n        \"armour\": [\n          \"helmet\"\n        ]\n      },\n      \"x\": 0,\n      \"y\": 2,\n      \"inventoryId\": \"Stash55\",\n      \"socketedItems\": [\n\n      ]\n    },\n    {\n      \"verified\": false,\n      \"w\": 2,\n      \"h\": 2,\n      \"ilvl\": 69,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Armours/Boots/BootsStrDex2.png?scale=1&scaleIndex=0&duplicated=1&w=2&h=2&v=bdfb39d9a0b60c4ac542bedd8ff06e08\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"216a540752607fecb46eb55fd470497bd687420c6312621b9934889207918963\",\n      \"sockets\": [\n        {\n          \"group\": 0,\n          \"attr\": \"D\",\n          \"sColour\": \"G\"\n        },\n        {\n          \"group\": 1,\n          \"attr\": \"S\",\n          \"sColour\": \"R\"\n        }\n      ],\n      \"name\": \"\",\n      \"typeLine\": \"Superior Hydrascale Boots\",\n      \"identified\": true,\n      \"duplicated\": true,\n      \"properties\": [\n        {\n          \"name\": \"Quality\",\n          \"values\": [\n            [\n              \"+5%\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 6\n        },\n        {\n          \"name\": \"Armour\",\n          \"values\": [\n            [\n              \"111\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 16\n        },\n        {\n          \"name\": \"Evasion Rating\",\n          \"values\": [\n            [\n              \"111\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 17\n        }\n      ],\n      \"requirements\": [\n        {\n          \"name\": \"Level\",\n          \"values\": [\n            [\n              \"59\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        },\n        {\n          \"name\": \"Str\",\n          \"values\": [\n            [\n              \"56\",\n              0\n            ]\n          ],\n          \"displayMode\": 1\n        },\n        {\n          \"name\": \"Dex\",\n          \"values\": [\n            [\n              \"56\",\n              0\n            ]\n          ],\n          \"displayMode\": 1\n        }\n      ],\n      \"frameType\": 0,\n      \"category\": {\n        \"armour\": [\n          \"boots\"\n        ]\n      },\n      \"x\": 2,\n      \"y\": 2,\n      \"inventoryId\": \"Stash55\",\n      \"socketedItems\": [\n\n      ]\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 2,\n      \"ilvl\": 69,\n      \"icon\": \"https://web.poecdn.com/gen/image/WzksNCx7ImYiOiJBcnRcLzJESXRlbXNcL0ZsYXNrc1wvbWFuYWZsYXNrOSIsInNwIjowLjYwODUsImxldmVsIjowfV0,/447a77cd93/Item.png\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"102aa2694be967fa801dc698da2633cd734bb326c70f052025cdb3d670bf059e\",\n      \"name\": \"\",\n      \"typeLine\": \"Sanctified Mana Flask\",\n      \"identified\": true,\n      \"duplicated\": true,\n      \"properties\": [\n        {\n          \"name\": \"Recovers %0 Mana over %1 Seconds\",\n          \"values\": [\n            [\n              \"1050\",\n              0\n            ],\n            [\n              \"14.00\",\n              0\n            ]\n          ],\n          \"displayMode\": 3\n        },\n        {\n          \"name\": \"Consumes %0 of %1 Charges on use\",\n          \"values\": [\n            [\n              \"10\",\n              0\n            ],\n            [\n              \"40\",\n              0\n            ]\n          ],\n          \"displayMode\": 3\n        },\n        {\n          \"name\": \"Currently has %0 Charges\",\n          \"values\": [\n            [\n              \"0\",\n              0\n            ]\n          ],\n          \"displayMode\": 3\n        }\n      ],\n      \"requirements\": [\n        {\n          \"name\": \"Level\",\n          \"values\": [\n            [\n              \"50\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        }\n      ],\n      \"descrText\": \"Right click to drink. Can only hold charges while in belt. Refills as you kill monsters.\",\n      \"frameType\": 0,\n      \"category\": {\n        \"flasks\": [\n\n        ]\n      },\n      \"x\": 1,\n      \"y\": 4,\n      \"inventoryId\": \"Stash55\"\n    },\n    {\n      \"verified\": false,\n      \"w\": 2,\n      \"h\": 4,\n      \"ilvl\": 51,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Weapons/TwoHandWeapons/TwoHandSwords/TwoHandSword2.png?scale=1&scaleIndex=0&w=2&h=4&v=c6eb2632cbcdf26da86bc4c2db397e7d\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"0be2a5a51c41c1cf7ec6e63dec1157540778f6dacdf36c17460b1c4df405fce0\",\n      \"sockets\": [\n        {\n          \"group\": 0,\n          \"attr\": \"D\",\n          \"sColour\": \"G\"\n        },\n        {\n          \"group\": 0,\n          \"attr\": \"D\",\n          \"sColour\": \"G\"\n        }\n      ],\n      \"name\": \"\",\n      \"typeLine\": \"Superior Butcher Sword\",\n      \"identified\": true,\n      \"properties\": [\n        {\n          \"name\": \"Two Handed Sword\",\n          \"values\": [\n\n          ],\n          \"displayMode\": 0\n        },\n        {\n          \"name\": \"Quality\",\n          \"values\": [\n            [\n              \"+13%\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 6\n        },\n        {\n          \"name\": \"Physical Damage\",\n          \"values\": [\n            [\n              \"33-77\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 9\n        },\n        {\n          \"name\": \"Critical Strike Chance\",\n          \"values\": [\n            [\n              \"5.00%\",\n              0\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 12\n        },\n        {\n          \"name\": \"Attacks per Second\",\n          \"values\": [\n            [\n              \"1.30\",\n              0\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 13\n        },\n        {\n          \"name\": \"Weapon Range\",\n          \"values\": [\n            [\n              \"11\",\n              0\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 14\n        }\n      ],\n      \"requirements\": [\n        {\n          \"name\": \"Level\",\n          \"values\": [\n            [\n              \"36\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        },\n        {\n          \"name\": \"Str\",\n          \"values\": [\n            [\n              \"69\",\n              0\n            ]\n          ],\n          \"displayMode\": 1\n        },\n        {\n          \"name\": \"Dex\",\n          \"values\": [\n            [\n              \"58\",\n              0\n            ]\n          ],\n          \"displayMode\": 1\n        }\n      ],\n      \"implicitMods\": [\n        \"+250 to Accuracy Rating\"\n      ],\n      \"frameType\": 0,\n      \"category\": {\n        \"weapons\": [\n          \"twosword\"\n        ]\n      },\n      \"x\": 8,\n      \"y\": 0,\n      \"inventoryId\": \"Stash55\",\n      \"socketedItems\": [\n\n      ]\n    },\n    {\n      \"verified\": false,\n      \"w\": 2,\n      \"h\": 4,\n      \"ilvl\": 51,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Weapons/TwoHandWeapons/TwoHandSwords/TwoHandSword2.png?scale=1&scaleIndex=0&duplicated=1&w=2&h=4&v=c6eb2632cbcdf26da86bc4c2db397e7d\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"4dd0b71de136ebe25df2202158dc023826c41c131b4678ad99865f8d0e46d7ed\",\n      \"sockets\": [\n        {\n          \"group\": 0,\n          \"attr\": \"D\",\n          \"sColour\": \"G\"\n        },\n        {\n          \"group\": 0,\n          \"attr\": \"D\",\n          \"sColour\": \"G\"\n        }\n      ],\n      \"name\": \"\",\n      \"typeLine\": \"Superior Butcher Sword\",\n      \"identified\": true,\n      \"duplicated\": true,\n      \"properties\": [\n        {\n          \"name\": \"Two Handed Sword\",\n          \"values\": [\n\n          ],\n          \"displayMode\": 0\n        },\n        {\n          \"name\": \"Quality\",\n          \"values\": [\n            [\n              \"+13%\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 6\n        },\n        {\n          \"name\": \"Physical Damage\",\n          \"values\": [\n            [\n              \"33-77\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 9\n        },\n        {\n          \"name\": \"Critical Strike Chance\",\n          \"values\": [\n            [\n              \"5.00%\",\n              0\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 12\n        },\n        {\n          \"name\": \"Attacks per Second\",\n          \"values\": [\n            [\n              \"1.30\",\n              0\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 13\n        },\n        {\n          \"name\": \"Weapon Range\",\n          \"values\": [\n            [\n              \"11\",\n              0\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 14\n        }\n      ],\n      \"requirements\": [\n        {\n          \"name\": \"Level\",\n          \"values\": [\n            [\n              \"36\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        },\n        {\n          \"name\": \"Str\",\n          \"values\": [\n            [\n              \"69\",\n              0\n            ]\n          ],\n          \"displayMode\": 1\n        },\n        {\n          \"name\": \"Dex\",\n          \"values\": [\n            [\n              \"58\",\n              0\n            ]\n          ],\n          \"displayMode\": 1\n        }\n      ],\n      \"implicitMods\": [\n        \"+250 to Accuracy Rating\"\n      ],\n      \"frameType\": 0,\n      \"category\": {\n        \"weapons\": [\n          \"twosword\"\n        ]\n      },\n      \"x\": 10,\n      \"y\": 0,\n      \"inventoryId\": \"Stash55\",\n      \"socketedItems\": [\n\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleStashWithNets.json",
    "content": "﻿{\n  \"numTabs\": 1,\n  \"tabs\": [\n    {\n      \"n\": \"$$$\",\n      \"i\": 5,\n      \"id\": \"003864bc2a05733e0511ec9a10baaab91d05431a924192b4d47362f51e8c35ed\",\n      \"type\": \"PremiumStash\",\n      \"hidden\": false,\n      \"selected\": true,\n      \"colour\": {\n        \"r\": 191,\n        \"g\": 94,\n        \"b\": 0\n      },\n      \"srcL\": \"https://web.poecdn.com/gen/image/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTQyMzU3NzZ9XV0,/2c8b976348/Stash_TabL.png\",\n      \"srcC\": \"https://web.poecdn.com/gen/image/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTQyMzU3NzZ9XV0,/0e65837146/Stash_TabC.png\",\n      \"srcR\": \"https://web.poecdn.com/gen/image/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTQyMzU3NzZ9XV0,/3c4393c68a/Stash_TabR.png\"\n    }\n  ],\n  \"items\": [\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Currency/CurrencyArmourQuality.png?scale=1&scaleIndex=3&stackSize=395&w=1&h=1&v=251e204e4ec325f75ce8ef75b2dfbeb8\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"48a34a13c25922a5130bd96d5365a4bc9e583bb379e4edba0ec3b4ff7014f171\",\n      \"name\": \"\",\n      \"typeLine\": \"Armourer's Scrap\",\n      \"identified\": true,\n      \"properties\": [\n        {\n          \"name\": \"Stack Size\",\n          \"values\": [\n            [\n              \"395/40\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        }\n      ],\n      \"explicitMods\": [\n        \"Improves the quality of an armour\"\n      ],\n      \"descrText\": \"Right click this item then left click an armour to apply it. Has greater effect on lower rarity armours. The maximum quality is 20%.\",\n      \"frameType\": 5,\n      \"stackSize\": 395,\n      \"maxStackSize\": 5000,\n      \"category\": {\n        \"currency\": [\n\n        ]\n      },\n      \"x\": 3,\n      \"y\": 0,\n      \"inventoryId\": \"Stash6\"\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Currency/BestiaryTrap1.png?scale=1&scaleIndex=3&stackSize=5&w=1&h=1&v=f9b8f3d1b2d33910cfa64f67276957b1\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"1949cdab8ea9bba642c707ad5a7756f672758fc1c41ea12b44da6b9effce3a97\",\n      \"name\": \"\",\n      \"typeLine\": \"Simple Rope Net\",\n      \"identified\": true,\n      \"properties\": [\n        {\n          \"name\": \"Stack Size\",\n          \"values\": [\n            [\n              \"5/100\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        },\n        {\n          \"name\": \"Net Tier\",\n          \"values\": [\n            [\n              \"1\",\n              0\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 19\n        }\n      ],\n      \"explicitMods\": [\n        \"Effective against Beasts of levels 1 to 13.\\r\\nActivate to use this type of Net when capturing Beasts.\"\n      ],\n      \"frameType\": 5,\n      \"stackSize\": 5,\n      \"maxStackSize\": 5000,\n      \"category\": {\n        \"currency\": [\n\n        ]\n      },\n      \"x\": 48,\n      \"y\": 0,\n      \"inventoryId\": \"Stash6\"\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Currency/BestiaryOrbEmpty.png?scale=1&scaleIndex=3&stackSize=1&w=1&h=1&v=1e94ab199c10ad04197871406542f16e\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"266784bb0259a6e44f09032332f61062ab50545c1b9e382c7995dcf82b8e9ea0\",\n      \"name\": \"\",\n      \"typeLine\": \"Bestiary Orb\",\n      \"identified\": true,\n      \"properties\": [\n        {\n          \"name\": \"Stack Size\",\n          \"values\": [\n            [\n              \"1/10\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        }\n      ],\n      \"explicitMods\": [\n        \"Stores a Beast in an item so it can be traded\"\n      ],\n      \"descrText\": \"Right click on this item then left click on a Beast in your Menagerie to turn it into a tradable item.\",\n      \"frameType\": 5,\n      \"stackSize\": 1,\n      \"maxStackSize\": 5000,\n      \"category\": {\n        \"currency\": [\n\n        ]\n      },\n      \"x\": 32,\n      \"y\": 0,\n      \"inventoryId\": \"Stash6\"\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Currency/BestiaryTrap10.png?scale=1&scaleIndex=3&stackSize=9&w=1&h=1&v=44f385e2b49f1e40b1ba21ece93f8197\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"7b865b6584c2acdee156f557c7ec62a315318dd1de64795e541e224563e8723c\",\n      \"name\": \"\",\n      \"typeLine\": \"Thaumaturgical Net\",\n      \"identified\": true,\n      \"properties\": [\n        {\n          \"name\": \"Stack Size\",\n          \"values\": [\n            [\n              \"9/100\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        },\n        {\n          \"name\": \"Net Tier\",\n          \"values\": [\n            [\n              \"10\",\n              0\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 19\n        }\n      ],\n      \"explicitMods\": [\n        \"Effective against Beasts of levels 68 and above.\\r\\nActivate to use this type of Net when capturing Beasts.\"\n      ],\n      \"frameType\": 5,\n      \"stackSize\": 9,\n      \"maxStackSize\": 5000,\n      \"category\": {\n        \"currency\": [\n\n        ]\n      },\n      \"x\": 34,\n      \"y\": 0,\n      \"inventoryId\": \"Stash6\"\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Currency/Necronet.png?scale=1&scaleIndex=3&stackSize=1&w=1&h=1&v=f335b00f477fa75f8c803c8eebaee6c2\",\n      \"league\": \"SSF Bestiary\",\n      \"id\": \"e4b9bb2dfb5df5e5671425e766afe22d494881878de6b6ae7dc80c4322605162\",\n      \"name\": \"\",\n      \"typeLine\": \"Necromancy Net\",\n      \"identified\": true,\n      \"properties\": [\n        {\n          \"name\": \"Stack Size\",\n          \"values\": [\n            [\n              \"1/100\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        }\n      ],\n      \"explicitMods\": [\n        \"Can be used on Beast corpses of all levels.\\r\\nActivate to use this type of Net when capturing Beasts.\"\n      ],\n      \"frameType\": 5,\n      \"stackSize\": 1,\n      \"maxStackSize\": 5000,\n      \"category\": {\n        \"currency\": [\n\n        ]\n      },\n      \"x\": 33,\n      \"y\": 0,\n      \"inventoryId\": \"Stash6\"\n    }\n  ]\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleStashWithRelic.json",
    "content": "{\n\t\"numTabs\": 27,\n\t\"tabs\": [{\n\t\t\"n\": \"1\",\n\t\t\"i\": 0,\n\t\t\"id\": \"3bfd05d93c71db20e920c8aa47e8c9078d0a984f002322d55caac5f304b4c8ef\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": true,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"\\u00a3\",\n\t\t\"i\": 1,\n\t\t\"id\": \"b0dcf4e93d1ea3ccd625596c69e29ed5f84d15a0c4a7bb1044b38a25e31cf473\",\n\t\t\"type\": \"CurrencyStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"\\u2663\",\n\t\t\"i\": 2,\n\t\t\"id\": \"4981bf7af1c487210056075a76189a7bbde53a0d5f14c49376fb67a27045e25a\",\n\t\t\"type\": \"DivinationCardStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Maps\",\n\t\t\"i\": 3,\n\t\t\"id\": \"59f359d95ab87a3f84512a302c6c4a55575a77aaf279a180d8c73e280599159f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 191,\n\t\t\t\"g\": 0,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/98a058fc32\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/edc7e2c501\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/42ff0bf3e8\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Chaos Recipe\",\n\t\t\"i\": 4,\n\t\t\"id\": \"127fa9f221fc834b0f896a418da9db4d8efc2c6cc74f6cc1d227e4bad35eec76\",\n\t\t\"type\": \"QuadStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 136,\n\t\t\t\"g\": 136,\n\t\t\t\"b\": 136\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/3e1c96f156\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/9da13bb4dc\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/5ff1e90713\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Gems\",\n\t\t\"i\": 5,\n\t\t\"id\": \"07006817f1000b86f4128630a0e0acedc81b217f4999240f4be185aca447fbfc\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 255,\n\t\t\t\"g\": 170,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"Essences\",\n\t\t\"i\": 6,\n\t\t\"id\": \"5b9165e0aff3faf866cb2c2b0fc32525f9bb18f4edd9f6e610a4fc1800c36b87\",\n\t\t\"type\": \"EssenceStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 0,\n\t\t\t\"g\": 191,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjcyODMyMDt9fX0,\\/3d805e06a6\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjcyODMyMDt9fX0,\\/3e1a877538\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjcyODMyMDt9fX0,\\/e93234071f\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"1\",\n\t\t\"i\": 7,\n\t\t\"id\": \"221077a9e33b71f9b733308db9e6bce74ec7cfdba8e59b180a1a6fb6b7bfb89e\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": true,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"2\",\n\t\t\"i\": 8,\n\t\t\"id\": \"99f920affeecfe06e76df3a84928c95b8f012376bf8ecaac6db876bfdf82872e\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"3\",\n\t\t\"i\": 9,\n\t\t\"id\": \"7d2908f6d62ba61598c86bfb734cde968572b888398aea4fa77d1416ef59a36e\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"4\",\n\t\t\"i\": 10,\n\t\t\"id\": \"362f0b15e57517242d6fb0ed1acf6e2d7ed7106db47d3c5fc8f59bff4f33f530\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"5\",\n\t\t\"i\": 11,\n\t\t\"id\": \"02b7cebd1261e58b4375256663454c3008d05c8193f76dc31a4db7b2f25815b0\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"6\",\n\t\t\"i\": 12,\n\t\t\"id\": \"32fb2025de700607b94f8a6ea5b3c5977c966dba8ac9362ab2ddf712a2db296d\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"7\",\n\t\t\"i\": 13,\n\t\t\"id\": \"2a417bef254afa706886ff1825ce2ddc152d17dca45d9a87d4bb8bf5c82a5aeb\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"8\",\n\t\t\"i\": 14,\n\t\t\"id\": \"d6cbe91a3051eeabe7f1dbfba59730492391624607ec1d1489fbe011c5d67dcc\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"9\",\n\t\t\"i\": 15,\n\t\t\"id\": \"baec6c40c944a8f49129f859036a81d418f83eed2a43e5b02312b00a46e3db1e\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"10\",\n\t\t\"i\": 16,\n\t\t\"id\": \"2489f4bcf582f30ec5db3e2c967d4264bc5e1a9020631f4d804a9b36d0e732a7\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"11\",\n\t\t\"i\": 17,\n\t\t\"id\": \"9f05c72fc24331cc0f6bf00ec9d4b86b3ede00299a3c0a3ee7c8fb6b89dba002\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"12\",\n\t\t\"i\": 18,\n\t\t\"id\": \"b7391ac71b2de8327e6c4ab68155218930186e7ea05b349d0f6f5274447ac015\",\n\t\t\"type\": \"NormalStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 124,\n\t\t\t\"g\": 84,\n\t\t\t\"b\": 54\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"15\",\n\t\t\"i\": 19,\n\t\t\"id\": \"fcf27d371de185dbe46d77c4112fe0f23946371a822967b2f3b676d28aa0904f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"16\",\n\t\t\"i\": 20,\n\t\t\"id\": \"1f13a4619219fd2d98683ab0c8463a0e46bff8ae81e22b65aad8d34d0672285f\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"14\",\n\t\t\"i\": 21,\n\t\t\"id\": \"ddf374a8fef0d723ae957b2e5237da3f6ee2cd4cbfe6e4e9bf135629db4301a8\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"17\",\n\t\t\"i\": 22,\n\t\t\"id\": \"e7d50586efe31e792a1d2699f05b0799105d17b098552022780e824d9cd7dc52\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"18\",\n\t\t\"i\": 23,\n\t\t\"id\": \"c0e2957e060d551194a52296a84012924e2e20ccc8b9ae87be5d145f6227a2f6\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"19\",\n\t\t\"i\": 24,\n\t\t\"id\": \"6e645601454ee0ff975278576ca6005423fca4ed3d8ec918613f0c7fb13bd234\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"20\",\n\t\t\"i\": 25,\n\t\t\"id\": \"3c314fb31a4cfd7c21589c0c39d31bb95774126aaa3052e2361e116fbf304f66\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t},\n\t{\n\t\t\"n\": \"21\",\n\t\t\"i\": 26,\n\t\t\"id\": \"7344d4a99c0d602cc38b776f018c181935a46a8218e68e7b02b3549114ce5339\",\n\t\t\"type\": \"PremiumStash\",\n\t\t\"hidden\": false,\n\t\t\"selected\": false,\n\t\t\"colour\": {\n\t\t\t\"r\": 99,\n\t\t\t\"g\": 128,\n\t\t\t\"b\": 0\n\t\t},\n\t\t\"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n\t\t\"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n\t\t\"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n\t}],\n\t\"items\": [{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 75,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Boots\\/GoreFrenzy.png?scale=1&w=2&h=2&relic=1&v=7fc50e4d0fd7062267b7733cb67ca6623\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"d9c444549883b1ceb8a1285cd1dc566d9a1bae78749265d723f64c3bf96117d9\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>The Blood Dance\",\n\t\t\"typeLine\": \"Sharkskin Boots\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Evasion Rating\",\n\t\t\t\"values\": [[\"126\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 17\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"44\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"79\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"explicitMods\": [\"+32 to Dexterity\",\n\t\t\"20% increased Movement Speed\",\n\t\t\"2% increased Movement Speed per Frenzy Charge\",\n\t\t\"3% reduced Attack and Cast Speed per Frenzy Charge\",\n\t\t\"1% of Life Regenerated per second per Frenzy Charge\",\n\t\t\"24% chance to gain a Frenzy Charge on Kill\",\n\t\t\"3% increased Damage against Enemies on Low Life per Frenzy Charge\",\n\t\t\"Gore Footprints\"],\n\t\t\"flavourText\": [\"\\\"Sharks thrash and swirl \\r\",\n\t\t\"To the pounding drum of their frenzied hearts\\r\",\n\t\t\"As they dance in the waters red.\\\"\\r\",\n\t\t\"-Lavianga, Guardian of the Karui Way\"],\n\t\t\"isRelic\": true,\n\t\t\"frameType\": 9,\n\t\t\"x\": 2,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 44,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Beyond.png?scale=1&w=1&h=1&v=feb2f8d7e6e54fafcf3be744272564003\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"8aae4d4b241ca6d4c269ef11cbdc6383726da3f18cb9644a6d09c24438dab0b7\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Beyond Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"55\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Slaying Enemies close together in next Area will attract monsters from Beyond this realm\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 1,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 66,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Boots\\/BootsStrDex2.png?scale=1&w=2&h=2&v=bdfb39d9a0b60c4ac542bedd8ff06e083\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"f70dfe804a9b2d6fb0d344889e20a8c9846d4aa45560ed71fb5534df444dd4ac\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Gloom Trail\",\n\t\t\"typeLine\": \"Hydrascale Boots\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"92\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 16\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Evasion Rating\",\n\t\t\t\"values\": [[\"92\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 17\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"59\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"56\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"56\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"explicitMods\": [\"+20 to Dexterity\",\n\t\t\"+76 to maximum Life\",\n\t\t\"12% increased Rarity of Items found\",\n\t\t\"+7% to Fire Resistance\",\n\t\t\"25% increased Movement Speed\",\n\t\t\"18% increased Stun and Block Recovery\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 38,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Helmets\\/HelmetDexInt6.png?scale=1&w=2&h=2&v=9c7e0a593e6bd3cb4e9c96b7cf0089c93\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"523abcd457bd75bfe681e6be83947201c2bca1262811c0efd4745c7671596095\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Dire Halo\",\n\t\t\"typeLine\": \"Raven Mask\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Evasion Rating\",\n\t\t\t\"values\": [[\"139\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 17\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"27\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 18\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"38\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"44\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"44\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"explicitMods\": [\"+25 to Accuracy Rating\",\n\t\t\"+49 to Evasion Rating\",\n\t\t\"+35 to maximum Mana\",\n\t\t\"+21% to Cold Resistance\",\n\t\t\"10% increased Light Radius\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 68,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Prophecy.png?scale=1&w=1&h=1&v=ec3aac908a0be262b312c01c88545e7f3\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"f693fc59021f376588d376c9c53503a9d344303d7a35c2a7a3e809694f7d3474\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Pallid Prophecy Leaguestone of Fate\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain a Silver Coin\"],\n\t\t\"explicitMods\": [\"Next Area will contain Yama the White\",\n\t\t\"Next Area will be modified by a random Prophecy\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 0,\n\t\t\"y\": 8,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 68,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Tempest.png?scale=1&w=1&h=1&v=3ebbe0bdb17945df8cc6eadf7d95e8453\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"4516aacdf734a39629bfb3c6d503c45f5bc1f47829d2463387477c576813b249\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Tempest Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will have a random Tempest, affecting both Monsters and Players\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 0,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 65,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Ambush.png?scale=1&w=1&h=1&v=9ec2ad71f932312b6baf6528d9646b423\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"740e63c754f2023e1118a6dfad3dec162c38aea935254542b36c549c3b555e4e\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Ambush Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"72\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain a Strongbox\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 0,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 69,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand3.png?scale=1&w=1&h=3&v=ac9f7eee09f5a8f580151298712f2a9e3\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"41d75232f9a88ff95264fe200515718a5d5aa9c412133f7b63606e8a1e5692c3\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 1,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Oblivion Cry\",\n\t\t\"typeLine\": \"Imbued Wand\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Wand\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+6%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 6\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"25-47\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Elemental Damage\",\n\t\t\t\"values\": [[\"9-17\",\n\t\t\t4]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 10\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"7.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.50\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"59\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"188\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"33% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"25% increased Spell Damage\",\n\t\t\"+16 to Intelligence\",\n\t\t\"Adds 9 to 17 Fire Damage\",\n\t\t\"Adds 5 to 77 Lightning Damage to Spells\",\n\t\t\"31% increased Projectile Speed\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 8,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 51,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Beyond.png?scale=1&w=1&h=1&v=feb2f8d7e6e54fafcf3be744272564003\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"bc88ff5cc243239b88c7bbf0c7c471f27281dacf97dd3d47c3baf2b8725fea75\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Beyond Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"60\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Slaying Enemies close together in next Area will attract monsters from Beyond this realm\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 1,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 67,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyStr2C.png?scale=1&w=2&h=3&v=6331be7daaf903c16bf775688fe5d8983\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"0c900d9f9e9a05c91b933c4a81ab41577f4695e0d5f777368fe26b8d96c08061\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 1,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Gladiator Plate\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"526\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 16\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"65\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"177\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"frameType\": 0,\n\t\t\"x\": 0,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 68,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Nemesis.png?scale=1&w=1&h=1&v=87b7ee788213091c5cafe9d6fe62a99b3\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"3814c285e29cce6a4cca513aa978261f3393e535e541a59dbc2c1e05758891dd\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Enduring Nemesis Leaguestone of Warding\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"8\",\n\t\t\t0],\n\t\t\t[\"8\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain additional Rare Monsters\",\n\t\t\"Rare Monsters in next Area will each have a Nemesis Mod\"],\n\t\t\"explicitMods\": [\"+3 to Maximum Charges\",\n\t\t\"Rare Monsters in next Area will be Hindered, with -40% reduced Movement Speed\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 1,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 67,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Breach.png?scale=1&w=1&h=1&v=89627250f62ad6e444049822192e89903\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"4ad0e798ce050f19c01a7d0e45766e84eae14a2841d7aafc98653710c4d7937a\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Breach Leaguestone of Empowerment\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"73\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain a Breach\"],\n\t\t\"explicitMods\": [\"Players in next Area will deal 73% increased Damage to Breach Monsters\",\n\t\t\"Players in next Area will take 10% reduced Damage from Breach Monsters\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 0,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 59,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand2.png?scale=1&w=1&h=3&v=dd4e9f9ef8b06e3f3e3fa3ba400f8ae83\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"8e7314662eddc9cd90542fdd0b9f4b8761e9cbc4e071154007084b3013ccc9e4\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 1,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 2,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Glyph Scratch\",\n\t\t\"typeLine\": \"Demon's Horn\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Wand\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"32-59\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"7.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"56\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"179\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"31% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"21% increased Spell Damage\",\n\t\t\"Adds 22 to 38 Fire Damage to Spells\",\n\t\t\"+18% to Fire Resistance\",\n\t\t\"10% increased Projectile Speed\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 5,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 56,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand6.png?scale=1&w=1&h=3&v=54ba351a078c22737d02dfcec84665853\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"a761ed35418999f4c5f8d7342684c848f4391afc6ec97965e662a8b8c17086d7\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Hypnotic Bite\",\n\t\t\"typeLine\": \"Omen Wand\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Wand\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"27-50\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"8.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"53\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"200\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"27% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"+2 to Level of Socketed Chaos Gems\",\n\t\t\"18% increased Spell Damage\",\n\t\t\"19% increased Cast Speed\",\n\t\t\"+2 Life gained for each Enemy hit by Attacks\",\n\t\t\"+6 Life gained on Kill\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 3,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 57,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal04.png?scale=1&w=1&h=1&v=72207b7e72a4ed4fafd3e72f7b0b2a933\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"a9a97c787e9cb256dfcb8d8e2a96d4410f4f156bcf6ba140f40f2aaf590b9b29\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Sacrifice at Dusk\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"descrText\": \"Can be used in the Eternal Laboratory or a personal Map Device.\",\n\t\t\"flavourText\": [\"The Vaal shall never fear the setting of our sun.\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 9,\n\t\t\"y\": 10,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 40,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyDex3C.png?scale=1&w=2&h=3&v=54c1559d59813905d1547099cf4c69503\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"892fa1a24368c3c2c44269917e3a28207767b2582b53668766a5e167546ec79a\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Blood Coat\",\n\t\t\"typeLine\": \"Sun Leather\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+20%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 6\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Evasion Rating\",\n\t\t\t\"values\": [[\"347\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 17\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"32\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"91\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"explicitMods\": [\"+21 to Dexterity\",\n\t\t\"30% increased Evasion Rating\",\n\t\t\"+34 to maximum Life\",\n\t\t\"+22% to Fire Resistance\",\n\t\t\"+19% to Cold Resistance\",\n\t\t\"10% increased Stun and Block Recovery\",\n\t\t\"Reflects 4 Physical Damage to Melee Attackers\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 8,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 69,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Perandus.png?scale=1&w=1&h=1&v=a9e6f6f44738f7cd1bf956ef8c59dd653\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"00b4b58695b24bddfdcb51723dc565b3078b0f67c69bc7d4ebe051541079c35d\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"<<set:MS>><<set:M>><<set:S>>Valuable Perandus Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain a Perandus Chest\",\n\t\t\"Next Area will have a 20% chance to contain Cadiro Perandus\"],\n\t\t\"explicitMods\": [\"Perandus Chests in the next Area will have 30% more Rarity of Items Dropped\",\n\t\t\"Perandus Chests in the next Area will have 32% more Quantity of Items Dropped\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 1,\n\t\t\"x\": 1,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 65,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Warbands.png?scale=1&w=1&h=1&v=957d2508167e2faaeb2d36e609e6bae13\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"61e8e8109eb895e8f268e47d6612ab2fa5e41c96a2332d9a74a61eea07e46b9e\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Warbands Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"72\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain at least 1 Warband Pack\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 1,\n\t\t\"y\": 6,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 53,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Anarchy.png?scale=1&w=1&h=1&v=ba4d4c365afea5f866f75bbf9529abfa3\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"0f1fbd1bbb225071d7c68fdea8562133d7c36f993a9203aa58c7f756492397c8\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Anarchy Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"62\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain a Rogue Exile\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 0,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 55,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Prophecy.png?scale=1&w=1&h=1&v=ec3aac908a0be262b312c01c88545e7f3\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"9ed45ebaae9502de8af5de43a07eee224aaf9e41dfb66d31cc4044adf62e9447\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Prophecy Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"64\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain a Silver Coin\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 0,\n\t\t\"y\": 3,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 69,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyDexInt2C.png?scale=1&w=2&h=3&v=a0e589c9975ee5fe5bc4845f9c81a5163\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"b113ee04f9089d9ff8f0a8466d1aaadee97d82eb1d223ee0e81037f21f6c06f6\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Horror Cloak\",\n\t\t\"typeLine\": \"Sadist Garb\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Quality\",\n\t\t\t\"values\": [[\"+8%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 6\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Evasion Rating\",\n\t\t\t\"values\": [[\"328\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 17\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"103\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 18\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"68\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"103\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"109\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"explicitMods\": [\"+28 to Dexterity\",\n\t\t\"+94 to maximum Life\",\n\t\t\"+42 to maximum Mana\",\n\t\t\"+24% to Fire Resistance\",\n\t\t\"25% increased Stun and Block Recovery\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 6,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 67,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal02.png?scale=1&w=1&h=1&v=3ead6455599ec6c303f54ba98d6f8eb23\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"e5f26212d8233e853811feef24356b1badf4772e1cfe1b2ef1a03a379074b53c\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Sacrifice at Dawn\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"descrText\": \"Can be used in the Eternal Laboratory or a personal Map Device.\",\n\t\t\"flavourText\": [\"Only those who aspire can dare to hope.\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 10,\n\t\t\"y\": 11,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 65,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Ambush.png?scale=1&w=1&h=1&v=9ec2ad71f932312b6baf6528d9646b423\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"7c019ed86288f46f3189c76b420970cbc4f083eaaf849bb56dbc343b173cb182\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Ambush Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"72\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain a Strongbox\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 1,\n\t\t\"y\": 2,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 70,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand6.png?scale=1&w=1&h=3&v=54ba351a078c22737d02dfcec84665853\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"e44aa0741a2ee895a69e4c7d3ddc28f9506efb1e22a13ca23e0c45042f006171\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 1,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Golem Needle\",\n\t\t\"typeLine\": \"Prophecy Wand\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Wand\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"55-103\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Elemental Damage\",\n\t\t\t\"values\": [[\"41-65\",\n\t\t\t4]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 10\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"9.52%\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.26\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"68\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"245\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"36% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"90% increased Physical Damage\",\n\t\t\"Adds 41 to 65 Fire Damage\",\n\t\t\"Adds 8 to 18 Cold Damage to Spells\",\n\t\t\"5% increased Attack Speed\",\n\t\t\"19% increased Critical Strike Chance\",\n\t\t\"31% increased Projectile Speed\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 2,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 63,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand4.png?scale=1&w=1&h=3&v=d232fe49263de98034381a39ae61d6753\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"ef6a4032de1a724adcb7fdd637ea2f8c1c3e1cad3cbf79281348fea2ae8f8ab3\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Eagle Spell\",\n\t\t\"typeLine\": \"Opal Wand\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Wand\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"29-54\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"7.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.30\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"62\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"212\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"40% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"24% increased Spell Damage\",\n\t\t\"+19 to maximum Mana\",\n\t\t\"+18% to Fire Resistance\",\n\t\t\"+33% to Cold Resistance\",\n\t\t\"13% increased Projectile Speed\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 7,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 62,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand2.png?scale=1&w=1&h=3&v=dd4e9f9ef8b06e3f3e3fa3ba400f8ae83\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"fa0c77030dc7379b895e235b3ada27f8fa40442f7560a3501a1f43e8fe4fcdfc\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 1,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Honour Branch\",\n\t\t\"typeLine\": \"Demon's Horn\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Wand\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"44-82\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"7.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"56\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"179\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"35% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"39% increased Physical Damage\",\n\t\t\"Adds 5 to 76 Lightning Damage to Spells\",\n\t\t\"+18 to maximum Mana\",\n\t\t\"27% increased Mana Regeneration Rate\",\n\t\t\"+58 to Accuracy Rating\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 4,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 68,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal03.png?scale=1&w=1&h=1&v=ba374d543316349b87de121039c3cc6f3\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"54257154ccc0e6581f8af64b8a438c7916f3d40681680ce352707bfccd0b5732\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Sacrifice at Noon\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"descrText\": \"Can be used in the Eternal Laboratory or a personal Map Device.\",\n\t\t\"flavourText\": [\"The light without pales in comparison to the light within.\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 11,\n\t\t\"y\": 11,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 57,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand6.png?scale=1&w=1&h=3&v=54ba351a078c22737d02dfcec84665853\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"3b4b28188ff52856cfc75a58d1063ad8744aa1a73862ba6bcc5a9f74f2ef4e3b\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 1,\n\t\t\t\"attr\": \"D\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Rift Call\",\n\t\t\"typeLine\": \"Omen Wand\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Wand\",\n\t\t\t\"values\": [],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Physical Damage\",\n\t\t\t\"values\": [[\"27-50\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 9\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Critical Strike Chance\",\n\t\t\t\"values\": [[\"8.00%\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 12\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Attacks per Second\",\n\t\t\t\"values\": [[\"1.20\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 13\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"53\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"200\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"implicitMods\": [\"30% increased Spell Damage\"],\n\t\t\"explicitMods\": [\"20% increased Spell Damage\",\n\t\t\"Adds 11 to 19 Fire Damage to Spells\",\n\t\t\"34% increased Mana Regeneration Rate\",\n\t\t\"32% increased Projectile Speed\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 6,\n\t\t\"y\": 9,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 68,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Beyond.png?scale=1&w=1&h=1&v=feb2f8d7e6e54fafcf3be744272564003\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"232bf819b846a6094a00b0e197694f916f63b7d972dcf8ce238f7c7b41205f98\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Beyond Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Slaying Enemies close together in next Area will attract monsters from Beyond this realm\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 1,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 67,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Perandus.png?scale=1&w=1&h=1&v=a9e6f6f44738f7cd1bf956ef8c59dd653\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"adb13fa99dc6991bdc50a8d606c0f8e24ca0fb02c9ec5b759dc97c9b2c5fa42c\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Perandus Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"73\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain a Perandus Chest\",\n\t\t\"Next Area will have a 20% chance to contain Cadiro Perandus\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 0,\n\t\t\"y\": 0,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 41,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Maps\\/Vaal03.png?scale=1&w=1&h=1&v=ba374d543316349b87de121039c3cc6f3\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"bb0bd9f8592299c9fa15514d1b365e5e868bab91da076bcd572203601793b060\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Sacrifice at Noon\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"descrText\": \"Can be used in the Eternal Laboratory or a personal Map Device.\",\n\t\t\"flavourText\": [\"The light without pales in comparison to the light within.\"],\n\t\t\"frameType\": 0,\n\t\t\"x\": 9,\n\t\t\"y\": 11,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 56,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Domination.png?scale=1&w=1&h=1&v=4bf316471c84ca2d0993d7245ebb1f6d3\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"82a3acf31beec5ca2500ffcfd8118e951e840e331afe2f086681803ec3e683d5\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Domination Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"64\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain up to 1 Shrine\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 0,\n\t\t\"y\": 7,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 3,\n\t\t\"ilvl\": 55,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyDexInt1C.png?scale=1&w=2&h=3&v=58c31e9c01e3395af3661627cabc0db53\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"6dd28ec898b13858bd02edbb8973fd5562ae677edf5c18777b6e440cfdc1bb2d\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"D\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Honour Guardian\",\n\t\t\"typeLine\": \"Crimson Raiment\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Evasion Rating\",\n\t\t\t\"values\": [[\"189\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 17\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"64\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 18\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"48\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Dex\",\n\t\t\t\"values\": [[\"71\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"71\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"explicitMods\": [\"+18 to Dexterity\",\n\t\t\"+82 to maximum Life\",\n\t\t\"+9 to maximum Energy Shield\",\n\t\t\"Reflects 48 Physical Damage to Melee Attackers\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 1,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 1,\n\t\t\"h\": 1,\n\t\t\"ilvl\": 65,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Classic\\/Perandus.png?scale=1&w=1&h=1&v=a9e6f6f44738f7cd1bf956ef8c59dd653\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"5aba1176b04cf9af38a21a609832baf874dbb431cda9a9bb8042231027cede08\",\n\t\t\"sockets\": [],\n\t\t\"name\": \"\",\n\t\t\"typeLine\": \"Perandus Leaguestone\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": true,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Currently has %0 of %1 Charges\",\n\t\t\t\"values\": [[\"5\",\n\t\t\t0],\n\t\t\t[\"5\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Can only be used in Areas with Monster Level %0 or below\",\n\t\t\t\"values\": [[\"72\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 3\n\t\t}],\n\t\t\"implicitMods\": [\"Next Area will contain a Perandus Chest\",\n\t\t\"Next Area will have a 20% chance to contain Cadiro Perandus\"],\n\t\t\"descrText\": \"Right-click to open your Legacy Panel and place a Leaguestone in an empty slot. It will apply to the next new area you enter.\",\n\t\t\"frameType\": 0,\n\t\t\"x\": 0,\n\t\t\"y\": 5,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t},\n\t{\n\t\t\"verified\": false,\n\t\t\"w\": 2,\n\t\t\"h\": 2,\n\t\t\"ilvl\": 42,\n\t\t\"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Boots\\/BootsStrInt2.png?scale=1&w=2&h=2&v=9a8ce1f6169c2ad274efc202693b72933\",\n\t\t\"league\": \"SSF Legacy\",\n\t\t\"id\": \"8a37f554ed5a107db4c1b208944c0268578689aa3501dea145b38566b47a2964\",\n\t\t\"sockets\": [{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"I\"\n\t\t},\n\t\t{\n\t\t\t\"group\": 0,\n\t\t\t\"attr\": \"S\"\n\t\t}],\n\t\t\"name\": \"<<set:MS>><<set:M>><<set:S>>Victory Urge\",\n\t\t\"typeLine\": \"Zealot Boots\",\n\t\t\"identified\": true,\n\t\t\"corrupted\": false,\n\t\t\"lockedToCharacter\": false,\n\t\t\"properties\": [{\n\t\t\t\"name\": \"Armour\",\n\t\t\t\"values\": [[\"63\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 16\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Energy Shield\",\n\t\t\t\"values\": [[\"47\",\n\t\t\t1]],\n\t\t\t\"displayMode\": 0,\n\t\t\t\"type\": 18\n\t\t}],\n\t\t\"requirements\": [{\n\t\t\t\"name\": \"Level\",\n\t\t\t\"values\": [[\"40\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 0\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Str\",\n\t\t\t\"values\": [[\"38\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Int\",\n\t\t\t\"values\": [[\"38\",\n\t\t\t0]],\n\t\t\t\"displayMode\": 1\n\t\t}],\n\t\t\"explicitMods\": [\"+63 to maximum Life\",\n\t\t\"+28 to maximum Energy Shield\",\n\t\t\"+11% to Cold Resistance\",\n\t\t\"15% increased Movement Speed\",\n\t\t\"15% increased Stun and Block Recovery\"],\n\t\t\"frameType\": 2,\n\t\t\"x\": 10,\n\t\t\"y\": 4,\n\t\t\"inventoryId\": \"Stash8\",\n\t\t\"socketedItems\": []\n\t}]\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleStashWithRemnantOfCorruption.json",
    "content": "{\n  \"numTabs\": 27,\n  \"tabs\": [{\n      \"n\": \"1\",\n      \"i\": 0,\n      \"id\": \"3bfd05d93c71db20e920c8aa47e8c9078d0a984f002322d55caac5f304b4c8ef\",\n      \"type\": \"NormalStash\",\n      \"hidden\": true,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 124,\n        \"g\": 84,\n        \"b\": 54\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"\\u00a3\",\n      \"i\": 1,\n      \"id\": \"b0dcf4e93d1ea3ccd625596c69e29ed5f84d15a0c4a7bb1044b38a25e31cf473\",\n      \"type\": \"CurrencyStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 99,\n        \"g\": 128,\n        \"b\": 0\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"\\u2663\",\n      \"i\": 2,\n      \"id\": \"4981bf7af1c487210056075a76189a7bbde53a0d5f14c49376fb67a27045e25a\",\n      \"type\": \"DivinationCardStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 99,\n        \"g\": 128,\n        \"b\": 0\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"Maps\",\n      \"i\": 3,\n      \"id\": \"59f359d95ab87a3f84512a302c6c4a55575a77aaf279a180d8c73e280599159f\",\n      \"type\": \"PremiumStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 191,\n        \"g\": 0,\n        \"b\": 0\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/98a058fc32\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/edc7e2c501\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/42ff0bf3e8\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"Chaos Recipe\",\n      \"i\": 4,\n      \"id\": \"127fa9f221fc834b0f896a418da9db4d8efc2c6cc74f6cc1d227e4bad35eec76\",\n      \"type\": \"QuadStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 136,\n        \"g\": 136,\n        \"b\": 136\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/3e1c96f156\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/9da13bb4dc\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/5ff1e90713\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"Gems\",\n      \"i\": 5,\n      \"id\": \"07006817f1000b86f4128630a0e0acedc81b217f4999240f4be185aca447fbfc\",\n      \"type\": \"PremiumStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 255,\n        \"g\": 170,\n        \"b\": 0\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"Essences\",\n      \"i\": 6,\n      \"id\": \"5b9165e0aff3faf866cb2c2b0fc32525f9bb18f4edd9f6e610a4fc1800c36b87\",\n      \"type\": \"EssenceStash\",\n      \"hidden\": false,\n      \"selected\": true,\n      \"colour\": {\n        \"r\": 0,\n        \"g\": 191,\n        \"b\": 0\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjcyODMyMDt9fX0,\\/3d805e06a6\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjcyODMyMDt9fX0,\\/3e1a877538\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xNjcyODMyMDt9fX0,\\/e93234071f\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"1\",\n      \"i\": 7,\n      \"id\": \"221077a9e33b71f9b733308db9e6bce74ec7cfdba8e59b180a1a6fb6b7bfb89e\",\n      \"type\": \"NormalStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 124,\n        \"g\": 84,\n        \"b\": 54\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"2\",\n      \"i\": 8,\n      \"id\": \"99f920affeecfe06e76df3a84928c95b8f012376bf8ecaac6db876bfdf82872e\",\n      \"type\": \"NormalStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 124,\n        \"g\": 84,\n        \"b\": 54\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"3\",\n      \"i\": 9,\n      \"id\": \"7d2908f6d62ba61598c86bfb734cde968572b888398aea4fa77d1416ef59a36e\",\n      \"type\": \"NormalStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 124,\n        \"g\": 84,\n        \"b\": 54\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"4\",\n      \"i\": 10,\n      \"id\": \"362f0b15e57517242d6fb0ed1acf6e2d7ed7106db47d3c5fc8f59bff4f33f530\",\n      \"type\": \"NormalStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 124,\n        \"g\": 84,\n        \"b\": 54\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"5\",\n      \"i\": 11,\n      \"id\": \"02b7cebd1261e58b4375256663454c3008d05c8193f76dc31a4db7b2f25815b0\",\n      \"type\": \"NormalStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 124,\n        \"g\": 84,\n        \"b\": 54\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"6\",\n      \"i\": 12,\n      \"id\": \"32fb2025de700607b94f8a6ea5b3c5977c966dba8ac9362ab2ddf712a2db296d\",\n      \"type\": \"NormalStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 124,\n        \"g\": 84,\n        \"b\": 54\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"7\",\n      \"i\": 13,\n      \"id\": \"2a417bef254afa706886ff1825ce2ddc152d17dca45d9a87d4bb8bf5c82a5aeb\",\n      \"type\": \"NormalStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 124,\n        \"g\": 84,\n        \"b\": 54\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"8\",\n      \"i\": 14,\n      \"id\": \"d6cbe91a3051eeabe7f1dbfba59730492391624607ec1d1489fbe011c5d67dcc\",\n      \"type\": \"NormalStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 124,\n        \"g\": 84,\n        \"b\": 54\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"9\",\n      \"i\": 15,\n      \"id\": \"baec6c40c944a8f49129f859036a81d418f83eed2a43e5b02312b00a46e3db1e\",\n      \"type\": \"NormalStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 124,\n        \"g\": 84,\n        \"b\": 54\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"10\",\n      \"i\": 16,\n      \"id\": \"2489f4bcf582f30ec5db3e2c967d4264bc5e1a9020631f4d804a9b36d0e732a7\",\n      \"type\": \"NormalStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 124,\n        \"g\": 84,\n        \"b\": 54\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"11\",\n      \"i\": 17,\n      \"id\": \"9f05c72fc24331cc0f6bf00ec9d4b86b3ede00299a3c0a3ee7c8fb6b89dba002\",\n      \"type\": \"NormalStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 124,\n        \"g\": 84,\n        \"b\": 54\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"12\",\n      \"i\": 18,\n      \"id\": \"b7391ac71b2de8327e6c4ab68155218930186e7ea05b349d0f6f5274447ac015\",\n      \"type\": \"NormalStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 124,\n        \"g\": 84,\n        \"b\": 54\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/535a40fc8b\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/f159e79054\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/OjgxNDgwMjI7fX19\\/21241d0535\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"15\",\n      \"i\": 19,\n      \"id\": \"fcf27d371de185dbe46d77c4112fe0f23946371a822967b2f3b676d28aa0904f\",\n      \"type\": \"PremiumStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 99,\n        \"g\": 128,\n        \"b\": 0\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"16\",\n      \"i\": 20,\n      \"id\": \"1f13a4619219fd2d98683ab0c8463a0e46bff8ae81e22b65aad8d34d0672285f\",\n      \"type\": \"PremiumStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 99,\n        \"g\": 128,\n        \"b\": 0\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"14\",\n      \"i\": 21,\n      \"id\": \"ddf374a8fef0d723ae957b2e5237da3f6ee2cd4cbfe6e4e9bf135629db4301a8\",\n      \"type\": \"PremiumStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 99,\n        \"g\": 128,\n        \"b\": 0\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"17\",\n      \"i\": 22,\n      \"id\": \"e7d50586efe31e792a1d2699f05b0799105d17b098552022780e824d9cd7dc52\",\n      \"type\": \"PremiumStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 99,\n        \"g\": 128,\n        \"b\": 0\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"18\",\n      \"i\": 23,\n      \"id\": \"c0e2957e060d551194a52296a84012924e2e20ccc8b9ae87be5d145f6227a2f6\",\n      \"type\": \"PremiumStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 99,\n        \"g\": 128,\n        \"b\": 0\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"19\",\n      \"i\": 24,\n      \"id\": \"6e645601454ee0ff975278576ca6005423fca4ed3d8ec918613f0c7fb13bd234\",\n      \"type\": \"PremiumStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 99,\n        \"g\": 128,\n        \"b\": 0\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"20\",\n      \"i\": 25,\n      \"id\": \"3c314fb31a4cfd7c21589c0c39d31bb95774126aaa3052e2361e116fbf304f66\",\n      \"type\": \"PremiumStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 99,\n        \"g\": 128,\n        \"b\": 0\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    },\n    {\n      \"n\": \"21\",\n      \"i\": 26,\n      \"id\": \"7344d4a99c0d602cc38b776f018c181935a46a8218e68e7b02b3549114ce5339\",\n      \"type\": \"PremiumStash\",\n      \"hidden\": false,\n      \"selected\": false,\n      \"colour\": {\n        \"r\": 99,\n        \"g\": 128,\n        \"b\": 0\n      },\n      \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n      \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n      \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n    }],\n  \"items\": [\t{\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/EssenceCorrupt.png?scale=1&stackSize=1&w=1&h=1&v=49220b99e034b4dd3c85702167958b383\",\n      \"league\": \"Standard\",\n      \"id\": \"85e20acf3144f184c5a255ca97aa03e9854577229ddfa4d8a2d12d0dadd62a34\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Remnant of Corruption\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"1\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Corrupts the Essences trapping a monster, modifying them unpredictably\"],\n      \"descrText\": \"Right click this item then left click a monster trapped by Essences to corrupt them. Corrupted Essences cannot be modified again.\",\n      \"frameType\": 5,\n      \"stackSize\": 1,\n      \"maxStackSize\": 9,\n      \"x\": 2,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Woe4.png?scale=1&essence=1&stackSize=1&w=1&h=1&v=26d83392a96b8947d6f97418496197113\",\n      \"league\": \"SSF Legacy\",\n      \"id\": \"be1d393b5415ced29a0563585a9d3d6b03c8cc5224c8cb46670a1c93fa521d38\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Wailing Essence of Woe\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"1\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n        \"Properties restricted to level 75 and below\",\n        \"\",\n        \"One Handed Weapon: (40-49)% increased Spell Damage\",\n        \"Two Handed Weapon: (60-74)% increased Spell Damage\",\n        \"Gloves: (18-26) to maximum Energy Shield\",\n        \"Boots: (18-26) to maximum Energy Shield\",\n        \"Shield: (30-48) to maximum Energy Shield\",\n        \"Other Armour: (20-29) to maximum Energy Shield\",\n        \"Quiver: (26-29)% increased Elemental Damage with Weapons\",\n        \"Amulet: (11-13)% increased maximum Energy Shield\",\n        \"Ring: (23-26) to maximum Energy Shield\",\n        \"Belt: (23-26) to maximum Energy Shield\"],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 1,\n      \"maxStackSize\": 9,\n      \"x\": 10,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Fear3.png?scale=1&essence=1&stackSize=2&w=1&h=1&v=89cdd73a4de987ebc1bd4136507f75763\",\n      \"league\": \"SSF Legacy\",\n      \"id\": \"72fb9098811dfd049e3e8aea7dfd44080415b95c5209f307de47eb52c8861720\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Weeping Essence of Fear\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"2\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n        \"Properties restricted to level 60 and below\",\n        \"\",\n        \"One Handed Weapon: Minions deal (11-14)% increased Damage\",\n        \"Two Handed Weapon: Minions deal (16-21)% increased Damage\",\n        \"Armour: Minions have (11-14)% increased maximum Life\",\n        \"Quiver: Minions have (11-14)% increased Movement Speed\",\n        \"Belt: Minions have (11-14)% increased maximum Life\",\n        \"Other Jewellery: Minions have (11-14)% increased Movement Speed\"],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 2,\n      \"maxStackSize\": 9,\n      \"x\": 47,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Fear5.png?scale=1&essence=1&stackSize=1&w=1&h=1&v=98666642411b25e17b860dfa79499bef3\",\n      \"league\": \"SSF Legacy\",\n      \"id\": \"3af65f37ec0321530c8a7d268ee18af26bb693fcd1ae88d16aa116c3a4794514\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Screaming Essence of Fear\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"1\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n        \"\",\n        \"One Handed Weapon: Minions deal (19-22)% increased Damage\",\n        \"Two Handed Weapon: Minions deal (28-33)% increased Damage\",\n        \"Armour: Minions have (19-22)% increased maximum Life\",\n        \"Quiver: Minions have (19-22)% increased Movement Speed\",\n        \"Belt: Minions have (19-22)% increased maximum Life\",\n        \"Other Jewellery: Minions have (19-22)% increased Movement Speed\"],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 1,\n      \"maxStackSize\": 9,\n      \"x\": 49,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Hatred2.png?scale=1&essence=1&stackSize=2&w=1&h=1&v=c4d6f1c773d20697ab194039c6734f363\",\n      \"league\": \"SSF Legacy\",\n      \"id\": \"2abf8169b7bf2256f24906f23d50c55feb3d0bea1502fde6250f0e7b344b4e37\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Muttering Essence of Hatred\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"2\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n        \"Properties restricted to level 45 and below\",\n        \"\",\n        \"Two Handed Melee Weapon: Adds (10-13) to (19-22) Cold Damage\",\n        \"Other Weapon: Adds (6-8) to (13-15) Cold Damage\",\n        \"Armour: (12-17)% to Cold Resistance\",\n        \"Quiver: (12-17)% to Cold Resistance\",\n        \"Belt: (12-17)% to Cold Resistance\",\n        \"Other Jewellery: (10-13)% increased Cold Damage\"],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 2,\n      \"maxStackSize\": 9,\n      \"x\": 1,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Sorrow4.png?scale=1&essence=1&stackSize=1&w=1&h=1&v=f5512f122d9c273e57c3eb4e1aa72fec3\",\n      \"league\": \"SSF Legacy\",\n      \"id\": \"b17a1fe82d9db8b0c9b49d9f84f3858345d67657343ba63c19b1f1fef4ff5f58\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Wailing Essence of Sorrow\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"1\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n        \"Properties restricted to level 75 and below\",\n        \"\",\n        \"Weapon: +1 to Level of Socketed Cold Gems\",\n        \"Other Item: (28-32) to Dexterity\"],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 1,\n      \"maxStackSize\": 9,\n      \"x\": 30,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Woe1.png?scale=1&essence=1&stackSize=2&w=1&h=1&v=c2091e476989643b8eb31d5f7ee20f713\",\n      \"league\": \"SSF Legacy\",\n      \"id\": \"5a242f941d41b3f343ebfccb48bb27e7b915860beae80db2c00370ef884a7ecf\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Whispering Essence of Woe\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"2\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n        \"Properties restricted to level 35 and below\",\n        \"\",\n        \"One Handed Weapon: (10-19)% increased Spell Damage\",\n        \"Two Handed Weapon: (15-29)% increased Spell Damage\",\n        \"Armour: (3-5) to maximum Energy Shield\",\n        \"Quiver: (11-15)% increased Elemental Damage with Weapons\",\n        \"Amulet: (2-4)% increased maximum Energy Shield\",\n        \"Ring: (1-3) to maximum Energy Shield\",\n        \"Belt: (1-3) to maximum Energy Shield\"],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 2,\n      \"maxStackSize\": 9,\n      \"x\": 7,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Anger2.png?scale=1&essence=1&stackSize=1&w=1&h=1&v=56963b86f3de434e89b427190f3c64663\",\n      \"league\": \"SSF Legacy\",\n      \"id\": \"8a4889b55684dcc8293edbedd9f0c6ae6faf0fd0b143e9930ae5ea045ef8cb22\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Muttering Essence of Anger\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"1\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n        \"Properties restricted to level 45 and below\",\n        \"\",\n        \"Two Handed Melee Weapon: Adds (12-16) to (23-27) Fire Damage\",\n        \"Other Weapon: Adds (8-10) to (15-18) Fire Damage\",\n        \"Armour: (12-17)% to Fire Resistance\",\n        \"Quiver: (12-17)% to Fire Resistance\",\n        \"Belt: (12-17)% to Fire Resistance\",\n        \"Other Jewellery: (11-14)% increased Fire Damage\"],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 1,\n      \"maxStackSize\": 9,\n      \"x\": 34,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Sorrow3.png?scale=1&essence=1&stackSize=2&w=1&h=1&v=3bb862824c36ee034a3a727a311432f83\",\n      \"league\": \"SSF Legacy\",\n      \"id\": \"64bb0db49f720dfa15c89031c08dddb29e60857a217cdbe3897a7728a0dc89dc\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Weeping Essence of Sorrow\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"2\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n        \"Properties restricted to level 60 and below\",\n        \"\",\n        \"Weapon: +1 to Level of Socketed Cold Gems\",\n        \"Other Item: (18-22) to Dexterity\"],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 2,\n      \"maxStackSize\": 9,\n      \"x\": 29,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Fear4.png?scale=1&essence=1&stackSize=1&w=1&h=1&v=19d61d301f7c14a3e26e4604b3273af53\",\n      \"league\": \"SSF Legacy\",\n      \"id\": \"2b22065127d58aebf2ae9627e2a591b963564f905943593b2a148b8c07d81df6\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Wailing Essence of Fear\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"1\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n        \"Properties restricted to level 75 and below\",\n        \"\",\n        \"One Handed Weapon: Minions deal (15-18)% increased Damage\",\n        \"Two Handed Weapon: Minions deal (22-27)% increased Damage\",\n        \"Armour: Minions have (15-18)% increased maximum Life\",\n        \"Quiver: Minions have (15-18)% increased Movement Speed\",\n        \"Belt: Minions have (15-18)% increased maximum Life\",\n        \"Other Jewellery: Minions have (15-18)% increased Movement Speed\"],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 1,\n      \"maxStackSize\": 9,\n      \"x\": 48,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Wrath4.png?scale=1&essence=1&stackSize=1&w=1&h=1&v=1b78b631cf91f1d6ec48173183c262573\",\n      \"league\": \"SSF Legacy\",\n      \"id\": \"d707866805d95b816d8a3ff6d50fa530bd55a6ad804bf3ef74c7fa64e601c6d8\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Wailing Essence of Wrath\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"1\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n        \"Properties restricted to level 75 and below\",\n        \"\",\n        \"Two Handed Melee Weapon: Adds (4-11) to (137-145) Lightning Damage\",\n        \"Other Weapon: Adds (2-7) to (91-96) Lightning Damage\",\n        \"Armour: (24-29)% to Lightning Resistance\",\n        \"Quiver: (24-29)% to Lightning Resistance\",\n        \"Belt: (24-29)% to Lightning Resistance\",\n        \"Other Jewellery: (13-17)% increased Lightning Damage\"],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 1,\n      \"maxStackSize\": 9,\n      \"x\": 63,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Greed3.png?scale=1&essence=1&stackSize=1&w=1&h=1&v=a673402a48dd5d1a6509515f5e249dab3\",\n      \"league\": \"SSF Legacy\",\n      \"id\": \"e92cbe835097e9c31639a987862331ef60a5bf7b1a6f426d47a25dc15cf58f43\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Weeping Essence of Greed\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"1\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n        \"Properties restricted to level 60 and below\",\n        \"\",\n        \"Weapon: (0.7-0.9)% of Physical Attack Damage Leeched as Life\",\n        \"Armour: (31-45) to maximum Life\",\n        \"Quiver: (0.7-0.9)% of Physical Attack Damage Leeched as Life\",\n        \"Belt: (16-19)% increased Flask Life Recovery rate\",\n        \"Other Jewellery: (3-4) Life Regenerated per second\"],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 1,\n      \"maxStackSize\": 9,\n      \"x\": 16,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Torment4.png?scale=1&essence=1&stackSize=1&w=1&h=1&v=a9d3fedc6e36286fbfc6bf32763db2da3\",\n      \"league\": \"SSF Legacy\",\n      \"id\": \"ed9359f0615bed8cdc9772de4887b0d22d88d203494be28cdfc24b5d7f0c4672\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Wailing Essence of Torment\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"1\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n        \"Properties restricted to level 75 and below\",\n        \"\",\n        \"One Handed Weapon: Adds (2-6) to (73-77) Lightning Damage to Spells\",\n        \"Two Handed Weapon: Adds (3-9) to (109-115) Lightning Damage to Spells\",\n        \"Gloves: Adds (1-2) to (23-24) Lightning Damage to Attacks\",\n        \"Body Armour: (6-7)% chance to Avoid Lightning Damage when Hit\",\n        \"Shield: (6-7)% chance to Avoid Lightning Damage when Hit\",\n        \"Other Armour: (19-22)% chance to Avoid being Shocked\",\n        \"Quiver: Adds (1-2) to (23-24) Lightning Damage to Attacks\",\n        \"Belt: (19-22)% chance to Avoid being Shocked\",\n        \"Other Jewellery: Adds (1-4) to (40-43) Lightning Damage to Attacks\"],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 1,\n      \"maxStackSize\": 9,\n      \"x\": 42,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Contempt1.png?scale=1&essence=1&stackSize=2&w=1&h=1&v=60f8830c2dadd217eb99cee02425f07d3\",\n      \"league\": \"SSF Legacy\",\n      \"id\": \"dd051066645f2a977b03cc58cd70b247ac14195f925e3c4a698f4de105adb89e\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Whispering Essence of Contempt\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"2\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n        \"Properties restricted to level 35 and below\",\n        \"\",\n        \"One Handed Weapon: Adds 1 to (2-3) Physical Damage\",\n        \"Two Handed Weapon: Adds 2 to (4-5) Physical Damage\",\n        \"Gloves: Adds 1 to 2 Physical Damage to Attacks\",\n        \"Other Armour: Reflects (1-4) Physical Damage to Melee Attackers\",\n        \"Quiver: Adds 1 to 2 Physical Damage to Attacks\",\n        \"Belt: Reflects (1-4) Physical Damage to Melee Attackers\",\n        \"Other Jewellery: Adds 1 to 2 Physical Damage to Attacks\"],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 2,\n      \"maxStackSize\": 9,\n      \"x\": 21,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    },\n    {\n      \"verified\": false,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Currency\\/Essence\\/Wrath3.png?scale=1&essence=1&stackSize=1&w=1&h=1&v=3870a986ca4f5984a797427c40a4ab413\",\n      \"league\": \"SSF Legacy\",\n      \"id\": \"d62cf60a52880923910888be67e1d5a16e680cb0650537bdc6d8b7a59c1a2f78\",\n      \"sockets\": [],\n      \"name\": \"\",\n      \"typeLine\": \"Weeping Essence of Wrath\",\n      \"identified\": true,\n      \"corrupted\": false,\n      \"lockedToCharacter\": false,\n      \"properties\": [{\n        \"name\": \"Stack Size\",\n        \"values\": [[\"1\\/9\",\n          0]],\n        \"displayMode\": 0\n      }],\n      \"explicitMods\": [\"Upgrades a normal item to rare with one guaranteed property\",\n        \"Properties restricted to level 60 and below\",\n        \"\",\n        \"Two Handed Melee Weapon: Adds (2-7) to (87-92) Lightning Damage\",\n        \"Other Weapon: Adds (2-5) to (58-61) Lightning Damage\",\n        \"Armour: (18-23)% to Lightning Resistance\",\n        \"Quiver: (18-23)% to Lightning Resistance\",\n        \"Belt: (18-23)% to Lightning Resistance\",\n        \"Other Jewellery: (8-12)% increased Lightning Damage\"],\n      \"descrText\": \"Right click this item then left click a normal item to apply it.\",\n      \"frameType\": 5,\n      \"stackSize\": 1,\n      \"maxStackSize\": 9,\n      \"x\": 62,\n      \"y\": 0,\n      \"inventoryId\": \"Stash7\",\n      \"socketedItems\": []\n    }],\n  \"essenceLayout\": {\n    \"essences\": [{\n        \"x\": 480,\n        \"y\": 183,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 408,\n        \"y\": 183,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 335,\n        \"y\": 183,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 263,\n        \"y\": 183,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 190,\n        \"y\": 183,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 117,\n        \"y\": 183,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 44,\n        \"y\": 183,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 480,\n        \"y\": 256,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 408,\n        \"y\": 256,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 335,\n        \"y\": 256,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 263,\n        \"y\": 256,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 190,\n        \"y\": 256,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 117,\n        \"y\": 256,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 44,\n        \"y\": 256,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 480,\n        \"y\": 38,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 408,\n        \"y\": 38,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 335,\n        \"y\": 38,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 263,\n        \"y\": 38,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 190,\n        \"y\": 38,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 117,\n        \"y\": 38,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 44,\n        \"y\": 38,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 480,\n        \"y\": 111,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 408,\n        \"y\": 111,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 335,\n        \"y\": 111,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 263,\n        \"y\": 111,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 190,\n        \"y\": 111,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 117,\n        \"y\": 111,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 44,\n        \"y\": 111,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 408,\n        \"y\": 547,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 335,\n        \"y\": 547,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 263,\n        \"y\": 547,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 190,\n        \"y\": 547,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 117,\n        \"y\": 547,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 44,\n        \"y\": 547,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 408,\n        \"y\": 402,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 335,\n        \"y\": 402,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 263,\n        \"y\": 402,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 190,\n        \"y\": 402,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 117,\n        \"y\": 402,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 44,\n        \"y\": 402,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 408,\n        \"y\": 474,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 335,\n        \"y\": 474,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 263,\n        \"y\": 474,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 190,\n        \"y\": 474,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 117,\n        \"y\": 474,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 44,\n        \"y\": 474,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 408,\n        \"y\": 329,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 335,\n        \"y\": 329,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 263,\n        \"y\": 329,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 190,\n        \"y\": 329,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 117,\n        \"y\": 329,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 44,\n        \"y\": 329,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 335,\n        \"y\": 692,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 263,\n        \"y\": 692,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 190,\n        \"y\": 692,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 117,\n        \"y\": 692,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 44,\n        \"y\": 692,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 335,\n        \"y\": 619,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 263,\n        \"y\": 619,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 190,\n        \"y\": 619,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 117,\n        \"y\": 619,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 44,\n        \"y\": 618,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 335,\n        \"y\": 764,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 263,\n        \"y\": 764,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 190,\n        \"y\": 764,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 117,\n        \"y\": 764,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 44,\n        \"y\": 764,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 335,\n        \"y\": 837,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 263,\n        \"y\": 837,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 190,\n        \"y\": 837,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 117,\n        \"y\": 837,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 44,\n        \"y\": 837,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 613,\n        \"y\": 182,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 685,\n        \"y\": 182,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 760,\n        \"y\": 182,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 833,\n        \"y\": 182,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 613,\n        \"y\": 38,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 685,\n        \"y\": 38,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 760,\n        \"y\": 38,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 833,\n        \"y\": 38,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 613,\n        \"y\": 256,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 686,\n        \"y\": 256,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 760,\n        \"y\": 256,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 833,\n        \"y\": 256,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 613,\n        \"y\": 111,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 686,\n        \"y\": 111,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 760,\n        \"y\": 111,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 833,\n        \"y\": 111,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 686,\n        \"y\": 474,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 760,\n        \"y\": 474,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 833,\n        \"y\": 474,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 686,\n        \"y\": 547,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 760,\n        \"y\": 547,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 833,\n        \"y\": 547,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 686,\n        \"y\": 329,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 760,\n        \"y\": 329,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 833,\n        \"y\": 329,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 686,\n        \"y\": 402,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 760,\n        \"y\": 402,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 833,\n        \"y\": 402,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 833,\n        \"y\": 838,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 833,\n        \"y\": 620,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 833,\n        \"y\": 693,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 833,\n        \"y\": 765,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 760,\n        \"y\": 620,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 760,\n        \"y\": 693,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 760,\n        \"y\": 765,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 760,\n        \"y\": 838,\n        \"w\": 1,\n        \"h\": 1\n      },\n      {\n        \"x\": 514,\n        \"y\": 653,\n        \"w\": 2,\n        \"h\": 4\n      }],\n    \"scale\": 0.608519269777\n  }\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleStashWithSaintlyChainmail.json",
    "content": "{\n    \"numTabs\": 39,\n    \"tabs\": [\n        {\n            \"n\": \"$\",\n            \"i\": 0,\n            \"id\": \"32f0afa0ee1a53dc6e1c95c42e2a608f265b8de1a9dd53fcaa7ca556e967c745\",\n            \"type\": \"CurrencyStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 99,\n                \"g\": 128,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"V\",\n            \"i\": 1,\n            \"id\": \"cec0bd9bd875e3dd09ca2d2ae697c4a027a5b503cb12d0d3d96987772c373ce1\",\n            \"type\": \"EssenceStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 99,\n                \"g\": 128,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"[]\",\n            \"i\": 2,\n            \"id\": \"f91ea8524290944155b2d6025bac63bb65bd16b5085c141ebfa951ef53390ba7\",\n            \"type\": \"DivinationCardStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 99,\n                \"g\": 128,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"O\",\n            \"i\": 3,\n            \"id\": \"ece793bbada528fd4c613408db582eb4a6a8c9ed6225b6ca99b7565f6373daa6\",\n            \"type\": \"QuadStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 136,\n                \"g\": 136,\n                \"b\": 136\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/3e1c96f156\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/9da13bb4dc\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi03ODI5MzY4O319fQ,,\\/5ff1e90713\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"!\",\n            \"i\": 4,\n            \"id\": \"14f784f26c96093e57006a8f63e8cc2fc814320d139fc5b2e6c330d167263143\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 89,\n                \"g\": 0,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/8ade9bb940\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/ba64385447\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/55c7c28a3a\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"!sh\",\n            \"i\": 5,\n            \"id\": \"2cf349c9413683f230ec9e097d9105e0d534a607b9942adabb1689454916dbe6\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 89,\n                \"g\": 0,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/8ade9bb940\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/ba64385447\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDk0NDUxMjt9fX0,\\/55c7c28a3a\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 1 chaos\",\n            \"i\": 6,\n            \"id\": \"98d994c69488bb74479007649c8863be6cdff79fb12aa268682d98c6825a6b88\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 99,\n                \"g\": 128,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"8\",\n            \"i\": 7,\n            \"id\": \"21cd3009393693322ce46775c56e11edd9f2e288223eccb270289467937d721d\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 99,\n                \"g\": 128,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"U\",\n            \"i\": 8,\n            \"id\": \"99a9bea30146e0a5c7abb3d3d1038110349452fba02d80fff9d8730fc7f6fa6b\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 50,\n                \"g\": 50,\n                \"b\": 50\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"U\",\n            \"i\": 9,\n            \"id\": \"8dd690325c2549d75f71785ed2150c59965c994320da450723fb11c15f4c40c2\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 50,\n                \"g\": 50,\n                \"b\": 50\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"U\",\n            \"i\": 10,\n            \"id\": \"abce09ba66a82be4ca615ce99aa3932a5a74fbcd391ce431659f13984ad23471\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 50,\n                \"g\": 50,\n                \"b\": 50\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"U\",\n            \"i\": 11,\n            \"id\": \"0ab99605f0c118897b37b183be31b814483377ac803eee49c0d892e67cbc6f0e\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 50,\n                \"g\": 50,\n                \"b\": 50\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"U\",\n            \"i\": 12,\n            \"id\": \"e59c570c1ed31f3271be896502812798180a1faf7ce46f1cd30eafae239f68a5\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 50,\n                \"g\": 50,\n                \"b\": 50\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"U\",\n            \"i\": 13,\n            \"id\": \"228c3d17faf9bf72984117f2c535b73f4ed6bdbe2e30bb119e58f4eba57550f4\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 50,\n                \"g\": 50,\n                \"b\": 50\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"U\",\n            \"i\": 14,\n            \"id\": \"f8a7d500ba17b10020223013ac5c3f9119c9d2221d784467086cf167edc99a85\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 50,\n                \"g\": 50,\n                \"b\": 50\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"U\",\n            \"i\": 15,\n            \"id\": \"b98335db484c234e46c0a4755a4946f218030ec6ea83bf799646a331f4e590cb\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 50,\n                \"g\": 50,\n                \"b\": 50\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"U\",\n            \"i\": 16,\n            \"id\": \"95296b048ff8a98ef2b99ce5fb1fac65d7a2d682a679196b5275fc834b7c3651\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 50,\n                \"g\": 50,\n                \"b\": 50\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"U\",\n            \"i\": 17,\n            \"id\": \"f9466b0ab418eb3453ac7bba374d608a41c42989cfda0e89ff6915fa9ea82188\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 50,\n                \"g\": 50,\n                \"b\": 50\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"U\",\n            \"i\": 18,\n            \"id\": \"29f617a3cece7c5321ae53b2e37ce491d76bd8d45429dffa9afa6d75ed101284\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 50,\n                \"g\": 50,\n                \"b\": 50\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/6628828a0d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/a2619ce769\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMzQ4NzU2Njt9fX0,\\/83ee9c99fb\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 1 chaos\",\n            \"i\": 19,\n            \"id\": \"8803145e29e08d84eb6bd452629a7163ff351194211ab62b19ddbcf460ac2aaa\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": true,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 255,\n                \"b\": 153\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/8ff4253efe\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/bb73f12637\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/22745ba921\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 2 chaos\",\n            \"i\": 20,\n            \"id\": \"4d160dfbd2eb2c5813c7b81bded7116d2c826f0e646d61af42908f49f9561ad2\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 255,\n                \"b\": 153\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/8ff4253efe\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/bb73f12637\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/22745ba921\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 3 chaos\",\n            \"i\": 21,\n            \"id\": \"e3125308b344889ff62612bfb927785e0d7d9ddb4539011cd3481d9d4ce0cab6\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 255,\n                \"b\": 153\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/8ff4253efe\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/bb73f12637\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/22745ba921\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"bit\",\n            \"i\": 22,\n            \"id\": \"f26bdcf73d96dec26621dccfc0a8404e082d8945ce9ac0c8901942cde4d03df4\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 255,\n                \"b\": 153\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/8ff4253efe\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/bb73f12637\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDM7fX19\\/22745ba921\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 1 chaos\",\n            \"i\": 23,\n            \"id\": \"b4d105f009f5a1e5415501f5b8ef6331960d5a4e8c6c37d7acf40949e7b86cbf\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 170,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 1 chaos\",\n            \"i\": 24,\n            \"id\": \"ac2154dfe022f0282b6ea491bb3d45a37436ce285eb378ba39dc5b2e792dd197\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 170,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 1 chaos\",\n            \"i\": 25,\n            \"id\": \"f8ef7febb4577c7f4a7318b54f1d5615d5fdab79429a5472c8134fccbc3fbac1\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 170,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 1 chaos\",\n            \"i\": 26,\n            \"id\": \"605093f3e1839709bf84250ea430384f53799e0153e40860d7a1a45c9f727cfb\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 213,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/4fd846c823\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/8842f2d7ef\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/0916f3ec87\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 3 chaos\",\n            \"i\": 27,\n            \"id\": \"113c05c760ddc236f02b517b52a4334465752d6c7abedcf9125a71941b402d95\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 170,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 1 chaos\",\n            \"i\": 28,\n            \"id\": \"abb0e6189175e55cd9c21751e34676aee9c844eeb93cf20f42fc034e46f5886e\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 221,\n                \"g\": 221,\n                \"b\": 221\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/ee8a4216f9\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/e0ce46cb01\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/f8f378ce64\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 2 chaos\",\n            \"i\": 29,\n            \"id\": \"9304d44b0866984e98844763737671bdda3f185fb653aa5537e9c1cb1e5c98ae\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 170,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 1 chaos\",\n            \"i\": 30,\n            \"id\": \"45c8f452b5df69705eff655df6653974bb6d5bf06a725cedd647a6d69d17cb6e\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 170,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 3 chaos\",\n            \"i\": 31,\n            \"id\": \"99b5dbde7bc15a58a0a97c4780888824c67c6d7b1938f9d3383e13543e5f651f\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 170,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 1 chaos\",\n            \"i\": 32,\n            \"id\": \"6ab927d81495be3e96269b75064f01bbeda91e6caed6dde7630e1a2099b5a2a0\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 213,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/4fd846c823\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/8842f2d7ef\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/0916f3ec87\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 2 chaos\",\n            \"i\": 33,\n            \"id\": \"d5cba00a919394855356033c0170fbd3aa1f8a11759f9fc936e55abaaaf9fadb\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 213,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/4fd846c823\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/8842f2d7ef\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMTAwODt9fX0,\\/0916f3ec87\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 1 chaos\",\n            \"i\": 34,\n            \"id\": \"5a482dca8bb93a20a1e71ca5350577e55be77da9b14fb3718c3f7589a6aa414b\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 221,\n                \"g\": 221,\n                \"b\": 221\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/ee8a4216f9\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/e0ce46cb01\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjM2OTYzO319fQ,,\\/f8f378ce64\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 1 chaos\",\n            \"i\": 35,\n            \"id\": \"258fee2352503c83d3cc8b83192dde56f375d19cedc8c439bac44528b7daacd2\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 170,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 2 chaos\",\n            \"i\": 36,\n            \"id\": \"cc0423fe648c49a1d1d3a1d2904c693c0ca96042c27940767c1f09bde63c276a\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 255,\n                \"g\": 170,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/7b4a0c09c6\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/48cdff3a2d\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0yMjAxNjt9fX0,\\/2e84ef10af\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"hammertime\",\n            \"i\": 37,\n            \"id\": \"abf69dbe5cc6b2a1d51682bd76fb8a3500e0432758af37f812376ef548b0a94f\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 99,\n                \"g\": 128,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/c64747b68d\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/d6161fcf22\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi0xMDI1NjM4NDt9fX0,\\/1185e76da6\\/Stash_TabR.png\"\n        },\n        {\n            \"n\": \"~b\\/o 1 chaos\",\n            \"i\": 38,\n            \"id\": \"7bdd61be7177a8bb6a3bf0ebecfd049797b049d9450bb36b67020581a6d86b9f\",\n            \"type\": \"PremiumStash\",\n            \"hidden\": false,\n            \"selected\": false,\n            \"colour\": {\n                \"r\": 191,\n                \"g\": 0,\n                \"b\": 0\n            },\n            \"srcL\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjE7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/98a058fc32\\/Stash_TabL.png\",\n            \"srcC\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjI7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/edc7e2c501\\/Stash_TabC.png\",\n            \"srcR\": \"https:\\/\\/web.poecdn.com\\/gen\\/image\\/YTozOntpOjA7aToyNDtp\\/OjE7czozMjoiMDJhMTk3\\/N2QxZDAzNDQzNmU3NzM5\\/ZjgzZDEzYjIwN2YiO2k6\\/MjthOjI6e2k6MDtpOjI7\\/aToxO2E6Mzp7czoxOiJ0\\/IjtpOjM7czoxOiJuIjtz\\/OjA6IiI7czoxOiJjIjtp\\/Oi00MjU5ODQwO319fQ,,\\/42ff0bf3e8\\/Stash_TabR.png\"\n        }\n    ],\n    \"items\": [\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 3,\n            \"ilvl\": 76,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyDex3B.png?scale=1&scaleIndex=0&w=2&h=3&v=808fa9360bda3074d55dce26cc0e823e3\",\n            \"league\": \"Harbinger\",\n            \"id\": \"ff9ba2d18213c85266a67bae15cf3e8b76bb08b74d19e4200ecad7e2daf3883f\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"D\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"D\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"S\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Loath Salvation\",\n            \"typeLine\": \"Destiny Leather\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Evasion Rating\",\n                    \"values\": [\n                        [\n                            \"620\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 17\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"59\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Dex\",\n                    \"values\": [\n                        [\n                            \"160\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"explicitMods\": [\n                \"+19 to Evasion Rating\",\n                \"+72 to maximum Life\",\n                \"+41% to Fire Resistance\",\n                \"+17% to Cold Resistance\",\n                \"+34% to Lightning Resistance\"\n            ],\n            \"frameType\": 2,\n            \"x\": 0,\n            \"y\": 0,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 1,\n            \"h\": 1,\n            \"ilvl\": 77,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Amulets\\/Amulet1.png?scale=1&scaleIndex=0&w=1&h=1&v=c2401398cda6eebb43b7f7da63caa3313\",\n            \"league\": \"Harbinger\",\n            \"id\": \"1fb133fbbfbc00f6be06ee97304509d452b483b4f6751b2270ce129a3d80ce35\",\n            \"sockets\": [\n\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Apocalypse Braid\",\n            \"typeLine\": \"Paua Amulet\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"52\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                }\n            ],\n            \"implicitMods\": [\n                \"24% increased Mana Regeneration Rate\"\n            ],\n            \"explicitMods\": [\n                \"+42 to Intelligence\",\n                \"+88 to maximum Life\",\n                \"+48 to maximum Mana\",\n                \"+16 to maximum Energy Shield\"\n            ],\n            \"frameType\": 2,\n            \"x\": 8,\n            \"y\": 0,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 3,\n            \"ilvl\": 77,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/OneHandAxes\\/OneHandAxe7.png?scale=1&scaleIndex=0&w=2&h=3&v=f63cc1ee4b4855b1632e72ed79dd568c3\",\n            \"league\": \"Harbinger\",\n            \"id\": \"2235ef0e689b39130d5f8488f33d4597463fc75a69228414b63d5a4749aa64a9\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"S\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Mind Bane\",\n            \"typeLine\": \"Ceremonial Axe\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"One Handed Axe\",\n                    \"values\": [\n\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Physical Damage\",\n                    \"values\": [\n                        [\n                            \"45-83\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 9\n                },\n                {\n                    \"name\": \"Elemental Damage\",\n                    \"values\": [\n                        [\n                            \"3-43\",\n                            6\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 10\n                },\n                {\n                    \"name\": \"Critical Strike Chance\",\n                    \"values\": [\n                        [\n                            \"5.00%\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 12\n                },\n                {\n                    \"name\": \"Attacks per Second\",\n                    \"values\": [\n                        [\n                            \"1.44\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 13\n                },\n                {\n                    \"name\": \"Weapon Range\",\n                    \"values\": [\n                        [\n                            \"9\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 14\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"51\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Str\",\n                    \"values\": [\n                        [\n                            \"134\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                },\n                {\n                    \"name\": \"Dex\",\n                    \"values\": [\n                        [\n                            \"39\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"explicitMods\": [\n                \"Adds 3 to 43 Lightning Damage\",\n                \"20% increased Attack Speed\",\n                \"+3 Life gained on Kill\",\n                \"+4 Mana gained on Kill\"\n            ],\n            \"frameType\": 2,\n            \"x\": 0,\n            \"y\": 9,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 3,\n            \"ilvl\": 76,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyDex3C.png?scale=1&scaleIndex=0&w=2&h=3&v=54c1559d59813905d1547099cf4c69503\",\n            \"league\": \"Harbinger\",\n            \"id\": \"87a5802806057baa46ea560ee2be97f2ae8fa2b8c379be1bba1db03dfda87ea3\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"D\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"D\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Storm Sanctuary\",\n            \"typeLine\": \"Zodiac Leather\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Quality\",\n                    \"values\": [\n                        [\n                            \"+6%\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 6\n                },\n                {\n                    \"name\": \"Evasion Rating\",\n                    \"values\": [\n                        [\n                            \"909\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 17\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"65\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Dex\",\n                    \"values\": [\n                        [\n                            \"197\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"explicitMods\": [\n                \"+4 to Evasion Rating\",\n                \"+94 to maximum Life\",\n                \"4 Life Regenerated per second\",\n                \"+24% to Fire Resistance\",\n                \"21% increased Stun and Block Recovery\",\n                \"Reflects 2 Physical Damage to Melee Attackers\"\n            ],\n            \"frameType\": 2,\n            \"x\": 4,\n            \"y\": 0,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 1,\n            \"h\": 3,\n            \"ilvl\": 79,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand1Unique.png?scale=1&scaleIndex=0&w=1&h=3&v=9a831a4eb656c91771da4a3d4fe376fb3\",\n            \"league\": \"Harbinger\",\n            \"id\": \"327be7d5155f17fc48b428baa670e5933a70b617d244a037d9f7d6ba025809e8\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"I\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Twyzel\",\n            \"typeLine\": \"Sage Wand\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Wand\",\n                    \"values\": [\n\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Physical Damage\",\n                    \"values\": [\n                        [\n                            \"48-95\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 9\n                },\n                {\n                    \"name\": \"Critical Strike Chance\",\n                    \"values\": [\n                        [\n                            \"9.04%\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 12\n                },\n                {\n                    \"name\": \"Attacks per Second\",\n                    \"values\": [\n                        [\n                            \"1.29\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 13\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"30\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Int\",\n                    \"values\": [\n                        [\n                            \"119\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"implicitMods\": [\n                \"18% increased Spell Damage\"\n            ],\n            \"explicitMods\": [\n                \"Socketed Gems fire an additional Projectile\",\n                \"86% increased Physical Damage\",\n                \"Adds 7 to 16 Physical Damage\",\n                \"7% increased Attack Speed\",\n                \"13% increased Critical Strike Chance\"\n            ],\n            \"flavourText\": [\n                \"Life persisted,\\r\",\n                \"hardened, twisted.\"\n            ],\n            \"frameType\": 3,\n            \"x\": 9,\n            \"y\": 0,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 2,\n            \"ilvl\": 80,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Helmets\\/HelmetStrDex8.png?scale=1&scaleIndex=0&w=2&h=2&v=e041f1d30cb6e997023b09d2a822b7a63\",\n            \"league\": \"Harbinger\",\n            \"id\": \"98b92ab09c72f408887a523e9f7b78ae64365cb518757d814e0c5e50275ad119\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"D\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"D\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"S\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"D\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Sorrow Keep\",\n            \"typeLine\": \"Fluted Bascinet\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Armour\",\n                    \"values\": [\n                        [\n                            \"218\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 16\n                },\n                {\n                    \"name\": \"Evasion Rating\",\n                    \"values\": [\n                        [\n                            \"224\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 17\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"58\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Str\",\n                    \"values\": [\n                        [\n                            \"64\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                },\n                {\n                    \"name\": \"Dex\",\n                    \"values\": [\n                        [\n                            \"64\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"explicitMods\": [\n                \"+5 to Accuracy Rating\",\n                \"+3 to Armour\",\n                \"+7 to Evasion Rating\",\n                \"34% increased Armour and Evasion\",\n                \"+74 to maximum Life\",\n                \"+30% to Fire Resistance\",\n                \"+8% to Lightning Resistance\",\n                \"14% increased Stun and Block Recovery\"\n            ],\n            \"frameType\": 2,\n            \"x\": 2,\n            \"y\": 5,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 2,\n            \"ilvl\": 80,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Boots\\/BootsStrDex3.png?scale=1&scaleIndex=0&w=2&h=2&v=601dc135a14c1121dca118c2640a13353\",\n            \"league\": \"Harbinger\",\n            \"id\": \"ae4302f647dd90a186417bd63b3c62abc66813b1c7de0613df4e3db13eda3f19\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"D\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Viper Track\",\n            \"typeLine\": \"Bronzescale Boots\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Armour\",\n                    \"values\": [\n                        [\n                            \"59\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 16\n                },\n                {\n                    \"name\": \"Evasion Rating\",\n                    \"values\": [\n                        [\n                            \"59\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 17\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"43\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Str\",\n                    \"values\": [\n                        [\n                            \"30\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                },\n                {\n                    \"name\": \"Dex\",\n                    \"values\": [\n                        [\n                            \"30\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"explicitMods\": [\n                \"+15 to Strength\",\n                \"+16 to Dexterity\",\n                \"7% increased Armour and Evasion\",\n                \"+89 to maximum Life\",\n                \"6% increased Stun and Block Recovery\"\n            ],\n            \"frameType\": 2,\n            \"x\": 2,\n            \"y\": 3,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 3,\n            \"ilvl\": 80,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyStrInt3C.png?scale=1&scaleIndex=0&w=2&h=3&v=bbdf9f67046cb1f1c0311066d0f7fada3\",\n            \"league\": \"Harbinger\",\n            \"id\": \"f5f4f45fd75fcd9843e5997a9bcb9657bf9574b8354deb10ad5076224d349db9\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"S\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"I\"\n                },\n                {\n                    \"group\": 2,\n                    \"attr\": \"S\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Havoc Wrap\",\n            \"typeLine\": \"Devout Chainmail\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Armour\",\n                    \"values\": [\n                        [\n                            \"302\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 16\n                },\n                {\n                    \"name\": \"Energy Shield\",\n                    \"values\": [\n                        [\n                            \"59\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 18\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"59\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Str\",\n                    \"values\": [\n                        [\n                            \"80\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                },\n                {\n                    \"name\": \"Int\",\n                    \"values\": [\n                        [\n                            \"80\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"explicitMods\": [\n                \"+45 to Strength\",\n                \"+49 to maximum Life\",\n                \"4.9 Life Regenerated per second\",\n                \"+54 to maximum Mana\"\n            ],\n            \"frameType\": 2,\n            \"x\": 0,\n            \"y\": 3,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 3,\n            \"ilvl\": 77,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyStr4A.png?scale=1&scaleIndex=0&w=2&h=3&v=f9314c7ebb635aa283be76640df8ff003\",\n            \"league\": \"Harbinger\",\n            \"id\": \"3dc54d384857f62babfee017ddac82691189554f25472b671dfbb740169d6248\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Havoc Veil\",\n            \"typeLine\": \"Battle Lamellar\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Armour\",\n                    \"values\": [\n                        [\n                            \"300\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 16\n                },\n                {\n                    \"name\": \"Evasion Rating\",\n                    \"values\": [\n                        [\n                            \"304\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 17\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"58\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Str\",\n                    \"values\": [\n                        [\n                            \"53\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 1\n                },\n                {\n                    \"name\": \"Dex\",\n                    \"values\": [\n                        [\n                            \"53\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"explicitMods\": [\n                \"+3 to Armour\",\n                \"+7 to Evasion Rating\",\n                \"+104 to maximum Life\",\n                \"22% increased Stun and Block Recovery\",\n                \"32% reduced Attribute Requirements\",\n                \"4% chance to Dodge Attacks\"\n            ],\n            \"frameType\": 2,\n            \"x\": 2,\n            \"y\": 7,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 3,\n            \"ilvl\": 75,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Scepters\\/scepter8.png?scale=1&scaleIndex=0&w=2&h=3&v=f1b80e8b35ecb64cf2441a9ef9a395623\",\n            \"league\": \"Harbinger\",\n            \"id\": \"3e3087df506972b39bf2ef8a111fd90a0a61d01360278288b4d89bad41f782f8\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"D\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"I\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Dire Grinder\",\n            \"typeLine\": \"Void Sceptre\",\n            \"identified\": true,\n            \"corrupted\": true,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"One Handed Mace\",\n                    \"values\": [\n\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Physical Damage\",\n                    \"values\": [\n                        [\n                            \"50-76\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 9\n                },\n                {\n                    \"name\": \"Elemental Damage\",\n                    \"values\": [\n                        [\n                            \"31-61\",\n                            4\n                        ],\n                        [\n                            \"43-82\",\n                            5\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 10\n                },\n                {\n                    \"name\": \"Critical Strike Chance\",\n                    \"values\": [\n                        [\n                            \"6.20%\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 12\n                },\n                {\n                    \"name\": \"Attacks per Second\",\n                    \"values\": [\n                        [\n                            \"1.25\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 13\n                },\n                {\n                    \"name\": \"Weapon Range\",\n                    \"values\": [\n                        [\n                            \"9\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 14\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"68\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Str\",\n                    \"values\": [\n                        [\n                            \"70\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 1\n                },\n                {\n                    \"name\": \"Int\",\n                    \"values\": [\n                        [\n                            \"82\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"implicitMods\": [\n                \"40% increased Elemental Damage\"\n            ],\n            \"explicitMods\": [\n                \"+2 to Level of Socketed Cold Gems\",\n                \"Adds 31 to 61 Fire Damage\",\n                \"Adds 43 to 82 Cold Damage\",\n                \"12% reduced Enemy Stun Threshold\",\n                \"28% increased Burning Damage\",\n                \"32% reduced Attribute Requirements\"\n            ],\n            \"frameType\": 2,\n            \"x\": 4,\n            \"y\": 3,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 2,\n            \"ilvl\": 77,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Boots\\/BootsDexInt4.png?scale=1&scaleIndex=0&w=2&h=2&v=bfbd6b83d1a5a8dafbae030a0041b5fe3\",\n            \"league\": \"Harbinger\",\n            \"id\": \"7ba135db5fb4026a9c83146bbee7134e4b5efb4996e5ef091eabffe523a248c2\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"D\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"I\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Cataclysm Urge\",\n            \"typeLine\": \"Carnal Boots\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Evasion Rating\",\n                    \"values\": [\n                        [\n                            \"105\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 17\n                },\n                {\n                    \"name\": \"Energy Shield\",\n                    \"values\": [\n                        [\n                            \"20\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 18\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"55\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Dex\",\n                    \"values\": [\n                        [\n                            \"52\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                },\n                {\n                    \"name\": \"Int\",\n                    \"values\": [\n                        [\n                            \"52\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"explicitMods\": [\n                \"+26 to Dexterity\",\n                \"6% increased Evasion and Energy Shield\",\n                \"+88 to maximum Life\",\n                \"+48 to maximum Mana\",\n                \"6% increased Stun and Block Recovery\"\n            ],\n            \"frameType\": 2,\n            \"x\": 2,\n            \"y\": 10,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 3,\n            \"ilvl\": 78,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyStrDexInt1C.png?scale=1&scaleIndex=0&w=2&h=3&v=5a4eb9d863bef835aa3d9cc9224f51a53\",\n            \"league\": \"Harbinger\",\n            \"id\": \"8f7038aa6bce476a009caede63a19ec32b215cca93fd310d623974778eae1ad6\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"I\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"I\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"D\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"I\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Chimeric Jack\",\n            \"typeLine\": \"Vaal Regalia\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Energy Shield\",\n                    \"values\": [\n                        [\n                            \"263\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 18\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"68\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Int\",\n                    \"values\": [\n                        [\n                            \"194\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"explicitMods\": [\n                \"+77 to maximum Life\",\n                \"4.2 Life Regenerated per second\",\n                \"34% increased Energy Shield\",\n                \"+33 to maximum Energy Shield\",\n                \"15% increased Stun and Block Recovery\"\n            ],\n            \"frameType\": 2,\n            \"x\": 2,\n            \"y\": 0,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 3,\n            \"ilvl\": 78,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyInt2C.png?scale=1&scaleIndex=0&w=2&h=3&v=3230b59077d8340c5b49196cce65e9563\",\n            \"league\": \"Harbinger\",\n            \"id\": \"2963ad0d89a0b05b7a63baeb86f285e0d17e364b430e948b752bbde2f5bd0f8e\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"I\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"I\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"I\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Maelstr\\u00f6m Coat\",\n            \"typeLine\": \"Spidersilk Robe\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Energy Shield\",\n                    \"values\": [\n                        [\n                            \"219\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 18\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"62\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Int\",\n                    \"values\": [\n                        [\n                            \"134\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"explicitMods\": [\n                \"+24 to Intelligence\",\n                \"+7 to maximum Life\",\n                \"128% increased Energy Shield\",\n                \"+37% to Fire Resistance\",\n                \"+39% to Lightning Resistance\",\n                \"17% increased Stun and Block Recovery\"\n            ],\n            \"frameType\": 2,\n            \"x\": 0,\n            \"y\": 6,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 1,\n            \"h\": 3,\n            \"ilvl\": 77,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/OneHandMaces\\/OneHandMace2.png?scale=1&scaleIndex=0&w=1&h=3&v=a46820a7c96f601ec6412fa51e8a86cd3\",\n            \"league\": \"Harbinger\",\n            \"id\": \"0f36d0255c2a59fd5ded61550c513b59cd550c75ac80f9c2844c84a7845eb0a2\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"I\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Viper Brand\",\n            \"typeLine\": \"Ancestral Club\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"One Handed Mace\",\n                    \"values\": [\n\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Physical Damage\",\n                    \"values\": [\n                        [\n                            \"66-117\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 9\n                },\n                {\n                    \"name\": \"Elemental Damage\",\n                    \"values\": [\n                        [\n                            \"1-3\",\n                            5\n                        ],\n                        [\n                            \"1-6\",\n                            6\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 10\n                },\n                {\n                    \"name\": \"Critical Strike Chance\",\n                    \"values\": [\n                        [\n                            \"5.00%\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 12\n                },\n                {\n                    \"name\": \"Attacks per Second\",\n                    \"values\": [\n                        [\n                            \"1.40\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 13\n                },\n                {\n                    \"name\": \"Weapon Range\",\n                    \"values\": [\n                        [\n                            \"9\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 14\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"56\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Str\",\n                    \"values\": [\n                        [\n                            \"179\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"implicitMods\": [\n                \"10% reduced Enemy Stun Threshold\"\n            ],\n            \"explicitMods\": [\n                \"Adds 18 to 37 Physical Damage\",\n                \"+39 to Strength\",\n                \"Adds 1 to 3 Cold Damage\",\n                \"Adds 1 to 6 Lightning Damage\",\n                \"12% increased Attack Speed\",\n                \"10% chance to cause Bleeding on Hit\"\n            ],\n            \"frameType\": 2,\n            \"x\": 7,\n            \"y\": 3,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 3,\n            \"ilvl\": 72,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/OneHandAxes\\/OneHandAxe4.png?scale=1&scaleIndex=0&w=2&h=3&v=a89a2c0b7638bcc048ccae09caad97013\",\n            \"league\": \"Harbinger\",\n            \"id\": \"463b3857abc142dd8c2d89cc879e5ae9634d68c5e36255b6fb44414f732ddd40\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"S\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Oblivion Etcher\",\n            \"typeLine\": \"Wrist Chopper\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"One Handed Axe\",\n                    \"values\": [\n\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Physical Damage\",\n                    \"values\": [\n                        [\n                            \"26-79\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 9\n                },\n                {\n                    \"name\": \"Critical Strike Chance\",\n                    \"values\": [\n                        [\n                            \"5.00%\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 12\n                },\n                {\n                    \"name\": \"Attacks per Second\",\n                    \"values\": [\n                        [\n                            \"1.45\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 13\n                },\n                {\n                    \"name\": \"Weapon Range\",\n                    \"values\": [\n                        [\n                            \"9\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 14\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"57\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Str\",\n                    \"values\": [\n                        [\n                            \"112\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                },\n                {\n                    \"name\": \"Dex\",\n                    \"values\": [\n                        [\n                            \"32\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"explicitMods\": [\n                \"+1 to Level of Socketed Melee Gems\",\n                \"21% increased Attack Speed\",\n                \"+35% to Fire Resistance\",\n                \"+44% to Cold Resistance\"\n            ],\n            \"frameType\": 2,\n            \"x\": 6,\n            \"y\": 0,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 1,\n            \"h\": 3,\n            \"ilvl\": 73,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Weapons\\/OneHandWeapons\\/Wands\\/Wand6.png?scale=1&scaleIndex=0&w=1&h=3&v=54ba351a078c22737d02dfcec84665853\",\n            \"league\": \"Harbinger\",\n            \"id\": \"664650a437c2c920d1d01e7477e344d847ba0de4c175b769edbdff33bcebe60d\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"I\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"I\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Dragon Song\",\n            \"typeLine\": \"Omen Wand\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Wand\",\n                    \"values\": [\n\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Physical Damage\",\n                    \"values\": [\n                        [\n                            \"27-50\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 9\n                },\n                {\n                    \"name\": \"Elemental Damage\",\n                    \"values\": [\n                        [\n                            \"35-65\",\n                            5\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 10\n                },\n                {\n                    \"name\": \"Critical Strike Chance\",\n                    \"values\": [\n                        [\n                            \"8.00%\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 12\n                },\n                {\n                    \"name\": \"Attacks per Second\",\n                    \"values\": [\n                        [\n                            \"1.20\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 13\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"57\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Int\",\n                    \"values\": [\n                        [\n                            \"200\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"implicitMods\": [\n                \"29% increased Spell Damage\"\n            ],\n            \"explicitMods\": [\n                \"Adds 35 to 65 Cold Damage\",\n                \"Adds 3 to 75 Lightning Damage to Spells\",\n                \"20% increased Cast Speed\",\n                \"+18% to Cold Resistance\",\n                \"+19% to Lightning Resistance\"\n            ],\n            \"frameType\": 2,\n            \"x\": 6,\n            \"y\": 3,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 1,\n            \"h\": 1,\n            \"ilvl\": 77,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Rings\\/Ring2Unique.png?scale=1&scaleIndex=0&w=1&h=1&v=69b20a8f918e7b2465421b57aa2a817e3\",\n            \"league\": \"Harbinger\",\n            \"id\": \"4f30ec8dcb83a3dbc322ce806c04e42691fc7f4c7c53e719fd410cff78d38b43\",\n            \"sockets\": [\n\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Kaom's Sign\",\n            \"typeLine\": \"Coral Ring\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"implicitMods\": [\n                \"+28 to maximum Life\"\n            ],\n            \"explicitMods\": [\n                \"+13 to Strength\",\n                \"+3 Life gained for each Enemy hit by your Attacks\",\n                \"+1 to Maximum Endurance Charges\"\n            ],\n            \"flavourText\": [\n                \"A token from the sea\\r\",\n                \"A sign for Kaom\\r\",\n                \"to lead his Karui to Wraeclast.\"\n            ],\n            \"frameType\": 3,\n            \"x\": 8,\n            \"y\": 1,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 1,\n            \"ilvl\": 75,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Belts\\/Belt3.png?scale=1&scaleIndex=0&w=2&h=1&v=a559821037f54c94dae053b90bcea3633\",\n            \"league\": \"Harbinger\",\n            \"id\": \"614abae85361069db49c5ee124b5c91ba5c214ef6b7bb1d373e40ef18ca5b7eb\",\n            \"sockets\": [\n\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Storm Locket\",\n            \"typeLine\": \"Leather Belt\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"43\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                }\n            ],\n            \"implicitMods\": [\n                \"+28 to maximum Life\"\n            ],\n            \"explicitMods\": [\n                \"+86 to maximum Life\",\n                \"+25% to Fire Resistance\",\n                \"+14% to Lightning Resistance\",\n                \"16% increased Stun and Block Recovery\"\n            ],\n            \"frameType\": 2,\n            \"x\": 8,\n            \"y\": 3,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 3,\n            \"ilvl\": 77,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyStr3C.png?scale=1&scaleIndex=0&w=2&h=3&v=6bbdcc26e9e31b2cf79a6f0fecdf573f3\",\n            \"league\": \"Harbinger\",\n            \"id\": \"171ceaa6f5da63da9ea787a61c0ec1c569370d5ad959e7dd85b0df49336db4f5\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Soul Sanctuary\",\n            \"typeLine\": \"Glorious Plate\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Armour\",\n                    \"values\": [\n                        [\n                            \"1055\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 16\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"68\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Str\",\n                    \"values\": [\n                        [\n                            \"191\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"explicitMods\": [\n                \"36% increased Armour\",\n                \"+25% to Fire Resistance\",\n                \"+36% to Cold Resistance\",\n                \"+15% to Lightning Resistance\"\n            ],\n            \"frameType\": 2,\n            \"x\": 6,\n            \"y\": 8,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 1,\n            \"h\": 1,\n            \"ilvl\": 77,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Rings\\/Ring1.png?scale=1&scaleIndex=0&w=1&h=1&v=7c04d5a65caa0371eccfe06a129a74073\",\n            \"league\": \"Harbinger\",\n            \"id\": \"bdcc88524db0629860ed8df0bcd3e9157fadb81c6597e392e8ad3d5d9f3099ad\",\n            \"sockets\": [\n\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Glyph Twirl\",\n            \"typeLine\": \"Iron Ring\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"59\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                }\n            ],\n            \"implicitMods\": [\n                \"Adds 1 to 4 Physical Damage to Attacks\"\n            ],\n            \"explicitMods\": [\n                \"+11 to all Attributes\",\n                \"+71 to maximum Life\",\n                \"+56 to maximum Mana\",\n                \"35% increased Mana Regeneration Rate\",\n                \"+44 to maximum Energy Shield\",\n                \"+32% to Cold Resistance\"\n            ],\n            \"frameType\": 2,\n            \"x\": 7,\n            \"y\": 11,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 2,\n            \"ilvl\": 71,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Boots\\/BootsStr2.png?scale=1&scaleIndex=0&w=2&h=2&v=399734b915715a11364011fd9451b3703\",\n            \"league\": \"Harbinger\",\n            \"id\": \"de2566a16679df0b9e8f0c09b6e547870418fea75c0748683ab762c3505dc1b9\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"I\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Havoc Span\",\n            \"typeLine\": \"Antique Greaves\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Armour\",\n                    \"values\": [\n                        [\n                            \"122\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 16\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"48\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Str\",\n                    \"values\": [\n                        [\n                            \"67\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"explicitMods\": [\n                \"+15 to Strength\",\n                \"+40% to Fire Resistance\",\n                \"+23% to Lightning Resistance\",\n                \"15% increased Movement Speed\"\n            ],\n            \"frameType\": 2,\n            \"x\": 6,\n            \"y\": 6,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 3,\n            \"ilvl\": 77,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/BodyArmours\\/BodyStrInt3C.png?scale=1&scaleIndex=0&w=2&h=3&v=bbdf9f67046cb1f1c0311066d0f7fada3\",\n            \"league\": \"Harbinger\",\n            \"id\": \"1dd2a07f6ca3246a19e3561032f2bc741225eae1a5af77629bf6b384f27ee78d\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"I\"\n                },\n                {\n                    \"group\": 1,\n                    \"attr\": \"I\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Beast Cloak\",\n            \"typeLine\": \"Saintly Chainmail\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Armour\",\n                    \"values\": [\n                        [\n                            \"734\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 16\n                },\n                {\n                    \"name\": \"Energy Shield\",\n                    \"values\": [\n                        [\n                            \"167\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 18\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"70\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Str\",\n                    \"values\": [\n                        [\n                            \"99\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                },\n                {\n                    \"name\": \"Int\",\n                    \"values\": [\n                        [\n                            \"115\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"explicitMods\": [\n                \"83% increased Armour and Energy Shield\",\n                \"+25 to maximum Life\",\n                \"+58 to maximum Mana\",\n                \"+43% to Fire Resistance\",\n                \"+37% to Cold Resistance\",\n                \"+18% to Chaos Resistance\"\n            ],\n            \"frameType\": 2,\n            \"x\": 8,\n            \"y\": 4,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 2,\n            \"ilvl\": 71,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Shields\\/ShieldInt2.png?scale=1&scaleIndex=0&w=2&h=2&v=f61607beff0c7673614474b800a091d93\",\n            \"league\": \"Harbinger\",\n            \"id\": \"9bbe4c9d743e2fadc48f23facbe219519e17e0dffeab7e34d0603dc1f81deb3e\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"D\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Apocalypse Song\",\n            \"typeLine\": \"Lacewood Spirit Shield\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Chance to Block\",\n                    \"values\": [\n                        [\n                            \"24%\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 15\n                },\n                {\n                    \"name\": \"Energy Shield\",\n                    \"values\": [\n                        [\n                            \"73\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 18\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"56\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Int\",\n                    \"values\": [\n                        [\n                            \"134\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"implicitMods\": [\n                \"7% increased Spell Damage\"\n            ],\n            \"explicitMods\": [\n                \"40% increased Spell Damage\",\n                \"28% increased Mana Regeneration Rate\",\n                \"+28 to maximum Energy Shield\",\n                \"+37% to Fire Resistance\",\n                \"+35% to Lightning Resistance\"\n            ],\n            \"frameType\": 2,\n            \"x\": 4,\n            \"y\": 10,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 1,\n            \"h\": 1,\n            \"ilvl\": 76,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Rings\\/TopazSapphire.png?scale=1&scaleIndex=0&w=1&h=1&v=b7334698bf04b28f755467f256a3276b3\",\n            \"league\": \"Harbinger\",\n            \"id\": \"5892202c94e98471203e122b87d2fd864ab40ad34580c5416083bb715ea5e50a\",\n            \"sockets\": [\n\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Golem Whorl\",\n            \"typeLine\": \"Two-Stone Ring\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"48\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                }\n            ],\n            \"implicitMods\": [\n                \"+12% to Cold and Lightning Resistances\"\n            ],\n            \"explicitMods\": [\n                \"+23 to Dexterity\",\n                \"+169 to Accuracy Rating\",\n                \"+74 to maximum Life\",\n                \"+56 to maximum Mana\"\n            ],\n            \"frameType\": 2,\n            \"x\": 6,\n            \"y\": 11,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        },\n        {\n            \"verified\": false,\n            \"w\": 2,\n            \"h\": 4,\n            \"ilvl\": 78,\n            \"icon\": \"https:\\/\\/web.poecdn.com\\/image\\/Art\\/2DItems\\/Armours\\/Shields\\/ShieldStr7.png?scale=1&scaleIndex=0&w=2&h=4&v=aac930a9a0f3a17f498ba8e2e3e512ea3\",\n            \"league\": \"Harbinger\",\n            \"id\": \"7de496f5b176a7740d79a3ed7c27fcd5c3f04146d7284b8fc8773d7007a5c4cc\",\n            \"sockets\": [\n                {\n                    \"group\": 0,\n                    \"attr\": \"D\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                },\n                {\n                    \"group\": 0,\n                    \"attr\": \"S\"\n                }\n            ],\n            \"name\": \"<<set:MS>><<set:M>><<set:S>>Sol Badge\",\n            \"typeLine\": \"Pinnacle Tower Shield\",\n            \"identified\": true,\n            \"corrupted\": false,\n            \"lockedToCharacter\": false,\n            \"properties\": [\n                {\n                    \"name\": \"Quality\",\n                    \"values\": [\n                        [\n                            \"+20%\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 6\n                },\n                {\n                    \"name\": \"Chance to Block\",\n                    \"values\": [\n                        [\n                            \"25%\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 15\n                },\n                {\n                    \"name\": \"Armour\",\n                    \"values\": [\n                        [\n                            \"878\",\n                            1\n                        ]\n                    ],\n                    \"displayMode\": 0,\n                    \"type\": 16\n                }\n            ],\n            \"requirements\": [\n                {\n                    \"name\": \"Level\",\n                    \"values\": [\n                        [\n                            \"70\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 0\n                },\n                {\n                    \"name\": \"Str\",\n                    \"values\": [\n                        [\n                            \"159\",\n                            0\n                        ]\n                    ],\n                    \"displayMode\": 1\n                }\n            ],\n            \"implicitMods\": [\n                \"+25 to maximum Life\"\n            ],\n            \"explicitMods\": [\n                \"+107 to maximum Life\",\n                \"+8% to all Elemental Resistances\",\n                \"+29% to Cold Resistance\",\n                \"+17% to Chaos Resistance\"\n            ],\n            \"craftedMods\": [\n                \"68% increased Armour\"\n            ],\n            \"frameType\": 2,\n            \"x\": 4,\n            \"y\": 6,\n            \"inventoryId\": \"Stash20\",\n            \"socketedItems\": [\n\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleStashWithScarab.json",
    "content": "{\n  \"numTabs\": 1,\n  \"tabs\": [\n    {\n      \"n\": \"Scarab\",\n      \"i\": 1,\n      \"id\": \"003864bc2a05733e0511ec9a10baaab91d05431a924192b4d47362f51e8c35ed\",\n      \"type\": \"PremiumStash\",\n      \"hidden\": false,\n      \"selected\": true,\n      \"colour\": {\n        \"r\": 191,\n        \"g\": 94,\n        \"b\": 0\n      },\n      \"srcL\": \"https://web.poecdn.com/gen/image/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTQyMzU3NzZ9XV0,/2c8b976348/Stash_TabL.png\",\n      \"srcC\": \"https://web.poecdn.com/gen/image/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTQyMzU3NzZ9XV0,/0e65837146/Stash_TabC.png\",\n      \"srcR\": \"https://web.poecdn.com/gen/image/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTQyMzU3NzZ9XV0,/3c4393c68a/Stash_TabR.png\"\n    }\n  ],\n  \"items\": [\n    {\n      \"verified\": true,\n      \"w\": 1,\n      \"h\": 1,\n      \"ilvl\": 0,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Currency/Scarabs/GreaterScarabBreach.png?scale=1&scaleIndex=0&w=1&h=1\",\n      \"league\": \"Betrayal\",\n      \"name\": \"\",\n      \"typeLine\": \"Gilded Breach Scarab\",\n      \"identified\": true,\n      \"explicitMods\": [\n        \"Area contains 3 additional Breaches\"\n      ],\n      \"descrText\": \"Can be used in the Templar Laboratory or a personal Map Device to add modifiers to a Map.\",\n      \"flavourText\": [\n        \"Omid, Master Researcher, has left a final commandment upon his death:\\r\",\n        \"the world must never know.\"\n      ],\n      \"frameType\": 0,\n      \"category\": {\n        \"maps\": [ \"fragment\", \"scarab\" ]\n      },\n      \"inventoryId\": \"Stash2\"\n    }\n  ]\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/TestData/SampleStashWithSynthesisItems.json",
    "content": "﻿{\n  \"numTabs\":1,\n  \"tabs\":[\n    {\n      \"n\": \"Synthesis\",\n      \"i\": 1,\n      \"id\": \"003864bc2a05733e0511ec9a10baaab91d05431a924192b4d47362f51e8c35ed\",\n      \"type\": \"PremiumStash\",\n      \"hidden\": false,\n      \"selected\": true,\n      \"colour\": {\n        \"r\": 191,\n        \"g\": 94,\n        \"b\": 0\n      },\n      \"srcL\": \"https://web.poecdn.com/gen/image/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoxLCJuIjoiIiwiYyI6LTQyMzU3NzZ9XV0,/2c8b976348/Stash_TabL.png\",\n      \"srcC\": \"https://web.poecdn.com/gen/image/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjoyLCJuIjoiIiwiYyI6LTQyMzU3NzZ9XV0,/0e65837146/Stash_TabC.png\",\n      \"srcR\": \"https://web.poecdn.com/gen/image/WzI0LCIwMmExOTc3ZDFkMDM0NDM2ZTc3MzlmODNkMTNiMjA3ZiIsWzIseyJ0IjozLCJuIjoiIiwiYyI6LTQyMzU3NzZ9XV0,/3c4393c68a/Stash_TabR.png\"\n    }\n  ],\n  \"items\":[\n    {\n      \"inventoryId\": \"Stash2\",\n      \"verified\": false,\n      \"w\": 2,\n      \"h\": 3,\n      \"ilvl\": 90,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Armours/Shields/ShieldStrInt3.png?scale=1&w=2&h=3&synthesised=true\",\n      \"league\": \"Synthesis\",\n      \"synthesised\": true,\n      \"sockets\": [\n        {\n          \"group\": 0,\n          \"attr\": \"I\",\n          \"sColour\": \"B\"\n        },\n        {\n          \"group\": 0,\n          \"attr\": \"I\",\n          \"sColour\": \"B\"\n        },\n        {\n          \"group\": 1,\n          \"attr\": \"S\",\n          \"sColour\": \"R\"\n        }\n      ],\n      \"name\": \"\",\n      \"typeLine\": \"Superior Synthesised Laminated Kite Shield\",\n      \"identified\": true,\n      \"properties\": [\n        {\n          \"name\": \"Quality\",\n          \"values\": [\n            [\n              \"+3%\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 6\n        },\n        {\n          \"name\": \"Chance to Block\",\n          \"values\": [\n            [\n              \"24%\",\n              0\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 15\n        },\n        {\n          \"name\": \"Armour\",\n          \"values\": [\n            [\n              \"116\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 16\n        },\n        {\n          \"name\": \"Energy Shield\",\n          \"values\": [\n            [\n              \"23\",\n              1\n            ]\n          ],\n          \"displayMode\": 0,\n          \"type\": 18\n        }\n      ],\n      \"requirements\": [\n        {\n          \"name\": \"Level\",\n          \"values\": [\n            [\n              \"50\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        },\n        {\n          \"name\": \"Str\",\n          \"values\": [\n            [\n              \"64\",\n              0\n            ]\n          ],\n          \"displayMode\": 1\n        },\n        {\n          \"name\": \"Int\",\n          \"values\": [\n            [\n              \"64\",\n              0\n            ]\n          ],\n          \"displayMode\": 1\n        }\n      ],\n      \"implicitMods\": [\n        \"Socketed Gems have 10% reduced Mana Reservation\"\n      ],\n      \"frameType\": 0,\n      \"category\": {\n        \"armour\": [\n          \"shield\"\n        ]\n      },\n      \"socketedItems\": [\n\n      ]\n    },\n    {\n      \"inventoryId\": \"Stash2\",\n      \"verified\": true,\n      \"w\": 2,\n      \"h\": 1,\n      \"ilvl\": 90,\n      \"icon\": \"https://web.poecdn.com/image/Art/2DItems/Belts/Belt3.png?scale=1&w=2&h=1&fractured=true\",\n      \"league\": \"Synthesis\",\n      \"fractured\": true,\n      \"name\": \"Hate Trap\",\n      \"typeLine\": \"Leather Belt\",\n      \"identified\": true,\n      \"requirements\": [\n        {\n          \"name\": \"Level\",\n          \"values\": [\n            [\n              \"67\",\n              0\n            ]\n          ],\n          \"displayMode\": 0\n        }\n      ],\n      \"implicitMods\": [\n        \"+38 to maximum Life\"\n      ],\n      \"explicitMods\": [\n        \"+393 to Armour\",\n        \"+48% to Lightning Resistance\",\n        \"19% increased Stun and Block Recovery\"\n      ],\n      \"fracturedMods\": [\n        \"+40 to maximum Energy Shield\",\n        \"+42% to Cold Resistance\"\n      ],\n      \"frameType\": 2,\n      \"category\": {\n        \"accessories\": [\n          \"belt\"\n        ]\n      }\n    }\n  ]\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/UnitTestHelper.cs",
    "content": "using System.IO;\n\nnamespace POEApi.Model.Tests\n{\n    public static class UnitTestHelper\n    {\n        public static Stream GenerateStreamFromString(string s)\n        {\n            var stream = new MemoryStream();\n            var writer = new StreamWriter(stream);\n            writer.Write(s);\n            writer.Flush();\n            stream.Position = 0;\n            return stream;\n        }\n    }\n}"
  },
  {
    "path": "Tests/POEApi.Model.Tests/UnknownItemTests.cs",
    "content": "﻿using FluentAssertions;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing POEApi.TestHelpers.Builders;\n\nnamespace POEApi.Model.Tests\n{\n    [TestClass]\n    public class UnknownItemTests\n    {\n        [TestMethod]\n        public void UnknownItem_EmptyConstructor()\n        {\n            var item = new UnknownItem();\n            item.Quality.Should().Be(0);\n            item.IsQuality.Should().BeFalse();\n            item.TypeLine.Should().BeNull();\n            item.DescriptiveName.Should().Be(\"[Unknown Item]\");\n            item.ItemSource.Should().BeNull();\n            item.ErrorInformation.Should().BeNull();\n        }\n\n        [TestMethod]\n        public void UnknownItem_IdentifiedItems_DescriptiveNameProducesCorrectDescription()\n        {\n            JSONProxy.Item normalProxyItem = Build.A.JsonProxyItem.WithFrameType((int)Rarity.Normal).WithItemLevel(10)\n                .WithTypeLine(\"Tricorne\").WithQuality(9);\n            JSONProxy.Item magicProxyItem = Build.A.JsonProxyItem.WithFrameType((int)Rarity.Magic).WithItemLevel(15)\n                .WithTypeLine(\"Noble Tricorne\").ThatIsIdentified(false);\n            JSONProxy.Item rareProxyItem = Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20)\n                .WithTypeLine(\"Sinner Tricorne\").WithQuality(0).ThatIsIdentified(false).WithName(\"Fantastic Voyage\");\n            JSONProxy.Item uniqueProxyItem = Build.A.JsonProxyItem.WithFrameType((int)Rarity.Unique).WithItemLevel(30)\n                .WithTypeLine(\"Sinner Tricorne\").WithQuality(20).ThatIsIdentified(false)\n                .WithName(\"Kender's Confidence\");\n\n            var normalItem = new UnknownItem(normalProxyItem);\n            normalItem.Quality.Should().Be(9);\n            normalItem.IsQuality.Should().BeTrue();\n            normalItem.TypeLine.Should().Be(\"Tricorne\");\n            normalItem.DescriptiveName.Should().Be(\"[Unknown Item] Tricorne, +9% Quality, i10\");\n            normalItem.ItemSource.Should().Be(normalProxyItem);\n            normalItem.ErrorInformation.Should().BeNull();\n\n            var magicItem = new UnknownItem(magicProxyItem);\n            magicItem.Quality.Should().Be(0);\n            magicItem.IsQuality.Should().BeFalse();\n            magicItem.TypeLine.Should().Be(\"Noble Tricorne\");\n            magicItem.DescriptiveName.Should().Be(\"[Unknown Item] Noble Tricorne, i15\");\n            magicItem.ItemSource.Should().Be(magicProxyItem);\n            magicItem.ErrorInformation.Should().BeNull();\n\n            var rareItem = new UnknownItem(rareProxyItem);\n            rareItem.Quality.Should().Be(0);\n            rareItem.IsQuality.Should().BeTrue();\n            rareItem.TypeLine.Should().Be(\"Sinner Tricorne\");\n            rareItem.DescriptiveName.Should().Be(\"[Unknown Item] Sinner Tricorne, +0% Quality, i20\");\n            rareItem.ItemSource.Should().Be(rareProxyItem);\n            rareItem.ErrorInformation.Should().BeNull();\n\n            var uniqueItem = new UnknownItem(uniqueProxyItem);\n            uniqueItem.Quality.Should().Be(20);\n            uniqueItem.IsQuality.Should().BeTrue();\n            uniqueItem.TypeLine.Should().Be(\"Sinner Tricorne\");\n            uniqueItem.DescriptiveName.Should().Be(\"[Unknown Item] Sinner Tricorne, +20% Quality, i30\");\n            uniqueItem.ItemSource.Should().Be(uniqueProxyItem);\n            uniqueItem.ErrorInformation.Should().BeNull();\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/POEApi.Model.Tests/app.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Console\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.0.1.0\" newVersion=\"4.0.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Diagnostics.Tracing\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Reflection\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime.InteropServices\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.0.0\" newVersion=\"4.1.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Diagnostics.DiagnosticSource\" publicKeyToken=\"cc7b13ffcd2ddd51\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.0.1.0\" newVersion=\"4.0.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime.Extensions\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Net.Http\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n</configuration>"
  },
  {
    "path": "Tests/POEApi.Model.Tests/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Castle.Core\" version=\"3.3.3\" targetFramework=\"net462\" />\n  <package id=\"FluentAssertions\" version=\"4.19.4\" targetFramework=\"net462\" />\n  <package id=\"Moq\" version=\"4.5.22\" targetFramework=\"net462\" />\n</packages>"
  },
  {
    "path": "Tests/POEApi.TestHelpers/Builders/Build.cs",
    "content": "﻿namespace POEApi.TestHelpers.Builders\n{\n    public static class Build\n    {\n        public static class A\n        {\n            public static JSONProxyItemBuilder JsonProxyItem => new JSONProxyItemBuilder();\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/POEApi.TestHelpers/Builders/JSONProxyItemBuilder.cs",
    "content": "﻿using Newtonsoft.Json.Linq;\nusing POEApi.Model.JSONProxy;\nusing System;\nusing System.Collections.Generic;\n\nnamespace POEApi.TestHelpers.Builders\n{\n    public class JSONProxyItemBuilder\n    {\n        public static implicit operator Model.JSONProxy.Item(JSONProxyItemBuilder builder) => builder._item;\n\n        private Model.JSONProxy.Item _item = new Model.JSONProxy.Item\n        {\n            // TODO: Id, not Name, should be set to a random GUID.  But we should not have any avoidable randomness in\n            // tests, anyway.\n            Name = Guid.NewGuid().ToString(),\n            TypeLine = Guid.NewGuid().ToString(),\n            Properties = new List<Model.JSONProxy.Property>(),\n            Requirements = new List<Model.JSONProxy.Requirement>()\n        };\n\n        public JSONProxyItemBuilder ThatIsAnAbyssJewel(bool isAbyssJewel)\n        {\n            _item.AbyssJewel = isAbyssJewel;\n\n            return this;\n        }\n\n        public JSONProxyItemBuilder ThatIsARelic(bool isRelic)\n        {\n            _item.IsRelic = isRelic;\n\n            return this;\n        }\n\n        public JSONProxyItemBuilder ThatIsIdentified(bool isIdentified)\n        {\n            _item.Identified = isIdentified;\n\n            return this;\n        }\n\n        public JSONProxyItemBuilder ThatIsCorrupted(bool isCorrupted)\n        {\n            _item.Corrupted = isCorrupted;\n\n            return this;\n        }\n\n        public JSONProxyItemBuilder WithoutSockets()\n        {\n            _item.Sockets = null;\n            _item.SocketedItems = null;\n\n            return this;\n        }\n\n        public JSONProxyItemBuilder WithDescrText(string descrText)\n        {\n            _item.DescrText = descrText;\n\n            return this;\n        }\n\n        public JSONProxyItemBuilder WithSocketedItem(Model.JSONProxy.Item item)\n        {\n            if (_item.SocketedItems == null)\n                _item.SocketedItems = new List<Model.JSONProxy.Item>();\n\n            _item.SocketedItems.Add(item);\n\n            return this;\n        }\n\n        public JSONProxyItemBuilder WithTypeLine(string typeLine)\n        {\n            _item.TypeLine = typeLine;\n\n            return this;\n        }\n\n        public JSONProxyItemBuilder WithName(string name)\n        {\n            _item.Name = name;\n\n            return this;\n        }\n\n        public JSONProxyItemBuilder WithId(string id)\n        {\n            _item.Id = id;\n\n            return this;\n        }\n\n        public JSONProxyItemBuilder WithItemLevel(int itemLevel)\n        {\n            _item.Ilvl = itemLevel;\n\n            return this;\n        }\n\n        public JSONProxyItemBuilder WithFrameType(int frameType)\n        {\n            _item.FrameType = frameType;\n\n            return this;\n        }\n\n        public JSONProxyItemBuilder WithProperty(string name, string firstValuePair, int secondValuePair)\n        {\n            _item.Properties.Add(new Property\n            {\n                Name = name,\n                Values = new List<object> { new JArray(firstValuePair, secondValuePair) },\n            });\n\n            return this;\n        }\n\n        public JSONProxyItemBuilder WithQuality(int qualityAmount)\n        {\n            return this.WithProperty(\"Quality\", \"+\" + qualityAmount, 1);\n        }\n    }\n}"
  },
  {
    "path": "Tests/POEApi.TestHelpers/POEApi.TestHelpers.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{D7567718-9004-4689-B39F-1D240EEBB383}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>POEApi.TestHelpers</RootNamespace>\n    <AssemblyName>POEApi.TestHelpers</AssemblyName>\n    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Newtonsoft.Json.9.0.1\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Builders\\Build.cs\" />\n    <Compile Include=\"Builders\\JSONProxyItemBuilder.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\POEApi.Model\\POEApi.Model.csproj\">\n      <Project>{9841dd07-224d-4534-b9d1-f934c1d7bc73}</Project>\n      <Name>POEApi.Model</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"app.config\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Tests/POEApi.TestHelpers/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"TestHelpers\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"TestHelpers\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2018\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"d7567718-9004-4689-b39f-1d240eebb383\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Tests/POEApi.TestHelpers/app.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Console\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.0.1.0\" newVersion=\"4.0.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Diagnostics.Tracing\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Reflection\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime.InteropServices\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.0.0\" newVersion=\"4.1.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Diagnostics.DiagnosticSource\" publicKeyToken=\"cc7b13ffcd2ddd51\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.0.1.0\" newVersion=\"4.0.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime.Extensions\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Net.Http\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n</configuration>"
  },
  {
    "path": "Tests/POEApi.TestHelpers/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"9.0.1\" targetFramework=\"net462\" />\n</packages>"
  },
  {
    "path": "Tests/Procurement.Tests/Procurement.Tests.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{256989B7-5A60-40E7-9408-B79C1CDB01B7}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Procurement.Tests</RootNamespace>\n    <AssemblyName>Procurement.Tests</AssemblyName>\n    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"FluentAssertions, Version=4.19.4.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\FluentAssertions.4.19.4\\lib\\net45\\FluentAssertions.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"FluentAssertions.Core, Version=4.19.4.0, Culture=neutral, PublicKeyToken=33f2691a05b67b6a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\FluentAssertions.4.19.4\\lib\\net45\\FluentAssertions.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL\" />\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.ValueTuple.4.4.0\\lib\\net461\\System.ValueTuple.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"ViewModel\\Recipes\\RareSetRecipeTests.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\SameBaseTypeRecipeTests.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\SameNameRecipeTests.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"ViewModel\\Recipes\\VaalOrbRecipeTests.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\POEApi.Model\\POEApi.Model.csproj\">\n      <Project>{9841dd07-224d-4534-b9d1-f934c1d7bc73}</Project>\n      <Name>POEApi.Model</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\Procurement\\Procurement.csproj\">\n      <Project>{9369113d-a68f-4fe9-b301-d00c5176666a}</Project>\n      <Name>Procurement</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\POEApi.TestHelpers\\POEApi.TestHelpers.csproj\">\n      <Project>{D7567718-9004-4689-B39F-1D240EEBB383}</Project>\n      <Name>POEApi.TestHelpers</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Service Include=\"{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"app.config\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Tests/Procurement.Tests/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"Procurement.Tests\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"Procurement.Tests\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2018\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"256989b7-5a60-40e7-9408-b79c1cdb01b7\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Tests/Procurement.Tests/ViewModel/Recipes/RareSetRecipeTests.cs",
    "content": "﻿using FluentAssertions;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing POEApi.Model;\nusing POEApi.TestHelpers.Builders;\nusing Procurement.ViewModel.Recipes;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Procurement.ViewModel.Recipes.Tests\n{\n    [TestClass]\n    public class RareSetRecipeTests\n    {\n        [TestMethod]\n        public void RareSetRecipeTests_BasicFullSet_CompleteMatch()\n        {\n            // TODO: Switch to using Moq and mock the Gear objects.  We don't need to go through all this extra\n            // stuff to create the JsonProxyItem objects.\n\n            /*\n            GearType[] types = { GearType.Helmet, GearType.Chest, GearType.Belt, GearType.Gloves, GearType.Amulet,\n                GearType.Ring, GearType.Ring, GearType.Sceptre, GearType.Shield };\n            List<POEApi.Model.Item> items = new List<POEApi.Model.Item>();\n            for (int i = 0; i < types.Count(); i++)\n            {\n                Gear gear = new Gear(Build.A.JsonProxyItem.WithId(i.ToString()));\n                gear.Rarity = Rarity.Rare;  // Does not work - private setter.\n                items.Add(gear);\n            }\n            */\n\n            List<Item> items = new List<Item>()\n            {\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"01\")\n                    .WithTypeLine(\"Iron Hat\")),  // Helmet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"02\")\n                    .WithTypeLine(\"Plate Vest\")),  // Body Armor\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"03\")\n                    .WithTypeLine(\"Rustic Sash\")),  // Belt\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"04\")\n                    .WithTypeLine(\"Iron Gauntlets\")),  // Gloves\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"05\")\n                    .WithTypeLine(\"Iron Greaves\")),  // Boots\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"06\")\n                    .WithTypeLine(\"Paua Amulet\")),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"07\")\n                    .WithTypeLine(\"Iron Ring\")),  // Ring 1\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"08\")\n                    .WithTypeLine(\"Coral Ring\")),  // Ring 2\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"09\")\n                    .WithTypeLine(\"Driftwood Sceptre\")),  // Weapon\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"10\")\n                    .WithTypeLine(\"Splintered Tower Shield\")),  // Offhand\n            };\n            items.Should().HaveCount(10);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            RareSetRecipe recipe = new RareSetRecipe(1, 100, false, \"set\");\n            var matches = recipe.Matches(items).ToList();\n\n            matches.Should().HaveCount(1);\n            var match = matches.ElementAt(0);\n            match.Instance.Should().BeOfType<RareSetRecipe>();\n            match.IsMatch.Should().BeTrue();\n            match.Missing.Should().BeEmpty();\n            match.MatchedItems.Should().HaveCount(10);\n            match.MatchedItems.Should().Contain(items);\n            match.Name.Should().Be(\"set\");\n            match.PercentMatch.Should().Be(100M);\n        }\n\n        [TestMethod]\n        public void RareSetRecipeTests_FullSetDuplicateBaseTypes_CompleteMatch()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"01\")\n                    .WithTypeLine(\"Iron Hat\")),  // Helmet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"02\")\n                    .WithTypeLine(\"Plate Vest\")),  // Body Armor\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"03\")\n                    .WithTypeLine(\"Rustic Sash\")),  // Belt\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"04\")\n                    .WithTypeLine(\"Iron Gauntlets\")),  // Gloves\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"05\")\n                    .WithTypeLine(\"Iron Greaves\")),  // Boots\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"06\")\n                    .WithTypeLine(\"Paua Amulet\")),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"07\")\n                    .WithTypeLine(\"Iron Ring\")),  // Ring 1\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"08\")\n                    .WithTypeLine(\"Iron Ring\")),  // Ring 2\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"09\")\n                    .WithTypeLine(\"Driftwood Sceptre\")),  // Weapon\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"10\")\n                    .WithTypeLine(\"Driftwood Sceptre\")),  // Offhand\n            };\n            items.Should().HaveCount(10);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            RareSetRecipe recipe = new RareSetRecipe(1, 100, false, \"set\");\n            var matches = recipe.Matches(items).ToList();\n\n            matches.Should().HaveCount(1);\n            var match = matches.ElementAt(0);\n            match.Instance.Should().BeOfType<RareSetRecipe>();\n            match.IsMatch.Should().BeTrue();\n            match.Missing.Should().BeEmpty();\n            match.MatchedItems.Should().HaveCount(10);\n            match.MatchedItems.Should().Contain(items);\n            match.Name.Should().Be(\"set\");\n            match.PercentMatch.Should().Be(100M);\n        }\n\n        [TestMethod]\n        public void RareSetRecipeTests_PartialSet_IncompleteMatch()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"01\")\n                    .WithTypeLine(\"Iron Hat\")),  // Helmet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"02\")\n                    .WithTypeLine(\"Plate Vest\")),  // Body Armor\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"03\")\n                    .WithTypeLine(\"Rustic Sash\")),  // Belt\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"04\")\n                    .WithTypeLine(\"Iron Gauntlets\")),  // Gloves\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"05\")\n                    .WithTypeLine(\"Iron Greaves\")),  // Boots\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"06\")\n                    .WithTypeLine(\"Paua Amulet\")),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"07\")\n                    .WithTypeLine(\"Iron Ring\")),  // Ring 1\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"08\")\n                    .WithTypeLine(\"Coral Ring\")),  // Ring 2\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"09\")\n                    .WithTypeLine(\"Driftwood Sceptre\")),  // Weapon\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"10\")\n                    .WithTypeLine(\"Splintered Tower Shield\")),  // Offhand\n            };\n            items.Should().HaveCount(10);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            List<Item> currentItems = new List<Item>();\n            RareSetRecipe recipe = new RareSetRecipe(1, 100, false, \"set\");\n            var matches = recipe.Matches(currentItems).ToList();\n            matches.Should().BeEmpty();\n\n            while (items.Count > 0)\n            {\n                currentItems.Add(items[0]);\n                items.RemoveAt(0);\n\n                // Using the assumption that there are 10 possible items in the match and nine items are required to\n                // have a match.\n                if (currentItems.Count <= 8)\n                {\n                    matches = recipe.Matches(currentItems).ToList();\n                    matches.Should().BeEmpty();\n                }\n                else\n                {\n                    matches = recipe.Matches(currentItems).ToList();\n\n                    matches.Should().HaveCount(1);\n                    var match = matches.ElementAt(0);\n                    match.Instance.Should().BeOfType<RareSetRecipe>();\n                    match.IsMatch.Should().BeTrue();\n                    match.Missing.Should().HaveCount(10 - currentItems.Count);\n                    match.MatchedItems.Should().HaveSameCount(currentItems);\n                    match.MatchedItems.Should().Contain(currentItems);\n                    match.Name.Should().Be(\"set\");\n                    match.PercentMatch.Should().Be(10M * currentItems.Count);\n                }\n            }\n        }\n\n        [TestMethod]\n        public void RareSetRecipeTests_ItemsIncludeQuiver_QuiverIsNotUsed()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"01\")\n                    .WithTypeLine(\"Iron Hat\")),  // Helmet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"02\")\n                    .WithTypeLine(\"Plate Vest\")),  // Body Armor\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"03\")\n                    .WithTypeLine(\"Rustic Sash\")),  // Belt\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"04\")\n                    .WithTypeLine(\"Iron Gauntlets\")),  // Gloves\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"05\")\n                    .WithTypeLine(\"Iron Greaves\")),  // Boots\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"06\")\n                    .WithTypeLine(\"Paua Amulet\")),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"07\")\n                    .WithTypeLine(\"Iron Ring\")),  // Ring 1\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"08\")\n                    .WithTypeLine(\"Coral Ring\")),  // Ring 2\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"09\")\n                    .WithTypeLine(\"Crude Bow\")),  // Weapon\n            };\n            Gear quiverGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1)\n                .WithId(\"10\").WithTypeLine(\"Rugged Quiver\"));\n            items.Add(quiverGear);\n\n            items.Should().HaveCount(10);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            RareSetRecipe recipe = new RareSetRecipe(1, 100, false, \"set\");\n            var matches = recipe.Matches(items).ToList();\n\n            matches.Should().HaveCount(1);\n            var match = matches.ElementAt(0);\n            match.Instance.Should().BeOfType<RareSetRecipe>();\n            match.IsMatch.Should().BeTrue();\n            match.Missing.Should().BeEmpty();\n            match.MatchedItems.Should().HaveCount(9);\n            match.MatchedItems.Should().NotContain(quiverGear);\n            match.Name.Should().Be(\"set\");\n            match.PercentMatch.Should().Be(100M);\n        }\n\n        [TestMethod]\n        public void RareSetRecipeTests_ItemsIncludeBowAndShield_ShieldIsNotUsed()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"01\")\n                    .WithTypeLine(\"Iron Hat\")),  // Helmet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"02\")\n                    .WithTypeLine(\"Plate Vest\")),  // Body Armor\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"03\")\n                    .WithTypeLine(\"Rustic Sash\")),  // Belt\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"04\")\n                    .WithTypeLine(\"Iron Gauntlets\")),  // Gloves\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"05\")\n                    .WithTypeLine(\"Iron Greaves\")),  // Boots\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"06\")\n                    .WithTypeLine(\"Paua Amulet\")),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"07\")\n                    .WithTypeLine(\"Iron Ring\")),  // Ring 1\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"08\")\n                    .WithTypeLine(\"Coral Ring\")),  // Ring 2\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"09\")\n                    .WithTypeLine(\"Crude Bow\")),  // Weapon\n            };\n            Gear shieldGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1)\n                .WithId(\"10\").WithTypeLine(\"Splintered Tower Shield\"));  // Offhand\n            items.Add(shieldGear);\n\n            items.Should().HaveCount(10);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            RareSetRecipe recipe = new RareSetRecipe(1, 100, false, \"set\");\n            var matches = recipe.Matches(items).ToList();\n\n            matches.Should().HaveCount(1);\n            var match = matches.ElementAt(0);\n            match.Instance.Should().BeOfType<RareSetRecipe>();\n            match.IsMatch.Should().BeTrue();\n            match.Missing.Should().BeEmpty();\n            match.MatchedItems.Should().HaveCount(9);\n            match.MatchedItems.Should().NotContain(shieldGear);\n            match.Name.Should().Be(\"set\");\n            match.PercentMatch.Should().Be(100M);\n        }\n\n        [TestMethod]\n        public void RareSetRecipeTests_ItemsIncludeTwoShields_UseBothForMatch()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"01\")\n                    .WithTypeLine(\"Iron Hat\")),  // Helmet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"02\")\n                    .WithTypeLine(\"Plate Vest\")),  // Body Armor\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"03\")\n                    .WithTypeLine(\"Rustic Sash\")),  // Belt\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"04\")\n                    .WithTypeLine(\"Iron Gauntlets\")),  // Gloves\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"05\")\n                    .WithTypeLine(\"Iron Greaves\")),  // Boots\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"06\")\n                    .WithTypeLine(\"Paua Amulet\")),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"07\")\n                    .WithTypeLine(\"Iron Ring\")),  // Ring 1\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"08\")\n                    .WithTypeLine(\"Coral Ring\")),  // Ring 2\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"09\")\n                    .WithTypeLine(\"Corroded Tower Shield\")),  // Weapon\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"10\")\n                    .WithTypeLine(\"Splintered Tower Shield\")),  // Offhand\n            };\n            items.Should().HaveCount(10);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            RareSetRecipe recipe = new RareSetRecipe(1, 100, false, \"set\");\n            var matches = recipe.Matches(items).ToList();\n\n            matches.Should().HaveCount(1);\n            var match = matches.ElementAt(0);\n            match.Instance.Should().BeOfType<RareSetRecipe>();\n            match.IsMatch.Should().BeTrue();\n            match.Missing.Should().BeEmpty();\n            match.MatchedItems.Should().HaveCount(10);\n            match.MatchedItems.Should().Contain(items);\n            match.Name.Should().Be(\"set\");\n            match.PercentMatch.Should().Be(100M);\n        }\n\n        [TestMethod]\n        public void RareSetRecipeTests_VariousItemLevels_UseItemsInRange()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(50).WithId(\"01\")\n                    .WithTypeLine(\"Iron Hat\")),  // Helmet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"01a\")\n                    .WithTypeLine(\"Iron Hat\")),  // Helmet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(76).WithId(\"02\")\n                    .WithTypeLine(\"Plate Vest\")),  // Body Armor\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(49).WithId(\"02a\")\n                    .WithTypeLine(\"Plate Vest\")),  // Body Armor\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(55).WithId(\"03\")\n                    .WithTypeLine(\"Rustic Sash\")),  // Belt\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(60).WithId(\"04\")\n                    .WithTypeLine(\"Iron Gauntlets\")),  // Gloves\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(60).WithId(\"05\")\n                    .WithTypeLine(\"Iron Greaves\")),  // Boots\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(60).WithId(\"06\")\n                    .WithTypeLine(\"Paua Amulet\")),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(70).WithId(\"07\")\n                    .WithTypeLine(\"Iron Ring\")),  // Ring 1\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(75).WithId(\"08\")\n                    .WithTypeLine(\"Coral Ring\")),  // Ring 2\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(75).WithId(\"09\")\n                    .WithTypeLine(\"Driftwood Sceptre\")),  // Weapon\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(75).WithId(\"10\")\n                    .WithTypeLine(\"Splintered Tower Shield\")),  // Offhand\n            };\n            items.Should().HaveCount(12);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            RareSetRecipe recipe = new RareSetRecipe(50, 75, false, \"set\");\n            var matches = recipe.Matches(items).ToList();\n\n            matches.Should().HaveCount(1);\n            var match = matches.ElementAt(0);\n            match.Instance.Should().BeOfType<RareSetRecipe>();\n            match.IsMatch.Should().BeTrue();\n            match.Missing.Should().HaveCount(1);\n            match.Missing[0].Should().Be(\"Armour\");\n            match.MatchedItems.Should().HaveCount(9);\n            match.MatchedItems.ForEach(i => i.ItemLevel.Should().BeInRange(50, 75));\n            match.Name.Should().Be(\"set\");\n            match.PercentMatch.Should().Be(90M);\n        }\n\n        [TestMethod]\n        public void RareSetRecipeTests_SingleValueRange_UseItemsInRange()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"01\")\n                    .WithTypeLine(\"Iron Hat\")),  // Helmet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"02\")\n                    .WithTypeLine(\"Plate Vest\")),  // Body Armor\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(55).WithId(\"03\")\n                    .WithTypeLine(\"Rustic Sash\")),  // Belt\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(21).WithId(\"03a\")\n                    .WithTypeLine(\"Rustic Sash\")),  // Belt\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(19).WithId(\"04\")\n                    .WithTypeLine(\"Iron Gauntlets\")),  // Gloves\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"04a\")\n                    .WithTypeLine(\"Iron Gauntlets\")),  // Gloves\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"05\")\n                    .WithTypeLine(\"Iron Greaves\")),  // Boots\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"06\")\n                    .WithTypeLine(\"Paua Amulet\")),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(01).WithId(\"06a\")\n                    .WithTypeLine(\"Paua Amulet\")),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(00).WithId(\"06b\")\n                    .WithTypeLine(\"Paua Amulet\")),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"07\")\n                    .WithTypeLine(\"Iron Ring\")),  // Ring 1\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"08\")\n                    .WithTypeLine(\"Coral Ring\")),  // Ring 2\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"09\")\n                    .WithTypeLine(\"Driftwood Sceptre\")),  // Weapon\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"10\")\n                    .WithTypeLine(\"Splintered Tower Shield\")),  // Offhand\n            };\n            items.Should().HaveCount(14);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            RareSetRecipe recipe = new RareSetRecipe(20, 20, false, \"set\");\n            var matches = recipe.Matches(items).ToList();\n\n            matches.Should().HaveCount(1);\n            var match = matches.ElementAt(0);\n            match.Instance.Should().BeOfType<RareSetRecipe>();\n            match.IsMatch.Should().BeTrue();\n            match.Missing.Should().HaveCount(1);\n            match.Missing[0].Should().Be(\"Belt\");\n            match.MatchedItems.Should().HaveCount(9);\n            match.MatchedItems.ForEach(i => i.ItemLevel.Should().Be(20));\n            match.Name.Should().Be(\"set\");\n            match.PercentMatch.Should().Be(90M);\n        }\n\n        [TestMethod]\n        public void RareSetRecipeTests_VariousItemLevels_LowestItemLevelsUsed()\n        {\n            List<Item> baseItems = new List<Item>()\n            {\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30).WithId(\"01\")\n                    .WithTypeLine(\"Iron Hat\")),  // Helmet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30).WithId(\"02\")\n                    .WithTypeLine(\"Plate Vest\")),  // Body Armor\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30).WithId(\"03\")\n                    .WithTypeLine(\"Rustic Sash\")),  // Belt\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30).WithId(\"04\")\n                    .WithTypeLine(\"Iron Gauntlets\")),  // Gloves\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30).WithId(\"05\")\n                    .WithTypeLine(\"Iron Greaves\")),  // Boots\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30).WithId(\"06\")\n                    .WithTypeLine(\"Paua Amulet\")),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30).WithId(\"07\")\n                    .WithTypeLine(\"Iron Ring\")),  // Ring 1\n            };\n            baseItems.Should().HaveCount(7);\n            baseItems.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            RareSetRecipe recipe = new RareSetRecipe(20, 50, false, \"set\");\n\n            {\n                List<Item> items = new List<Item>(baseItems);\n                var matches = recipe.Matches(items).ToList();\n                matches.Should().BeEmpty();\n            }\n\n            {\n                // The items collection has extra rings; pick the lowest two in range.\n                List<Item> items = new List<Item>(baseItems);\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(40)\n                    .WithId(\"08\").WithTypeLine(\"Coral Ring\")));  // Ring 2 (in range, too high)\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(22)\n                    .WithId(\"08a\").WithTypeLine(\"Coral Ring\")));  // Ring 2 (in range)\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(19)\n                    .WithId(\"08b\").WithTypeLine(\"Coral Ring\")));  // Ring 2 (too low)\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30)\n                    .WithId(\"09\").WithTypeLine(\"Driftwood Sceptre\")));  // Weapon\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30)\n                    .WithId(\"10\").WithTypeLine(\"Splintered Tower Shield\")));  // Offhand\n                items.Should().HaveCount(12);\n                items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n                var matches = recipe.Matches(items).ToList();\n\n                matches.Should().HaveCount(1);\n                var match = matches.ElementAt(0);\n                match.Instance.Should().BeOfType<RareSetRecipe>();\n                match.IsMatch.Should().BeTrue();\n                match.Missing.Should().BeEmpty();\n                match.MatchedItems.Should().HaveCount(10);\n                match.MatchedItems.ForEach(i => i.ItemLevel.Should().BeInRange(20, 39));\n                match.MatchedItems.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n                match.Name.Should().Be(\"set\");\n                match.PercentMatch.Should().Be(100M);\n            }\n\n            {\n                // The items collection has a bow with lower item level than the shield, but it should not be picked\n                // because the one-handed weapon has the lowest item level.\n                List<Item> items = new List<Item>(baseItems);\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30)\n                    .WithId(\"08\").WithTypeLine(\"Coral Ring\")));  // Ring 2\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30)\n                    .WithId(\"09\").WithTypeLine(\"Driftwood Sceptre\")));  // Weapon\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(40)\n                    .WithId(\"10\").WithTypeLine(\"Splintered Tower Shield\")));  // Offhand\n                var bowGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(35)\n                    .WithId(\"09a\").WithTypeLine(\"Crude Bow\"));  // Two-handed weapon, higher ilevel\n                items.Add(bowGear);\n                items.Should().HaveCount(11);\n                items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n                var matches = recipe.Matches(items).ToList();\n\n                matches.Should().HaveCount(1);\n                var match = matches.ElementAt(0);\n                match.Instance.Should().BeOfType<RareSetRecipe>();\n                match.IsMatch.Should().BeTrue();\n                match.Missing.Should().BeEmpty();\n                match.MatchedItems.Should().HaveCount(10);\n                match.MatchedItems.Should().NotContain(bowGear);\n                match.MatchedItems.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n                match.Name.Should().Be(\"set\");\n                match.PercentMatch.Should().Be(100M);\n            }\n\n            {\n                // As the above case, but the shield is the item with the lower item level than the bow.\n                List<Item> items = new List<Item>(baseItems);\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30)\n                    .WithId(\"08\").WithTypeLine(\"Coral Ring\")));  // Ring 2\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(40)\n                    .WithId(\"09\").WithTypeLine(\"Driftwood Sceptre\")));  // Weapon\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30)\n                    .WithId(\"10\").WithTypeLine(\"Splintered Tower Shield\")));  // Offhand\n                var bowGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(35)\n                    .WithId(\"09a\").WithTypeLine(\"Crude Bow\"));  // Two-handed weapon, higher ilevel\n                items.Add(bowGear);\n                items.Should().HaveCount(11);\n                items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n                var matches = recipe.Matches(items).ToList();\n\n                matches.Should().HaveCount(1);\n                var match = matches.ElementAt(0);\n                match.Instance.Should().BeOfType<RareSetRecipe>();\n                match.IsMatch.Should().BeTrue();\n                match.Missing.Should().BeEmpty();\n                match.MatchedItems.Should().HaveCount(10);\n                match.MatchedItems.Should().NotContain(bowGear);\n                match.MatchedItems.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n                match.Name.Should().Be(\"set\");\n                match.PercentMatch.Should().Be(100M);\n            }\n\n            {\n                // The items collection has a bow with lower item level than one of the one-handed weapons, but it\n                // should not be picked, as the other one-handed weapon has the lowest item level.\n                List<Item> items = new List<Item>(baseItems);\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30)\n                    .WithId(\"08\").WithTypeLine(\"Coral Ring\")));  // Ring 2\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30)\n                    .WithId(\"09\").WithTypeLine(\"Driftwood Sceptre\")));  // Weapon\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(40)\n                    .WithId(\"10\").WithTypeLine(\"Goat's Horn\")));  // Offhand\n                var bowGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(35)\n                    .WithId(\"09a\").WithTypeLine(\"Crude Bow\"));  // Two-handed weapon, higher ilevel\n                items.Add(bowGear);\n                items.Should().HaveCount(11);\n                items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n                var matches = recipe.Matches(items).ToList();\n\n                matches.Should().HaveCount(1);\n                var match = matches.ElementAt(0);\n                match.Instance.Should().BeOfType<RareSetRecipe>();\n                match.IsMatch.Should().BeTrue();\n                match.Missing.Should().BeEmpty();\n                match.MatchedItems.Should().HaveCount(10);\n                match.MatchedItems.Should().NotContain(bowGear);\n                match.MatchedItems.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n                match.Name.Should().Be(\"set\");\n                match.PercentMatch.Should().Be(100M);\n            }\n\n            {\n                // The bow should be picked, as it has a lower item level than the sword and shield.\n                List<Item> items = new List<Item>(baseItems);\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30)\n                    .WithId(\"08\").WithTypeLine(\"Coral Ring\")));  // Ring 2\n                var weaponGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(33)\n                    .WithId(\"09\").WithTypeLine(\"Driftwood Sceptre\"));  // Weapon\n                items.Add(weaponGear);\n                var shieldGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(35)\n                    .WithId(\"10\").WithTypeLine(\"Splintered Tower Shield\"));  // Offhand\n                items.Add(shieldGear);\n                var bowGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30)\n                    .WithId(\"09a\").WithTypeLine(\"Crude Bow\"));  // Two-handed weapon, higher ilevel\n                items.Add(bowGear);\n                items.Should().HaveCount(11);\n                items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n                var matches = recipe.Matches(items).ToList();\n\n                matches.Should().HaveCount(1);\n                var match = matches.ElementAt(0);\n                match.Instance.Should().BeOfType<RareSetRecipe>();\n                match.IsMatch.Should().BeTrue();\n                match.Missing.Should().BeEmpty();\n                match.MatchedItems.Should().HaveCount(9);\n                match.MatchedItems.Should().NotContain(weaponGear);\n                match.MatchedItems.Should().NotContain(shieldGear);\n                match.MatchedItems.Should().Contain(bowGear);\n                match.MatchedItems.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n                match.Name.Should().Be(\"set\");\n                match.PercentMatch.Should().Be(100M);\n            }\n\n            {\n                // As above, but the bow has a lower item level than two one-handed weapons.\n                List<Item> items = new List<Item>(baseItems);\n                items.Add(new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30)\n                    .WithId(\"08\").WithTypeLine(\"Coral Ring\")));  // Ring 2\n                var weaponGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(33)\n                    .WithId(\"09\").WithTypeLine(\"Driftwood Sceptre\"));  // Weapon\n                items.Add(weaponGear);\n                var shieldGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(35)\n                    .WithId(\"10\").WithTypeLine(\"Goat's Horn\"));  // Offhand\n                items.Add(shieldGear);\n                var bowGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(30)\n                    .WithId(\"09a\").WithTypeLine(\"Crude Bow\"));  // Two-handed weapon, higher ilevel\n                items.Add(bowGear);\n                items.Should().HaveCount(11);\n                items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n                var matches = recipe.Matches(items).ToList();\n\n                matches.Should().HaveCount(1);\n                var match = matches.ElementAt(0);\n                match.Instance.Should().BeOfType<RareSetRecipe>();\n                match.IsMatch.Should().BeTrue();\n                match.Missing.Should().BeEmpty();\n                match.MatchedItems.Should().HaveCount(9);\n                match.MatchedItems.Should().NotContain(weaponGear);\n                match.MatchedItems.Should().NotContain(shieldGear);\n                match.MatchedItems.Should().Contain(bowGear);\n                match.MatchedItems.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n                match.Name.Should().Be(\"set\");\n                match.PercentMatch.Should().Be(100M);\n            }\n        }\n\n        [TestMethod]\n        public void RareSetRecipeTests_ItemsIncludesOtherTypes_UseOnlyGear()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"01\")\n                    .WithTypeLine(\"Iron Hat\")),  // Helmet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"02\")\n                    .WithTypeLine(\"Plate Vest\")),  // Body Armor\n                // No Belt item.\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"04\")\n                    .WithTypeLine(\"Iron Gauntlets\")),  // Gloves\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"05\")\n                    .WithTypeLine(\"Iron Greaves\")),  // Boots\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"06\")\n                    .WithTypeLine(\"Paua Amulet\")),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"07\")\n                    .WithTypeLine(\"Iron Ring\")),  // Ring 1\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"08\")\n                    .WithTypeLine(\"Coral Ring\")),  // Ring 2\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"09\")\n                    .WithTypeLine(\"Driftwood Sceptre\")),  // Weapon\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"10\")\n                    .WithTypeLine(\"Splintered Tower Shield\")),  // Offhand\n            };\n            var flaskGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20)\n                .WithId(\"11\").WithTypeLine(\"Small Life Flask\"));\n            items.Add(flaskGear);\n            var mapItem = new Map(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20)\n                .WithId(\"12\").WithTypeLine(\"Desert Map\").WithProperty(\"Map Tier\", \"5\", 1));\n            items.Add(mapItem);\n            var abyssJewelItem = new AbyssJewel(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20)\n                .WithId(\"13\").WithTypeLine(\"Ghastly Eye Jewel\"));\n            items.Add(abyssJewelItem);\n\n            items.Should().HaveCount(12);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            RareSetRecipe recipe = new RareSetRecipe(20, 50, false, \"set\");\n            var matches = recipe.Matches(items).ToList();\n\n            matches.Should().HaveCount(1);\n            var match = matches.ElementAt(0);\n            match.Instance.Should().BeOfType<RareSetRecipe>();\n            match.IsMatch.Should().BeTrue();\n            match.Missing.Should().HaveCount(1);\n            match.Missing[0].Should().Be(\"Belt\");\n            match.MatchedItems.Should().HaveCount(9);\n            match.MatchedItems.Should().NotContain(flaskGear);\n            match.MatchedItems.Should().NotContain(mapItem);\n            match.MatchedItems.Should().NotContain(abyssJewelItem);\n            match.Name.Should().Be(\"set\");\n            match.PercentMatch.Should().Be(90M);\n        }\n\n        [TestMethod]\n        public void RareSetRecipeTests_ItemsIncludesOtherRarities_UseOnlyRareItems()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"01\")\n                    .WithTypeLine(\"Iron Hat\")),  // Helmet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"02\")\n                    .WithTypeLine(\"Plate Vest\")),  // Body Armor\n                // No Belt item.\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"04\")\n                    .WithTypeLine(\"Iron Gauntlets\")),  // Gloves\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"05\")\n                    .WithTypeLine(\"Iron Greaves\")),  // Boots\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"06\")\n                    .WithTypeLine(\"Paua Amulet\")),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"07\")\n                    .WithTypeLine(\"Iron Ring\")),  // Ring 1\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"08\")\n                    .WithTypeLine(\"Coral Ring\")),  // Ring 2\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"09\")\n                    .WithTypeLine(\"Driftwood Sceptre\")),  // Weapon\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(20).WithId(\"10\")\n                    .WithTypeLine(\"Splintered Tower Shield\")),  // Offhand\n            };\n            var normalGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Normal).WithItemLevel(20)\n                .WithId(\"11\").WithTypeLine(\"Rustic Sash\"));\n            items.Add(normalGear);\n            var magicGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Magic).WithItemLevel(20)\n                .WithId(\"12\").WithTypeLine(\"Rustic Sash of Grace\"));\n            items.Add(magicGear);\n            var uniqueGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Unique).WithItemLevel(20)\n                .WithId(\"13\").WithTypeLine(\"Rustic Sash\"));\n            items.Add(uniqueGear);\n            var relicGear = new Gear(Build.A.JsonProxyItem.ThatIsARelic(true).WithItemLevel(20)\n                .WithId(\"14\").WithTypeLine(\"Rustic Sash\"));\n            items.Add(relicGear);\n\n            items.Should().HaveCount(13);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            RareSetRecipe recipe = new RareSetRecipe(20, 50, false, \"set\");\n            var matches = recipe.Matches(items).ToList();\n\n            matches.Should().HaveCount(1);\n            var match = matches.ElementAt(0);\n            match.Instance.Should().BeOfType<RareSetRecipe>();\n            match.IsMatch.Should().BeTrue();\n            match.Missing.Should().HaveCount(1);\n            match.Missing[0].Should().Be(\"Belt\");\n            match.MatchedItems.Should().HaveCount(9);\n            match.MatchedItems.Should().NotContain(normalGear);\n            match.MatchedItems.Should().NotContain(magicGear);\n            match.MatchedItems.Should().NotContain(uniqueGear);\n            match.MatchedItems.Should().NotContain(relicGear);\n            match.Name.Should().Be(\"set\");\n            match.PercentMatch.Should().Be(90M);\n        }\n\n        [TestMethod]\n        public void RareSetRecipeTests_SomeItemsIdentified_UseCorrectIdentifiedState()\n        {\n            List<Item> items = new List<Item>()\n            {\n                // No Helm item.\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"02\")\n                    .WithTypeLine(\"Plate Vest\")),  // Body Armor\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"03\")\n                    .WithTypeLine(\"Rustic Sash\")),  // Belt\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"04\")\n                    .WithTypeLine(\"Iron Gauntlets\")),  // Gloves\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"05\")\n                    .WithTypeLine(\"Iron Greaves\")),  // Boots\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"06\")\n                    .WithTypeLine(\"Paua Amulet\")),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"07\")\n                    .WithTypeLine(\"Iron Ring\")),  // Ring 1\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"08\")\n                    .WithTypeLine(\"Iron Ring\")),  // Ring 2\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"09\")\n                    .WithTypeLine(\"Driftwood Sceptre\")),  // Weapon\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"10\")\n                    .WithTypeLine(\"Splintered Tower Shield\")),  // Offhand\n            };\n            var identifiedHelmGear = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1)\n                .WithId(\"01\").WithTypeLine(\"Iron Hat\").ThatIsIdentified(true));\n            items.Add(identifiedHelmGear);\n\n            items.Should().HaveCount(10);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            {\n                RareSetRecipe unidentifiedItemsRecipe = new RareSetRecipe(1, 100, false, \"unidentified set\");\n                var unidentifiedItemsRecipeMatches = unidentifiedItemsRecipe.Matches(items).ToList();\n\n                unidentifiedItemsRecipeMatches.Should().HaveCount(1);\n                var match = unidentifiedItemsRecipeMatches.ElementAt(0);\n                match.Instance.Should().BeOfType<RareSetRecipe>();\n                match.IsMatch.Should().BeTrue();\n                match.Missing.Should().HaveCount(1);\n                match.Missing[0].Should().Be(\"Helm\");\n                match.MatchedItems.Should().HaveCount(9);\n                match.MatchedItems.Should().NotContain(identifiedHelmGear);\n                match.Name.Should().Be(\"unidentified set\");\n                match.PercentMatch.Should().Be(90M);\n            }\n\n            {\n                RareSetRecipe identifiedItemsRecipe = new RareSetRecipe(1, 100, true, \"identified set\");\n                var identifiedItemsRecipeMatches = identifiedItemsRecipe.Matches(items).ToList();\n                identifiedItemsRecipeMatches.Should().HaveCount(0);\n            }\n\n            items.AddRange(new List<Item>()\n            {\n                // No helm.\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"02i\")\n                    .WithTypeLine(\"Plate Vest\").ThatIsIdentified(true)),  // Body Armor\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"03i\")\n                    .WithTypeLine(\"Rustic Sash\").ThatIsIdentified(true)),  // Belt\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"04i\")\n                    .WithTypeLine(\"Iron Gauntlets\").ThatIsIdentified(true)),  // Gloves\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"05i\")\n                    .WithTypeLine(\"Iron Greaves\").ThatIsIdentified(true)),  // Boots\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"06i\")\n                    .WithTypeLine(\"Paua Amulet\").ThatIsIdentified(true)),  // Amulet\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"07i\")\n                    .WithTypeLine(\"Iron Ring\").ThatIsIdentified(true)),  // Ring 1\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"08i\")\n                    .WithTypeLine(\"Iron Ring\").ThatIsIdentified(true)),  // Ring 2\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"09i\")\n                    .WithTypeLine(\"Driftwood Sceptre\").ThatIsIdentified(true)),  // Weapon\n                new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithItemLevel(1).WithId(\"10i\")\n                    .WithTypeLine(\"Driftwood Sceptre\").ThatIsIdentified(true)),  // Offhand\n            });\n            items.Should().HaveCount(19);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            {\n                RareSetRecipe unidentifiedItemsRecipe = new RareSetRecipe(1, 100, false, \"unidentified set\");\n                var unidentifiedItemsRecipeMatches = unidentifiedItemsRecipe.Matches(items).ToList();\n\n                unidentifiedItemsRecipeMatches.Should().HaveCount(1);\n                var match = unidentifiedItemsRecipeMatches.ElementAt(0);\n                match.Instance.Should().BeOfType<RareSetRecipe>();\n                match.IsMatch.Should().BeTrue();\n                match.Missing.Should().HaveCount(1);\n                match.Missing[0].Should().Be(\"Helm\");\n                match.MatchedItems.Should().HaveCount(9);\n                match.MatchedItems.ForEach(i => i.Identified.Should().BeFalse());\n                match.Name.Should().Be(\"unidentified set\");\n                match.PercentMatch.Should().Be(90M);\n            }\n\n            {\n                RareSetRecipe identifiedItemsRecipe = new RareSetRecipe(1, 100, true, \"identified set\");\n                var identifiedItemsRecipeMatches = identifiedItemsRecipe.Matches(items).ToList();\n\n                identifiedItemsRecipeMatches.Should().HaveCount(1);\n                var match = identifiedItemsRecipeMatches.ElementAt(0);\n                match.Instance.Should().BeOfType<RareSetRecipe>();\n                match.IsMatch.Should().BeTrue();\n                match.Missing.Should().BeEmpty();\n                match.MatchedItems.Should().HaveCount(10);\n                match.MatchedItems.ForEach(i => i.Identified.Should().BeTrue());\n                match.Name.Should().Be(\"identified set\");\n                match.PercentMatch.Should().Be(100M);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/Procurement.Tests/ViewModel/Recipes/SameBaseTypeRecipeTests.cs",
    "content": "﻿using FluentAssertions;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing POEApi.Model;\nusing POEApi.TestHelpers.Builders;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Procurement.ViewModel.Recipes.Tests\n{\n    [TestClass]\n    public class SameBaseTypeRecipeTests\n    {\n        static protected Dictionary<bool, List<int>> _qualityLists;\n\n        [TestInitialize]\n        public void SetUp()\n        {\n            _qualityLists = new Dictionary<bool, List<int>>()\n            {\n                { false, new List<int>() { 19, 2, 0, 5 } },\n                { true, new List<int>() { 20, 20, 20, 20 } },\n            };\n        }\n\n        [TestMethod]\n        public void SameBaseTypeRecipeTests_EmptyInput_NoMatches()\n        {\n            foreach (var strictConditions in new List<bool>() { true, false })\n            {\n                List<Item> items = new List<Item>();\n                items.Should().HaveCount(0);\n\n                SameBaseTypeRecipe recipe = new SameBaseTypeRecipe(60, strictConditions);\n                var matches = recipe.Matches(items).ToList();\n\n                matches.Should().NotBeNull();\n                matches.Should().HaveCount(0);\n            }\n        }\n\n        [TestMethod]\n        public void SameBaseTypeRecipeTests_OneItem_NoMatches()\n        {\n            foreach (var strictConditions in new List<bool>() { true, false })\n                foreach (var identifiedState in new List<bool>() { true, false })\n                    foreach (var qualityList in _qualityLists)\n                    {\n                        List<Item> items = new List<Item>()\n                        {\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Magic).WithId(\"01\")\n                                .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[0])\n                                .ThatIsIdentified(identifiedState)),\n                        };\n                        items.Should().HaveCount(1);\n                        items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n                        SameBaseTypeRecipe recipe = new SameBaseTypeRecipe(60, strictConditions);\n                        var matches = recipe.Matches(items).ToList();\n\n                        matches.Should().NotBeNull();\n                        matches.Should().HaveCount(0);\n                    }\n        }\n\n        [TestMethod]\n        public void SameBaseTypeRecipeTests_TwoItems_PartialMatch()\n        {\n            foreach (var strictConditions in new List<bool>() { true, false })\n                foreach (var identifiedState in new List<bool>() { true, false })\n                    foreach (var qualityList in _qualityLists)\n                    {\n                        List<Item> items = new List<Item>()\n                        {\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Normal).WithId(\"01\")\n                                .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[0])),\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Magic).WithId(\"02\")\n                                .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[1])\n                                .ThatIsIdentified(identifiedState)),\n                        };\n                        items.Should().HaveCount(2);\n                        items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n                        SameBaseTypeRecipe recipe = new SameBaseTypeRecipe(60, strictConditions);\n                        var matches = recipe.Matches(items).ToList();\n\n                        matches.Should().NotBeNull();\n                        matches.Should().HaveCount(1);\n\n                        var match = matches.ElementAt(0);\n                        match.Instance.Should().BeOfType<SameBaseTypeRecipe>();\n                        match.IsMatch.Should().BeTrue();\n                        match.Missing.Should().HaveCount(1);\n                        match.Missing[0].Should().Be(\"Item with Rare rarity\");\n                        match.MatchedItems.Should().HaveCount(2);\n                        match.PercentMatch.Should().BeApproximately(200M / 3M, 0.001M);\n\n                        if (identifiedState)\n                        {\n                            if (qualityList.Key)\n                                match.Name.Should().Be(\n                                    \"1 Orb of Alchemy - Same base type with normal, magic, rare, 20% quality\");\n                            else\n                                match.Name.Should().Be(\n                                    \"1 Orb of Augmentation - Same base type with normal, magic, and rare\");\n                        }\n                        else\n                        {\n                            if (qualityList.Key)\n                                match.Name.Should().Be(\n                                    \"2 Orbs of Alchemy - Same base type with normal, magic, rare, 20% quality and \" +\n                                    \"unidentified\");\n                            else\n                                match.Name.Should().Be(\n                                    \"2 Orbs of Augmentation - Same base type with normal, magic, rare, unidentified\");\n                        }\n                    }\n        }\n\n        [TestMethod]\n        public void SameBaseTypeRecipeTests_ThreeItems_FullMatch()\n        {\n            foreach (var strictConditions in new List<bool>() { true, false })\n                foreach (var identifiedState in new List<bool>() { true, false })\n                    foreach (var qualityList in _qualityLists)\n                    {\n                        List<Item> items = new List<Item>()\n                        {\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Normal).WithId(\"01\")\n                                .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[0])),\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Magic).WithId(\"02\")\n                                .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[1])\n                                .ThatIsIdentified(identifiedState)),\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithId(\"03\")\n                                .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[2])\n                                .ThatIsIdentified(identifiedState)),\n                        };\n                        items.Should().HaveCount(3);\n                        items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n                        SameBaseTypeRecipe recipe = new SameBaseTypeRecipe(60, strictConditions);\n                        var matches = recipe.Matches(items).ToList();\n\n                        matches.Should().NotBeNull();\n                        matches.Should().HaveCount(1);\n\n                        var match = matches.ElementAt(0);\n                        match.Instance.Should().BeOfType<SameBaseTypeRecipe>();\n                        match.IsMatch.Should().BeTrue();\n                        match.Missing.Should().HaveCount(0);\n                        match.MatchedItems.Should().HaveCount(3);\n                        match.PercentMatch.Should().Be(100M);\n\n                        if (identifiedState)\n                        {\n                            if (qualityList.Key)\n                                match.Name.Should().Be(\n                                    \"1 Orb of Alchemy - Same base type with normal, magic, rare, 20% quality\");\n                            else\n                                match.Name.Should().Be(\n                                    \"1 Orb of Augmentation - Same base type with normal, magic, and rare\");\n                        }\n                        else\n                        {\n                            if (qualityList.Key)\n                                match.Name.Should().Be(\n                                    \"2 Orbs of Alchemy - Same base type with normal, magic, rare, 20% quality and \" +\n                                    \"unidentified\");\n                            else\n                                match.Name.Should().Be(\n                                    \"2 Orbs of Augmentation - Same base type with normal, magic, rare, unidentified\");\n                        }\n                    }\n        }\n\n        [TestMethod]\n        public void SameBaseTypeRecipeTests_ThreeItemsDifferentBaseType_PartialMatch()\n        {\n            foreach (var strictConditions in new List<bool>() { true, false })\n                foreach (var identifiedState in new List<bool>() { true, false })\n                    foreach (var qualityList in _qualityLists)\n                    {\n                        List<Item> items = new List<Item>()\n                        {\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Normal).WithId(\"01\")\n                                .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[0])),\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithId(\"03\")\n                                .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[1])\n                                .ThatIsIdentified(identifiedState)),\n                        };\n                        var otherBaseType = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Magic)\n                            .WithId(\"02\").WithTypeLine(\"Battered Hat\").WithQuality(qualityList.Value[2])\n                            .ThatIsIdentified(identifiedState));\n                        items.Add(otherBaseType);\n\n                        items.Should().HaveCount(3);\n                        items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n                        SameBaseTypeRecipe recipe = new SameBaseTypeRecipe(60, strictConditions);\n                        var matches = recipe.Matches(items).ToList();\n\n                        matches.Should().NotBeNull();\n                        matches.Should().HaveCount(1);\n\n                        var match = matches.ElementAt(0);\n                        match.Instance.Should().BeOfType<SameBaseTypeRecipe>();\n                        match.IsMatch.Should().BeTrue();\n                        match.Missing.Should().HaveCount(1);\n                        match.Missing[0].Should().Be(\"Item with Magic rarity\");\n                        match.MatchedItems.Should().HaveCount(2);\n                        match.MatchedItems.Should().NotContain(otherBaseType);\n                        match.PercentMatch.Should().BeApproximately(200M / 3M, 0.001M);\n\n                        if (identifiedState)\n                        {\n                            if (qualityList.Key)\n                                match.Name.Should().Be(\n                                    \"1 Orb of Alchemy - Same base type with normal, magic, rare, 20% quality\");\n                            else\n                                match.Name.Should().Be(\n                                    \"1 Orb of Augmentation - Same base type with normal, magic, and rare\");\n                        }\n                        else\n                        {\n                            if (qualityList.Key)\n                                match.Name.Should().Be(\n                                    \"2 Orbs of Alchemy - Same base type with normal, magic, rare, 20% quality and \" +\n                                    \"unidentified\");\n                            else\n                                match.Name.Should().Be(\n                                    \"2 Orbs of Augmentation - Same base type with normal, magic, rare, unidentified\");\n                        }\n                    }\n        }\n\n        [TestMethod]\n        public void SameBaseTypeRecipeTests_MultipleItemsSameRarity_OnlyOneOfEachRarity()\n        {\n            foreach (var strictConditions in new List<bool>() { true, false })\n                foreach (var identifiedState in new List<bool>() { true, false })\n                    foreach (var qualityList in _qualityLists)\n                    {\n                        List<Item> items = new List<Item>()\n                        {\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Normal).WithId(\"01\")\n                                .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[0])),\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Normal).WithId(\"02\")\n                                .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[1])),\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Magic).WithId(\"03\")\n                                .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[2])\n                                .ThatIsIdentified(identifiedState)),\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithId(\"04\")\n                                .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[3])\n                                .ThatIsIdentified(identifiedState)),\n                        };\n                        items.Should().HaveCount(4);\n                        items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n                        SameBaseTypeRecipe recipe = new SameBaseTypeRecipe(60, strictConditions);\n                        var matches = recipe.Matches(items).ToList();\n\n                        matches.Should().NotBeNull();\n                        matches.Should().HaveCount(1);\n\n                        var match = matches.ElementAt(0);\n                        match.Instance.Should().BeOfType<SameBaseTypeRecipe>();\n                        match.IsMatch.Should().BeTrue();\n                        match.Missing.Should().HaveCount(0);\n                        match.MatchedItems.Should().HaveCount(3);\n                        match.MatchedItems.Select(i => (i as Gear).Rarity).Should().OnlyHaveUniqueItems();\n                        match.PercentMatch.Should().Be(100M);\n\n                        if (identifiedState)\n                        {\n                            if (qualityList.Key)\n                                match.Name.Should().Be(\n                                    \"1 Orb of Alchemy - Same base type with normal, magic, rare, 20% quality\");\n                            else\n                                match.Name.Should().Be(\n                                    \"1 Orb of Augmentation - Same base type with normal, magic, and rare\");\n                        }\n                        else\n                        {\n                            if (qualityList.Key)\n                                match.Name.Should().Be(\n                                    \"2 Orbs of Alchemy - Same base type with normal, magic, rare, 20% quality and \" +\n                                    \"unidentified\");\n                            else\n                                match.Name.Should().Be(\n                                    \"2 Orbs of Augmentation - Same base type with normal, magic, rare, unidentified\");\n                        }\n                    }\n        }\n\n        [TestMethod]\n        public void SameBaseTypeRecipeTests_ThreeItemsSomeFullQuality_FindBestMatch()\n        {\n            foreach (var strictConditions in new List<bool>() { true, false })\n                foreach (var identifiedState in new List<bool>() { true, false })\n                {\n                    List<Item> items = new List<Item>()\n                    {\n                        new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Normal).WithId(\"01\")\n                            .WithTypeLine(\"Iron Hat\")),\n                        new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Magic).WithId(\"02\")\n                            .WithTypeLine(\"Iron Hat\").WithQuality(20)\n                            .ThatIsIdentified(identifiedState)),\n                        new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithId(\"03\")\n                            .WithTypeLine(\"Iron Hat\").WithQuality(10)\n                            .ThatIsIdentified(identifiedState)),\n                    };\n                    items.Should().HaveCount(3);\n                    items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n                    SameBaseTypeRecipe recipe = new SameBaseTypeRecipe(60, strictConditions);\n                    var matches = recipe.Matches(items).ToList();\n\n                    matches.Should().NotBeNull();\n                    matches.Should().HaveCount(1);\n\n                    var match = matches.ElementAt(0);\n                    match.Instance.Should().BeOfType<SameBaseTypeRecipe>();\n                    match.IsMatch.Should().BeTrue();\n                    if (strictConditions)\n                    {\n                        // The magic item is not included because it has 20% quality, but the variant being searched\n                        // for requires quality != 20%.\n                        match.Missing.Should().HaveCount(1);\n                        match.Missing[0].Should().Be(\"Item with Magic rarity\");\n                        match.MatchedItems.Should().HaveCount(2);\n                        match.PercentMatch.Should().BeApproximately(200M / 3M, 0.001M);\n                    }\n                    else\n                    {\n                        match.Missing.Should().HaveCount(0);\n                        match.MatchedItems.Should().HaveCount(3);\n                        match.PercentMatch.Should().Be(100M);\n                    }\n\n                    if (identifiedState)\n                    {\n                        match.Name.Should().Be(\n                            \"1 Orb of Augmentation - Same base type with normal, magic, and rare\");\n                    }\n                    else\n                    {\n                        match.Name.Should().Be(\n                            \"2 Orbs of Augmentation - Same base type with normal, magic, rare, unidentified\");\n                    }\n                }\n        }\n\n        [TestMethod]\n        public void SameBaseTypeRecipeTests_ThreeItemsSomeIdentified_FindBestMatch()\n        {\n            foreach (var strictConditions in new List<bool>() { true, false })\n                foreach (var qualityList in _qualityLists)\n                {\n                    List<Item> items = new List<Item>()\n                    {\n                        new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Normal).WithId(\"01\")\n                            .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[0])),\n                        new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithId(\"03\")\n                            .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[2])\n                            .ThatIsIdentified(false)),\n                    };\n                    var identifiedItem = new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Magic).WithId(\"02\")\n                        .WithTypeLine(\"Iron Hat\").WithQuality(qualityList.Value[1]).ThatIsIdentified(true));\n                    items.Add(identifiedItem);\n\n                    items.Should().HaveCount(3);\n                    items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n                    SameBaseTypeRecipe recipe = new SameBaseTypeRecipe();\n                    var matches = recipe.Matches(items).ToList();\n\n                    matches.Should().NotBeNull();\n                    matches.Should().HaveCount(1);\n\n                    var match = matches.ElementAt(0);\n                    match.Instance.Should().BeOfType<SameBaseTypeRecipe>();\n                    match.IsMatch.Should().BeTrue();\n                    match.Missing.Should().HaveCount(1);\n                    match.Missing[0].Should().Be(\"Item with Magic rarity\");\n                    match.MatchedItems.Should().HaveCount(2);\n                    match.MatchedItems.Should().NotContain(identifiedItem);\n                    match.PercentMatch.Should().BeApproximately(200M / 3M, 0.001M);\n\n                    // When not using strict conditions, we still end up with the unidentified variant, since normal-\n                    // quality items count towards the unidentified recipe, and thus we have more than the minimum\n                    // match percentage with the normal and rare items.  The identified variant is never considered,\n                    // since only one item is left, which does not meet the minimum match percentage.\n\n                    if (qualityList.Key)\n                        match.Name.Should().Be(\n                            \"2 Orbs of Alchemy - Same base type with normal, magic, rare, 20% quality and \" +\n                            \"unidentified\");\n                    else\n                        match.Name.Should().Be(\n                            \"2 Orbs of Augmentation - Same base type with normal, magic, rare, unidentified\");\n                }\n        }\n\n        [TestMethod]\n        public void SameBaseTypeRecipeTests_InvalidGearType_DoNotUse()\n        {\n            foreach (var strictConditions in new List<bool>() { true, false })\n                foreach (var identifiedState in new List<bool>() { true, false })\n                    foreach (var qualityList in _qualityLists)\n                    {\n                        List<Item> items = new List<Item>()\n                        {\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Normal).WithId(\"01\")\n                                .WithTypeLine(\"Small Life Flask\").WithQuality(qualityList.Value[0])),\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Magic).WithId(\"02\")\n                                .WithTypeLine(\"Small Life Flask\").WithQuality(qualityList.Value[1])\n                                .ThatIsIdentified(identifiedState)),\n                            new Gear(Build.A.JsonProxyItem.WithFrameType((int)Rarity.Rare).WithId(\"03\")\n                                .WithTypeLine(\"Small Life Flask\").WithQuality(qualityList.Value[2])\n                                .ThatIsIdentified(identifiedState)),\n                        };\n                        items.Should().HaveCount(3);\n                        items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n                        items.Select(i => (i as Gear).GearType).ShouldAllBeEquivalentTo(GearType.Flask);\n\n                        SameBaseTypeRecipe recipe = new SameBaseTypeRecipe(60, strictConditions);\n                        var matches = recipe.Matches(items).ToList();\n\n                        matches.Should().NotBeNull();\n                        matches.Should().HaveCount(0);\n                    }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/Procurement.Tests/ViewModel/Recipes/SameNameRecipeTests.cs",
    "content": "﻿using Microsoft.VisualStudio.TestTools.UnitTesting;\nusing POEApi.TestHelpers.Builders;\nusing POEApi.Model.JSONProxy;\nusing Procurement.ViewModel.Recipes;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing POEApi.Model;\n\nnamespace Procurement.ViewModel.Recipes.Tests\n{\n    [TestClass]\n    public class SameNameRecipeTests\n    {\n        public bool IsCloseToValue(decimal expectedValue, decimal epsilon, decimal actualValue)\n        {\n            decimal difference = Math.Abs(expectedValue - actualValue);\n            return difference < epsilon;\n        }\n\n        public void CheckTwoItemRecipe(List<POEApi.Model.Item> potentialItems, string name)\n        {\n            Assert.AreEqual(7, potentialItems.Count);\n            List<POEApi.Model.Item> currentItems = new List<POEApi.Model.Item>();\n\n            {\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe twoCopiesRecipe = new SameNameRecipe(\"Two\", 2);\n                var matches = twoCopiesRecipe.Matches(currentItems);\n                Assert.AreEqual(0, matches.Count());\n            }\n\n            {\n                // Add a non-matching item.\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe twoCopiesRecipe = new SameNameRecipe(\"Two\", 2);\n                var matches = twoCopiesRecipe.Matches(currentItems);\n                Assert.AreEqual(0, matches.Count());\n            }\n\n            {\n                // Add non-matching item with name containing matching name.\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe twoCopiesRecipe = new SameNameRecipe(\"Two\", 2);\n                var matches = twoCopiesRecipe.Matches(currentItems);\n                Assert.AreEqual(0, matches.Count());\n            }\n\n            {\n                // Add non-matching item with name that is a substring of the matching name.\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe twoCopiesRecipe = new SameNameRecipe(\"Two\", 2);\n                var matches = twoCopiesRecipe.Matches(currentItems);\n                Assert.AreEqual(0, matches.Count());\n            }\n\n            {\n                // Add a second matching item.\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe twoCopiesRecipe = new SameNameRecipe(\"Two\", 2);\n                var matches = twoCopiesRecipe.Matches(currentItems);\n\n                Assert.AreEqual(1, matches.Count());\n                var match = matches.First();\n                Assert.AreEqual(100m, match.PercentMatch);\n                Assert.AreEqual(0, match.Missing.Count);\n                Assert.IsTrue(match.IsMatch);\n\n                var matchedItems = match.MatchedItems;\n                Assert.AreEqual(2, matchedItems.Count);\n                Assert.AreEqual(name, matchedItems[0].Name);\n                Assert.AreNotEqual(matchedItems[0].Id, matchedItems[1].Id);\n            }\n\n            {\n                // Add a third matching item.\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe twoCopiesRecipe = new SameNameRecipe(\"Two\", 2);\n                var matches = twoCopiesRecipe.Matches(currentItems);\n\n                Assert.AreEqual(1, matches.Count());\n                var match = matches.First();\n                Assert.AreEqual(100m, match.PercentMatch);\n                Assert.AreEqual(0, match.Missing.Count);\n                Assert.IsTrue(match.IsMatch);\n\n                var matchedItems = match.MatchedItems;\n                Assert.AreEqual(2, matchedItems.Count);\n                Assert.AreEqual(name, matchedItems[0].Name);\n                Assert.AreNotEqual(matchedItems[0].Id, matchedItems[1].Id);\n            }\n\n            {\n                // Add a fourth matching item.\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe twoCopiesRecipe = new SameNameRecipe(\"Two\", 2);\n                var matches = twoCopiesRecipe.Matches(currentItems);\n                Assert.AreEqual(2, matches.Count());\n\n                var firstMmatch = matches.First();\n                Assert.AreEqual(100m, firstMmatch.PercentMatch);\n                Assert.AreEqual(0, firstMmatch.Missing.Count);\n                Assert.IsTrue(firstMmatch.IsMatch);\n\n                var firstMatchedItems = firstMmatch.MatchedItems;\n                Assert.AreEqual(2, firstMatchedItems.Count);\n                Assert.AreEqual(name, firstMatchedItems[0].Name);\n                Assert.AreNotEqual(firstMatchedItems[0].Id, firstMatchedItems[1].Id);\n\n                var secondMatch = matches.ElementAt(1);\n                Assert.AreEqual(100m, secondMatch.PercentMatch);\n                Assert.AreEqual(0, secondMatch.Missing.Count);\n                Assert.IsTrue(secondMatch.IsMatch);\n\n                var secondMatchedItems = secondMatch.MatchedItems;\n                Assert.AreEqual(2, secondMatchedItems.Count);\n                Assert.AreEqual(name, secondMatchedItems[0].Name);\n                Assert.AreNotEqual(secondMatchedItems[0].Id, secondMatchedItems[1].Id);\n\n                Assert.AreNotEqual(firstMatchedItems[0].Id, secondMatchedItems[0].Id);\n                Assert.AreNotEqual(firstMatchedItems[0].Id, secondMatchedItems[1].Id);\n                Assert.AreNotEqual(firstMatchedItems[1].Id, secondMatchedItems[0].Id);\n                Assert.AreNotEqual(firstMatchedItems[1].Id, secondMatchedItems[1].Id);\n            }\n        }\n\n        public void CheckThreeItemRecipe(List<POEApi.Model.Item> potentialItems, string name)\n        {\n            Assert.AreEqual(8, potentialItems.Count);\n            List<POEApi.Model.Item> currentItems = new List<POEApi.Model.Item>();\n\n            {\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe threeCopiesRecipe = new SameNameRecipe(\"Three\", 3);\n                var matches = threeCopiesRecipe.Matches(currentItems);\n                Assert.AreEqual(0, matches.Count());\n            }\n\n            {\n                // Add a non-matching item.\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe threeCopiesRecipe = new SameNameRecipe(\"Three\", 3);\n                var matches = threeCopiesRecipe.Matches(currentItems);\n                Assert.AreEqual(0, matches.Count());\n            }\n\n            {\n                // Add non-matching item with name containing matching name.\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe threeCopiesRecipe = new SameNameRecipe(\"Three\", 3);\n                var matches = threeCopiesRecipe.Matches(currentItems);\n                Assert.AreEqual(0, matches.Count());\n            }\n\n            {\n                // Add non-matching item with name that is a substring of the matching name.\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe threeCopiesRecipe = new SameNameRecipe(\"Three\", 3);\n                var matches = threeCopiesRecipe.Matches(currentItems);\n                Assert.AreEqual(0, matches.Count());\n            }\n\n            {\n                // Add a second matching item.\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe threeCopiesRecipe = new SameNameRecipe(\"Three\", 3);\n                var matches = threeCopiesRecipe.Matches(currentItems);\n\n                Assert.AreEqual(1, matches.Count());\n                var match = matches.First();\n                Assert.IsTrue(IsCloseToValue(66.66m, 0.1m, match.PercentMatch));\n                Assert.AreEqual(0, match.Missing.Count);\n                Assert.IsTrue(match.IsMatch);\n\n                var matchedItems = match.MatchedItems;\n                Assert.AreEqual(2, matchedItems.Count);\n                Assert.AreEqual(name, matchedItems[0].Name);\n                Assert.AreNotEqual(matchedItems[0].Id, matchedItems[1].Id);\n            }\n\n            {\n                // Add a third matching item.\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe threeCopiesRecipe = new SameNameRecipe(\"Three\", 3);\n                var matches = threeCopiesRecipe.Matches(currentItems);\n\n                Assert.AreEqual(1, matches.Count());\n                var match = matches.First();\n                Assert.AreEqual(100m, match.PercentMatch);\n                Assert.AreEqual(0, match.Missing.Count);\n                Assert.IsTrue(match.IsMatch);\n\n                var matchedItems = match.MatchedItems;\n                Assert.AreEqual(3, matchedItems.Count);\n                Assert.AreEqual(name, matchedItems[0].Name);\n                Assert.AreNotEqual(matchedItems[0].Id, matchedItems[1].Id);\n                Assert.AreNotEqual(matchedItems[0].Id, matchedItems[2].Id);\n                Assert.AreNotEqual(matchedItems[1].Id, matchedItems[2].Id);\n            }\n\n            {\n                // Add a fourth matching item.\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe threeCopiesRecipe = new SameNameRecipe(\"Three\", 3);\n                var matches = threeCopiesRecipe.Matches(currentItems);\n\n                Assert.AreEqual(1, matches.Count());\n                var match = matches.First();\n                Assert.AreEqual(100m, match.PercentMatch);\n                Assert.AreEqual(0, match.Missing.Count);\n                Assert.IsTrue(match.IsMatch);\n\n                var matchedItems = match.MatchedItems;\n                Assert.AreEqual(3, matchedItems.Count);\n                Assert.AreEqual(name, matchedItems[0].Name);\n                Assert.AreNotEqual(matchedItems[0].Id, matchedItems[1].Id);\n                Assert.AreNotEqual(matchedItems[0].Id, matchedItems[2].Id);\n                Assert.AreNotEqual(matchedItems[1].Id, matchedItems[2].Id);\n            }\n\n            {\n                // Add a fifth matching item.\n                currentItems.Add(potentialItems[0]);\n                potentialItems.RemoveAt(0);\n\n                SameNameRecipe threeCopiesRecipe = new SameNameRecipe(\"Three\", 3);\n                var matches = threeCopiesRecipe.Matches(currentItems);\n\n                Assert.AreEqual(2, matches.Count());\n                var firstMatch = matches.First();\n                Assert.AreEqual(100m, firstMatch.PercentMatch);\n                Assert.AreEqual(0, firstMatch.Missing.Count);\n                Assert.IsTrue(firstMatch.IsMatch);\n\n                var firstMatchedItems = firstMatch.MatchedItems;\n                Assert.AreEqual(3, firstMatchedItems.Count);\n                Assert.AreEqual(name, firstMatchedItems[0].Name);\n                Assert.AreNotEqual(firstMatchedItems[0].Id, firstMatchedItems[1].Id);\n                Assert.AreNotEqual(firstMatchedItems[0].Id, firstMatchedItems[2].Id);\n                Assert.AreNotEqual(firstMatchedItems[1].Id, firstMatchedItems[2].Id);\n\n                var secondMatch = matches.ElementAt(1);\n                Assert.IsTrue(IsCloseToValue(66.66m, 0.1m, secondMatch.PercentMatch));\n                Assert.AreEqual(0, secondMatch.Missing.Count);\n                Assert.IsTrue(secondMatch.IsMatch);\n\n                var secondMatchedItems = secondMatch.MatchedItems;\n                Assert.AreEqual(2, secondMatchedItems.Count);\n                Assert.AreEqual(name, secondMatchedItems[0].Name);\n                Assert.AreNotEqual(secondMatchedItems[0].Id, secondMatchedItems[1].Id);\n\n                Assert.AreNotEqual(firstMatchedItems[0].Id, secondMatchedItems[0].Id);\n                Assert.AreNotEqual(firstMatchedItems[0].Id, secondMatchedItems[1].Id);\n                Assert.AreNotEqual(firstMatchedItems[1].Id, secondMatchedItems[0].Id);\n                Assert.AreNotEqual(firstMatchedItems[1].Id, secondMatchedItems[1].Id);\n                Assert.AreNotEqual(firstMatchedItems[2].Id, secondMatchedItems[0].Id);\n                Assert.AreNotEqual(firstMatchedItems[2].Id, secondMatchedItems[1].Id);\n            }\n        }\n\n        [TestMethod]\n        public void SameNameRecipeTests_Gear()\n        {\n            const string itemsName = \"Alpha Beta\";\n            List<POEApi.Model.Item> items = new List<POEApi.Model.Item>\n            {\n                // First matching item.\n                new Gear(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"1\")),\n                // Random unrelated item.\n                new Gear(Build.A.JsonProxyItem.WithName(\"Gamma\").WithId(\"10\")),\n                // Unrelated item with a name containing the matching name.\n                new Gear(Build.A.JsonProxyItem.WithName(itemsName + \" Bane\").WithId(\"11\")),\n                // Unrelated item with a name that is a substring of the matching name.\n                new Gear(Build.A.JsonProxyItem.WithName(\"Alpha\").WithId(\"12\")),\n                // Second matching item.\n                new Gear(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"2\")),\n                // Third matching item.\n                new Gear(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"3\")),\n                // Fourth matching item.\n                new Gear(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"4\")),\n            };\n\n            CheckTwoItemRecipe(new List<POEApi.Model.Item>(items), itemsName);\n\n            items.Add(new Gear(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"5\")));\n            CheckThreeItemRecipe(new List<POEApi.Model.Item>(items), itemsName);\n        }\n\n        [TestMethod]\n        public void SameNameRecipeTests_AbyssJewel()\n        {\n            const string itemsName = \"Alpha Beta\";\n            List<POEApi.Model.Item> items = new List<POEApi.Model.Item>\n            {\n                // First matching item.\n                new AbyssJewel(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"1\")),\n                // Random unrelated item.\n                new AbyssJewel(Build.A.JsonProxyItem.WithName(\"Gamma\").WithId(\"10\")),\n                // Unrelated item with a name containing the matching name.\n                new AbyssJewel(Build.A.JsonProxyItem.WithName(itemsName + \" Bane\").WithId(\"11\")),\n                // Unrelated item with a name that is a substring of the matching name.\n                new AbyssJewel(Build.A.JsonProxyItem.WithName(\"Alpha\").WithId(\"12\")),\n                // Second matching item.\n                new AbyssJewel(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"2\")),\n                // Third matching item.\n                new AbyssJewel(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"3\")),\n                // Fourth matching item.\n                new AbyssJewel(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"4\")),\n            };\n\n            CheckTwoItemRecipe(new List<POEApi.Model.Item>(items), itemsName);\n\n            items.Add(new AbyssJewel(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"5\")));\n            CheckThreeItemRecipe(new List<POEApi.Model.Item>(items), itemsName);\n        }\n\n        [TestMethod]\n        public void SameNameRecipeTests_MixedTypes()\n        {\n            const string itemsName = \"Alpha Beta\";\n            List<POEApi.Model.Item> items = new List<POEApi.Model.Item>\n            {\n                // First matching item.\n                new Gear(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"1\")),\n                // Random unrelated item.\n                new Gear(Build.A.JsonProxyItem.WithName(\"Gamma\").WithId(\"10\")),\n                // Unrelated item with a name containing the matching name.\n                new AbyssJewel(Build.A.JsonProxyItem.WithName(itemsName + \" Bane\").WithId(\"11\")),\n                // Unrelated item with a name that is a substring of the matching name.\n                new AbyssJewel(Build.A.JsonProxyItem.WithName(\"Alpha\").WithId(\"12\")),\n                // Second matching item.\n                new AbyssJewel(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"2\")),\n                // Third matching item.\n                new Gear(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"3\")),\n                // Fourth matching item.\n                new AbyssJewel(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"4\")),\n            };\n\n            CheckTwoItemRecipe(new List<POEApi.Model.Item>(items), itemsName);\n\n            items.Add(new Gear(Build.A.JsonProxyItem.WithName(itemsName).WithId(\"5\")));\n            CheckThreeItemRecipe(new List<POEApi.Model.Item>(items), itemsName);\n        }\n\n        [TestMethod]\n        public void SameNameRecipeTests_MultipleResults()\n        {\n            const string firstResultName = \"Alpha Beta\";\n            const string secondResultName = \"Gamma Delta\";\n            const string unrelatedName = \"Epsilon Phi\";\n            List<POEApi.Model.Item> items = new List<POEApi.Model.Item>\n            {\n                new Gear(Build.A.JsonProxyItem.WithName(firstResultName).WithId(\"1\")),\n                new Gear(Build.A.JsonProxyItem.WithName(unrelatedName).WithId(\"2\")),\n                new Gear(Build.A.JsonProxyItem.WithName(secondResultName).WithId(\"3\")),\n                new Gear(Build.A.JsonProxyItem.WithName(firstResultName).WithId(\"4\")),\n                new Gear(Build.A.JsonProxyItem.WithName(firstResultName).WithId(\"5\")),\n                new Gear(Build.A.JsonProxyItem.WithName(secondResultName).WithId(\"6\")),\n            };\n\n            SameNameRecipe threeCopiesRecipe = new SameNameRecipe(\"Three\", 3);\n            var matches = threeCopiesRecipe.Matches(items);\n\n            Assert.AreEqual(2, matches.Count());\n            Assert.IsTrue(matches.All(r => r.MatchedItems.Count > 0));\n\n            var firstMatch = matches.FirstOrDefault(r => r.MatchedItems[0].Name == firstResultName);\n            Assert.IsNotNull(firstMatch);\n            Assert.AreEqual(3, firstMatch.MatchedItems.Count);\n            Assert.IsTrue(firstMatch.MatchedItems.All(i => i.Name == firstResultName));\n\n            var secondMatch = matches.FirstOrDefault(r => r.MatchedItems[1].Name == secondResultName);\n            Assert.IsNotNull(secondMatch);\n            Assert.AreEqual(2, secondMatch.MatchedItems.Count);\n            Assert.IsTrue(secondMatch.MatchedItems.All(i => i.Name == secondResultName));\n        }\n    }\n}"
  },
  {
    "path": "Tests/Procurement.Tests/ViewModel/Recipes/VaalOrbRecipeTests.cs",
    "content": "﻿using FluentAssertions;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\nusing POEApi.Model;\nusing POEApi.TestHelpers.Builders;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace Procurement.ViewModel.Recipes.Tests\n{\n    [TestClass]\n    public class VaalOrbRecipeTests\n    {\n        [TestMethod]\n        public void VaalOrbRecipeTests_UncorruptedNonVaalGems_NoMatch()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(false).WithId(\"01\").WithTypeLine(\"Summon Skeletons\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(false).WithId(\"02\").WithTypeLine(\"Summon Skitterbots\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(false).WithId(\"03\").WithTypeLine(\"Fireball\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(false).WithId(\"04\").WithTypeLine(\"Fireball\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(false).WithId(\"05\").WithTypeLine(\"Fireball\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(false).WithId(\"06\").WithTypeLine(\"Fireball\")),\n            };\n            items.Should().HaveCount(6);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            VaalOrbRecipe recipe = new VaalOrbRecipe();\n            var matches = recipe.Matches(items).ToList();\n\n            matches.Should().HaveCount(0);\n        }\n\n        [TestMethod]\n        public void VaalOrbRecipeTests_CorruptedNonVaalGems_NoMatch()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"01\").WithTypeLine(\"Summon Skeletons\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"02\").WithTypeLine(\"Summon Skitterbots\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"03\").WithTypeLine(\"Fireball\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"04\").WithTypeLine(\"Fireball\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"05\").WithTypeLine(\"Fireball\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(false).WithId(\"06\").WithTypeLine(\"Fireball\")),\n            };\n            items.Should().HaveCount(6);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            VaalOrbRecipe recipe = new VaalOrbRecipe();\n            var matches = recipe.Matches(items).ToList();\n\n            matches.Should().HaveCount(0);\n        }\n\n        [TestMethod]\n        public void VaalOrbRecipeTests_VaalGems_FindMatch()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"01\").WithTypeLine(\n                    \"Vaal Summon Skeletons\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"02\").WithTypeLine(\n                    \"Vaal Summon Skitterbots\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"03\").WithTypeLine(\"Vaal Fireball\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"04\").WithTypeLine(\"Vaal Fireball\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"05\").WithTypeLine(\"Vaal Fireball\")),\n            };\n            var nonVaalGem = new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(false).WithId(\"06\").WithTypeLine(\"Fireball\"));\n            items.Add(nonVaalGem);\n\n            items.Should().HaveCount(6);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            VaalOrbRecipe recipe = new VaalOrbRecipe();\n            var matches = recipe.Matches(items).ToList();\n\n            matches.Should().HaveCount(1);\n            var match = matches.ElementAt(0);\n            match.Instance.Should().BeOfType<VaalOrbRecipe>();\n            match.IsMatch.Should().BeTrue();\n\n            match.Missing.Should().HaveCount(2);\n            match.Missing.Should().Contain(\"2 Vaal Skill gems\");\n            match.Missing.Should().Contain(\"Sacrifice Fragment\");\n\n            match.MatchedItems.Should().HaveCount(5);\n            match.MatchedItems.Should().NotContain(nonVaalGem);\n            match.Name.Should().Be(\"1 Vaal Orb\");\n            match.PercentMatch.Should().Be(62.5M);\n        }\n\n        [TestMethod]\n        public void VaalOrbRecipeTests_NonGems_NoMatch()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gear(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"01\").WithTypeLine(\n                    \"Vaal Simple Robe\")),\n                new Gear(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"02\").WithTypeLine(\n                    \"Vaal Sai\")),\n                new Gear(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"03\").WithTypeLine(\"Vaal Fireball\")),\n                new Gear(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"04\").WithTypeLine(\"Fireball\")),\n                new Gear(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"05\").WithTypeLine(\"Simple Robe\")),\n                new Gear(Build.A.JsonProxyItem.ThatIsCorrupted(false).WithId(\"06\").WithTypeLine(\"Iron Hat\")),\n            };\n            items.Should().HaveCount(6);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            VaalOrbRecipe recipe = new VaalOrbRecipe();\n            var matches = recipe.Matches(items).ToList();\n            matches.Should().HaveCount(0);\n        }\n\n        [TestMethod]\n        public void VaalOrbRecipeTests_OnlyWithSacrificeFrament_NoMatch()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gear(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"01\").WithFrameType(4).WithTypeLine(\n                    \"Simple Robe\")),\n                new Currency(Build.A.JsonProxyItem.ThatIsCorrupted(false).WithFrameType(5).WithId(\"02\").WithTypeLine(\n                    \"Sacrifice at Midnight\")),\n            };\n            items.Should().HaveCount(2);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            VaalOrbRecipe recipe = new VaalOrbRecipe();\n            var matches = recipe.Matches(items).ToList();\n            matches.Should().HaveCount(0);\n        }\n\n        [TestMethod]\n        public void VaalOrbRecipeTests_FullSet_CompleteMatch()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"01\").WithTypeLine(\n                    \"Vaal Summon Skeletons\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"02\").WithTypeLine(\n                    \"Vaal Summon Skitterbots\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"03\").WithTypeLine(\"Vaal Fireball\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"04\").WithTypeLine(\"Vaal Fireball\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"05\").WithTypeLine(\"Vaal Fireball\")),\n                new Currency(Build.A.JsonProxyItem.ThatIsCorrupted(false).WithId(\"06\").WithTypeLine(\n                    \"Sacrifice at Midnight\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"07\").WithTypeLine(\"Vaal Detonate Dead\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"08\").WithTypeLine(\"Vaal Spark\")),\n            };\n\n\n            items.Should().HaveCount(8);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            VaalOrbRecipe recipe = new VaalOrbRecipe();\n            var matches = recipe.Matches(items).ToList();\n\n            matches.Should().HaveCount(1);\n            var match = matches.ElementAt(0);\n            match.Instance.Should().BeOfType<VaalOrbRecipe>();\n            match.IsMatch.Should().BeTrue();\n\n            match.Missing.Should().HaveCount(0);\n\n            match.MatchedItems.Should().HaveCount(8);\n            match.MatchedItems.Should().Contain(items);\n            match.Name.Should().Be(\"1 Vaal Orb\");\n            match.PercentMatch.Should().Be(100M);\n        }\n\n        [TestMethod]\n        public void VaalOrbRecipeTests_OtherFragmentType_NotIncluded()\n        {\n            List<Item> items = new List<Item>()\n            {\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"01\").WithTypeLine(\n                    \"Vaal Summon Skeletons\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"02\").WithTypeLine(\n                    \"Vaal Summon Skitterbots\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"03\").WithTypeLine(\"Vaal Fireball\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"04\").WithTypeLine(\"Vaal Fireball\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"05\").WithTypeLine(\"Vaal Fireball\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"07\").WithTypeLine(\"Vaal Detonate Dead\")),\n                new Gem(Build.A.JsonProxyItem.ThatIsCorrupted(true).WithId(\"08\").WithTypeLine(\"Vaal Spark\")),\n            };\n            Item wrongFragment = new Currency(Build.A.JsonProxyItem.ThatIsCorrupted(false).WithId(\"06\").WithTypeLine(\n                \"Fragment of the Hydra\"));\n            items.Add(wrongFragment);\n\n            items.Should().HaveCount(8);\n            items.Select(i => i.Id).Should().OnlyHaveUniqueItems();\n\n            VaalOrbRecipe recipe = new VaalOrbRecipe();\n            var matches = recipe.Matches(items).ToList();\n\n            matches.Should().HaveCount(1);\n            var match = matches.ElementAt(0);\n            match.Instance.Should().BeOfType<VaalOrbRecipe>();\n            match.IsMatch.Should().BeTrue();\n\n            match.Missing.Should().HaveCount(1);\n            match.Missing.Should().Contain(\"Sacrifice Fragment\");\n\n            match.MatchedItems.Should().HaveCount(7);\n            match.MatchedItems.Should().NotContain(wrongFragment);\n            match.Name.Should().Be(\"1 Vaal Orb\");\n            match.PercentMatch.Should().Be(87.5M);\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/Procurement.Tests/app.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Console\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.0.1.0\" newVersion=\"4.0.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Diagnostics.Tracing\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Reflection\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime.InteropServices\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.0.0\" newVersion=\"4.1.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Diagnostics.DiagnosticSource\" publicKeyToken=\"cc7b13ffcd2ddd51\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.0.1.0\" newVersion=\"4.0.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Runtime.Extensions\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Net.Http\" publicKeyToken=\"b03f5f7f11d50a3a\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.1.1.0\" newVersion=\"4.1.1.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n</configuration>"
  },
  {
    "path": "Tests/Procurement.Tests/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"FluentAssertions\" version=\"4.19.4\" targetFramework=\"net462\" />\n  <package id=\"System.ValueTuple\" version=\"4.4.0\" targetFramework=\"net462\" />\n</packages>"
  },
  {
    "path": "Tools/App.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<configuration>\n    <startup> \n        <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.6\" />\n    </startup>\n</configuration>"
  },
  {
    "path": "Tools/EssenceGenerator.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\n\nnamespace Procurement.Tools\n{\n    internal class EssenceGenerator\n    {\n        private static readonly string[] _specialEssences = { \"Insanity\", \"Horror\", \"Delirium\", \"Hysteria\" };\n        private static readonly string[] _tiers = { \"Whispering\", \"Muttering\", \"Weeping\", \"Wailing\", \"Screaming\", \"Shrieking\", \"Deafening\" };\n        private static readonly string[] _types =\n            {\n                \"Greed\", \"Contempt\", \"Hatred\", \"Woe\", \"Fear\", \"Anger\", \"Torment\", \"Sorrow\", \"Rage\", \"Suffering\", \"Wrath\", \"Doubt\", \"Loathing\", \"Zeal\",\n                \"Anguish\", \"Spite\", \"Scorn\", \"Envy\", \"Misery\", \"Dread\"\n            };\n\n        internal static List<string> Generate()\n        {\n            var essences = new List<string>();\n            var upperBound = 0;\n            foreach (var tier in _tiers)\n            {\n                upperBound += 4;\n                for (var e = 0; e < upperBound; e++)\n                {\n                    if (_types.Length <= e)\n                        continue;\n\n                    var type = _types[e];\n                    essences.Add(\"OrbType.\" + tier + type + \",\");\n                }\n            }\n\n            essences.AddRange(_specialEssences.Select(type => \"EssenceType.\" + type + \",\"));\n\n            essences.Add(\"EssenceType.Corruption,\");\n\n            return essences;\n        }\n    }\n}\n"
  },
  {
    "path": "Tools/Procurement.Tools.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{995035A2-5118-4AA8-8670-065D7E4057BD}</ProjectGuid>\n    <OutputType>Exe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Procurement.Tools</RootNamespace>\n    <AssemblyName>Procurement.Tools</AssemblyName>\n    <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Net.Http\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"EssenceGenerator.cs\" />\n    <Compile Include=\"Program.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"App.config\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Tools/Procurement.Tools.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.25420.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Procurement.Tools\", \"Procurement.Tools.csproj\", \"{995035A2-5118-4AA8-8670-065D7E4057BD}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tRelease|Any CPU = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{995035A2-5118-4AA8-8670-065D7E4057BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{995035A2-5118-4AA8-8670-065D7E4057BD}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{995035A2-5118-4AA8-8670-065D7E4057BD}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{995035A2-5118-4AA8-8670-065D7E4057BD}.Release|Any CPU.Build.0 = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "Tools/Program.cs",
    "content": "﻿using System.Diagnostics;\n\nnamespace Procurement.Tools\n{\n    class Program\n    {\n        static void Main(string[] args)\n        {\n            EssenceGenerator.Generate().ForEach(x => Debug.WriteLine(x));\n        }\n    }\n}\n"
  },
  {
    "path": "Tools/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"Procurement.Tools\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"Procurement.Tools\")]\n[assembly: AssemblyCopyright(\"\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"995035a2-5118-4aa8-8670-065d7e4057bd\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "latest-release.txt",
    "content": "Procurement 1.29.0,https://github.com/Stickymaddness/Procurement/releases/tag/1.29.0\n"
  }
]