function ToolsBnMInfo_OptionInit()
	local addon = ToolsBnMInfo
	local md = ToolsBnMInfo.module
	local maindb = ToolsBnMInfo.db
	local opt = ToolsOptionCore
	local v = {}

	local drag, stopfunc = ToolsOptionCore.DragFrame:Create(addon.mainframe, UIParent)
	local dragframe = drag
	dragframe:SetScript("OnDragStop", function()
		stopfunc(maindb.point[1])
		maindb.point[2] = ToolsOptionCore.DragFrame.x 
		maindb.point[3] = ToolsOptionCore.DragFrame.y
		ToolsOptionCore:Refresh()
	end)

	v.Header = {	text = "정보막대(|CFFFFFF00기본|r)",
			tooltip = "Info Bar",
			onshow = function() dragframe:Show() end,
			onhide = function() dragframe:Hide() end
		}
	v.option = {
		{	type = "CheckButton",
			text = "기본 액션 UI+ToolsBnM을 사용중입니다",
			disable = function() 
				return IsAddOnLoaded("ToolsActionBar") or IsAddOnLoaded("WindAction") or IsAddOnLoaded("Bongos2") or IsAddOnLoaded("Bartender3") or not addon.loaded 
			end,
			get = function() return maindb.useblz end,
			set = function(v)
				maindb.useblz = v
				addon:SetPoint()
				addon:SetBackdrop()
				md.xp:UPDATE_FACTION()
				md.rep:PLAYER_LEVEL_UP()
				opt:Refresh()
			end,
			tooltip = "하단 빈 공간에 낑겨 넣기!",
		},
		{	type = "title",
			text = "기본(막대) 설정"
		},
		ToolsOptionCore.Get:Point({
			get = function() return maindb.point[1] end,
			set = function(v)
				maindb.point = {v, 0, 0}
				addon:SetPoint()
				opt:Refresh()
			end,
			disable = function() return maindb.useblz end
		}),
		{	type = "Slider",
			text = "막대 크기",
			step = 0.01,
			minmax = {0.7, 1.5},
			disable = function() return maindb.useblz end,
			get = function() return maindb.scale end,
			set = function(v)
				maindb.scale = v
				addon:SetScale()
			end,
			tooltip = "막대의 크기를 설정합니다"
		},
		{	type = "Slider",
			text = "막대 길이",
			step = 1,
			minmax = {250, 2000},
			disable = function() return maindb.useblz end,
			get = function() return maindb.size[1] end,
			set = function(v)
				maindb.size[1] = v
				addon:SetPoint()
			end,
			tooltip = "막대의 길이를 설정합니다"
		},
		{	type = "Slider",
			text = "막대 높이",
			step = 1,
			minmax = {20, 250},
			disable = function() return maindb.useblz end,
			get = function() return maindb.size[2] end,
			set = function(v)
				maindb.size[2] = v
				md.xp:UPDATE_FACTION()
				md.rep:PLAYER_LEVEL_UP()
				addon:SetPoint()
			end,
			tooltip = "막대의 길이를 설정합니다"
		},
		{	type = "EditBox",
			text = "X 위치 직접입력",
			disable = function() return maindb.useblz end,
			get = function() return tonumber(format("%0.0f",maindb.point[2])) end,
			set = function(v) maindb.point[2] = v;addon:SetPoint()end,
			tooltip = "X위치를 직접 설정합니다",
		},
		{	type = "EditBox",
			text = "Y 위치 직접입력",
			disable = function() return maindb.useblz end,
			get = function() return tonumber(format("%0.0f",maindb.point[3])) end,
			set = function(v) maindb.point[3] = v;addon:SetPoint()end,
			tooltip = "Y위치를 직접 설정합니다",
		},
		{	type = "ColorPicker",
			text = "배경의 색상설정",
			default = {0,0,0,0.5},
			hasOpacity = true,
			disable = function() return maindb.useblz end,
			get = function() return maindb.backdrop end,
			set = function(c)
				maindb.backdrop ={c.r,c.g,c.b,c.a}
				addon:SetBackdrop()
			end,
			tooltip = "배경(보더)의 배경색상을 설정합니다"
		},
		{	type = "ColorPicker",
			text = "배경의 테두리 색상설정",
			default = {1,1,1,1},
			hasOpacity = true,
			disable = function() return maindb.useblz end,
			get = function() return maindb.backdropborder end,
			set = function(c)
				maindb.backdropborder ={c.r,c.g,c.b,c.a}
				addon:SetBackdrop()
			end,
			tooltip = "배경(보더)의 테두리색상을 설정합니다"
		},
	}

	ToolsOptionCore:RegesterOption(v)
	
	local mdtext = {}
	local mdopt = {}
	local mddrag = {}
	local select = 1
	for k in pairs(md) do
		tinsert(mdtext, md[k].opttext)
		tinsert(mdopt, k)
	end
	local function getmd()
		return md[mdopt[select]]
	end
	local function dragshow()
		for i = 1, #mddrag do
			if md[mdopt[i]].useoption.nodrag then
				mddrag[i]:Hide()
			else
				mddrag[i][i~= select and "Hide" or "Show"](mddrag[i])
			end
		end
	end
	for i = 1, #mdopt do
		local d, f = ToolsOptionCore.DragFrame:Create(md[mdopt[i]].frame, addon.mainframe)
		mddrag[i] = d
		mddrag[i]:SetScript("OnDragStop", function()
			f(md[mdopt[i]].db.point[1])
			md[mdopt[i]].db.point[2] = ToolsOptionCore.DragFrame.x > 300 and 300 or ToolsOptionCore.DragFrame.x < -300 and -300 or ToolsOptionCore.DragFrame.x
			md[mdopt[i]].db.point[3] = ToolsOptionCore.DragFrame.y > 100 and 100 or ToolsOptionCore.DragFrame.y < -100 and -100 or ToolsOptionCore.DragFrame.y
			addon:ChildSetPoint(md[mdopt[i]])
			opt:Refresh()
		end)
	end
	v = {}
	v.Header = {
		text = "정보막대(|CFFFFFF00자식|r)",
		tooltip = "Info Bar Module",
		onshow = function() dragshow() end,
		onhide = function()
			for i = 1, #mddrag do
				mddrag[i]:Hide()
			end
		end
	}
	v.option = {
		{	type = "RadioButton",
			col = 4,
			text = "모듈 선택",
			get = function() return select end,
			set = function(v)
				select = v
				dragshow()
				opt:Refresh()
			end,
			values = mdtext,
		},
		{	type = "CheckButton",
			text = "이 모듈을 사용합니다",
			get = function() return getmd().db.show end,
			set = function(v) 
				getmd().db.show = v
				addon:ChildSetShow(getmd())
				opt:Refresh()
			end,
			tooltip = "사용 유무를 설정합니다",
		},
		ToolsOptionCore.Get:Point({
			get = function() return getmd().db.point[1] end,
			set = function(v)
				getmd().db.point = {v, 0, 0}
				addon:ChildSetPoint(getmd())
				opt:Refresh()
			end,
			disable = function() return not getmd().useoption.point or not getmd().db.show end,
		}),
		{	type = "Slider",
			text = "크기",
			step = 0.01,
			minmax = {0.6, 1.5},
			disable = function() return not getmd().useoption.scale or not getmd().db.show end,
			get = function() return getmd().db.scale end,
			set = function(v)
				getmd().db.scale = v
				addon:ChildSetScale(getmd())
			end,
			tooltip = "스케일(크기)를 설정합니다"
		},
		{	type = "Slider",
			text = "가로 위치",
			step = 1,
			minmax = {-300, 300},
			disable = function() return not getmd().useoption.point or not getmd().db.show end,
			get = function() return getmd().db.point[2] end,
			set = function(v)
				getmd().db.point[2] = v
				addon:ChildSetPoint(getmd())
			end,
			tooltip = "가로 위치를 설정합니다"
		},
		{	type = "Slider",
			text = "세로 위치",
			step = 1,
			minmax = {-100, 100},
			disable = function() return not getmd().useoption.point or not getmd().db.show end,
			get = function() return getmd().db.point[3] end,
			set = function(v)
				getmd().db.point[3] = v
				addon:ChildSetPoint(getmd())
			end,
			tooltip = "세로 위치를 설정합니다"
		},
		{	type = "CheckButton",
			text = "오전/오후 표시전환",
			disable = function() return not getmd().useoption.time or not getmd().db.show end,
			get = function() return getmd().db.time end,
			set = function(v) 
				getmd().db.time = v
			end,
			tooltip = "체크 해제시 24시간제 표시",
		},
		{	type = "RadioButton",
			col = 3,
			text = "막대 모양",
			disable = function() return not getmd().useoption.bar or not getmd().db.show end,
			get = function() return getmd().db.bar or 1 end,
			set = function(v)
				getmd().db.bar = v 
				getmd():SetStatusBarTexture()
			end,
			values = {"1", "2", "3"},
		},
		{	type = "RadioButton",
			col = 3,
			text = "표시 형식",
			disable = function() return not getmd().useoption.view or not getmd().db.show end,
			get = function() return getmd().db.view or 1 end,
			set = function(v)
				getmd().db.view = v 
				getmd():SetView()
			end,
			values = {"막대+글씨 표시", "글씨만 표시", "막대만 표시"},
		},
		{
			type = "ColorPicker",
			text = "색상1",
			default = {0.55,0.7,0.9,1},
			hasOpacity = true,
			disable = function() return not getmd().useoption.gra or not getmd().db.show end,
			get = function() return getmd().db.colorl or {1,1,1,1} end,
			set = function(c)
				getmd().db.colorl ={c.r,c.g,c.b,c.a}
				getmd():SetGra()
			end,
			tooltip = "그라데이션의 첫번째 색상"
		},
		{
			type = "ColorPicker",
			text = "색상2",
			default = {0.2,0.15,0.85,0.75},
			hasOpacity = true,
			disable = function() return not getmd().useoption.gra or not getmd().db.show end,
			get = function() return getmd().db.colorf or {1,1,1,1} end,
			set = function(c)
				getmd().db.colorf ={c.r,c.g,c.b,c.a}
				getmd():SetGra()
			end,
			tooltip = "그라데이션의 두번째 색상"
		},
		{	type = "CheckButton",
			text = "가로/세로 변경",
			disable = function() return not getmd().useoption.gra or not getmd().db.show end,
			get = function() return getmd().db.ori end,
			set = function(v) 
				getmd().db.ori = v
				getmd():SetGra()
			end,
			tooltip = "체크시 세로로 표시",
		},
		
	}
	ToolsOptionCore:RegesterOption(v)
end
ToolsOptionCore:Insert("ToolsBnMInfo")