--[[
************************************************************************
Datamine.lua
In-game datamining functions for ARL
************************************************************************
File date: 2010-01-29T07:21:23Z
File revision: 2811
Project revision: 2817
Project version: v1.0-r2818
************************************************************************
Please see http://www.wowace.com/addons/arl/ for more information.
************************************************************************
This source code is released under All Rights Reserved.
************************************************************************
]]--

-------------------------------------------------------------------------------
-- AddOn namespace.
-------------------------------------------------------------------------------
local MODNAME			= "Ackis Recipe List"
local addon			= LibStub("AceAddon-3.0"):GetAddon(MODNAME)

local L				= LibStub("AceLocale-3.0"):GetLocale(MODNAME)


-------------------------------------------------------------------------------
-- Upvalues globals.
-------------------------------------------------------------------------------
local table, string = table, string

local tconcat, tinsert, tsort, twipe = table.concat, table.insert, table.sort, table.wipe
local strlower, strmatch = string.lower, string.match
local gsub = string.gsub
local tonumber, tostring = tonumber, tostring
local ipairs, pairs = ipairs, pairs

-------------------------------------------------------------------------------
-- Upvalued Blizzard API.
-------------------------------------------------------------------------------
local UnitName = UnitName
local UnitGUID = UnitGUID
local UnitExists = UnitExists
local UnitIsPlayer = UnitIsPlayer
local UnitIsEnemy = UnitIsEnemy
local GetNumTrainerServices = GetNumTrainerServices
local GetTrainerServiceInfo = GetTrainerServiceInfo
local IsTradeskillTrainer = IsTradeskillTrainer
local SetTrainerServiceTypeFilter = SetTrainerServiceTypeFilter
local GetTrainerServiceTypeFilter = GetTrainerServiceTypeFilter
local GetTrainerServiceSkillReq = GetTrainerServiceSkillReq
local GetMerchantNumItems = GetMerchantNumItems
local GetMerchantItemLink = GetMerchantItemLink
local GetMerchantItemInfo = GetMerchantItemInfo
local GetSpellInfo = GetSpellInfo

-------------------------------------------------------------------------------
-- Tradeskill professions
-------------------------------------------------------------------------------
local PROFESSIONS = {
	["Alchemy"]		= GetSpellInfo(51304),
	["Blacksmithing"]	= GetSpellInfo(51300),
	["Cooking"]		= GetSpellInfo(51296),
	["Enchanting"]		= GetSpellInfo(51313),
	["Engineering"]		= GetSpellInfo(51306),
	["FirstAid"]		= GetSpellInfo(45542),
	["Inscription"]		= GetSpellInfo(45363),
	["Jewelcrafting"]	= GetSpellInfo(51311),
	["Leatherworking"]	= GetSpellInfo(51302),
	["Runeforging"]		= GetSpellInfo(53428),
	["Smelting"]		= GetSpellInfo(32606),
	["Tailoring"]		= GetSpellInfo(51309),
}

-------------------------------------------------------------------------------
-- Mined via Data-tools
-- Table is Public Domain now
-- Look up table of Spell IDs to the recipe which trains them.
-------------------------------------------------------------------------------
local SPELL_ITEM = {
	-------------------------------------------------------------------------------
	-- First Aid
	-------------------------------------------------------------------------------
	[7929] = 16112, 	[7935] = 6454, 		[10840] = 16113, 	[23787] = 19442, 
	[27032] = 21992, 	[27033] = 21993, 	[45546] = 39152, 

	-------------------------------------------------------------------------------
	-- Alchemy
	-------------------------------------------------------------------------------
	[2333] = 3396, 		[2335] = 2555, 		[3172] = 3393, 		[3174] = 3394, 
	[3175] = 3395, 		[3188] = 6211, 		[3230] = 2553, 		[3449] = 6068, 
	[3450] = 3830, 		[3451] = 3831, 		[3453] = 3832, 		[3454] = 14634, 
	[4508] = 4597, 		[4942] = 4624, 		[6617] = 5640, 		[6618] = 5643, 
	[6624] = 5642, 		[7255] = 6053, 		[7256] = 6054, 		[7257] = 6055, 
	[7258] = 6056, 		[7259] = 6057, 		[8240] = 6663, 		[11453] = 9293, 
	[11456] = 10644, 	[11458] = 9294, 	[11459] = 9303, 	[11464] = 9295, 
	[11466] = 9296, 	[11468] = 9297, 	[11472] = 9298, 	[11473] = 9302, 
	[11476] = 9301, 	[11477] = 9300, 	[11479] = 9304, 	[11480] = 9305, 
	[17187] = 12958, 	[17552] = 13476, 	[17553] = 13477, 	[17554] = 13478, 
	[17555] = 13479, 	[17556] = 13480, 	[17557] = 13481, 	[17559] = 13482, 
	[17560] = 13483, 	[17561] = 13484, 	[17562] = 13485, 	[17563] = 13486, 
	[17564] = 13487, 	[17565] = 13488, 	[17566] = 13489, 	[17570] = 13490, 
	[17571] = 13491, 	[17572] = 13492, 	[17573] = 13493, 	[17574] = 13494, 
	[17575] = 13495, 	[17576] = 13496, 	[17577] = 13497, 	[17578] = 13499, 
	[17580] = 13501, 	[17632] = 13517, 	[17634] = 13518, 	[17635] = 31354, 
	[17636] = 31356, 	[17637] = 31355, 	[17638] = 31357, 	[21923] = 17709, 
	[22732] = 18257, 	[24365] = 20011, 	[24366] = 20012, 	[24367] = 20013, 
	[24368] = 20014, 	[25146] = 20761, 	[26277] = 21547, 	[28543] = 22900, 
	[28546] = 22901, 	[28549] = 22902, 	[28550] = 22903, 	[28552] = 22904, 
	[28553] = 24001, 	[28554] = 22906, 	[28555] = 22907, 	[28556] = 22908, 
	[28557] = 22909, 	[28558] = 22910, 	[28562] = 22911, 	[28563] = 22912, 
	[28564] = 35295, 	[28565] = 22914, 	[28566] = 22915, 	[28567] = 22916, 
	[28568] = 30443, 	[28569] = 22918, 	[28570] = 22919, 	[28571] = 22920, 
	[28572] = 22921, 	[28573] = 22922, 	[28575] = 22923, 	[28576] = 22924, 
	[28577] = 22925, 	[28578] = 35294, 	[28579] = 22927, 	[29688] = 23574, 
	[32765] = 25869, 	[32766] = 29232, 	[38960] = 31680, 	[38961] = 31682, 
	[38962] = 31681, 	[39637] = 32070, 	[39639] = 32071, 	[42736] = 33209, 
	[47046] = 35752, 	[47048] = 35753, 	[47049] = 35754, 	[47050] = 35755, 
	[53936] = 44564, 	[53937] = 44566, 	[53938] = 44568, 	[53939] = 44565, 
	[53942] = 44567, 

	-------------------------------------------------------------------------------
	-- Blacksmithing
	-------------------------------------------------------------------------------
	[2667] = 2881, 		[2673] = 5578, 		[3295] = 2883, 		[3297] = 3608, 
	[3321] = 3609, 		[3325] = 3610, 		[3330] = 2882, 		[3334] = 3611, 
	[3336] = 3612, 		[3492] = 12162, 	[3493] = 3866, 		[3494] = 10858, 
	[3495] = 3867, 		[3496] = 12163, 	[3497] = 3868, 		[3498] = 12164, 
	[3500] = 3869, 		[3503] = 6047, 		[3504] = 3870, 		[3505] = 3871, 
	[3507] = 3872, 		[3511] = 3873, 		[3513] = 3874, 		[3515] = 3875, 
	[6518] = 5543, 		[7221] = 6044, 		[7222] = 6045, 		[7224] = 6046, 
	[8367] = 6735, 		[9811] = 7978, 		[9813] = 7979, 		[9814] = 7980, 
	[9818] = 7981, 		[9820] = 7982, 		[9933] = 7975, 		[9937] = 7995, 
	[9939] = 7976, 		[9945] = 7983, 		[9950] = 7984, 		[9952] = 7985, 
	[9964] = 7989, 		[9966] = 7991, 		[9970] = 7990, 		[9995] = 7992, 
	[9997] = 8029, 		[10005] = 7993, 	[10009] = 8028,		[10013] = 8030, 
	[11454] = 10713, 	[11643] = 9367, 	[12259] = 10424, 	[15292] = 11610, 
	[15293] = 11614, 	[15294] = 11611, 	[15295] = 11615, 	[15296] = 11612, 
	[15973] = 12261, 	[16642] = 12682, 	[16643] = 12683, 	[16644] = 12684, 
	[16645] = 12685, 	[16646] = 12687, 	[16647] = 12688, 	[16648] = 12689, 
	[16649] = 12690, 	[16650] = 12691, 	[16651] = 12692, 	[16652] = 12693, 
	[16653] = 12694, 	[16654] = 12695, 	[16655] = 12699, 	[16656] = 12697, 
	[16657] = 12700, 	[16658] = 12701, 	[16659] = 12702, 	[16660] = 12698, 
	[16661] = 12703, 	[16662] = 12704, 	[16663] = 12705, 	[16664] = 12706, 
	[16665] = 12707, 	[16667] = 12696, 	[16724] = 12711, 	[16725] = 12713, 
	[16726] = 12714, 	[16728] = 12716, 	[16729] = 12717, 	[16730] = 12715, 
	[16731] = 12718, 	[16732] = 12719, 	[16741] = 12720, 	[16742] = 12725, 
	[16744] = 12726, 	[16745] = 12727, 	[16746] = 12728, 	[16969] = 12819, 
	[16970] = 12821, 	[16971] = 12823, 	[16973] = 12824, 	[16978] = 12825, 
	[16983] = 12827, 	[16984] = 12828, 	[16985] = 12830, 	[16988] = 12833, 
	[16990] = 12834, 	[16991] = 12835, 	[16992] = 12836, 	[16993] = 12837, 
	[16994] = 12838, 	[16995] = 12839, 	[20872] = 17049, 	[20873] = 17053, 
	[20874] = 17051, 	[20876] = 17052, 	[20890] = 17059, 	[20897] = 17060, 
	[21161] = 18592, 	[21913] = 17706, 	[22757] = 18264, 	[23628] = 19202, 
	[23629] = 19204, 	[23632] = 19203, 	[23633] = 19205, 	[23636] = 19206, 
	[23637] = 19207, 	[23638] = 19208, 	[23639] = 19209, 	[23650] = 19210, 
	[23652] = 19211, 	[23653] = 19212, 	[24136] = 19776, 	[24137] = 19777, 
	[24138] = 19778, 	[24139] = 19779, 	[24140] = 19780, 	[24141] = 19781, 
	[24399] = 20040, 	[24912] = 20553, 	[24913] = 20555, 	[24914] = 20554, 
	[27585] = 22209, 	[27586] = 22219, 	[27587] = 22222, 	[27588] = 22214, 
	[27589] = 22220, 	[27590] = 22221, 	[27829] = 22388, 	[27830] = 22390, 
	[27832] = 22389, 	[28461] = 22766, 	[28462] = 22767, 	[28463] = 22768, 
	[29566] = 23590, 	[29568] = 23591, 	[29569] = 23592, 	[29571] = 23593, 
	[29603] = 23594, 	[29605] = 23595, 	[29606] = 23596, 	[29608] = 23597, 
	[29610] = 23599, 	[29611] = 23598, 	[29613] = 23600, 	[29614] = 23601, 
	[29615] = 23602, 	[29616] = 23603, 	[29617] = 23604, 	[29619] = 23605, 
	[29620] = 23606, 	[29621] = 23607, 	[29622] = 23621, 	[29628] = 23608, 
	[29629] = 23609, 	[29630] = 23610, 	[29642] = 23611, 	[29643] = 23612, 
	[29645] = 23613, 	[29648] = 23615, 	[29649] = 23617, 	[29656] = 23618, 
	[29657] = 24002, 	[29658] = 23620, 	[29662] = 23622, 	[29663] = 23623, 
	[29664] = 23624, 	[29668] = 23625, 	[29669] = 23626, 	[29671] = 23627, 
	[29672] = 23628, 	[29692] = 23629, 	[29693] = 23630, 	[29694] = 23631, 
	[29695] = 23632, 	[29696] = 23633, 	[29697] = 23634, 	[29698] = 23635, 
	[29699] = 23636, 	[29700] = 23637, 	[29728] = 23638, 	[29729] = 23639, 
	[32285] = 25526, 	[32656] = 25846, 	[32657] = 25847, 	[34608] = 28632, 
	[36389] = 30321, 	[36390] = 30322, 	[36391] = 30323, 	[36392] = 30324, 
	[38473] = 31390, 	[38475] = 31391, 	[38476] = 31392, 	[38477] = 31393, 
	[38478] = 31394, 	[38479] = 31395, 	[40033] = 32441, 	[40034] = 32442, 
	[40035] = 32443, 	[40036] = 32444, 	[41132] = 32736, 	[41133] = 32737, 
	[41134] = 32738, 	[41135] = 32739, 	[42688] = 35296, 	[43549] = 33792, 
	[43846] = 33954, 	[46140] = 35208, 	[46141] = 35209, 	[46142] = 35210, 
	[46144] = 35211, 	[54978] = 41124, 	[54979] = 41123, 	[54980] = 41120, 
	[54981] = 41122, 	[62202] = 44938, 	[63187] = 45088, 	[63188] = 45089, 
	[63189] = 45090, 	[63190] = 45091, 	[63191] = 45092, 	[63192] = 45093, 
	[67091] = 47622, 	[67130] = 47460, 	[67092] = 47623, 	[67131] = 47641, 
	[67096] = 47627, 	[67135] = 47642, 	[67095] = 47626, 	[67134] = 47643, 
	[67093] = 47624, 	[67132] = 47644, 	[67094] = 47625, 	[67133] = 47645, 
	[70563] = 49970,    [70567] = 49973,    [70565] = 49971,   [70566] = 49972,
	[70568] = 49974,   [70562] = 49969, 

	-------------------------------------------------------------------------------
	-- Cooking
	-------------------------------------------------------------------------------
	[2542] = 2697, 		[2543] = 728, 		[2545] = 2698, 		[2547] = 2699, 
	[2548] = 2700, 		[2549] = 2701, 		[2795] = 2889, 		[3370] = 3678, 
	[3371] = 3679, 		[3372] = 3680, 		[3373] = 3681, 		[3376] = 3682, 
	[3377] = 3683, 		[3397] = 3734, 		[3398] = 3735, 		[3399] = 3736, 
	[3400] = 3737, 		[4094] = 4609, 		[6412] = 5482, 		[6413] = 5483, 
	[6414] = 5484, 		[6415] = 5485, 		[6416] = 5486, 		[6417] = 44977, 
	[6418] = 5488, 		[6419] = 5489, 		[6501] = 5528, 		[7213] = 6039, 
	[7751] = 6325, 		[7752] = 6326, 		[7753] = 6328, 		[7754] = 6329, 
	[7755] = 6330, 		[7827] = 6368, 		[7828] = 6369, 		[8238] = 6661, 
	[8607] = 6892, 		[9513] = 18160, 	[15853] = 12227, 	[15855] = 12228, 
	[15856] = 12229, 	[15861] = 12231, 	[15863] = 12232, 	[15865] = 12233, 
	[15906] = 12239, 	[15910] = 12240, 	[15915] = 16111, 	[15933] = 16110, 
	[15935] = 12226, 	[18238] = 13939, 	[18239] = 13940, 	[18240] = 13942, 
	[18241] = 13941, 	[18242] = 13943, 	[18243] = 13945, 	[18244] = 13946, 
	[18245] = 13947, 	[18246] = 13948, 	[18247] = 13949, 	[20626] = 16767, 
	[20916] = 17062, 	[21143] = 17200, 	[21144] = 17201, 	[22480] = 18046, 
	[22761] = 18267, 	[24418] = 20075, 	[25659] = 21025, 	[25704] = 21099, 
	[25954] = 21219, 	[28267] = 22647, 	[33276] = 27685, 	[33277] = 27686, 
	[33278] = 27687, 	[33279] = 27684, 	[33284] = 27688, 	[33285] = 27689, 
	[33286] = 27690, 	[33287] = 27691, 	[33288] = 27692, 	[33289] = 27693, 
	[33290] = 27694, 	[33291] = 27695, 	[33292] = 27696, 	[33293] = 27697, 
	[33294] = 27698, 	[33295] = 27699, 	[33296] = 27700, 	[36210] = 30156, 
	[38867] = 31675, 	[38868] = 31674, 	[43707] = 33870, 	[43758] = 33871, 
	[43761] = 33869, 	[43765] = 33873, 	[43772] = 33875, 	[43779] = 33925, 
	[45022] = 34413, 	[45555] = 43018, 	[45556] = 43019, 	[45557] = 43020, 
	[45558] = 43021, 	[45559] = 43022, 	[45567] = 43023, 	[45568] = 43024, 
	[45570] = 43026, 	[45571] = 43025, 	[45695] = 34834, 	[46684] = 35564, 
	[46688] = 35566, 	[53056] = 39644, 	[57423] = 43017, 	[57433] = 43027, 
	[57434] = 43028, 	[57435] = 43029, 	[57436] = 43030, 	[57437] = 43031, 
	[57438] = 43032, 	[57439] = 43033, 	[57440] = 43034, 	[57441] = 43035, 
	[57442] = 43036, 	[57443] = 43037, 	[58512] = 43507, 	[58521] = 43508, 
	[58523] = 43509, 	[58525] = 43510, 	[58527] = 43505, 	[58528] = 43506, 
	[62350] = 44954, 

	-------------------------------------------------------------------------------
	-- Enchanting
	-------------------------------------------------------------------------------
	[7443] = 6342, 		[7766] = 6344, 		[7776] = 6346, 		[7782] = 6347, 
	[7786] = 6348, 		[7793] = 6349, 		[7859] = 6375, 		[7867] = 6377, 
	[13380] = 11038, 	[13419] = 11039, 	[13464] = 11081, 	[13522] = 11098, 
	[13536] = 11101, 	[13612] = 11150, 	[13617] = 11151, 	[13620] = 11152, 
	[13646] = 11163, 	[13653] = 11164, 	[13655] = 11165, 	[13687] = 11167, 
	[13689] = 11168, 	[13698] = 11166, 	[13817] = 11202, 	[13841] = 11203, 
	[13846] = 11204, 	[13868] = 11205, 	[13882] = 11206, 	[13898] = 11207, 
	[13915] = 11208, 	[13931] = 11223, 	[13933] = 11224, 	[13945] = 11225, 
	[13947] = 11226, 	[15596] = 11813, 	[15596] = 45050, 
	[20009] = 16218, 	[20010] = 16246, 	[20011] = 16251, 	[20012] = 16219, 
 	[20014] = 16216, 	[20015] = 16224, 	[20016] = 16222, 
	[20017] = 16217, 	[20020] = 16215, 	[20023] = 16245, 	[20024] = 16220, 
	[20025] = 16253, 	[20026] = 16221, 	[20028] = 16242, 	[20029] = 16223, 
	[20030] = 16247, 	[20031] = 16250, 	[20032] = 16254, 	[20033] = 16248, 
	[20034] = 16252, 	[20035] = 16255, 	[20036] = 16249, 	[20051] = 16243, 
	[21931] = 17725, 	[22749] = 18259, 	[22750] = 18260, 	[23799] = 19444, 
	[23800] = 19445, 	[23801] = 19446, 	[23802] = 19447, 	[23803] = 19448, 
	[23804] = 19449, 	[25072] = 33153, 	[25072] = 20726, 	[25073] = 20727, 
	[25074] = 20728, 	[25078] = 20729, 	[25079] = 20730, 	[25080] = 33152, 
	[25080] = 20731, 	[25081] = 20732, 	[25082] = 20733, 	[25083] = 33149, 
	[25083] = 20734, 	[25084] = 20735, 	[25084] = 33150, 	[25084] = 33151, 
	[25086] = 20736, 	[25086] = 33148, 	[25124] = 20758, 	[25125] = 20752, 
	[25126] = 20753, 	[25127] = 20754, 	[25128] = 20755, 	[25129] = 20756, 
	[25130] = 20757, 	[27837] = 22392, 	[27906] = 22530, 	[27911] = 22531, 
	[27911] = 24000, 	[27913] = 22532, 	[27914] = 22533, 	[27917] = 22534, 
	[27920] = 22535, 	[27924] = 22536, 	[27926] = 22537, 	[27927] = 22538, 
	[27945] = 22539, 	[27946] = 22540, 	[27947] = 22541, 	[27948] = 35298, 
	[27948] = 22542, 	[27950] = 22543, 	[27951] = 22544, 	[27954] = 22545, 
	[27960] = 24003, 	[27960] = 22547, 	[27962] = 22548, 	[27967] = 22552, 
	[27968] = 22551, 	[27971] = 22554, 	[27972] = 22553, 	[27975] = 22555, 
	[27977] = 22556, 	[27981] = 22560, 	[27982] = 22561, 	[27984] = 22559, 
	[28003] = 22558, 	[28004] = 22557, 	[28016] = 22562, 	[28019] = 22563, 
	[28022] = 22565, 	[32665] = 25848, 	[32667] = 25849, 	[33992] = 28270, 
	[33994] = 28271, 	[33997] = 28272, 	[33999] = 28273, 	[34003] = 28274, 
	[34005] = 28276, 	[34006] = 28277, 	[34007] = 35299, 	[34007] = 28279, 
	[34008] = 35297, 	[34008] = 28280, 	[34009] = 28282, 	[34010] = 28281, 
	[42620] = 33165, 	[42974] = 33307, 	[44483] = 37332, 	[44494] = 37333, 
	[44524] = 37344, 	[44556] = 37331, 	[44575] = 44484, 	[44576] = 44494, 
	[44588] = 37340, 	[44590] = 37334, 	[44591] = 37347, 	[44595] = 44473, 
	[44596] = 37330, 	[44621] = 37339, 	[44625] = 44485, 	[44631] = 37349, 
	[45765] = 34872, 	[46578] = 35498, 	[46594] = 35500, 	[47051] = 35756, 
	[47672] = 44471, 	[47898] = 44472, 	[47899] = 44488, 	[47901] = 44491, 
	[59619] = 44496, 	[59621] = 44492, 	[59625] = 44495, 	[60691] = 44483, 
	[60692] = 44489, 	[60707] = 44486, 	[60714] = 44487, 	[60763] = 44490, 
	[60767] = 44498, 	[62256] = 44944, 	[62257] = 44945, 	[62948] = 45059, 
	[64441] = 46027, 	[64579] = 46348, 

	-------------------------------------------------------------------------------
	--Engineering
	-------------------------------------------------------------------------------
	[3928] = 4408, 		[3933] = 4409, 		[3939] = 13309,		[3940] = 4410, 
	[3944] = 4411, 		[3952] = 14639, 	[3954] = 4412, 		[3957] = 13308, 
	[3959] = 4413, 		[3960] = 4414, 		[3966] = 4415, 		[3968] = 4416, 
	[3969] = 13311, 	[3971] = 7742, 		[3972] = 4417, 		[3979] = 13310, 
	[8243] = 6672, 		[8339] = 6716, 		[9269] = 7560, 		[9273] = 7561, 
	[12587] = 10601, 	[12597] = 10602, 	[12607] = 10603, 	[12614] = 10604, 
	[12615] = 10605, 	[12616] = 10606, 	[12617] = 10607, 	[12620] = 10608, 
	[12624] = 10609, 	[15628] = 11828, 	[15633] = 11827, 	[19790] = 16041, 
	[19791] = 16042, 	[19792] = 16043, 	[19793] = 16044, 	[19794] = 16045, 
	[19795] = 16047, 	[19796] = 16048, 	[19799] = 16049, 	[19800] = 16051, 
	[19814] = 16046, 	[19815] = 16050, 	[19819] = 16052, 	[19825] = 16053, 
	[19830] = 16054, 	[19831] = 16055, 	[19833] = 16056, 	[21940] = 17720, 
	[22793] = 18290, 	[22795] = 18292, 	[22797] = 18291, 	[23066] = 18647, 
	[23067] = 18649, 	[23068] = 18648, 	[23069] = 18650, 	[23071] = 18651, 
	[23077] = 18652, 	[23078] = 18653, 	[23079] = 18655, 	[23080] = 18656, 
	[23081] = 18657, 	[23082] = 18658, 	[23096] = 18654, 	[23129] = 18661, 
	[23507] = 19027, 	[24356] = 20000, 	[24357] = 20001, 	[26416] = 21724, 
	[26417] = 21725, 	[26418] = 21726, 	[26420] = 21727, 	[26421] = 21728, 
	[26422] = 21729, 	[26423] = 21730, 	[26424] = 21731, 	[26425] = 21732, 
	[26426] = 21733, 	[26427] = 21734, 	[26428] = 21735, 	[26442] = 44919, 
	[26443] = 44918, 	[28327] = 22729, 	[30313] = 23799, 	[30314] = 23800, 
	[30315] = 23802, 	[30316] = 23803, 	[30317] = 23804, 	[30318] = 23805, 
	[30325] = 23806, 	[30329] = 23807, 	[30332] = 23808, 	[30334] = 23809, 
	[30337] = 23810, 	[30341] = 23811, 	[30344] = 23814, 	[30347] = 23815, 
	[30348] = 23816, 	[30349] = 23817, 	[30547] = 23874, 	[30548] = 23888, 
	[30551] = 35310, 	[30552] = 35311, 	[30556] = 23887, 	[32814] = 25887, 
	[39895] = 32381, 	[43676] = 33804, 	[44391] = 34114, 	[46106] = 35191, 
	[46107] = 35187, 	[46108] = 35189, 	[46109] = 35190, 	[46110] = 35192, 
	[46111] = 35186, 	[46112] = 35193, 	[46113] = 35194, 	[46114] = 35195, 
	[46115] = 35196, 	[46116] = 35197, 	[46697] = 35582,  [60866] = 44502, 	[60867] = 44503, 
	[72952] = 52022, [72953] = 52023,

	-------------------------------------------------------------------------------
	--Inscription
	-------------------------------------------------------------------------------
	[71101] = 50166,  [71102] = 50168,  [71015] = 50167,
	-------------------------------------------------------------------------------
	--Jewelcrafting
	-------------------------------------------------------------------------------
	[25320] = 20856, 	[25323] = 20855, 	[25339] = 20854, 	[25610] = 20970, 
	[25612] = 20971, 	[25617] = 20973, 	[25618] = 20974, 	[25619] = 20975, 
	[25622] = 20976, 	[26873] = 21940, 	[26875] = 21941, 	[26878] = 21942, 
	[26881] = 21943, 	[26882] = 21944, 	[26887] = 21945, 	[26896] = 21947, 
	[26897] = 21948, 	[26900] = 21949, 	[26906] = 21952, 	[26909] = 21953, 
	[26910] = 21954, 	[26912] = 21955, 	[26914] = 21956, 	[26915] = 21957, 
	[28903] = 23130, 	[28905] = 23131, 	[28906] = 23133, 	[28907] = 23134, 
	[28910] = 23135, 	[28912] = 23136, 	[28914] = 23137, 	[28915] = 23138, 
	[28916] = 23140, 	[28917] = 23141, 	[28918] = 31359, 	[28924] = 23143, 
	[28927] = 23145, 	[28933] = 23146, 	[28936] = 23147, 
	[28938] = 23148, 	[28944] = 23149, 	[28947] = 23150, 	[28948] = 23151, 
	[28950] = 23152, 	[28953] = 23153, 	[28955] = 23154, 	[28957] = 23155, 
	[31053] = 24158, 	[31054] = 24159, 	[31055] = 24160, 	[31056] = 24161, 
	[31057] = 24162, 	[31058] = 24163, 	[31060] = 24164, 	[31061] = 24165, 
	[31062] = 24174, 	[31063] = 24175, 	[31064] = 24176, 	[31065] = 24177, 
	[31066] = 24178, 	[31067] = 24166, 	[31068] = 24167, 	[31070] = 24168, 
	[31071] = 24169, 	[31072] = 24170, 	[31076] = 24171, 	[31077] = 24172, 
	[31078] = 24173, 	[31079] = 24179, 	[31080] = 31358, 	[31081] = 24181, 
	[31082] = 24182, 	[31083] = 24183, 	[31084] = 24193, 	[31085] = 24194, 
	[31087] = 24195, 	[31088] = 35305, 	[31089] = 35306, 	[31090] = 24197, 
	[31091] = 24198, 	[31092] = 35304, 	[31094] = 24201, 	[31095] = 24202, 
	[31096] = 24203, 	[31097] = 24204, 	[31098] = 35307, 	[31099] = 24206, 
	[31100] = 24207, 	[31101] = 24208, 	[31102] = 24209, 	[31103] = 24210, 
	[31104] = 24211, 	[31105] = 24212, 	[31106] = 24213, 	[31107] = 24214, 
	[31108] = 24215, 	[31109] = 24216, 	[31110] = 24217, 	[31111] = 24218, 
	[31112] = 24219, 	[31113] = 24220, 	[31149] = 24200, 	[32866] = 25902, 
	[32867] = 25903, 	[32868] = 25905, 	[32869] = 25906, 	[32870] = 25904, 
	[32871] = 25907, 	[32872] = 25909, 	[32873] = 25908, 	[32874] = 25910, 
	[34069] = 28291, 	[34590] = 28596, 	[37855] = 30826, 	[38503] = 31401, 
	[38504] = 31402, 	[39451] = 31870, 	[39452] = 31875, 	[39455] = 31871, 
	[39458] = 31872, 	[39462] = 31877, 	[39463] = 31876, 	[39466] = 31873, 
	[39467] = 31874, 	[39470] = 31878, 	[39471] = 31879, 	[39705] = 35244, 
	[39706] = 35246, 	[39710] = 35250, 	[39711] = 35248, 	[39712] = 35245, 
	[39713] = 35249, 	[39714] = 35247, 	[39715] = 35263, 	[39716] = 35264, 
	[39717] = 35262, 	[39718] = 35265, 	[39719] = 35255, 	[39720] = 35260, 
	[39721] = 35259, 	[39722] = 35256, 	[39723] = 35261, 	[39724] = 35258, 
	[39725] = 35257, 	[39727] = 35243, 	[39728] = 35242, 	[39729] = 35238, 
	[39730] = 35240, 	[39731] = 35239, 	[39732] = 35241, 	[39733] = 35267, 
	[39734] = 35269, 	[39735] = 35268, 	[39736] = 35266, 	[39737] = 35270, 
	[39738] = 35271, 	[39739] = 35252, 	[39740] = 35254, 	[39741] = 35251, 
	[39742] = 35253, 	[39961] = 33622, 	[39963] = 32411, 	[42558] = 33305, 
	[42588] = 33155, 	[42589] = 33156, 	[42590] = 33157, 	[42591] = 33158, 
	[42592] = 33159, 	[42593] = 33160, 	[43493] = 33783, 	[44794] = 34689, 
	[46122] = 35198, 	[46123] = 35538, 	[46124] = 35200, 	[46125] = 35201, 
	[46126] = 35533, 	[46127] = 35203, 	[46403] = 35322, 	[46404] = 35323, 
	[46405] = 35325, 	[46597] = 35502, 	[46601] = 35505, 	[46775] = 35695, 
	[46776] = 35696, 	[46777] = 35697, 	[46778] = 35698, 	[46779] = 35699, 
	[46803] = 35708, 	[47053] = 35769, 	[47054] = 35766, 	[47055] = 35767, 
	[47056] = 35768, 	[48789] = 37504, 	[53830] = 41576, 	[53857] = 41559, 
	[53865] = 41575, 	[53869] = 41574, 	[53875] = 41566, 	[53877] = 41562, 
	[53879] = 41565, 	[53884] = 41563, 	[53885] = 41561, 	[53888] = 41564, 
	[53917] = 41567, 	[53919] = 41572, 	[53921] = 41568, 	[53924] = 41571, 
	[53929] = 41573, 	[53932] = 41570, 	[53933] = 41569, 	[53943] = 41560, 
	[53945] = 41577, 	[53946] = 41718, 	[53948] = 41719, 	[53949] = 41578, 
	[53950] = 41817, 	[53951] = 41790, 	[53952] = 42138, 	[53954] = 41581, 
	[53955] = 41728, 	[53957] = 41720, 	[53958] = 41580, 	[53959] = 41791, 
	[53960] = 41727, 	[53961] = 41579, 	[53962] = 41784, 	[53963] = 41747, 
	[53964] = 41785, 	[53965] = 41725, 	[53966] = 41783, 	[53967] = 41701, 
	[53968] = 41740, 	[53970] = 41796, 	[53971] = 41703, 	[53972] = 41820, 
	[53973] = 41702, 	[53974] = 41726, 	[53975] = 41789, 	[53976] = 41777, 
	[53977] = 41780, 	[53978] = 41734, 	[53979] = 41794, 	[53980] = 41582, 
	[53981] = 41733, 	[53982] = 41792, 	[53983] = 41689, 	[53984] = 41686, 
	[53985] = 41688, 	[53986] = 41730, 	[53987] = 41690, 	[53988] = 41721, 
	[53990] = 41732, 	[53991] = 41687, 	[53992] = 41779, 	[53993] = 41722, 
	[53994] = 41818, 	[53995] = 41795, 	[53996] = 41723, 	[53997] = 41698, 
	[53998] = 41697, 	[54000] = 41738, 	[54001] = 41693, 	[54002] = 41699, 
	[54003] = 41781, 	[54004] = 41782, 	[54005] = 41737, 	[54006] = 41694, 
	[54008] = 41724, 	[54009] = 41696, 	[54010] = 41739, 	[54011] = 41692, 
	[54012] = 41819, 	[54013] = 41736, 	[54014] = 41735, 	[54019] = 41793, 
	[54023] = 41778, 	[55384] = 41705, 	[55387] = 41743, 	[55388] = 41744, 
	[55389] = 41704, 	[55390] = 41786, 	[55392] = 41706, 	[55393] = 41742, 
	[55395] = 41787, 	[55396] = 41708, 	[55397] = 41798, 	[55398] = 41799, 
	[55400] = 41710, 	[55401] = 41797, 	[55403] = 41711, 	[55404] = 41709, 
	[55405] = 41788, 	[55407] = 41707, 	[56049] = 42298, 	[56052] = 42301, 
	[56053] = 42309, 	[56054] = 42299, 	[56055] = 42314, 	[56056] = 42302, 
	[56074] = 42300, 	[56076] = 42303, 	[56077] = 42304, 	[56079] = 42305, 
	[56081] = 42306, 	[56083] = 42307, 	[56084] = 42308, 	[56085] = 42310, 
	[56086] = 42311, 	[56087] = 42312, 	[56088] = 42313, 	[56089] = 42315, 
	[56496] = 42648, 	[56497] = 42649, 	[56498] = 42650, 	[56499] = 42651, 
	[56500] = 42652, 	[56501] = 42653, 	[58147] = 43317, 	[58148] = 43318, 
	[58149] = 43319, 	[58150] = 43320, 	[58492] = 43485, 	[58507] = 43497, 
	[58954] = 43597,   [66556] = 46937, [66447] =  46917 , [66429] =  46899,
	[66557] =  46938, [66430] =  46900, [66432] =  46902, [66433] =  46903,
 [66497] =  46924, [66561] =  46942, [66434] = 46904, [66498] =  46925, 
 [66499] =  46926, [66436] =  46906, [66500] =  46927, [66437] =  46907, 
 [66501] =  46928, [66565] =  46946, [66438] =  46908, [66502] = 46929,
 [66566] =  46947, [66439] =  46909, [66503] = 46930  , [66567] =  46948,
 [66440] = 46910, [66504] =  46931, [66441] =  46911, [66505] =  46932,
 [66569] =  46950, [66442] = 46912, [66506] = 46933, [66570] =  46951,
 [66443] =  46913, [66444] = 46914, [66572] = 46953, [66445] =  46915, 
 [66573] = 46956, [66446] =  46916, [66574] =  47007, [66575] = 47008,
 [66448] =  46918, [66576] =  47010, [66449] =  46919, [66577] =  47011, 
 [66450] = 46920, [66578] = 47012, [66451] =  46921, [66579] = 47015, 
 [66452] =  46922, [66580] =  47016, [66453] = 46923, [66581] =  47017,
 [66582] =  47018, [66583] = 47019, [66584] =  47020, [66586] =  47022, 
 [68253] =  49112, [66338] = 46897, [66571] =  46952, [66564] = 46945,
 [66562] =  46943, [66560] =  46941, [66558] =  46939, [66554] =  46935, 
 [66559] =  46940, [66585] =  47021, [66555] = 46936, [66587] =  47023, 
 [66431] =  46901, [66428] =  46898, [66435] = 46905, [66563] = 46944, 
 [66553] = 46934 , [66568] = 46949,

	-------------------------------------------------------------------------------
	--Leatherworking
	-------------------------------------------------------------------------------
	[2158] = 2406, 		[2163] = 2407, 		[2164] = 2408, 		[2169] = 2409, 
	[3762] = 4293, 		[3765] = 7360, 		[3767] = 4294, 		[3769] = 4296, 
	[3771] = 4297, 		[3772] = 7613, 		[3773] = 4299, 		[3775] = 4298, 
	[3777] = 4300, 		[3778] = 14635, 	[3779] = 4301, 		[4096] = 13287, 
	[4097] = 13288, 	[5244] = 5083, 		[6702] = 5786, 		[6703] = 5787, 
	[6704] = 5788, 		[6705] = 5789, 		[7133] = 5972, 		[7149] = 5973, 	
	[7153] = 5974, 		[7953] = 6474, 		[7954] = 6475, 		[7955] = 6476, 	
	[8322] = 6710, 		[9064] = 7288, 		[9070] = 7289, 		[9072] = 7290, 	
	[9146] = 7361, 		[9147] = 7362, 		[9148] = 7363, 		[9149] = 7364, 
	[9195] = 7449, 		[9197] = 7450, 		[9202] = 7451, 		[9207] = 7452, 	
	[9208] = 7453, 		[10490] = 8384, 	[10509] = 8385, 	[10516] = 8409, 	
	[10520] = 8386, 	[10525] = 8395, 	[10529] = 8403, 	[10531] = 8387, 	
	[10533] = 8397, 	[10542] = 8398, 	[10544] = 8404, 	[10546] = 8405, 
	[10554] = 8399, 	[10560] = 8389, 	[10562] = 8390, 	[10564] = 8400, 	
	[10566] = 8406, 	[10568] = 8401, 	[10570] = 8402, 	[10572] = 8407, 	
	[10574] = 8408, 	[19048] = 15724, 	[19049] = 15725, 	[19050] = 15726, 
	[19051] = 15727, 	[19052] = 15728, 	[19053] = 15729, 	[19054] = 15730, 
	[19055] = 15731, 	[19059] = 15732, 	[19060] = 15733, 	[19061] = 15734, 
	[19062] = 15735, 	[19063] = 15737, 	[19064] = 15738, 	[19065] = 15739, 
	[19066] = 15740, 	[19067] = 15741, 	[19068] = 20253, 	[19070] = 15743, 
	[19071] = 15744, 	[19072] = 15745, 	[19073] = 15746, 	[19074] = 15747, 
	[19075] = 15748, 	[19076] = 15749, 	[19077] = 15751, 	[19078] = 15752, 
	[19079] = 15753, 	[19080] = 20254, 	[19081] = 15755, 	[19082] = 15756, 
	[19083] = 15757, 	[19084] = 15758, 	[19085] = 15759, 	[19086] = 15760, 
	[19087] = 15761, 	[19088] = 15762, 	[19089] = 15763, 	[19090] = 15764, 
	[19091] = 15765, 	[19092] = 15768, 	[19093] = 15769, 	[19094] = 15770, 
	[19095] = 15771, 	[19097] = 15772, 	[19098] = 15773, 	[19100] = 15774, 
	[19101] = 15775, 	[19102] = 15776, 	[19103] = 15777, 	[19104] = 15779, 
	[19107] = 15781, 	[20853] = 17022, 	[20854] = 17023, 	[20855] = 17025, 
	[21943] = 17722, 	[22711] = 18239, 	[22727] = 18252, 	[22921] = 18514, 
	[22922] = 18515, 	[22923] = 18516, 	[22926] = 18517, 	[22927] = 18518, 
	[22928] = 18519, 	[23190] = 18731, 	[23399] = 18949, 	[23703] = 19326, 
	[23704] = 19327, 	[23705] = 19328, 	[23706] = 19329, 	[23707] = 19330, 
	[23708] = 19331, 	[23709] = 19332, 	[23710] = 19333, 	[24121] = 19769, 
	[24122] = 19770, 	[24123] = 19771, 	[24124] = 19772, 	[24125] = 19773, 
	[24703] = 20382, 	[24846] = 20506, 	[24847] = 20507, 	[24848] = 20508, 
	[24849] = 20509, 	[24850] = 20510, 	[24851] = 20511, 	[24940] = 20576, 
	[26279] = 21548, 	[28472] = 22771, 	[28473] = 22770, 	[28474] = 22769, 
	[32455] = 25720, 	[32457] = 25721, 	[32458] = 25722, 	[32461] = 25725, 
	[32482] = 25726, 	[32485] = 25728, 	[32487] = 25729, 	[32488] = 25731, 
	[32489] = 25730, 	[32490] = 25732, 	[32493] = 25733, 	[32494] = 25734, 
	[32495] = 25735, 	[32496] = 25736, 	[32497] = 25737, 	[32498] = 29213, 
	[32499] = 29214, 	[32500] = 29215, 	[32501] = 29217, 	[32502] = 29219, 
	[32503] = 29218, 	[35520] = 29669, 	[35521] = 29672, 	[35522] = 29673, 
	[35523] = 29674, 	[35524] = 29675, 	[35525] = 29677, 	[35526] = 29682, 
	[35527] = 29684, 	[35528] = 29691, 	[35529] = 29689, 	[35530] = 30444, 
	[35531] = 29693, 	[35532] = 29698, 	[35533] = 29700, 	[35534] = 29701, 
	[35535] = 29702, 	[35536] = 29703, 	[35537] = 29704, 	[35538] = 29713, 
	[35539] = 34175, 	[35543] = 29717, 	[35544] = 34173, 	[35549] = 31361, 
	[35554] = 31362, 	[35555] = 29720, 	[35557] = 29721, 	[35558] = 29723, 
	[35559] = 35302, 	[35560] = 29725, 	[35561] = 29726, 	[35562] = 35303, 
	[35563] = 29728, 	[35564] = 29729, 	[35567] = 29730, 	[35568] = 35300, 
	[35572] = 29732, 	[35573] = 35301, 	[35574] = 29734, 	[36349] = 30301, 
	[36351] = 30302, 	[36352] = 30303, 	[36353] = 30304, 	[36355] = 30305, 
	[36357] = 30306, 	[36358] = 30307, 	[36359] = 30308, 	[39997] = 32429, 
	[40001] = 32431, 	[40002] = 32432, 	[40003] = 32433, 	[40004] = 32434, 
	[40005] = 32435, 	[40006] = 32436, 	[41156] = 32744, 	[41157] = 35523, 
	[41158] = 35527, 	[41160] = 35528, 	[41161] = 35517, 	[41162] = 35524, 
	[41163] = 35520, 	[41164] = 35521, 	[42546] = 33124, 	[42731] = 33205, 
	[44359] = 34200, 	[44768] = 34218, 	[44953] = 34262, 	[45117] = 34491, 
	[46132] = 35546, 	[46133] = 35541, 	[46134] = 35214, 	[46135] = 35215, 
	[46136] = 35216, 	[46137] = 35217, 	[46138] = 35218, 	[46139] = 35549, 
	[50970] = 44509, 	[50971] = 44510, 	[52733] = 32430, 	[57683] = 43097, 
	[57692] = 44559, 	[57694] = 44560, 	[57696] = 44561, 	[57699] = 44562, 
	[57701] = 44563, 	[60645] = 44511, 	[60647] = 44512, 	[60697] = 44513, 
	[60702] = 44514, 	[60703] = 44515, 	[60704] = 44516, 	[60705] = 44517, 
	[60706] = 44518, 	[60711] = 44519, 	[60712] = 44520, 	[60715] = 44521, 
	[60716] = 44522, 	[60718] = 44523, 	[60720] = 44524, 	[60721] = 44525, 
	[60723] = 44526, 	[60725] = 44527, 	[60727] = 44528, 	[60728] = 44530, 
	[60729] = 44531, 	[60730] = 44532, 	[60731] = 44533, 	[60732] = 44534, 
	[60734] = 44535, 	[60735] = 44536, 	[60737] = 44537, 	[60743] = 44538, 
	[60746] = 44539, 	[60747] = 44540, 	[60748] = 44541, 	[60749] = 44542, 
	[60750] = 44543, 	[60751] = 44544, 	[60752] = 44545, 	[60754] = 44546, 
	[60755] = 44547, 	[60756] = 44548, 	[60757] = 44549, 	[60758] = 44550, 
	[60759] = 44551, 	[60760] = 44552, 	[60761] = 44553, 	[60996] = 44584, 
	[60997] = 44585, 	[60998] = 44586, 	[60999] = 44587, 	[61000] = 44588, 
	[61002] = 44589, 	[62176] = 44932, 	[62177] = 44933, 	[63194] = 45094, 
	[63195] = 45095, 	[63196] = 45096, 	[63197] = 45097, 	[63198] = 45098, 
	[63199] = 45099, 	[63200] = 45100, 	[63201] = 45101,   [70554] = 49957,
	[70555] = 49958,   [70556] = 49959,     [70557] = 49961,  [70558] = 49962,
	[70559] = 49963,  [70560] = 49965,    [70561] = 49966, 

	-------------------------------------------------------------------------------
	--Smelting
	-------------------------------------------------------------------------------
	[22967] = 44956, 	[46353] = 35273, 

	-------------------------------------------------------------------------------
	--Tailoring
	-------------------------------------------------------------------------------
	[2389] = 2598, 		[2403] = 2601, 		[3758] = 4292, 		[3844] = 4346, 	
	[3847] = 4345, 		[3849] = 4347, 		[3851] = 4349, 		[3854] = 7114, 	
	[3856] = 4350, 		[3857] = 14630, 	[3858] = 4351, 		[3860] = 4352, 	
	[3862] = 4355, 		[3863] = 4353, 		[3864] = 4356, 		[3868] = 4348, 	
	[3869] = 14627, 	[3870] = 6401, 		[3872] = 4354, 		[3873] = 10728, 	
	[6686] = 5771, 		[6688] = 5772, 		[6692] = 5773, 		[6693] = 5774, 	
	[6695] = 5775, 		[7629] = 6271, 		[7630] = 6270, 		[7633] = 6272, 	
	[7639] = 6274, 		[7643] = 6275, 		[7892] = 6390, 		[7893] = 6391, 	
	[8780] = 7092, 		[8782] = 7091, 		[8784] = 7090, 		[8786] = 7089, 	
	[8789] = 7087, 		[8793] = 7084, 		[8795] = 7085, 		[8797] = 7086, 	
	[8802] = 7088, 		[12047] = 10316, 	[12056] = 10300, 	[12059] = 10301, 
	[12060] = 10302, 	[12064] = 10311, 	[12066] = 10312, 	[12075] = 10314, 
	[12078] = 10315, 	[12080] = 10317, 	[12081] = 10318, 	[12084] = 10320, 
	[12085] = 10321, 	[12086] = 10463, 	[12089] = 10323, 	[12091] = 10325, 
	[12093] = 10326, 	[18403] = 14466, 	[18404] = 14467, 	[18405] = 14468, 
	[18406] = 14469, 	[18407] = 14470, 	[18408] = 14471, 	[18409] = 14472, 
	[18410] = 14473, 	[18411] = 14474, 	[18412] = 14476, 	[18413] = 14477, 
	[18414] = 14478, 	[18415] = 14479, 	[18416] = 14480, 	[18417] = 14481, 
	[18418] = 14482, 	[18419] = 14483, 	[18420] = 14484, 	[18421] = 14485, 
	[18422] = 14486, 	[18423] = 14488, 	[18424] = 14489, 	[18434] = 14490, 
	[18436] = 14493, 	[18437] = 14492, 	[18438] = 14491, 	[18439] = 14494, 
	[18440] = 14497, 	[18441] = 14495, 	[18442] = 14496, 	[18444] = 14498, 
	[18445] = 14499, 	[18446] = 14500, 	[18447] = 14501, 	[18448] = 14507, 
	[18449] = 14504, 	[18450] = 14505, 	[18451] = 14506, 	[18452] = 14509, 
	[18453] = 14508, 	[18454] = 14511, 	[18455] = 14510, 	[18456] = 14512, 
	[18457] = 14513, 	[18458] = 14514, 	[18560] = 14526, 	[20848] = 17017, 
	[20849] = 17018, 	[21945] = 17724, 	[22759] = 18265, 	[22866] = 18414, 
	[22867] = 18415, 	[22868] = 18416, 	[22869] = 18417, 	[22870] = 18418, 
	[22902] = 18487, 	[23662] = 19215, 	[23663] = 19218, 	[23664] = 19216, 
	[23665] = 19217, 	[23666] = 19219, 	[23667] = 19220, 	[24091] = 19764, 
	[24092] = 19765, 	[24093] = 19766, 	[24901] = 20546, 	[24902] = 20548, 
	[24903] = 20547, 	[26085] = 21358, 	[26087] = 21371, 	[26403] = 44916, 
	[26407] = 44917, 	[26747] = 21892, 	[26749] = 21893, 	[26750] = 21894, 
	[26751] = 21895, 	[26752] = 21908, 	[26753] = 21909, 	[26754] = 21910, 
	[26755] = 21911, 	[26756] = 21912, 	[26757] = 21914, 	[26758] = 21913, 
	[26759] = 21915, 	[26760] = 21916, 	[26761] = 21918, 	[26762] = 21917, 
	[26763] = 21919, 	[26773] = 21896, 	[26774] = 21897, 	[26775] = 21898, 
	[26776] = 21899, 	[26777] = 21900, 	[26778] = 21901, 	[26779] = 21902, 
	[26780] = 21903, 	[26781] = 21904, 	[26782] = 21905, 	[26783] = 21906, 
	[26784] = 21907, 	[27658] = 22307, 	[27659] = 22308, 	[27660] = 22309, 
	[27724] = 22310, 	[27725] = 22312, 	[28210] = 22683, 	[28480] = 22774, 
	[28481] = 22773, 	[28482] = 22772, 	[31373] = 24316, 	[31430] = 24292, 
	[31431] = 24293, 	[31432] = 24294, 	[31433] = 24295, 	[31434] = 35308, 
	[31435] = 24297, 	[31437] = 24298, 	[31438] = 24299, 	[31440] = 24300, 
	[31441] = 24301, 	[31442] = 35309, 	[31443] = 24303, 	[31444] = 24304, 
	[31448] = 24305, 	[31449] = 24306, 	[31450] = 24307, 	[31451] = 24308, 
	[31452] = 24309, 	[31453] = 24310, 	[31454] = 24311, 	[31455] = 24312, 
	[31456] = 24313, 	[31459] = 24314, 	[36315] = 30280, 	[36316] = 30281, 
	[36317] = 30282, 	[36318] = 30283, 	[36686] = 30483, 	[37873] = 30833, 
	[37882] = 30842, 	[37883] = 30843, 	[37884] = 30844, 	[40020] = 32437, 
	[40021] = 32438, 	[40023] = 32439, 	[40024] = 32440, 	[40060] = 32447, 
	[41205] = 35518, 	[41206] = 32755, 	[41207] = 32752, 	[41208] = 32753, 
	[44950] = 34261, 	[44958] = 34319, 	[46128] = 35204, 	[46129] = 35205, 
	[46130] = 35206, 	[46131] = 35207, 	[49677] = 37915, 	[50194] = 38229, 
	[50644] = 38327, 	[50647] = 38328, 	[55993] = 42172, 	[55994] = 42173, 
	[55996] = 42175, 	[55997] = 42177, 	[55998] = 42176, 	[55999] = 42178, 
	[56004] = 42183, 	[56005] = 42184, 	[56006] = 42185, 	[56009] = 42187, 
	[56011] = 42188, 	[63924] = 45774,       [70550] = 49953,     [70551] = 49954,
	[70552] = 49955,   [70553] = 49956, 
}

-------------------------------------------------------------------------------
-- Look up table of spell IDs for recipes which do not have a player flag
-- BASICALLY A TEMPORARY STORAGE FOR IDS, SO WE CAN SEE CLEANER SCANS AND WHAT NOT,
-- WE'LL GO BACK HERE LATER DOWN THE ROAD.
-------------------------------------------------------------------------------
local NO_PLAYER_FLAG = {
	[30344] = true, 		[30341] = true, 		[32814] = true, 		[23066] = true, 
	[26421] = true, 		[36955] = true, 		[19788] = true, 		[23129] = true, 
	[26422] = true, 		[12715] = true, 		[12899] = true, 		[56459] = true, 
	[30307] = true, 		[26423] = true, 		[3918] = true,	 		[23067] = true, 
	[30308] = true, 		[3953] = true,			[15255] = true, 		[26424] = true, 
	[30548] = true, 		[44157] = true, 		[56462] = true, 		[19567] = true, 
	[30552] = true, 		[23068] = true, 		[44155] = true, 		[28327] = true, 
	[26425] = true, 		[56461] = true, 		[68067] = true, 		[15633] = true, 
	[23096] = true, 		[12589] = true, 		[26442] = true, 		[26426] = true, 
	[67920] = true, 		[9273] = true,			[3926] = true,			[6458] = true, 
	[19793] = true, 		[55252] = true, 		[9271] = true,			[26427] = true, 
	[26443] = true, 		[30551] = true, 		[23486] = true, 		[3922] = true, 
	[3924] = true,			[12590] = true, 		[3928] = true,			[3942] = true, 
	[26428] = true, 		[3952] = true,	 		[22704] = true, 		[12902] = true, 
	[30569] = true, 		[15628] = true, 		[12895] = true, 		[21940] = true, 
	[56349] = true, 		[12584] = true, 		[56477] = true, 		[30348] = true, 
	[26416] = true, 		[53281] = true, 		[23507] = true,			[12075] = true,
	[12079] = true,			[26746] = true,			[56000] = true,
	
		-----------------------------------------------------------------------------------------
	---JEWELCRAFTING
	-----------------------------------------------------------------------------------------
	[55401] = true, [53995] = true, [66432] = true, [25255] = true, 
[66497] = true, [53996] = true, [56074] = true, [56202] = true,
 [66434] = true, [32801] = true, [28948] = true, [53997] = true,
 [39963] = true, [32866] = true, [66501] = true, [39452] = true,
 [53934] = true, [66502] = true, [55405] = true, [58954] = true, 
 [56205] = true, [37855] = true, [38175] = true, [25305] = true,
 [25321] = true, [66505] = true, [54000] = true, [39742] = true,
 [56206] = true, [66506] = true, [32869] = true, [54001] = true, 
 [56079] = true, [32259] = true, [32870] = true, [56208] = true, 
 [32807] = true, [32871] = true, [26873] = true, [31061] = true, 
 [32872] = true, [42591] = true, [46779] = true, [56530] = true,
 [42592] = true, [31062] = true, [56083] = true, [32874] = true, 
 [56531] = true, [31063] = true, [56085] = true, [38503] = true,
 [56086] = true, [28938] = true, [38504] = true, [31064] = true, 
 [31096] = true, [55384] = true, [25278] = true, [68253] = true,
 [43493] = true, [26925] = true, [31065] = true, [46403] = true, 
 [53852] = true, [53916] = true, [39722] = true, [25615] = true,
 [28924] = true, [26926] = true, [53853] = true, [36526] = true,
 [31098] = true, [55388] = true, [46405] = true, [53854] = true,
 [39724] = true, [55389] = true, [26927] = true, [31051] = true, 
 [53919] = true, [39725] = true, [55390] = true, [53856] = true,
 [53920] = true, [53952] = true, [26880] = true, [53857] = true, 
 [31052] = true, [34069] = true, [25490] = true, [55393] = true,
 [39451] = true, [53956] = true, [44794] = true, [36524] = true,
 [55395] = true, [38068] = true, [28944] = true, [53957] = true, 
 [31066] = true, [31082] = true, [66428] = true, [26909] = true,
 [55396] = true, [31097] = true, [25284] = true, [56084] = true, 
 [62941] = true, [66431] = true, [53894] = true, [53958] = true, 
 [58146] = true, [31099] = true, [47053] = true, [31067] = true,
 [28917] = true, [26903] = true, [36525] = true, [66503] = true, 
 [56197] = true, [47054] = true, [53961] = true, [39715] = true,
 [31092] = true, [53960] = true, [31077] = true, [31101] = true,
 [39719] = true, [55399] = true, [31113] = true, [32808] = true,
 [53917] = true, [63743] = true, [39720] = true, [39721] = true,
 [42590] = true, [58149] = true, [56199] = true, [47056] = true,
 [28950] = true, [47280] = true, [32809] = true, [31072] = true,
[25318] = true, [66429] = true, [62242] = true, 
---------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------
---COOKING
---------------------------------------------------------------------------------------
[62050]= true, [22761]= true, [62051]= true, [8607]= true, 
[18238]= true, [6413]= true, [6417]= true, [42296]= true, 
[45557]= true, [6501]= true, [45558]= true, [18239]= true,
 [7752]= true, [7828]= true, [45560]= true, [64358]= true,
 [57421]= true, [45561]= true, [13028]= true, [2543]= true,
 [2545]= true, [25659]= true, [58512]= true, [45565]= true, 
 [42305]= true, [45566]= true, [62350]= true, [7753]= true,
 [45695]= true, [9513]= true, [18244]= true, [20626]= true, 
 [45569]= true, [43779]= true, [18245]= true, [45571]= true,
 [18246]= true, [37836]= true, [57433]= true, [20916]= true, 
 [58521]= true, [18247]= true, [57435]= true, [7754]= true,
 [53056]= true, [58523]= true, [57437]= true, [57438]= true,
 [58525]= true, [45570]= true, [2538]= true, [2540]= true,
 [2548]= true, [33290]= true, [45562]= true, [15906]= true, 
 [18241]= true, [45559]= true, [45551]= true, [57443]= true, 
 [58527]= true, [43758]= true, [58528]= true, [8238]= true,
 [7751]= true, [7755]= true, [43761]= true, [7827]= true, 
 [45552]= true, [45553]= true,
 ---------------------------------------------------------------------------------------
 
  ---------------------------------------------------------------------------------------
  ---BLACKSMITHING
   ---------------------------------------------------------------------------------------
 [10015] = true, [55202] = true, [16726] = true, [24399] = true, 
[15293] = true, [32655] = true, [3320] = true, [40033] = true, 
[34545] = true, [61010] = true, [16639] = true, [3115] = true, 
[3116] = true, [3117] = true, [16648] = true, [40034] = true,
 [9920] = true, [9928] = true, [29558] = true, [55839] = true,
 [9964] = true, [7818] = true, [55732] = true, [29694] = true,
 [3326] = true, [9950] = true, [59405] = true, [12260] = true,
 [16983] = true, [16991] = true, [23650] = true, [16640] = true, 
 [2741] = true, [3513] = true, [3497] = true, [8768] = true, 
 [19666] = true, [2662] = true, [2663] = true, [20201] = true, 
 [16664] = true, [15294] = true, [3496] = true, [16645] = true, 
 [29569] = true, [2737] = true, [14380] = true, [16992] = true,
 [36125] = true, [19667] = true, [22757] = true, [16665] = true,
 [59406] = true, [2738] = true, [2739] = true, [2740] = true,
 [24913] = true, [9933] = true, [20873] = true, [36126] = true,
 [40035] = true, [8880] = true, [23636] = true, [3292] = true,
 [3293] = true, [21161] = true, [32656] = true, [19668] = true, 
 [9921] = true, [7222] = true, [3319] = true, [15295] = true, 
 [20874] = true, [20890] = true, [3337] = true, [34546] = true, 
 [16970] = true, [16978] = true, [61008] = true, [7224] = true, 
 [11454] = true, [19669] = true, [55656] = true, [16667] = true, 
 [16731] = true, [61009] = true, [9926] = true, [16984] = true, 
 [21913] = true, [40036] = true, [9974] = true, [32657] = true,
 [32285] = true, [23638] = true, [10011] = true, [36131] = true,
 [27830] = true,  [32284] = true, [16732] = true, [15292] = true,
 [15296] = true, [38478] = true, [20876] = true, [38475] = true,
 [23653] = true, [3325] = true, [14379] = true,  [29729] = true,
 [2661] = true,  [29728] = true, [16655] = true, [16993] = true, 
 [3491] = true, [3494] = true, [3501] = true, [9959] = true, 
 [9983] = true, [36262] = true, [10003] = true, [10007] = true,
  ---------------------------------------------------------------------------------------

  ---------------------------------------------------------------------------------------
----INSCRIPTION
  ---------------------------------------------------------------------------------------  
  [58315] = true, [58331] = true, [58347] = true, [56974] = true, [56990] = true, 
[64256] = true, [64304] = true, [57166] = true, [57709] = true, [57214] = true,
 [57230] = true, [50603] = true, [57262] = true, [59338] = true, [58332] = true,
 [56959] = true, [56975] = true, [56991] = true, [57007] = true, [57023] = true, 
 [53462] = true, [64257] = true, [64273] = true, [64289] = true, [57151] = true, 
 [57167] = true, [57183] = true, [57710] = true, [57215] = true, [57247] = true,
 [50620] = true, [58301] = true, [59339] = true, [58333] = true, [59387] = true,
 [52840] = true, [59499] = true, [56960] = true, [56976] = true, [57008] = true, 
 [57024] = true, [64258] = true, [64274] = true, [57168] = true, [57184] = true,
 [61288] = true, [57216] = true, [57232] = true, [58286] = true, [58302] = true, 
 [59340] = true, [48114] = true, [64051] = true, [59484] = true, [59500] = true,
 [56961] = true, [56977] = true, [57009] = true, [57025] = true, [61177] = true, 
 [64259] = true, [57121] = true, [64291] = true, [57153] = true, [57169] = true,
 [57185] = true, [57712] = true, [57217] = true, [57233] = true, [58287] = true, 
 [58303] = true, [58319] = true, [56946] = true, [56978] = true, [56994] = true, 
 [57010] = true, [57026] = true, [64260] = true, [57122] = true, [57154] = true,
 [57170] = true, [57186] = true, [57713] = true, [57218] = true, [57234] = true,
 [57266] = true, [59326] = true, [58320] = true, [58336] = true, [59486] = true,
 [59502] = true, [56963] = true, [56995] = true, [57011] = true, [57027] = true, 
 [64261] = true, [64277] = true, [57155] = true, [57187] = true, [57714] = true,
 [57219] = true, [57235] = true, [58289] = true, [58305] = true, [58321] = true, 
 [58337] = true, [69385] = true, [57243] = true, [64314] = true, [64313] = true,
 [56958] = true, [59487] = true, [59503] = true, [58288] = true, [56980] = true,
 [56996] = true, [57012] = true, [57028] = true, [59501] = true, [56948] = true, 
 [57264] = true, [64246] = true, [64262] = true, [57124] = true, [64294] = true, 
 [57156] = true, [57172] = true, [57188] = true, [57715] = true, [57220] = true, 
 [57236] = true, [57268] = true, [58306] = true, [58322] = true, [58338] = true, 
 [48247] = true, [57133] = true, [57270] = true, [57131] = true, [57129] = true, 
 [50604] = true, [59488] = true, [59504] = true, [56965] = true, [56981] = true,
 [56997] = true, [57013] = true, [57029] = true, [64280] = true, [57114] = true, 
 [64286] = true, [58299] = true, [57125] = true, [64295] = true, [64311] = true,
 [57164] = true, [57189] = true, [57716] = true, [57221] = true, [57237] = true,
 [57269] = true, [58307] = true, [58323] = true, [58339] = true, [64307] = true,
 [57119] = true, [57246] = true, [68166] = true, [64282] = true, [57250] = true, 
 [59489] = true, [56957] = true, [56982] = true, [56998] = true, [57014] = true,
 [57117] = true, [64305] = true, [61677] = true, [52843] = true, [57126] = true, 
 [64296] = true, [57158] = true, [64310] = true, [57190] = true, [56956] = true, 
 [57238] = true, [60336] = true, [58308] = true, [58324] = true, [58340] = true, 
 [64315] = true, [56949] = true, [56950] = true, [64308] = true, [56955] = true, 
 [59490] = true, [59315] = true, [56983] = true, [56999] = true, [64267] = true,
 [57031] = true, [56954] = true, [64276] = true, [57249] = true, [64249] = true,
 [56953] = true, [57127] = true, [64297] = true, [57159] = true, [64275] = true, 
 [57191] = true, [57207] = true, [57223] = true, [57239] = true, [50612] = true,
 [60337] = true, [57208] = true, [58325] = true, [48121] = true, [56952] = true,
 [56947] = true, [56951] = true, [64268] = true, [57123] = true, [59475] = true,
 [59491] = true, [56968] = true, [56984] = true, [57000] = true, [48248] = true,
 [58565] = true, [58317] = true, [64266] = true, [57252] = true, [64250] = true, 
 [57112] = true, [57128] = true, [64298] = true, [57160] = true, [58316] = true,
 [57703] = true, [57719] = true, [57224] = true, [57240] = true, [57272] = true,
 [58310] = true, [58326] = true, [58342] = true, [57201] = true, [56945] = true,
[57200] = true, [56944] = true, [57711] = true, [56985] = true, [57001] = true,   
[57199] = true, [57033] = true, [56943] = true, [57198] = true, [64251] = true, 
[57113] = true, [64283] = true, [64299] = true, [57161] = true, [57197] = true, 
[57704] = true, [57209] = true, [57225] = true, [57241] = true, [50614] = true, 
[57273] = true, [58311] = true, [58327] = true, [58343] = true, [52738] = true, 
[57196] = true, [64278] = true, [57195] = true, [58318] = true, [64284] = true, 
[57006] = true, [64316] = true, [56986] = true, [57002] = true, [59560] = true, 
[57034] = true, [58341] = true, [57192] = true, [64252] = true, [67600] = true,
 [57130] = true, [64300] = true, [57162] = true, [57244] = true,   [57194] = true,
 [57210] = true, [57226] = true, [50599] = true, [57258] = true, [58296] = true, 
 [58312] = true, [58328] = true, [58344] = true, [52739] = true, [58298] = true, 
 [57274] = true, [57265] = true, [57251] = true, [59478] = true, [56971] = true,
 [56987] = true, [57003] = true, [57019] = true, [57035] = true, [57259] = true, 
 [57263] = true, [57271] = true, [64253] = true, [57115] = true, [64285] = true,
 [57242] = true, [57163] = true, [57120] = true, [57706] = true, [57211] = true, 
 [57227] = true, [50600] = true, [50616] = true, [58297] = true, [58313] = true, 
 [58329] = true, [58345] = true, [50602] = true, [57248] = true, [59559] = true, 
 [57157] = true, [57257] = true, [64309] = true, [64317] = true, [56972] = true,
 [56988] = true, [57004] = true, [57020] = true, [57036] = true, [62162] = true,
 [57030] = true, [64254] = true, [57116] = true, [57132] = true, [64302] = true,
 [64318] = true, [64270] = true, [57707] = true, [57212] = true, [57228] = true,
 [50601] = true, [57260] = true, [57276] = true, [58314] = true, [58330] = true,
 [58346] = true, [45382] = true, [57267] = true, [57275] = true, [64312] = true, 
 [64279] = true, [50598] = true, [59480] = true, [59496] = true, [56973] = true,
 [56989] = true, [57005] = true, [57021] = true, [50619] = true, [50618] = true, 
 [65245] = true, [50617] = true, [64255] = true, [64271] = true, [64287] = true,
 [64303] = true, [57165] = true, [57181] = true, [57708] = true, [57213] = true,
 [57229] = true, [57245] = true, [57261] = true, [57277] = true, [57253] = true,
   ---------------------------------------------------------------------------------------

   ---------------------------------------------------------------------------------------
----ENCHANTING
   ---------------------------------------------------------------------------------------   
   [46578] = true, [25125] = true, [13612] = true, [13620] = true, [13628] = true, 
[13640] = true, [13644] = true, [13648] = true, [59625] = true, [13700] = true,
 [17181] = true, [27920] = true, [27960] = true, [28016] = true, [45765] = true, 
 [14810] = true, [63746] = true, [13836] = true, [20008] = true, [20032] = true,
 [13868] = true, [13421] = true, [13948] = true, [27905] = true, [27945] = true,
 [13501] = true, [7786] = true, [7788] = true, [13529] = true, [32664] = true,
 [44506] = true, [25127] = true, [20025] = true, [20033] = true, [13617] = true,
 [64579] = true, [60619] = true, [13657] = true, [13693] = true, [27914] = true, 
 [44555] = true, [27954] = true, [27962] = true, [14807] = true, [32665] = true, 
 [7421] = true, [13817] = true, [25072] = true, [44492] = true, [44524] = true,
 [7443] = true, [44556] = true, [25128] = true, [20026] = true, [7457] = true, 
 [13378] = true, [34001] = true, [13917] = true, [13933] = true, [13937] = true,
 [13941] = true, [44621] = true, [28003] = true, [28027] = true, [13522] = true, 
 [13538] = true, [25081] = true, [44494] = true, [20011] = true, [25129] = true,
 [44590] = true, [47672] = true, [20051] = true, [13622] = true, [13626] = true,
 [69412] = true, [60623] = true, [44383] = true, [13698] = true, [13702] = true, 
 [23804] = true, [44623] = true, [28004] = true, [28028] = true, [14293] = true, 
 [32667] = true, [13822] = true, [25082] = true, [44576] = true, [20028] = true,
 [20036] = true, [13890] = true, [13898] = true, [60609] = true, [59619] = true,
 [47898] = true, [7745] = true, [27957] = true, [13503] = true, [34006] = true,
 [7793] = true, [7795] = true, [59636] = true, [25083] = true, [20029] = true,
 [13631] = true, [13655] = true, [7861] = true, [7863] = true, [62256] = true,
 [13695] = true, [13858] = true, [44483] = true, [27968] = true, [7857] = true,
 [27967] = true, [42615] = true, [27958] = true, [42613] = true, [25084] = true, 
 [20017] = true, [33992] = true, [34008] = true, [13663] = true, [60653] = true, 
 [44528] = true, [14809] = true, [27961] = true, [47901] = true, [7418] = true,
 [7420] = true, [44488] = true, [7426] = true, [44616] = true, [13841] = true,
 [44596] = true, [17180] = true, [7454] = true, [33993] = true, [34009] = true,
 [27950] = true, [20031] = true, [13915] = true, [47900] = true, [13943] = true,
 [13947] = true, [13945] = true, [13464] = true, [27927] = true, [7771] = true, 
 [20014] = true, [20030] = true, [27947] = true, [33994] = true, [28022] = true,
 [60692] = true, [25130] = true, [34005] = true, [13794] = true, [7748] = true,
 [44588] = true, [15596] = true, [7776] = true, [44584] = true, [13607] = true,
 [13653] = true, [20020] = true,
    ---------------------------------------------------------------------------------------
	
    ---------------------------------------------------------------------------------------
---TAILORING
    ---------------------------------------------------------------------------------------	
	[12055] = true, [12059] = true, [12071] = true, [46131] = true, [23664] = true, 
[31433] = true, [31441] = true, [7624] = true, [26403] = true, [24902] = true,
 [22866] = true, [56001] = true, [18411] = true, [18419] = true, [18451] = true, 
 [28208] = true, [6686] = true, [8766] = true, [23665] = true, [8786] = true,
 [26747] = true, [56002] = true, [26763] = true, [26779] = true, [31434] = true,
 [31450] = true, [60969] = true, [28480] = true, [22867] = true, [56003] = true, 
 [18404] = true, [18412] = true, [18420] = true, [12044] = true, [63924] = true, 
 [12056] = true, [12064] = true, [12080] = true, [12084] = true, [23666] = true, 
 [56004] = true, [26780] = true, [31459] = true, [7892] = true, [60971] = true, 
 [28481] = true, [22868] = true, [20848] = true, [56005] = true, [18405] = true,
 [19435] = true, [26086] = true, [18437] = true, [18453] = true, [27659] = true,
 [28210] = true, [40021] = true, [23667] = true, [26773] = true, [26781] = true,
 [26759] = true, [8774] = true, [31460] = true, [24903] = true, [3755] = true, 
 [37882] = true, [3757] = true, [3758] = true, [50194] = true, [18446] = true, 
 [6692] = true, [28482] = true, [22869] = true, [18439] = true, [20849] = true, 
 [18440] = true, [2389] = true, [56007] = true, [18455] = true, [6521] = true, 
 [18445] = true, [18406] = true, [18414] = true, [18422] = true, [12045] = true,
 [36318] = true, [18454] = true, [27660] = true, [24091] = true, [12065] = true, 
 [12069] = true, [12077] = true, [12081] = true, [12085] = true, [27724] = true,
 [12093] = true, [40060] = true, [26087] = true, [26749] = true, [31373] = true,
 [26750] = true, [26782] = true, [28205] = true, [28209] = true, [36686] = true, 
 [3813] = true, [2394] = true, [7629] = true, [18438] = true, [7633] = true, 
 [40023] = true, [49677] = true, [26407] = true, [18452] = true, [7643] = true,
 [22870] = true, [26755] = true, [22902] = true, [3869] = true, [55993] = true,
 [8789] = true, [3839] = true, [3841] = true, [3844] = true, [18407] = true, 
 [18415] = true, [3847] = true, [3848] = true, [3851] = true, [3852] = true, 
 [24092] = true, [3854] = true, [3856] = true, [3857] = true, [8760] = true,
 [27725] = true, [8776] = true, [8780] = true, [8784] = true, [3865] = true,
 [55994] = true, [3868] = true, [26783] = true, [3871] = true, [3872] = true, 
 [3873] = true, [31438] = true, [22759] = true, [12091] = true, [8804] = true,
 [8772] = true, [18560] = true, [18447] = true, [44950] = true, [60993] = true, 
 [55899] = true, [55898] = true, [55995] = true, [2385] = true, [21945] = true, 
 [6688] = true, [12066] = true, [18416] = true, [8465] = true, [12046] = true,
 [18448] = true, [3915] = true, [24093] = true, [8489] = true, [2386] = true, 
 [12078] = true, [12082] = true, [60994] = true, [55900] = true, [2392] = true, 
 [2393] = true, [23662] = true, [2396] = true, [55996] = true, [2399] = true,
 [26784] = true, [2402] = true, [2403] = true, [2406] = true, [31431] = true, 
 [3864] = true, [8782] = true, [37884] = true, [37883] = true, [26751] = true, 
 [50647] = true, [8802] = true, [8467] = true, [7893] = true, [40020] = true, 
 [41208] = true, [22813] = true, [41207] = true, [37873] = true, [2387] = true,
 [55997] = true, [26085] = true, [8799] = true, [27658] = true, [8483] = true, 
 [3914] = true, [18401] = true, [56006] = true, [18441] = true, [18449] = true,
 [28207] = true, [55769] = true, [18413] = true, [18421] = true, [46129] = true, 
 [2963] = true, [2964] = true, [12061] = true, [12086] = true, [23663] = true,
 [26745] = true, [55998] = true, [3863] = true, [8764] = true, [31440] = true,
 [31448] = true, [12089] = true, [6695] = true, [40024] = true, [60990] = true, 
 [50644] = true, [8793] = true, [46130] = true, [24901] = true, [3870] = true,
 [31437] = true, [44958] = true, [55999] = true, [3845] = true, [6693] = true,
 [3866] = true, [18456] = true, [18410] = true, [18418] = true, [2397] = true,
 [18434] = true, [18450] = true, 
     ---------------------------------------------------------------------------------------
	 
     ---------------------------------------------------------------------------------------
	 ----LEATHERWORKING
	 ---------------------------------------------------------------------------------------
[9198] = true, [23704] = true, [60996] = true, [35549] = true, [22921] = true,
 [50958] = true, [10509] = true, [10525] = true, [19053] = true, [19085] = true,
 [19101] = true, [2149] = true, [36349] = true, [2153] = true, [60997] = true, 
 [2159] = true, [2163] = true, [2165] = true, [35582] = true, [50959] = true,
 [46132] = true, [23705] = true, [60998] = true, [22922] = true, [46133] = true,
 [24121] = true, [19054] = true, [19070] = true, [19086] = true, [19102] = true,
 [32465] = true, [32481] = true, [22331] = true, [35520] = true, [35584] = true,
 [9207] = true, [6661] = true, [46134] = true, [23706] = true, [61000] = true,
 [35521] = true, [35585] = true, [50962] = true, [10518] = true, [39997] = true,
 [24122] = true, [19055] = true, [19087] = true, [19103] = true, [32466] = true,
 [32482] = true, [36353] = true, [35522] = true, [35554] = true, [50963] = true, 
 [44953] = true, [46136] = true, [23707] = true, [61002] = true, [35523] = true, 
 [35555] = true, [35587] = true, [50964] = true, [46137] = true, [24123] = true,
 [19072] = true, [19104] = true, [9064] = true, [9072] = true, [69386] = true,
 [32499] = true, [36355] = true, [7133] = true, [35524] = true, [35588] = true,
 [7153] = true, [9208] = true, [46138] = true, [23708] = true, [69388] = true,
 [35525] = true, [35557] = true, [10487] = true, [10511] = true, [46139] = true,
 [24124] = true, [19073] = true, [19089] = true, [32468] = true, [32500] = true, 
 [10647] = true, [28472] = true, [35526] = true, [35558] = true, [45117] = true, 
 [60622] = true, [23709] = true, [35527] = true, [3774] = true, [3778] = true,
 [3780] = true, [40003] = true, [24125] = true, [19058] = true, [19074] = true, 
 [32485] = true, [32501] = true, [36359] = true, [3816] = true, [3818] = true, 
 [28473] = true, [35528] = true, [35560] = true, [9193] = true, [40004] = true,
 [23710] = true, [8322] = true, [35529] = true, [35561] = true, [50970] = true,
 [2881] = true, [10520] = true, [40005] = true, [10544] = true, [10552] = true,
 [10560] = true, [19091] = true, [19107] = true, [32454] = true, [32502] = true, 
 [28474] = true, [35530] = true, [50971] = true, [62448] = true, [7953] = true,
 [41157] = true, [36074] = true, [24846] = true, [35531] = true, [22928] = true,
 [28219] = true, [41158] = true, [36075] = true, [32487] = true, [32503] = true,
 [7126] = true, [9146] = true, [35532] = true, [35564] = true, [9194] = true, 
 [9202] = true, [24655] = true, [36076] = true, [24847] = true, [35533] = true,
 [5244] = true, [10529] = true, [28220] = true, [19093] = true, [32456] = true,
 [52733] = true, [2158] = true, [2160] = true, [2162] = true, [2166] = true, 
 [24848] = true, [35535] = true, [35567] = true, [28221] = true, [19094] = true,
 [44359] = true, [57690] = true, [32457] = true, [32473] = true, [32489] = true, 
 [9147] = true, [35536] = true, [35568] = true, [9195] = true, [41163] = true,
 [6703] = true, [24849] = true, [20853] = true, [10482] = true, [10490] = true, 
 [28222] = true, [10546] = true, [10554] = true, [41164] = true, [10570] = true, 
 [19095] = true, [57692] = true, [32458] = true, [10650] = true, [35538] = true,
 [42731] = true, [24850] = true, [20854] = true, [44970] = true, [28223] = true, 
 [19048] = true, [19064] = true, [19080] = true, [57694] = true, [9148] = true,
 [35540] = true, [35572] = true, [24851] = true, [20855] = true, [45100] = true,
 [10531] = true, [28224] = true, [57696] = true, [10619] = true, [19081] = true,
 [22727] = true, [35539] = true, [19079] = true, [10566] = true, [19065] = true,
 [10574] = true, [19097] = true, [60647] = true, [3753] = true, [9065] = true,
 [44343] = true, [3763] = true, [3767] = true, [3773] = true, [3775] = true, 
 [3777] = true, [3779] = true, [32455] = true, [24940] = true, [19050] = true, 
 [19082] = true, [23190] = true, [32461] = true, [60999] = true, [3817] = true,
 [44344] = true, [9149] = true, [35544] = true, [9197] = true, [19077] = true,
 [9060] = true, [19076] = true, [35573] = true, [40001] = true, [19066] = true, 
 [19090] = true, [19098] = true, [22711] = true, [57699] = true, [9059] = true, 
 [32480] = true, [64661] = true, [10562] = true, [40002] = true, [50936] = true,
 [6705] = true, [9058] = true, [24703] = true, [22923] = true, [60645] = true, 
 [35577] = true, [2152] = true, [10556] = true, [10572] = true, [44770] = true,
 [36077] = true, [19059] = true, [19075] = true, [35580] = true, [20648] = true,
 [2169] = true, [60643] = true, [19088] = true, [6702] = true, [6704] = true,
 [35543] = true, [7149] = true, [36078] = true, [36079] = true, [23703] = true, 
 [35534] = true, [57701] = true, [46135] = true, [19047] = true, [20649] = true,
 [40006] = true, [3765] = true, [41156] = true, [3771] = true, [50956] = true,
 [19061] = true, [20650] = true, [32467] = true, [35537] = true, [22926] = true, 
 [4096] = true, [19062] = true, [44768] = true, [35576] = true, [19063] = true, 
 [9062] = true, [9070] = true, [32495] = true,
 ---------------------------------------------------------------------------------------
 
  ---------------------------------------------------------------------------------------
 -----ALCHEMY
   ---------------------------------------------------------------------------------------
  [53898] = true, [28579] = true, [17566] = true, [53771] = true, [7256] = true, 
[53899] = true, [11452] = true, [11460] = true, [11468] = true, [3170] = true,
 [3172] = true, [3174] = true, [3176] = true, [53836] = true, [53900] = true,
 [28564] = true, [28580] = true, [54220] = true, [17551] = true, [53773] = true,
 [53837] = true, [62213] = true, [54221] = true, [53774] = true, [53838] = true, 
 [6617] = true, [53902] = true, [28581] = true, [2331] = true, [2335] = true, 
 [2337] = true, [53775] = true, [53839] = true, [11453] = true, [7836] = true,
 [24266] = true, [41500] = true, [53904] = true, [53936] = true, [28566] = true,
 [28582] = true, [3452] = true, [3454] = true, [33732] = true, [17553] = true,
 [22732] = true, [53777] = true, [53905] = true, [53937] = true, [33733] = true, 
 [62409] = true, [25146] = true, [41502] = true, [53938] = true, [28551] = true, 
 [28567] = true, [28583] = true, [62410] = true, [7181] = true, [17570] = true,
 [17634] = true, [53779] = true, [7257] = true, [53939] = true, [11478] = true,
 [17187] = true, [53812] = true, [28552] = true, [28568] = true, [28584] = true,
 [60366] = true, [57425] = true, [17635] = true, [53781] = true, [60367] = true, 
 [4508] = true, [53782] = true, [24365] = true, [6618] = true, [53942] = true,
 [28569] = true, [28585] = true, [29688] = true, [57427] = true, [17556] = true, 
 [17572] = true, [17636] = true, [53783] = true, [11479] = true, [7837] = true,
 [7841] = true, [53784] = true, [24366] = true, [53848] = true, [28554] = true,
 [28570] = true, [28586] = true, [58868] = true, [33741] = true, [24367] = true,
 [28555] = true, [28571] = true, [17574] = true, [17638] = true, [7258] = true, 
 [11448] = true, [11456] = true, [11464] = true, [11480] = true, [3171] = true,
 [3173] = true, [3175] = true, [24368] = true, [28572] = true, [28588] = true, 
 [45061] = true, [66658] = true, [17559] = true, [17575] = true, [66659] = true, 
 [66660] = true, [63732] = true, [28573] = true, [66662] = true, [17560] = true,
 [2330] = true, [2332] = true, [2334] = true, [66663] = true, [11457] = true,
 [11465] = true, [11473] = true, [66664] = true, [3449] = true, [3451] = true,
 [3453] = true, [17561] = true, [17577] = true, [28543] = true, [28575] = true,
 [7179] = true, [17562] = true, [17578] = true, [7255] = true, [7259] = true, 
 [11458] = true, [11466] = true, [38962] = true, [53776] = true, [12609] = true,
 [53780] = true, [60893] = true, [58871] = true, [3448] = true, [3450] = true,
 [3447] = true, [4942] = true, [28576] = true, [15833] = true, [17576] = true,
 [41503] = true, [60350] = true, [41501] = true, [17563] = true, [42736] = true, 
 [54213] = true, [41458] = true, [6624] = true, [39636] = true, [28577] = true,
 [32765] = true, [38070] = true, [17564] = true, [17580] = true, [53895] = true,
 [11451] = true, [39637] = true, [28546] = true, [28562] = true, [28578] = true,
 [60354] = true, [32766] = true, [17565] = true, [22808] = true, [39639] = true, 
 [60355] = true, [56519] = true,
  ---------------------------------------------------------------------------------------
  
  ---------------------------------------------------------------------------------------
  ----ENGINEERING
  ---------------------------------------------------------------------------------------
  [23081] = true, [12586] = true, [12594] = true, [12622] = true, [30347] = true, 
[44391] = true, [30547] = true, [56464] = true, [12754] = true, [12758] = true,
 [23489] = true, [23082] = true, [8243] = true, [9269] = true, [30316] = true,
 [30332] = true, [12906] = true, [8339] = true, [26420] = true, [56514] = true,
 [39971] = true, [12599] = true, [12603] = true, [12607] = true, [43676] = true,
 [12619] = true, [54998] = true, [30349] = true, [56468] = true, [12755] = true,
 [12759] = true, [63750] = true, [39973] = true, [56465] = true, [56469] = true, 
 [30318] = true, [30334] = true, [55016] = true, [12903] = true, [54793] = true, 
 [19795] = true, [8895] = true, [19819] = true, [30558] = true, [39895] = true,
 [23069] = true, [23077] = true, [12596] = true, [30303] = true, [56471] = true, 
 [12624] = true, [19796] = true, [56472] = true, [12760] = true, [63770] = true,
 [23070] = true, [23078] = true, [61471] = true, [30304] = true, [30312] = true,
 [12908] = true, [12597] = true, [3930] = true, [24356] = true, [67839] = true,
 [67326] = true, [56474] = true, [30560] = true, [30568] = true, [30314] = true,
 [3929] = true, [56475] = true, [19830] = true, [3946] = true, [54736] = true, 
 [30563] = true, [24357] = true, [30337] = true, [12591] = true, [19814] = true,
 [60866] = true, [12716] = true, [23071] = true, [23079] = true, [12585] = true, 
 [3923] = true, [3925] = true, [30305] = true, [12621] = true, [30329] = true,
 [3931] = true, [3932] = true, [3933] = true, [3936] = true, [3937] = true, 
 [3938] = true, [3939] = true, [3941] = true, [56473] = true, [3944] = true, 
 [3945] = true, [3947] = true, [54999] = true, [3949] = true, [3950] = true, 
 [26417] = true, [12717] = true, [3954] = true, [3955] = true, [3957] = true,
 [3958] = true, [3961] = true, [3962] = true, [3963] = true, [3965] = true,
 [3966] = true, [3967] = true, [3968] = true, [3969] = true, [3971] = true, 
 [3972] = true, [3973] = true, [7430] = true, [3977] = true, [3978] = true, 
 [3979] = true, [19790] = true, [23080] = true, [12620] = true, [30309] = true,
 [30346] = true, [12905] = true, [41307] = true, [8334] = true, [56460] = true, 
 [56476] = true, [12718] = true, [26418] = true, [19791] = true, [3960] = true,
 [19815] = true, [13240] = true, [19831] = true, [30570] = true, [19799] = true,
 [30306] = true, [30310] = true, [26011] = true, [36954] = true, [3919] = true,
 [3920] = true, [19800] = true, [12617] = true, [30311] = true, [56463] = true,
---------------------------------------------------------------------------------------
}

local function LoadRecipe()
	local recipe_list = addon.recipe_list

	if (not recipe_list) then
		if (addon.db.profile.autoloaddb) then
			local dbloaded
			dbloaded, recipe_list = addon:InitRecipeData()

			if (not dbloaded) then return end

			for idx, prof in pairs(PROFESSIONS) do
				addon:InitializeRecipe(prof)
			end
		else
			addon:Print(L["DATAMINER_NODB_ERROR"])
			return
		end
	else
		-- Recipe DB exists, we just need to populate it now
		if (addon.db.profile.autoloaddb) then
			for idx, prof in pairs(PROFESSIONS) do
				addon:InitializeRecipe(prof)
			end
		end
	end
	return recipe_list

end

-------------------------------------------------------------------------------
-- Creates a reverse lookup for a recipe list
-------------------------------------------------------------------------------
local CreateReverseLookup
do
	local reverse_lookup = {}

	function CreateReverseLookup(recipe_list)
		if (not recipe_list) then
			addon:Print(L["DATAMINER_NODB_ERROR"])
			return
		end

		twipe(reverse_lookup)

		for i in pairs(recipe_list) do
			--if t[recipe_list[i]["Name"]] then addon:Print("Dupe: " .. i) end
			reverse_lookup[recipe_list[i]["Name"]] = i
		end

		return reverse_lookup
	end

end

-------------------------------------------------------------------------------
-- Tooltip for data-mining.
-------------------------------------------------------------------------------
local ARLDatamineTT = CreateFrame("GameTooltip", "ARLDatamineTT", UIParent, "GameTooltipTemplate")

do
	-- Tables used in all the Scan functions within this do block. -Torhal
	local info, output = {}, {}

	--- Function to compare the skill levels of a trainers recipes with those in the ARL database.
	-- @name AckisRecipeList:ScanSkillLevelData
	-- @param autoscan True when autoscan is enabled in preferences, it will surpress output letting you know when a scan has occured.
	-- @return Does a comparison of the information in your internal ARL database, and those items which are available on the trainer.  Compares the skill levels between the two.
	function addon:ScanSkillLevelData(autoscan)
		if not IsTradeskillTrainer() then
			if not autoscan then
				self:Print(L["DATAMINER_SKILLLEVEL_ERROR"])
			end
			return
		end
		local recipe_list = LoadRecipe()	-- Get internal database

		if not recipe_list then
			self:Print(L["DATAMINER_NODB_ERROR"])
			return
		end
		-- Get the initial trainer filters
		local avail = GetTrainerServiceTypeFilter("available")
		local unavail = GetTrainerServiceTypeFilter("unavailable")
		local used = GetTrainerServiceTypeFilter("used")

		-- Clear the trainer filters
		SetTrainerServiceTypeFilter("available", 1)
		SetTrainerServiceTypeFilter("unavailable", 1)
		SetTrainerServiceTypeFilter("used", 1)

		twipe(info)

		-- Get the skill levels from the trainer
		for i = 1, GetNumTrainerServices(), 1 do
			local name = GetTrainerServiceInfo(i)
			local _, skilllevel = GetTrainerServiceSkillReq(i)

			if not skilllevel then
				skilllevel = 0
			end
			info[name] = skilllevel
		end
		local found = false

		twipe(output)

		for i in pairs(recipe_list) do
			local i_name = recipe_list[i]["Name"]

			if info[i_name] and info[i_name] ~= recipe_list[i]["Level"] then
				found = true
				tinsert(output, L["DATAMINER_SKILLELVEL"]:format(i_name, recipe_list[i]["Level"], info[i_name]))
			end
		end
		tinsert(output, "Trainer Skill Level Scan Complete.")

		if found then
			self:DisplayTextDump(nil, nil, tconcat(output, "\n"))
		end
		-- Reset the filters to what they were before
		SetTrainerServiceTypeFilter("available", avail or 0)
		SetTrainerServiceTypeFilter("unavailable", unavail or 0)
		SetTrainerServiceTypeFilter("used", used or 0)
	end

	local teach, noteach = {}, {}

	--- Function to compare which recipes are available from a trainer and compare with the internal ARL database.
	-- @name AckisRecipeList:ScanTrainerData
	-- @param autoscan True when autoscan is enabled in preferences, it will surpress output letting you know when a scan has occured.
	-- @return Does a comparison of the information in your internal ARL database, and those items which are available on the trainer.
	-- Compares the acquire information of the ARL database with what is available on the trainer.
	function addon:ScanTrainerData(autoscan)
		if not (UnitExists("target") and (not UnitIsPlayer("target")) and (not UnitIsEnemy("player", "target"))) then	-- Make sure the target exists and is a NPC
			if not autoscan then
				self:Print(L["DATAMINER_TRAINER_NOTTARGETTED"])
			end
			return
		end
		local targetname = UnitName("target")	-- Get its name
		local targetID = tonumber(string.sub(UnitGUID("target"), -12, -7), 16)	-- Get the NPC ID

		if not IsTradeskillTrainer() then		-- Are we at a trade skill trainer?
			if not autoscan then
				self:Print(L["DATAMINER_SKILLLEVEL_ERROR"])
			end
			return
		end
		local recipe_list = LoadRecipe()	-- Get internal database

		if not recipe_list then
			self:Print(L["DATAMINER_NODB_ERROR"])
			return
		end

		-- Get the initial trainer filters
		local avail = GetTrainerServiceTypeFilter("available")
		local unavail = GetTrainerServiceTypeFilter("unavailable")
		local used = GetTrainerServiceTypeFilter("used")

		-- Clear the trainer filters
		SetTrainerServiceTypeFilter("available", 1)
		SetTrainerServiceTypeFilter("unavailable", 1)
		SetTrainerServiceTypeFilter("used", 1)

		if (GetNumTrainerServices() == 0) then
			self:Print("Warning: Trainer is bugged, reporting 0 trainer items.")
		end
		twipe(info)

		-- Get all the names of recipes from the trainer
		for i = 1, GetNumTrainerServices(), 1 do
			local name = GetTrainerServiceInfo(i)
			info[name] = true
		end
		twipe(teach)
		twipe(noteach)
		twipe(output)

		-- Dump out trainer info
		tinsert(output, L["DATAMINER_TRAINER_INFO"]:format(targetname, targetID))

		local teachflag = false
		local noteachflag = false

		for i in pairs(recipe_list) do
			local i_name = recipe_list[i]["Name"]
			local acquire = recipe_list[i]["Acquire"]
			local flags = recipe_list[i]["Flags"]

			-- If the trainer teaches this recipe
			if info[i_name] then
				local found = false

				-- Parse acquire info
				for j in pairs(acquire) do
					if (acquire[j]["Type"] == 1) then
						if (acquire[j]["ID"] == targetID) then
							found = true
						end
					end
				end

				if (not found) then
					tinsert(teach, i)
					teachflag = true

					if (not flags[3]) then
						tinsert(output, ": Trainer flag needs to be set.")
					end
				end
				-- Trainer does not teach this recipe
			else
				local found = false
				-- Parse acquire info
				for j in pairs(acquire) do
					if (acquire[j]["Type"] == 1) then
						if (acquire[j]["ID"] == targetID) then
							found = true
						end
					end
				end

				if found then
					noteachflag = true
					tinsert(noteach, i)
				end
			end
		end

		if teachflag then
			tinsert(output, "Missing entries (need to be added):")
			tsort(teach)

			for i in ipairs(teach) do
				tinsert(output, L["DATAMINER_TRAINER_TEACH"]:format(teach[i], recipe_list[teach[i]]["Name"]))
			end
		end

		if noteachflag then
			tinsert(output, "Extra entries (need to be removed):")
			tsort(noteach)

			for i in ipairs(noteach) do
				tinsert(output, L["DATAMINER_TRAINER_NOTTEACH"]:format(noteach[i], recipe_list[noteach[i]]["Name"]))
			end
		end
		tinsert(output, "Trainer Acquire Scan Complete.")
		tinsert(output, "If you're doing an engineering scan,  there may be some goggles listed as extra.  These goggles ONLY show up for those classes who can make them,  so they may be false positives.")

		if teachflag or noteachflag then
			self:DisplayTextDump(nil, nil, tconcat(output, "\n"))
		end
		-- Reset the filters to what they were before
		SetTrainerServiceTypeFilter("available", avail or 0)
		SetTrainerServiceTypeFilter("unavailable", unavail or 0)
		SetTrainerServiceTypeFilter("used", used or 0)
	end
end	-- do

--- Generates tradeskill links for all professions so you can scan them for completeness.
-- @name AckisRecipeList:GenerateLinks
-- @return Generates tradeskill links with all recipes.  Used for testing to see if a recipe is missing from the database or not.
function addon:GenerateLinks()
	-- This code adopted from Gnomish Yellow Pages with permission

	local guid = UnitGUID("player")
	local playerGUID = gsub(guid, "0x0+", "")

	-- Listing of all tradeskill professions
	local tradelist = {51304, 51300, 51313, 51306, 45363, 51311, 51302, 51309, 51296, 45542}

--[[
	local encodingLength = floor((#recipeList+5) / 6)

	local encodedString = string.rep("/", encodingLength)
]]--
	local bitmap = {}
	bitmap[45542] = "8bffAA" -- First Aid (6)
	--bitmap[51296] = "2/7///7///9////7//////////g+/B" -- Cooking (30)
	bitmap[51296] = "2/7///7///9////7//////////gC8/B" -- Cooking
	--bitmap[51306] = "4/////////////3nFA+///9+/P7//f//n//9dgdJgHA87/3f/TolD" -- Engineering (53)
	bitmap[51306] = "4/////////////3nFA+///9+/P7//f//n//9dgdJgHA87/3f/Tol3B" -- Engineering
	--bitmap[51302] = "e+//////////////v//P+f///3///7/9f9//////////f///////HQ5+////B4//+///////5///////PA/Eg//" -- LW (87)
	bitmap[51302] = "e+//////////////v//P+f///3///7/9f9//////////f///////HQ5+////B4//+//////////////////HgAAw/P" -- Leatherworking
	--bitmap[51302] = string.rep("/", 87)
	--bitmap[51304] = "2//v//////f////3//v///////6//////////9////X" -- Alchemy (43)
	bitmap[51304] = "2//v//////f////3//v///////5//////////9/////v" -- Alchemy
	--bitmap[51304] = string.rep("/", 43) -- Alchemy (43)
	--bitmap[51300] = string.rep("/", 85) -- Blacksmithing (85)
	--bitmap[51309] = string.rep("/", 71) -- Tailoring (71)
	bitmap[51309] = "YIEMCCgAicAjAGIAiQKAACBRxgBEAAAAAAAAA45BAqBQBAKAAAEAAAIICLHqiAuKAAAEABAAA"
	--bitmap[51311] = string.rep("/", 83) -- JC 83
	bitmap[51311] = "8fJRMqkmRwipmMHAQAACEAAQw/AgDkMJIAQgCA4AAwHMKFr/TCEx6tip+z7WyNsRWrnhm7wGPAAOgAUEALFAAWJWfqsBCAB"
	--bitmap[45363] = string.rep("/", 74) -- Inscription (74)
	--bitmap[51313] = "4//////////7///////////w//++/9vn7///////3P/t/n//BAB" -- Enchanting
	--bitmap[51313] = "4//////////7///////////w//++/9vn7///////3P/t/n//BAD" -- Enchanting (51)
	bitmap[51313] = "4//////////7///////////w//+//9/n7///////3f//////ZsD" -- Enchanting
	--bitmap[51313] = string.rep("/", 51) -- Enchanting (51)

	for i in pairs(tradelist) do

		local tradeName = GetSpellInfo(tradelist[i])
		local tradelink = {}
		tradelink[1] = "|cffffd000|Htrade:"
		tradelink[2] = tradelist[i]
		tradelink[3] = ":450:450:"
		tradelink[4] = playerGUID
		tradelink[5] = ":"
		tradelink[6] = bitmap[tradelist[i]]
		tradelink[7] = "|h["
		tradelink[8] = tradeName
		tradelink[9] = "]|h|r"

		if (bitmap[tradelist[i]]) then
			self:Print(tconcat(tradelink, ""))
		else
			self:Print("There currently is not a generated tradeskill link for: " .. tradeName)
		end
		-- /script DEFAULT_CHAT_FRAME:AddMessage(gsub(GetTradeSkillListLink(), "\124", "\124\124"))
	end

end

-------------------------------------------------------------------------------
--- Scans the items in the specified profession
-------------------------------------------------------------------------------
do
	local ORDERED_PROFESSIONS = {
		strlower(PROFESSIONS.Alchemy), 		-- 1 Alchemy
		strlower(PROFESSIONS.Blacksmithing), 	-- 2 Blacksmithing
		strlower(PROFESSIONS.Cooking), 		-- 3 Cooking
		strlower(PROFESSIONS.Enchanting), 	-- 4 Enchanting
		strlower(PROFESSIONS.Engineering), 	-- 5 Engineering
		strlower(PROFESSIONS.FirstAid), 		-- 6 First Aid
		strlower(PROFESSIONS.Inscription), 	-- 7 Inscription
		strlower(PROFESSIONS.Jewelcrafting), 	-- 8 Jewelcrafting
		strlower(PROFESSIONS.Leatherworking), 	-- 9 Leatherworking
		strlower(PROFESSIONS.Runeforging), 	-- 10 Runeforging
		strlower(PROFESSIONS.Smelting), 		-- 11 Smelting
		strlower(PROFESSIONS.Tailoring), 	-- 12 Tailoring
	}
	local recipe_list = {}
	local output = {}

	local function ProfessionScan(prof_name)
		local master_list = LoadRecipe()
		
		if not master_list then
			addon:Print(L["DATAMINER_NODB_ERROR"])
			return
		end
		twipe(recipe_list)

		for i in pairs(master_list) do
			local prof = strlower(master_list[i]["Profession"])

			if prof and prof == prof_name then
				recipe_list[i] = master_list[i]
			end
		end
		twipe(output)

		-- Parse the entire recipe database
		for i in pairs(recipe_list) do
			local ttscantext = addon:TooltipScanRecipe(i, false, true)

			if (ttscantext) then
				tinsert(output, ttscantext)
			end
		end
		addon:DisplayTextDump(nil, nil, tconcat(output, "\n"))
		ARLDatamineTT:Hide()
	end

	--- Parses all recipes for a specified profession, scanning their tool tips.
	-- @name AckisRecipeList:ScanProfession
	-- @usage AckisRecipeList:ScanProfession("first aid")
	-- @param prof_name The profession name or the spell ID of it, which you wish to scan.
	-- @return Recipes in the given profession have their tooltips scanned.
	function addon:ScanProfession(prof_name)
		if (type(prof_name) == "number") then
			prof_name = GetSpellInfo(prof_name)
		end
		
		local found = false
		prof_name = strlower(prof_name)

		local scan_all = prof_name == "all"

		if not scan_all then
			for idx, name in ipairs(ORDERED_PROFESSIONS) do
				if prof_name == name then
					found = true
					break
				end
			end

			if not found then
				self:Print(L["DATAMINER_NODB_ERROR"])
				return
			end

			ProfessionScan(prof_name)
		else
			for idx, name in ipairs(ORDERED_PROFESSIONS) do
				ProfessionScan(name)
			end
		end
	end
end	-- do

local RECIPE_NAMES = {
	-- JC
	["design: "] = true, 
	-- LW or Tailoring
	["pattern: "] = true, 
	-- Alchemy or Cooking
	["recipe: "] = true, 
	-- BS
	["plans: "] = true, 
	-- Enchanting
	["formula: "] = true, 
	-- Engineering
	["schematic: "] = true, 
	-- First Aid
	["manual: "] = true, 

	["alchemy: "] = true, 
	["blacksmithing: "] = true, 
	["cooking: "] = true, 
	["enchanting: "] = true, 
	["engineering: "] = true, 
	["first aid: "] = true, 
	["inscription: "] = true, 
	["jewelcrafting: "] = true, 
	["leatherworking: "] = true, 
	["tailoring: "] = true, 
}

--- Scans the items on a vendor, determining which recipes are available if any and compares it with the database entries.
-- @name AckisRecipeList:ScanVendor
-- @usage AckisRecipeList:ScanVendor()
-- @return Obtains all the vendor information on tradeskill recipes and attempts to compare the current vendor with the internal database.
do
	local output = {}

	function addon:ScanVendor()
		if not (UnitExists("target") and (not UnitIsPlayer("target")) and (not UnitIsEnemy("player", "target"))) then	-- Make sure the target exists and is a NPC
			self:Print(L["DATAMINER_VENDOR_NOTTARGETTED"])
			return
		end
		local recipe_list = LoadRecipe()		-- Get internal database

		if not recipe_list then
			self:Print(L["DATAMINER_NODB_ERROR"])
			return
		end
		local reverse_lookup = CreateReverseLookup(recipe_list)
		local targetname = UnitName("target")		-- Get its name
		local targetID = tonumber(string.sub(UnitGUID("target"), -12, -7), 16)		-- Get the NPC ID
		local added = false

		twipe(output)

		-- Parse all the items on the merchant
		for i = 1, GetMerchantNumItems(), 1 do
			local name, _, _, _, numAvailable = GetMerchantItemInfo(i)

			if name then
				-- Lets scan recipes only on vendors
				local matchtext = strmatch(name, "%a+: ")
				-- Check to see if we're dealing with a recipe
				if matchtext and RECIPE_NAMES[strlower(matchtext)] then
					local recipename = gsub(name, "%a+\: ", "")	-- Get rid of the first part of the item
					local spellid = reverse_lookup[recipename]	-- Find out what spell ID we're using

					-- Do the scan if we have the spell ID
					if (spellid) then
						added = true
						local ttscantext = addon:TooltipScanRecipe(spellid, true, true)

						if (ttscantext) then
							tinsert(output, ttscantext)
						end
						-- Ok now we know it's a vendor, lets check the database to see if the vendor is listed as an acquire method.
						local acquire = recipe_list[spellid]["Acquire"]
						local found = false

						for i in pairs(acquire) do
							local atype = acquire[i]["Type"]
							-- If the acquire type is a vendor
							if (((atype == 2) and (acquire[i]["ID"] == targetID))
							    or ((atype == 6) and (acquire[i]["RepVendor"] == targetID))) then
								found = true
							end
						end

						if (not found) then
							tinsert(output, "Vendor ID missing from " .. spellid)
						end
					else
						--[===[@debug@
						added = true
						tinsert(output, "Spell ID not found for: " .. name)
						--@end-debug@]===]
					end
				end
			end
		end

		if added then
			self:DisplayTextDump(nil, nil, tconcat(output, "\n"))
		end
		ARLDatamineTT:Hide()
	end
end	-- do

--- Parses all the recipes in the database, and scanning their tooltips.
-- @name AckisRecipeList:TooltipScanDatabase
-- @usage AckisRecipeList:TooltipScanDatabase()
-- @return Entire recipe database has its tooltips scanned.
do
	local output = {}

	function addon:TooltipScanDatabase()
		-- Get internal database
		local recipe_list = LoadRecipe()

		if (not recipe_list) then
			self:Print(L["DATAMINER_NODB_ERROR"])
			return
		end
		twipe(output)

		-- Parse the entire recipe database
		for i in pairs(recipe_list) do

			local ttscantext = addon:TooltipScanRecipe(i, false, true)
			if (ttscantext) then
				tinsert(output, ttscantext)
			end
		end
		self:DisplayTextDump(nil, nil, tconcat(output, "\n"))
	end
end	-- do
--- Parses a specific recipe in the database, and scanning its tooltip.
-- @name AckisRecipeList:TooltipScanRecipe
-- @param spellid The [[[http://www.wowwiki.com/SpellLink | Spell ID]]] of the recipe being added to the database.
-- @param is_vendor Boolean to determine if we're viewing a vendor or not.
-- @param is_largescan Boolean to determine if we're doing a large scan.
-- @return Recipe has its tooltips scanned.
do

	---------------------------------------------------------------------------------------------------------
	----This table, DO_NOT_SCAN, contains itemid's that will not cache on the servers
	---------------------------------------------------------------------------------------------------------
	
	local DO_NOT_SCAN = {
		-------------------------------------------------------------------------------
		--Leatherworking
		-------------------------------------------------------------------------------
		[35214] = true,	[32434] = true,	[15769] = true,
		[32431] = true,	[32432] = true,	[35215] = true,	[35521] = true,
		[35520] = true,	[35524] = true,	[35517] = true,	[35528] = true,
		[35527] = true,	[35523] = true,	[35549] = true,	[35218] = true,
		[35217] = true,	[35216] = true,	[35546] = true,	[35541] = true, [15756] = true,
		[15777] = true,  [32433] = true,  [29729] = true,  [29732] = true,   [32744] = true,
		
		-------------------------------------------------------------------------------
		--Tailoring
		-------------------------------------------------------------------------------
		[14477] = true, [14485] = true, [30281] = true, [14478] = true, [14500] = true,
		[32439] = true, [14479] = true, [32447] = true, [14480] = true, [32437] = true,
		[14495] = true, [14505] = true, [35204] = true,  [35205] = true,   [35206] = true,
		[14473] = true,
		
		-------------------------------------------------------------------------------
		--Jewelcrafting
		-------------------------------------------------------------------------------
		[23130] = true,  [23140] = true, [23137] = true, [23131] = true, [23148] = true,
		[35538] = true, [35201] = true, [35533] = true, [35200] = true,  [23147] = true,
		[23135] = true,  [35203] = true,
		
		-------------------------------------------------------------------------------
		--Alchemy
		-------------------------------------------------------------------------------
		[22925] = true,  [13480] = true,  [13481] = true,   [13493] = true,
		
		-------------------------------------------------------------------------------
		--Cooking
		-------------------------------------------------------------------------------
		[39644] = true,
		
		-------------------------------------------------------------------------------
		--Blacksmithing
		-------------------------------------------------------------------------------
		[32441] = true,   [32443] = true,  [12687] = true, [12714] = true,  [12688 ] = true,
		[35211] = true,  [35209] = true, [35210] = true,    [12706] = true,  [7982] = true,
		[12718] = true, 
		
		-------------------------------------------------------------------------------
		--Engineering
		-------------------------------------------------------------------------------
		[35196] = true,    [21734] = true,  [18292] = true,  [21727] = true,  [21735] = true,  [16053] = true,  [21729] = true,
		[16047] = true,[21730] = true,[21731] = true,[21732] = true,[4411] = true,   [21733] = true,  [21728] = true, 
		
	}
	
	local output = {}

	function addon:TooltipScanRecipe(spell_id, is_vendor, is_largescan)
		local recipe_list = LoadRecipe()

		if not recipe_list then
			self:Print(L["DATAMINER_NODB_ERROR"])
			return
		end
		local spell_info = recipe_list[spell_id]

		if not spell_info then
			self:Print(string.format("Spell ID %d does not exist in the database.", tonumber(spell_id)))
			return
		end
		local recipe_name = spell_info["Name"]
		local game_vers = spell_info["Game"]

		twipe(output)

		if not game_vers then
			tinsert(output, "No expansion information: " .. tostring(spell_id) .. " " .. recipe_name)
		elseif game_vers > 2 then
			tinsert(output, "Expansion information too high: " .. tostring(spell_id) .. " " .. recipe_name)
		end
		local Orange = spell_info["Orange"]
		local Yellow = spell_info["Yellow"]
		local Green = spell_info["Green"]
		local Grey = spell_info["Grey"]
		local SkillLevel = spell_info["Level"]

		if not Orange then
			tinsert(output, "No skill level information: " .. tostring(spell_id) .. " " .. recipe_name)
		else
			-- Highest level is greater than the skill of the recipe
			if Orange > SkillLevel then
				tinsert(output, "Skill Level Error (Orange > Skill): " .. tostring(spell_id) .. " " .. recipe_name)
			end
			-- Level info is messed up
			if Orange > Yellow or Orange > Green or Orange > Grey or Yellow > Green or Yellow > Grey or Green > Grey then
				tinsert(output, "Skill Level Error: " .. tostring(spell_id) .. " " .. recipe_name)
			end
		end
		local recipe_link = spell_info["RecipeLink"]

		if not recipe_link then
			if spell_info["Profession"] ~= GetSpellInfo(53428) then		-- Lets hide this output for runeforging.
				self:Print("Missing RecipeLink for ID " .. spell_id .. " - " .. recipe_name .. " (Normal for DK abilities.")
			end
			return
		end
		ARLDatamineTT:SetOwner(WorldFrame, "ANCHOR_NONE")
		GameTooltip_SetDefaultAnchor(ARLDatamineTT, UIParent)
		ARLDatamineTT:SetHyperlink(recipe_link)	-- Link exists, so load the tooltip for scanning

		-- Lets check to see if it's a recipe tooltip
		local text = strlower(_G["ARLDatamineTTTextLeft1"]:GetText())
		local match_text = strmatch(text, "%a+: ")

		-- Check to see if we're dealing with a recipe
		if not RECIPE_NAMES[match_text] then
			ARLDatamineTT:Hide()
			return
		end
		local reverse_lookup = CreateReverseLookup(recipe_list)

--		tinsert(output, "RECIPE SCAN")

--		for i = 1, ARLDatamineTT:NumLines(), 1 do
--			local text_l = _G["ARLDatamineTTTextLeft" .. i]:GetText()
--			local text_r = _G["ARLDatamineTTTextRight" .. i]:GetText()
--			local text
 
--			if text_r then
--				text = text_l .. "(Left) " .. text_r .. "(Right)"
--			else
--				text = text_l
--			end

--			tinsert(output, text)
--		end
		self:ScanToolTip(recipe_name, recipe_list, reverse_lookup, is_vendor, false)

		local item_id = SPELL_ITEM[spell_id]

--		tinsert(output, "ITEM SCAN")
		-- We have a reverse look-up for the item which creates the spell (aka the recipe itself)
		if item_id then
			if not DO_NOT_SCAN[item_id] then
				local incache = GetItemInfo(item_id)

			   if incache then 

				ARLDatamineTT:SetHyperlink("item:" .. item_id .. ":0:0:0:0:0:0:0")

--				for i = 1, ARLDatamineTT:NumLines(), 1 do
--					local text_l = _G["ARLDatamineTTTextLeft" .. i]:GetText()
--					local text_r = _G["ARLDatamineTTTextRight" .. i]:GetText()
--					local text
 
--					if text_r then
--						text = text_l .. "(Left) " .. text_r .. "(Right)"
--					else
--						text = text_l
--					end

--					tinsert(output, text)
--				end
				-- Scan the recipe item (aka pattern)
				self:ScanToolTip(recipe_name, recipe_list, reverse_lookup, is_vendor, true)
			else
				tinsert(output, "Item ID: " .. item_id .. " not in cache.  If you have Querier use /iq " .. item_id)
			end
		end
			-- We are dealing with a recipe that does not have an item to learn it from
		else
			-- Lets check the recipe flags to see if we have a data error and the item should exist
			local flags = spell_info["Flags"]

			if (flags[4] or flags[5] or flags[6]) then
				tinsert(output, "Spell/Item ID: " .. spell_id .. " does not exist in the SPELL_ITEM table.")
			end
		end
		ARLDatamineTT:Hide()

		-- Add the flag scan to the table if it's not nil
		local results = self:PrintScanResults()

		if not results then
			return
		end
		tinsert(output, results)

		if is_largescan then
			return tconcat(output, "\n")
		else
			self:Print(tconcat(output, "\n"))
		end
	end
end	-- do

-------------------------------------------------------------------------------
-- Tooltip-scanning code
-------------------------------------------------------------------------------
do
	local SPECIALTY_TEXT = {
		["requires spellfire tailoring"] = 26797, 
		["requires mooncloth tailoring"] = 26798, 
		["requires shadoweave tailoring"] = 26801, 
		["requires dragonscale leatherworking"] = 10657, 
		["requires elemental leatherworking"] = 10659, 
		["requires tribal leatherworking"] = 10661, 
		["requires gnomish engineer"] = 20219, 
		["requires goblin engineer"] = 20222, 
		["requires armorsmith"] = 9788, 
		["requires master axesmith"] = 17041, 
		["requires master hammersmith"] = 17040, 
		["requires master swordsmith"] = 17039, 
		["requires weaponsmith"] = 9787, 
	}

	local FACTION_TEXT = {
		["thorium brotherhood"] = 98, 
		["zandalar tribe"] = 100, 
		["argent dawn"] = 96, 
		["timbermaw hold"] = 99, 
		["cenarion circle"] = 97, 
		["the aldor"] = 101, 
		["the consortium"] = 105, 
		["the scryers"] = 110, 
		["the sha'tar"] = 111, 
		["the mag'har"] = 108, 
		["cenarion expedition"] = 103, 
		["honor hold"] = 104, 
		["thrallmar"] = 104, 
		["the violet eye"] = 114, 
		["sporeggar"] = 113, 
		["kurenai"] = 108, 
		["keepers of time"] = 106, 
		["the scale of the sands"] = 109, 
		["lower city"] = 107, 
		["ashtongue deathsworn"] = 102, 
		["alliance vanguard"] = 131, 
		["valiance expedition"] = 126, 
		["horde expedition"] = 130, 
		["the taunka"] = 128, 
		["the hand of vengeance"] = 127, 
		["explorers' league"] = 125, 
		["the kalu'ak"] = 120, 
		["shattered sun offensive"] = 112, 
		["warsong offensive"] = 129, 
		["kirin tor"] = 118, 
		["the wyrmrest accord"] = 122, 
		["knights of the ebon blade"] = 117, 
		["frenzyheart tribe"] = 116, 
		["the oracles"] = 121, 
		["argent crusade"] = 115, 
		["the sons of hodir"] = 119, 
	}

	local FACTION_LEVELS = {
		["neutral"] = 0, 
		["friendly"] = 1, 
		["honored"] = 2, 
		["revered"] = 3, 
		["exalted"] = 4, 
	}

	local CLASS_TYPES = {
		["Death Knight"]	= 21, 	["Druid"]	= 22, 	["Hunter"]	= 23, 
		["Mage"]		= 24, 	["Paladin"]	= 25, 	["Priest"]	= 26, 
		["Shaman"]		= 27, 	["Rogue"]	= 28, 	["Warlock"]	= 29, 
		["Warrior"]		= 30, 
	}

	local ORDERED_CLASS_TYPES = {
		[1]	= "Death Knight", 	[2]	= "Druid", 	[3]	= "Hunter", 
		[4]	= "Mage", 		[5]	= "Paladin", 	[6]	= "Priest", 
		[7]	= "Shaman", 		[8]	= "Rogue", 	[9]	= "Warlock", 
		[10]	= "Warrior", 
	}

	local ROLE_TYPES = {
		["dps"]		= 51, 	["tank"]	= 52, 	["healer"]	= 53, 
		["caster"]	= 54, 	["RESERVED1"]	= 55, 
	}

	local ORDERED_ROLE_TYPES = {
		[1]	= "dps", 	[2]	= "tank", 	[3]	= "healer", 
		[4]	= "caster", 	[5]	= "RESERVED1", 
	}

	local ENCHANT_TO_ITEM = {
		["Cloak"]	= "Back",
		["Ring"]	= "Finger",
		["2H Weapon"]	= "Two-Hand",
	}

	local ITEM_TYPES = {
		-- Armor types
		["Cloth"]	= 56, 	["Leather"]	= 57, 	["Mail"]	= 58, 
		["Plate"]	= 59, 	["Back"]	= 60, 	["Trinket"]	= 61, 
		["Finger"]	= 62, 	["Neck"]	= 63, 	["Shield"]	= 64, 
		["RESERVED2"]	= 65, 

		-- Weapon types
		["One-Hand"]	= 66, 	["Two-Hand"]	= 67, 	["Axe"]		= 68, 
		["Sword"]	= 69, 	["Mace"]	= 70, 	["Polearm"]	= 71, 
		["Dagger"]	= 72, 	["Staff"]	= 73, 	["Wand"]	= 74, 
		["Thrown"]	= 75, 	["Bow"]		= 76, 	["CrossBow"]	= 77, 
		["Ammo"]	= 78, 	["Fist Weapon"]	= 79, 	["Gun"]		= 80, 
	}

	local ORDERED_ITEM_TYPES = {
		-- Armor types
		[1]	= "Cloth", 	[2]	= "Leather", 	[3]	= "Mail", 
		[4]	= "Plate", 	[5]	= "Back", 	[6]	= "Trinket", 
		[7]	= "Finger", 	[8]	= "Neck", 	[9]	= "Shield", 
		[10]	= "RESERVED2", 

		-- Weapon types
		[11]	= "One-Hand", 	[12]	= "Two-Hand", 	[13]	= "Axe", 
		[14]	= "Sword", 	[15]	= "Mace", 	[16]	= "Polearm", 
		[17]	= "Dagger", 	[18]	= "Staff", 	[19]	= "Wand", 
		[20]	= "Thrown", 	[21]	= "Bow", 	[22]	= "CrossBow", 
		[23]	= "Ammo", 	[24]	= "Fist Weapon", 	[25]	= "Gun", 
	}

	-- Table to store scanned information. Wiped and re-used every scan.
	local scan_data = {}

	--- Parses the mining tooltip for certain keywords, comparing them with the database flags.
	-- @name AckisRecipeList:ScanToolTip
	-- @param name The name of the recipe
	-- @param recipe_list Recipe database
	-- @param reverse_lookup Reverse lookup database
	-- @param is_vendor Boolean to indicate if we're scanning a vendor.
	-- @param is_item Boolean to indicate if we're scanning an item tooltip.
	-- @return Scans a tooltip, and outputs the missing or extra filter flags.
	function addon:ScanToolTip(name, recipe_list, reverse_lookup, is_vendor, is_item)
		-- We only want to wipe the table if we're scanning a new entry (not an item associated with a spell ID)
		if not is_item then
			twipe(scan_data)
		end
		scan_data.match_name = name
		scan_data.recipe_list = recipe_list
		scan_data.reverse_lookup = reverse_lookup
		scan_data.is_vendor = is_vendor
		scan_data.is_item = is_item

		-- Parse all the lines of the tooltip
		for i = 1, ARLDatamineTT:NumLines(), 1 do
			local text_l = _G["ARLDatamineTTTextLeft" .. i]:GetText()
			local text_r = _G["ARLDatamineTTTextRight" .. i]:GetText()
			local text
 
			if text_r then
				text = text_l .. " " .. text_r
			else
				text = text_l
			end

			local text = strlower(text)

			-- Check for recipe/item binding
			-- The recipe binding is within the first few lines of the tooltip always
			if strmatch(text, "binds when picked up") then
				if (i < 3) then
					scan_data.boprecipe = true
				else
					scan_data.bopitem = true
				end
			end

			-- Recipe Specialities
			if SPECIALTY_TEXT[text] then
				scan_data.specialty = SPECIALTY_TEXT[text]
			end

			-- Recipe Reputations
			local rep, replevel = strmatch(text_l, "Requires (.+) %- (.+)")

			if rep and replevel and FACTION_TEXT[rep] then
				scan_data.repid = FACTION_TEXT[rep]
				scan_data.repidlevel = FACTION_LEVELS[replevel]
			end

			-- Flag so that we don't bother checking for classes if we're sure of the class
			-- AKA +spell hit == caster DPS only no matter what other stats are on it
			-- Saves processing cycles and it won't cause the flags to be overwritten if a non-specific stat is found after
			scan_data.verifiedclass = false

			if (not scan_data.verifiedclass) then
				-- Certain stats can be considered for a specific role (aka spell hit == caster dps).
				if (strmatch(text, "strength") and (strmatch(text, "strength of the clefthoof") == nil) and (strmatch(text,  "set:") == nil)) then
					scan_data.dps = true
					scan_data.caster = false
					scan_data.healer = false
				elseif (strmatch(text, "agility")) then
					scan_data.dps = true
					scan_data.caster = false
					scan_data.healer = false
				elseif (strmatch(text, "spirit")) then
					scan_data.dps = false
					scan_data.tank = false
					scan_data.caster = true
					scan_data.healer = true
				elseif (strmatch(text, "spell power")) then
					scan_data.dps = false
					scan_data.tank = false
					scan_data.caster = true
					scan_data.healer = true
				elseif (strmatch(text, "spell crit")) then
					scan_data.dps = false
					scan_data.tank = false
					scan_data.caster = true
					scan_data.healer = true
				elseif (strmatch(text, "spell hit")) then
					scan_data.dps = false
					scan_data.tank = false
					scan_data.caster = true
					scan_data.healer = false
					scan_data.verifiedclass = true
				elseif (strmatch(text, "spell penetration")) then
					scan_data.dps = false
					scan_data.tank = false
					scan_data.caster = true
					scan_data.healer = false
					scan_data.verifiedclass = true
				elseif (strmatch(text, "mana per 5 sec.") or (strmatch(text, "mana every 5 seconds"))) then
					scan_data.dps = false
					scan_data.tank = false
					scan_data.caster = true
					scan_data.healer = true
				elseif (strmatch(text, "attack power")) then
					scan_data.dps = true
					scan_data.caster = false
					scan_data.healer = false
				elseif (strmatch(text, "expertise")) then
					scan_data.dps = true
					scan_data.tank = true
					scan_data.caster = false
					scan_data.healer = false
				elseif (strmatch(text, "melee crit")) then
					scan_data.dps = true
					scan_data.caster = false
					scan_data.healer = false
				elseif (strmatch(text, "critical hit")) then
					scan_data.dps = true
					scan_data.caster = false
					scan_data.healer = false
				elseif (strmatch(text, "weapon damage")) then
					scan_data.dps = true
					scan_data.caster = false
					scan_data.healer = false
				elseif (strmatch(text, "ranged crit")) then
					scan_data.dps = true
					scan_data.tank = false
					scan_data.caster = false
					scan_data.healer = false
					scan_data.verifiedclass = true
				elseif (strmatch(text, "melee haste")) then
					scan_data.dps = true
					scan_data.caster = false
					scan_data.healer = false
				elseif (strmatch(text, "ranged haste")) then
					scan_data.dps = true
					scan_data.tank = false
					scan_data.caster = false
					scan_data.healer = false
					scan_data.verifiedclass = true
				elseif (strmatch(text, "melee hit")) then
					scan_data.dps = true
					scan_data.caster = false
					scan_data.healer = false
				elseif (strmatch(text, "ranged hit")) then
					scan_data.dps = true
					scan_data.tank = false
					scan_data.caster = false
					scan_data.healer = false
					scan_data.verifiedclass = true
				elseif (strmatch(text, "armor pen")) then
					scan_data.dps = true
					scan_data.caster = false
					scan_data.healer = false
				elseif (strmatch(text, "feral attack power")) then
					scan_data.tank = true
					scan_data.dps = true
					scan_data.caster = false
					scan_data.healer = false
				elseif (strmatch(text, "defense") and (strmatch(text, "defenseless") == nil)) then
					scan_data.dps = false
					scan_data.tank = true
					scan_data.caster = false
					scan_data.healer = false
					scan_data.verifiedclass = true
				elseif (strmatch(text, "block")) then
					scan_data.dps = false
					scan_data.tank = true
					scan_data.caster = false
					scan_data.healer = false
					scan_data.verifiedclass = true
				elseif (strmatch(text, "parry")) then
					scan_data.dps = false
					scan_data.tank = true
					scan_data.caster = false
					scan_data.healer = false
					scan_data.verifiedclass = true
				elseif (strmatch(text, "dodge") and (strmatch(text,  "set:") == nil)) then
					scan_data.dps = false
					scan_data.tank = true
					scan_data.caster = false
					scan_data.healer = false
					scan_data.verifiedclass = true
				end
			end

			-- Classes
			local class_type = strmatch(text_l, "Classes: (.+)")

			if class_type then
				for idx, class in ipairs(ORDERED_CLASS_TYPES) do
					if strmatch(class_type, class) then
						scan_data[class] = true
						scan_data.found_class = true
					end
				end
			end

			-- Armor types
			if ITEM_TYPES[text_l] then
				scan_data[text_l] = true
			elseif text_l == "Held In Off-hand" or text_l == "Off Hand" or text_l == "Main Hand" then	-- Special cases.
				scan_data["One-Hand"] = true
			elseif text_l == "Projectile" then
				scan_data["Ammo"] = true
			end

			if text_r and ITEM_TYPES[text_r] then
				scan_data[text_r] = true
			end

			-- Enchantment voodoo
			local ench_type, _ = strmatch(text_l, "Enchant (.+) %- (.+)")

			if ench_type then
				if ITEM_TYPES[ench_type] then
					scan_data[ench_type] = true
				elseif ITEM_TYPES[ENCHANT_TO_ITEM[ench_type]] then
					scan_data[ENCHANT_TO_ITEM[ench_type]] = true
				elseif ench_type == "Weapon" then		-- Special case.
					scan_data["One-Hand"] = true
					scan_data["Two-Hand"] = true
				end
			end
		end	-- for
	end

	-- Flag data for printing. Wiped and re-used.
	local missing_flags = {}
	local extra_flags = {}
	local output = {}

	--- Prints out the results of the tooltip scan.
	-- @name AckisRecipeList:PrintScanResults
	function addon:PrintScanResults()
		-- Parse the recipe database until we get a match on the name
		local recipe_name = gsub(scan_data.match_name, "%a+%?: ", "")
		local spell_id = scan_data.reverse_lookup[recipe_name]

		if (not spell_id) then
			self:Print("Recipe " .. recipe_name .. " has no reverse lookup")
			return
		end

		local flags = scan_data.recipe_list[spell_id]["Flags"]
		local acquire = scan_data.recipe_list[spell_id]["Acquire"]
		twipe(missing_flags)
		twipe(extra_flags)
		twipe(output)

		-- If we're a vendor scan,  do some extra checks
		if (scan_data.is_vendor) then
			-- Check to see if the vendor flag is set
			if (not flags[4]) then
				tinsert(missing_flags, "4 (Vendor)")
			end

			-- Check to see if we're in a PVP zone
			if (((GetSubZoneText() == "Wintergrasp Fortress") or (GetSubZoneText() == "Halaa")) and (not flags[9])) then
				tinsert(missing_flags, "9 (PvP)")
			elseif ((flags[9]) and not ((GetSubZoneText() == "Wintergrasp Fortress") or (GetSubZoneText() == "Halaa"))) then
				tinsert(extra_flags, "9 (PvP)")
			end
		end

		-- -- If we've picked up at least one class flag
		if (scan_data.found_class) then
			for k, v in ipairs(ORDERED_CLASS_TYPES) do
				if scan_data[v] and not flags[CLASS_TYPES[v]] then
					tinsert(missing_flags, tostring(CLASS_TYPES[v]).." ("..v..")")
				elseif not scan_data[v] and flags[CLASS_TYPES[v]] then
					tinsert(extra_flags, tostring(CLASS_TYPES[v]).." ("..v..")")
				end
			end
		end

		-- BoP Item
		if (scan_data.is_item) then
			if (scan_data.bopitem) and (not flags[37]) then
				tinsert(missing_flags, "37 (BoP Item)")
				-- If it's a BoP item and flags BoE is set, mark it as extra
				if (flags[36]) then
					tinsert(extra_flags, "36 (BoE Item)")
				end
				-- If it's a BoP item and flags BoA is set, mark it as extra
				if (flags[38]) then
					tinsert(extra_flags, "38 (BoA Item)")
				end
				-- BoE Item, assuming it's not BoA
			elseif (not flags[36]) and (not scan_data.bopitem) then
				tinsert(missing_flags, "36 (BoE Item)")
				-- If it's a BoE item and flags BoP is set, mark it as extra
				if (flags[37]) then
					tinsert(extra_flags, "37 (BoP Item)")
				end
				-- If it's a BoE item and flags BoA is set, mark it as extra
				if (flags[38]) then
					tinsert(extra_flags, "38 (BoA Item)")
				end
			end
		else
			-- BoP Recipe
			if (scan_data.boprecipe) and (not flags[41]) then
				tinsert(missing_flags, "41 (BoP Recipe)")
				-- If it's a BoP recipe and flags BoE is set, mark it as extra
				if (flags[40]) then
					tinsert(extra_flags, "40 (BoE Recipe)")
				end
				-- If it's a BoP recipe and flags BoA is set, mark it as extra
				if (flags[42]) then
					tinsert(extra_flags, "42 (BoA Recipe)")
				end
				-- Not BoP recipe, assuming it's not BoA - trainer-taught recipes don't have bind information,  skip those.
			elseif not flags[3] and (not flags[40]) and (not scan_data.boprecipe) then
				tinsert(missing_flags, "40 (BoE Recipe)")
				-- If it's a BoE recipe and flags BoP is set, mark it as extra
				if (flags[41]) then
					tinsert(extra_flags, "41 (BoP Recipe)")
				end
				-- If it's a BoE recipe and flags BoA is set, mark it as extra
				if (flags[42]) then
					tinsert(extra_flags, "42 (BoA Recipe)")
				end
			end
		end

		for k, v in ipairs(ORDERED_ROLE_TYPES) do
			if scan_data[v] and not flags[ROLE_TYPES[v]] then
				tinsert(missing_flags, tostring(ROLE_TYPES[v]).." ("..v..")")
			elseif not scan_data[v] and flags[ROLE_TYPES[v]] then
				tinsert(extra_flags, tostring(ROLE_TYPES[v]).." ("..v..")")
			end
		end

		for k, v in ipairs(ORDERED_ITEM_TYPES) do
			if scan_data[v] and not flags[ITEM_TYPES[v]] then
				tinsert(missing_flags, tostring(ITEM_TYPES[v]).." ("..v..")")
			elseif not scan_data[v] and flags[ITEM_TYPES[v]] then
				tinsert(extra_flags, tostring(ITEM_TYPES[v]).." ("..v..")")
			end
		end

		-- Reputations
		local repid = scan_data.repid
		local addedtotable = false

		if repid and not flags[repid] then
			tinsert(missing_flags, repid)

			for i, j in pairs(acquire) do
				if (acquire[j]["Type"] == 6) then
					local tmpacquire = acquire[j]

					if (tmpacquire["RepLevel"] ~= scan_data.repidlevel) then
						tinsert(output, "Rep level wrong. " .. recipe_name .. " (" .. spell_id .. ")")
					end
				end
			end
		end

		if (#missing_flags > 0) or (#extra_flags > 0) then
			addedtotable = true
			tinsert(output, recipe_name .. " (" .. spell_id .. ")")

			-- Add a string of the missing flag numbers
			if (#missing_flags > 0) then
				tinsert(output, "Missing flags: " .. tconcat(missing_flags, ", "))
			end

			-- Add a string of the extra flag numbers
			if (#extra_flags > 0) then
				tinsert(output, "Extra flags: " .. tconcat(extra_flags, ", "))
			end

			local found_type = false

			for k, v in ipairs(ORDERED_ITEM_TYPES) do
				if scan_data[v] then
					found_type = true
					break
				end
			end

			if not found_type then
				tinsert(output, "Missing: item type flag")
			end
		end

		-- Check to see if we have a horde/alliance flag,  all recipes must have one of these
		if (not flags[1]) and (not flags[2]) then
			addedtotable = true
			tinsert(output, "Horde or alliance not selected. " .. recipe_name .. " (" .. spell_id .. ")")
		end

		-- Check to see if we have an obtain method flag,  all recipes must have at least one of these
		if ((not flags[3]) and (not flags[4]) and (not flags[5]) and (not flags[6]) and (not flags[7])
		and (not flags[8]) and (not flags[9]) and (not flags[10]) and (not flags[11]) and (not flags[12])) then
			addedtotable = true
			tinsert(output, "No obtain flag. " .. recipe_name .. " (" .. spell_id .. ")")
		end

		-- Check for recipe binding information,  all recipes must have one of these
		if (not flags[40]) and (not flags[41]) and (not flags[42]) then
			addedtotable = true
			tinsert(output, "No recipe binding information. " .. recipe_name .. " (" .. spell_id .. ")")
		end

		-- Check for item binding information,  all recipes must have one of these
		if (not flags[36]) and (not flags[37]) and (not flags[38]) then
			addedtotable = true
			tinsert(output, "No item binding information. " .. recipe_name .. " (" .. spell_id .. ")")
		end

		-- We need to code this better.  Some items (aka bags) won't have a role at all.
		-- Check for player role flags
		if (not scan_data.tank) and (not scan_data.healer) and (not scan_data.caster) and (not scan_data.dps) and (not NO_PLAYER_FLAG[spell_id]) then
			addedtotable = true
			tinsert(output, "No player role flag. " .. recipe_name .. " (" .. spell_id .. ").")
		end

		if (scan_data.specialty) then
			if (not scan_data.recipe_list[spell_id]["Specialty"]) then
				addedtotable = true
				tinsert(output, "Recipe: " ..  recipe_name .. " (" .. spell_id .. ") Missing Specialty: " .. scan_data.specialty)
			elseif (scan_data.recipe_list[spell_id]["Specialty"] ~= scan_data.specialty) then
				tinsert(output, "Recipe: " ..  recipe_name .. " (" .. spell_id .. ") Wrong Specialty, the correct one is: " .. scan_data.specialty)
			end
		elseif (scan_data.recipe_list[spell_id]["Specialty"]) then
			addedtotable = true
			tinsert(output, "Recipe: " ..  recipe_name .. " (" .. spell_id .. ") Extra Specialty: " .. scan_data.recipe_list[spell_id]["Specialty"])
		end

		if (addedtotable) then
			return tconcat(output, "\n")
		else
			return nil
		end

	end

end