commit 309286309eaf20b58172247263f575753a860700 Author: Wickedness Date: Thu Jul 2 10:22:57 2026 +0900 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3f789d0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +# Visual Studio +.vs/ +*.user +*.suo +*.userosscache +*.sln.docstates + +# Build output +[Bb]in/ +[Oo]bj/ +[Dd]ebug/ +[Rr]elease/ +x64/ +x86/ + +# NuGet packages +[Pp]ackages/* +![Pp]ackages/repositories.config +*.nupkg + +# Logs and temporary files +*.log +*.tmp +*.temp +*.cache + +# OS files +Thumbs.db +Desktop.ini diff --git a/MBN_STOCK_N.sln b/MBN_STOCK_N.sln new file mode 100644 index 0000000..b4a9d60 --- /dev/null +++ b/MBN_STOCK_N.sln @@ -0,0 +1,37 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30804.86 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MBN_STOCK_N", "MBN_STOCK_N\MBN_STOCK_N.csproj", "{79711222-87A1-432B-A122-C67AB0E7237B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + x64|Any CPU = x64|Any CPU + x64|x64 = x64|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {79711222-87A1-432B-A122-C67AB0E7237B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {79711222-87A1-432B-A122-C67AB0E7237B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {79711222-87A1-432B-A122-C67AB0E7237B}.Debug|x64.ActiveCfg = Debug|x64 + {79711222-87A1-432B-A122-C67AB0E7237B}.Debug|x64.Build.0 = Debug|x64 + {79711222-87A1-432B-A122-C67AB0E7237B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {79711222-87A1-432B-A122-C67AB0E7237B}.Release|Any CPU.Build.0 = Release|Any CPU + {79711222-87A1-432B-A122-C67AB0E7237B}.Release|x64.ActiveCfg = Release|x64 + {79711222-87A1-432B-A122-C67AB0E7237B}.Release|x64.Build.0 = Release|x64 + {79711222-87A1-432B-A122-C67AB0E7237B}.x64|Any CPU.ActiveCfg = x64|Any CPU + {79711222-87A1-432B-A122-C67AB0E7237B}.x64|Any CPU.Build.0 = x64|Any CPU + {79711222-87A1-432B-A122-C67AB0E7237B}.x64|x64.ActiveCfg = x64|x64 + {79711222-87A1-432B-A122-C67AB0E7237B}.x64|x64.Build.0 = x64|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {DC0B9A4B-BDFE-40D2-A8A3-B4E33A927E76} + EndGlobalSection +EndGlobal diff --git a/MBN_STOCK_N/App.config b/MBN_STOCK_N/App.config new file mode 100644 index 0000000..47a9597 --- /dev/null +++ b/MBN_STOCK_N/App.config @@ -0,0 +1,66 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MBN_STOCK_N/Class/CutList.cs b/MBN_STOCK_N/Class/CutList.cs new file mode 100644 index 0000000..9ca9c91 --- /dev/null +++ b/MBN_STOCK_N/Class/CutList.cs @@ -0,0 +1,214 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + +public class CutList +{ + + public string[] getCutInfo(string info) + { + string[] rtn = new string[] { "", "" }; + + try + { + info = info.Replace(" ", ""); + + if (info.Contains("2열판-")) + { + rtn[0] = "50160"; + } + else if (info.Contains("영업이익")) + { + rtn[0] = "5081"; + } + else if (info.Contains("매출액")) + { + rtn[0] = "5080"; + } + else if (info.Contains("성장성지표")) + { + rtn[0] = "5079"; + } + else if (info.Contains("주요매출구성")) + { + rtn[0] = "5076"; + } + else if (info.Contains("(NXT)1열판기본")) + { + rtn[0] = "N5001"; + } + else if (info.Contains("1열판기본")) + { + rtn[0] = "5001"; + } + else if (info.Contains("1열판상세")) + { + if (info.Contains("시가")) + rtn[0] = "5006"; + else + rtn[0] = "5011"; + } + else if (info.Contains("1열판")) + { + rtn[0] = "5001"; + } + else if (info.Contains("종목별비교분석_캔들그래프")) + { + rtn[0] = "5026"; + } + else if (info.Contains("종목별비교분석_라인그래프")) + { + rtn[0] = "5087"; + } + else if (info.Contains("종목별수익률비교")) + { + rtn[0] = "5029"; + } + else if (info.Contains("수익률그래프")) + { + rtn[0] = "5086"; + } + else if (info.Contains("캔들그래프")) + { + if (info.Contains("일봉")) + rtn[0] = "8035"; + else if (info.Contains("5일")) + rtn[0] = "8061"; + else if (info.Contains("120일")) + rtn[0] = "8051"; + else if (info.Contains("20일")) + rtn[0] = "8040"; + else if (info.Contains("60일")) + rtn[0] = "8046"; + + else if (info.Contains("240일")) + rtn[0] = "8056"; + + } + else if (info.Contains("호가창")) + { + rtn[0] = "8003"; + } + else if (info.Contains("거래원")) + { + rtn[0] = "5037"; + } + else if (info.Contains("3열판")) + { + rtn[0] = "5016"; + } + else if (info.Contains("미국증시지도")) + { + rtn[0] = "5068"; + } + else if (info.Contains("유럽증시지도")) + { + rtn[0] = "5070"; + } + else if (info.Contains("아시아증시지도")) + { + rtn[0] = "5072"; + } + else if (info.Contains("글로벌증시지도")) + { + rtn[0] = "8067"; + } + else if (info.Contains("미국업종") || info.Contains("섹터지수")) + { + rtn[0] = "5078"; + } + else if (info.Contains("이미지그래프")) + { + rtn[0] = "6001"; + } + + else if (info.Contains("주체별매매동향")) + { + rtn[0] = "5082"; + } + else if (info.Contains("매매동향표그래프")) + { + rtn[0] = "5023"; + } + else if (info.Contains("개인매매동향") || info.Contains("기관매매동향") || info.Contains("외국인매매동향")) + { + rtn[0] = "5083"; + } + else if (info.Contains("매매동향라인그래프")) + { + rtn[0] = "5084"; + } + else if (info.Contains("매매동향막대그래프")) + { + rtn[0] = "5024"; + } + else if (info.Contains("기관순매수현황")) + { + rtn[0] = "6067"; + } + else if (info.Contains("프로그램매매")) + { + rtn[0] = "5085"; + } + else if (info.Contains("순매도상위")) + { + rtn[0] = "5025"; + } + else if (info.Contains("네모그래프")) + { + if (info.Contains("코스피")) + rtn[0] = "8001"; + else + rtn[0] = "8002"; + } + else if (info.Contains("5단표그래프")) + { + rtn[0] = "5074"; + } + else if (info.Contains("6종목현재가")) + { + rtn[0] = "5077"; + } + else if (info.Contains("12종목현재가")) + { + rtn[0] = "5088"; + } + else if (info.Contains("2열판")) + { + if (info.Contains("지수") || info.Contains("종목")) + { + if (info.Contains("선물")) + { + rtn[0] = "5032"; + } + else + { + rtn[0] = "8032"; + } + } + else + { + if (info.Contains("코스피")) + rtn[0] = "8018"; + else if (info.Contains("코스닥")) + rtn[0] = "8032"; + } + } + else if (info.Contains("라인그래프")) + { + rtn[0] = "50860"; + } + //rtn[1] = rtn[0] + ".t2s"; + rtn[1] = rtn[0]; + + } + catch (Exception) + { + } + return rtn; + } +} + diff --git a/MBN_STOCK_N/Class/DBCon.cs b/MBN_STOCK_N/Class/DBCon.cs new file mode 100644 index 0000000..613f8c4 --- /dev/null +++ b/MBN_STOCK_N/Class/DBCon.cs @@ -0,0 +1,190 @@ +using System; +using System.Data; +using System.Windows.Forms; +using Oracle.ManagedDataAccess.Client; +using Microsoft.Win32; +using MySql.Data.MySqlClient; +using System.Data.SqlClient; + +namespace MBN_STOCK_N +{ + public class DBCon + { + public OracleConnection conn = null; + string strConn = string.Empty; + + public MySqlConnection nxt_conn = null; + string nxt_strConn = string.Empty; + + DataTable dt = new DataTable(); + public bool m_status = false; + MainForm mf = null; + public bool m_su = false; + + public DBCon(Form frm) + { + try + { + mf = (MainForm)frm; + RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\MBN"); + string ip = string.Empty; + string port = string.Empty; + string ser = string.Empty; + string id = string.Empty; + string pw = string.Empty; + + string nxt_ip = string.Empty; + string nxt_port = string.Empty; + string nxt_ser = string.Empty; + string nxt_id = string.Empty; + string nxt_pw = string.Empty; + + if (key.GetValue("ip") != null) + ip = key.GetValue("ip").ToString(); + + if (key.GetValue("port") != null) + port = key.GetValue("port").ToString(); + + if (key.GetValue("server") != null) + ser = key.GetValue("server").ToString(); + + if (key.GetValue("id") != null) + id = key.GetValue("id").ToString(); + + if (key.GetValue("pass") != null) + pw = key.GetValue("pass").ToString(); + + if (key.GetValue("nxt_ip") != null) + nxt_ip = key.GetValue("nxt_ip").ToString(); + + if (key.GetValue("nxt_port") != null) + nxt_port = key.GetValue("nxt_port").ToString(); + + if (key.GetValue("nxt_server") != null) + nxt_ser = key.GetValue("nxt_server").ToString(); + + if (key.GetValue("nxt_id") != null) + nxt_id = key.GetValue("nxt_id").ToString(); + + if (key.GetValue("nxt_pass") != null) + nxt_pw = key.GetValue("nxt_pass").ToString(); + + strConn = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" + mf.m_ip + ")(PORT=" + mf.m_port + ")))(CONNECT_DATA=(SERVER=DEDICATED)(SID=" + mf.m_sid + ")));User Id=" + mf.m_id + ";Password=" + mf.m_pw + ";"; + nxt_strConn = "SERVER=" + mf.nxt_m_ip + "; PORT=" + mf.nxt_m_port + "; DATABASE= " + mf.nxt_m_sid + "; UId=" + mf.nxt_m_id + "; Pwd=" + mf.nxt_m_pw; + + conn = new OracleConnection(strConn); + conn.Open(); + m_status = true; + + nxt_conn = new MySqlConnection(nxt_strConn); + nxt_conn.Open(); + m_status = true; + } + catch (Exception) + { + m_status = false; + } + finally + { + if (conn.State == ConnectionState.Open) + { + conn.Close(); + } + + if (nxt_conn.State == ConnectionState.Open) + { + nxt_conn.Close(); + } + } + } + + public void DB_Connect() + { + + } + + public void ViewQuery(DataGridView GV, string query) + { + try + { + OracleCommand cmd = new OracleCommand(); + cmd.Connection = conn; + + OracleDataAdapter adapter = new OracleDataAdapter(query, conn); + DataTable data_table = new DataTable(); + adapter.Fill(data_table); + GV.DataSource = data_table; + } + catch (Exception) + { + + } + } + + public void Nxt_ViewQuery(DataGridView GV, string query) + { + try + { + MySqlCommand cmd = new MySqlCommand(); + cmd.Connection = nxt_conn; + + MySqlDataAdapter adapter = new MySqlDataAdapter(query, nxt_conn); + DataTable data_table = new DataTable(); + adapter.Fill(data_table); + GV.DataSource = data_table; + } + catch (Exception) + { + + } + } + + public int ExecuteQuery(string query) + { + int result = 0; + try + { + OracleCommand cmd = new OracleCommand(); + cmd.Connection = conn; + cmd.CommandText = query; + + conn.Open(); + result = cmd.ExecuteNonQuery(); + conn.Close(); + m_su = true; + } + + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + m_su = false; + } + return result; + } + + public int Nxt_ExecuteQuery(string query) + { + int result = 0; + try + { + MySqlCommand cmd = new MySqlCommand(); + cmd.Connection = nxt_conn; + cmd.CommandText = query; + + nxt_conn.Open(); + result = cmd.ExecuteNonQuery(); + nxt_conn.Close(); + m_su = true; + } + + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + m_su = false; + } + return result; + } + + } + +} diff --git a/MBN_STOCK_N/Class/HangulChar.cs b/MBN_STOCK_N/Class/HangulChar.cs new file mode 100644 index 0000000..ffc286e --- /dev/null +++ b/MBN_STOCK_N/Class/HangulChar.cs @@ -0,0 +1,293 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Util +{ + /// + /// 한글 문자 클래스: 현대 한글 문자에 대해 다양한 속성과 메서드를 제공하는 클래스입니다. + /// + public class HangulChar + { + // 한글에 대한 유니코드 범위 [44032, 55215] + private const int BeginCode = 0xAC00; + private const int EndCode = 0xD7AF; + + // 문자 구성: 초성, 중성, 종성 + private static readonly char[] Onset = { 'ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', + 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ' }; + private static readonly char[] Nucleus = { 'ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ', 'ㅔ', 'ㅕ', 'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ', + 'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ', 'ㅡ', 'ㅢ', 'ㅣ' }; + private static readonly char[] Coda = { (char)0x00, 'ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ', 'ㄷ', 'ㄹ', 'ㄺ', 'ㄻ', + 'ㄼ', 'ㄽ', 'ㄾ', 'ㄿ', 'ㅀ', 'ㅁ', 'ㅂ', 'ㅄ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ' }; + + // 문자 획수: 초성, 중성, 종성 + private static readonly int[] OnsetStrokes = { 1, 2, 1, 2, 4, 3, 3, 4, 8, 2, 4, 1, 2, 4, 3, 2, 3, 4, 3 }; + private static readonly int[] NucleusStrokes = + { 2, 3, 3, 4, 2, 3, 3, 4, 2, 4, 5, 3, 3, 2, 4, 5, 3, 3, 1, 2, 1 }; + private static readonly int[] CodaStrokes = + { 0, 1, 2, 3, 1, 3, 4, 2, 3, 4, 6, 7, 5, 6, 7, 6, 3, 4, 6, 2, 4, 1, 2, 3, 2, 3, 4, 3 }; + + /// + /// 문자로부터 한글 문자 클래스의 인스턴스를 생성합니다. + /// + /// 한글 문자(char) + public HangulChar(char character) + { + this.CurrentCharacter = character; + } + + /// + /// 유니코드로부터 한글 문자 클래스의 인스턴스를 생성합니다. + /// + /// 한글 문자(char)에 해당하는 유니코드 + public HangulChar(int unicode) + { + this.CurrentCharacter = Convert.ToChar(unicode); + } + + /// + /// 현재 인스턴스의 문자입니다. + /// + public char CurrentCharacter { get; private set; } + + /// + /// 현재 인스턴스 문자의 유니코드입니다. + /// + public int CurrentUnicode => (int)CurrentCharacter; + + /// + /// 인자의 음소 배열을 한글 음절로 합성합니다. + /// 반환값은 합성의 성공(가능) 여부를 나타냅니다. + /// + /// 초성, 중성(, 종성) 순의 한글 음소 배열 + /// 합성된 한글 음절 + /// + /// 이 null로 주어질 경우 + public static bool TryJoinToSyllable(char[] phonemes, out char syllable) + { + if (phonemes == null) { throw new ArgumentNullException(); } + + bool isSuccess = false; + // 초성, 중성(, 종성)으로 이루어진 문자 배열인지 확인 + if (phonemes.Length >= 2 && phonemes.Length <= 3) + { + bool check = Onset.Contains(phonemes[0]) && Nucleus.Contains(phonemes[1]); + isSuccess = phonemes.Length == 3 ? check && Coda.Contains(phonemes[2]) : check; + } + + syllable = (char)0x00; + // 한글 음절로의 합성이 불가능한 경우 + if (!isSuccess) + { + return false; + } + // 한글 음절로의 합성이 가능한 경우 + int onsetIndex = Array.IndexOf(Onset, phonemes[0]); + int nucleusIndex = Array.IndexOf(Nucleus, phonemes[1]); + int codaIndex = phonemes.Length == 3 ? Array.IndexOf(Coda, phonemes[2]) : 0; + int newCode = BeginCode + (onsetIndex * 588) + (nucleusIndex * 28) + codaIndex; + if (newCode < BeginCode || newCode > EndCode) + { + isSuccess = false; + } + else + { + syllable = Convert.ToChar(newCode); + } + + return isSuccess; + } + + /// + /// 인자의 음소 배열을 한글 음절로 합성합니다. + /// 합성이 불가능할 경우 예외를 발생시킵니다. + /// + /// 초성, 중성(, 종성) 순의 한글 음소 배열 + /// 인수의 배열이 합성 가능한 초성, 중성(, 종성)이 아닐 경우 + /// + public static char JoinToSyllable(char[] phonemes) + { + bool isSuccess = TryJoinToSyllable(phonemes, out char syllable); + + if (!isSuccess) + { + throw new InvalidOperationException("인수의 배열은 합성 가능한 한글 초성, 중성(, 종성)이 아닙니다."); + } + + return syllable; + } + + /// + /// 검색문자를 대상문자에 대해 (초성) 비교 후 일치 여부를 반환합니다. + /// 검색문자에 초성이 주어질 경우 초성 일치, 그렇지 않은 경우 문자 완전 일치 여부를 반환합니다. + /// + /// (초성) 비교할 문자 + /// 비교 대상 문자 + /// + public static bool IsOnsetMatch(char searchChar, char targetChar) + { + // 1. 검색문자가 초성인 경우 대응하는 대상문자도 초성을 비교 + // 2. 그렇지 않은 경우 대응하는 대상문자와 완전 일치 여부 비교 + HangulChar shc = new HangulChar(searchChar); + HangulChar thc = new HangulChar(targetChar); + if (shc.IsOnset() && thc.TrySplitSyllable(out char[] phonemes)) + { + targetChar = phonemes[0]; + } + + return searchChar == targetChar ? true : false; + } + + /// + /// 검색문자를 현재 인스턴스의 문자에 대해 (초성) 비교 후 일치 여부를 반환합니다. + /// 검색문자에 초성이 주어질 경우 초성 일치, 그렇지 않은 경우 문자 완전 일치 여부를 반환합니다. + /// + /// (초성) 비교할 문자 + /// + public bool IsOnsetMatch(char searchChar) + { + return HangulChar.IsOnsetMatch(searchChar, this.CurrentCharacter); + } + + /// + /// 초성으로 사용될 수 있는지 판단합니다. + /// + /// + public bool IsOnset() => Onset.Contains(CurrentCharacter); + + /// + /// 중성으로 사용될 수 있는지 판단합니다. + /// + /// + public bool IsNucleus() => Nucleus.Contains(CurrentCharacter); + + /// + /// 종성으로 사용될 수 있는지 판단합니다. + /// + /// + public bool IsCoda() => Coda.Contains(CurrentCharacter); + + /// + /// 자음인지 판단합니다. + /// + /// + public bool IsConsonant() => Onset.Contains(CurrentCharacter) || Coda.Contains(CurrentCharacter); + + /// + /// 모음인지 판단합니다. + /// + /// + public bool IsVowel() => Nucleus.Contains(CurrentCharacter); + + /// + /// 음소(낱소리)인지 판단합니다. + /// + /// + public bool IsPhoneme() => IsConsonant() || IsVowel(); + + /// + /// 음소(낱소리)가 아닌 완전한 한글 음절인지 판단합니다. + /// + /// + public bool IsSyllable() => BeginCode <= (int)CurrentCharacter && (int)CurrentCharacter <= EndCode; + + /// + /// 한글 문자인지 판단합니다. + /// + /// + public bool IsKoreanCharacter() => IsPhoneme() || IsSyllable(); + + /// + /// 한글 문자인지 판단합니다. (== IsKoreanCharacter()) + /// + /// + public bool IsHangul() => IsKoreanCharacter(); + + /// + /// 한글 음절을 초성, 중성, 종성 순으로 분리합니다. + /// 반환 결과는 분리의 성공(가능)여부를 나타냅니다. + /// + /// 초성, 중성, 종성 순으로 분리된 배열 + /// + public bool TrySplitSyllable(out char[] phonemes) + { + // 분리 가능한 한글이 아닌 경우 + if (!IsSyllable()) + { + phonemes = new char[] { (char)0x00, (char)0x00, (char)0x00 }; + return false; + } + + int foo = (int)CurrentCharacter - BeginCode; + int onsetIndex = (int)foo / 588; + int nucleusIndex = (int)(foo - onsetIndex * 588) / 28; + int codaIndex = foo - onsetIndex * 588 - 28 * nucleusIndex; + + phonemes = new char[] { Onset[onsetIndex], Nucleus[nucleusIndex], Coda[codaIndex] }; + return true; + } + + /// + /// 한글 음절을 초성, 중성, 종성 순으로 분리합니다. + /// 분리가 불가능한 경우 예외를 발생시킵니다. + /// + /// 인스턴스의 문자가 분리 가능한 한글이 아닌 경우 + /// + public char[] SplitSyllable() + { + bool isSuccess = TrySplitSyllable(out char[] phonemes); + + if (!isSuccess) + { + throw new InvalidOperationException("인스턴스의 문자가 분리 가능한 한글이 아닙니다."); + } + + return phonemes; + } + + /// + /// 한글 획수를 반환합니다. 한글이 아닌 문자의 경우 0을 반환합니다. + /// + /// + public int CountStrokes() + { + // 한글이 아닌 경우 0을 반환 + if (!IsHangul()) + { + return 0; + } + + int count; + // 한글 - 음소인 경우 + if (IsPhoneme()) + { + if (IsOnset()) + { + count = OnsetStrokes[Array.IndexOf(Onset, CurrentCharacter)]; + } + else if (IsNucleus()) + { + count = NucleusStrokes[Array.IndexOf(Nucleus, CurrentCharacter)]; + } + else + { + count = CodaStrokes[Array.IndexOf(Coda, CurrentCharacter)]; + } + } + // 한글 - 분리 가능한 음절인 경우 + else + { + _ = TrySplitSyllable(out char[] phonemes); + count = OnsetStrokes[Array.IndexOf(Onset, phonemes[0])]; + count += NucleusStrokes[Array.IndexOf(Nucleus, phonemes[1])]; + count += CodaStrokes[Array.IndexOf(Coda, phonemes[2])]; + } + + return count; + + } + } +} diff --git a/MBN_STOCK_N/Class/HangulString.cs b/MBN_STOCK_N/Class/HangulString.cs new file mode 100644 index 0000000..941d8e8 --- /dev/null +++ b/MBN_STOCK_N/Class/HangulString.cs @@ -0,0 +1,328 @@ + using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Util +{ + /// + /// 한글 문자열 클래스: (한글을 포함한) 문자열에 대해 한글 처리에 관련된 다양한 속성과 메서드를 제공하는 클래스입니다. + /// + public class HangulString + { + /// + /// 문자열로부터 한글 문자열 클래스의 인스턴스를 생성합니다. + /// + /// 인스턴스를 생성할 문자열 + public HangulString(string aString) => CurrentString = aString; + + /// + /// 현재 인스턴스의 문자열입니다. + /// + public string CurrentString { get; private set; } + + /// + /// 문자열을 HangulChar 클래스 인스턴스의 배열로 변환하여 반환합니다. + /// + /// + /// + /// 입력 인자가 null인 경우 + public static HangulChar[] ToHangulCharArray(string aString) + { + if (aString is null) + { + throw new ArgumentNullException(); + } + return aString.ToCharArray().Select(c => new HangulChar(c)).ToArray(); + } + + /// + /// 문자열을 한글 문자열 부분과 나머지 문자열 부분으로 구분하여 반환합니다. + /// + /// + /// + /// 입력 인자가 null인 경우 + public static string[] SeparateString(string aString) + { + if (aString is null) + { + throw new ArgumentNullException(); + } + + string[] result = new string[2]; + StringBuilder sbKorean = new StringBuilder(); + StringBuilder sbOthers = new StringBuilder(); + foreach (char c in aString) + { + HangulChar hc = new HangulChar(c); + if (hc.IsKoreanCharacter()) + { + sbKorean.Append(c); + } + else + { + sbOthers.Append(c); + } + } + result[0] = sbKorean.ToString(); + result[1] = sbOthers.ToString(); + return result; + } + + /// + /// 문자열이 모두 한글로만 이루어져 있는지의 여부를 반환합니다. + /// + /// + /// + public static bool IsAllHangul(string aString) + { + string checkPoint = HangulString.SeparateString(aString)[1]; + if (checkPoint.Length > 0) + { + return false; + } + else + { + return true; + } + } + + /// + /// 문자열에 대해 한글 음절을 초성, 중성, 종성으로 분리하여 반환합니다. + /// + /// + /// + /// 이 null인 경우 + public static string SplitToPhonemes(string aString) + { + if (aString == null) + { + throw new ArgumentNullException(); + } + + StringBuilder sb = new StringBuilder(); + foreach (char c in aString) + { + HangulChar hc = new HangulChar(c); + // 한글 음절로 판명되어 분리가 가능한 경우 + if (hc.TrySplitSyllable(out char[] phonemes)) + { + foreach (char pc in phonemes) + { + // 초성-중성으로만 이루어져 있는 경우 종성은 반환 문자열에 포함하지 않음 + if (pc != (char)0x00) + { + sb.Append(pc); + } + } + } + // 한글 음절이 아닌 경우 + else + { + sb.Append(c); + } + } + return sb.ToString(); + } + + /// + /// 문자열 내의 초성, 중성, 종성 음소를 합성하여 반환합니다. + /// 의도하지 않은 반환 결과를 피하기 위해 일반적으로 사용하는 방식의 + /// (완전한 한글 음절이 분리된) 자음/모음으로 구성된 문자열을 인수로 사용할 것을 권장합니다. + /// + /// + /// + /// 이 null인 경우 + public static string JoinPhonemes(string aString) + { + if (aString == null) { throw new ArgumentNullException(); } + StringBuilder sb = new StringBuilder(); + int curIdx = 0; + int lastIdx = aString.Length - 1; + // 마지막 인덱스 이후의 값 판단에 대한 예외를 피하기 위해 대상 문자열에 10개의 공백 임시 추가 + string newString = aString + new string(' ', 10); + + while (curIdx <= lastIdx) + { + // 현재 인덱스의 문자 + HangulChar hc = new HangulChar(newString[curIdx]); + // 현재 인덱스의 문자가 음소가 아닌 경우 현재 문자를 더하고 다음 인덱스로 이동 + if (!hc.IsPhoneme()) + { + sb.Append(hc.CurrentCharacter); + curIdx++; + continue; + } + + // 현재 인덱스의 문자가 음소인 경우에 대해 + // (1) 현재 인덱스로부터 2글자 합성이 가능하고 + // (2)-A 이후 첫 글자가 한글이 아니거나 + // (2)-B 이후 두 글자(초성-중성)가 합성이 가능한 경우 + // 현재 인덱스로부터 2글자를 합성하고, 인덱스를 2칸 전진 + bool isCur2SpanOk = HangulChar.TryJoinToSyllable( + new char[] { newString[curIdx], newString[curIdx + 1] }, + out char cur2SpanSyllable); + bool isCur2Next1Ok = !(new HangulChar(newString[curIdx + 2])).IsHangul(); + bool isCur2Next2Ok = HangulChar.TryJoinToSyllable( + new char[] { newString[curIdx + 2], newString[curIdx + 3] }, + out char _); + // (3) 현재 인덱스로부터 3글자 합성이 가능하고 + // (4)-A 이후 첫 글자가 한글이 아니거나 + // (4)-B 이후 두 글자(초성-중성)가 합성이 가능한 경우 + // 현재 인덱스로부터 3글자를 합성하고, 인덱스를 3칸 전진 + bool isCur3SpanOk = HangulChar.TryJoinToSyllable( + new char[] { newString[curIdx], newString[curIdx + 1], newString[curIdx + 2] }, + out char cur3SpanSyllable); + bool isCur3Next1Ok = !(new HangulChar(newString[curIdx + 3])).IsHangul(); + bool isCur3Next2Ok = HangulChar.TryJoinToSyllable( + new char[] { newString[curIdx + 3], newString[curIdx + 4] }, + out char _); + + // 상기 논리에 의한 판단부 + // 2글자 기준 판단 + if (isCur2SpanOk && (isCur2Next1Ok || isCur2Next2Ok)) + { + sb.Append(cur2SpanSyllable); + curIdx += 2; + } + // 3글자 기준 판단 + else if (isCur3SpanOk && (isCur3Next1Ok || isCur3Next2Ok)) + { + sb.Append(cur3SpanSyllable); + curIdx += 3; + } + else + { + sb.Append(hc.CurrentCharacter); + curIdx++; + } + } + + return sb.ToString(); + } + + /// + /// 문자열에 대해 초성 검색을 실시합니다. 반환값은 초성 검색에 대한 결과의 존재여부입니다. + /// 검색 문자열에 초성이 주어질 경우 초성 일치, 그렇지 않은 경우 문자 완전 일치 여부를 반환합니다. + /// + /// 검색할 문자열 + /// 대상 문자열 + /// (초성)일치가 발견된 대상 문자열 내 인덱스 배열 + /// + /// 또는 이 null인 경우 + public static bool GetOnsetMatches(string searchString, string targetString, out int[] indices) + { + if (searchString == null || targetString == null) + { + throw new ArgumentNullException(); + } + + List idxs = new List(); + + // 검색 문자열의 길이가 대상 문자열의 길이보다 긴 경우 + if (searchString.Length > targetString.Length) + { + indices = idxs.ToArray(); + return false; + } + + // 대상 문자열 내의 인덱스를 증가시켜 가며 + for (int curIdx = 0; curIdx < targetString.Length - searchString.Length + 1; curIdx++) + { + // 해당 인덱스로부터 검색 문자열의 길이만큼 초성일치 검색 수행 + // 초성 일치가 될 경우 해당 인덱스 저장 + bool isMatch = true; + for (int chkIdx = curIdx; chkIdx < curIdx + searchString.Length; chkIdx++) + { + if (!HangulChar.IsOnsetMatch(searchString[chkIdx - curIdx], targetString[chkIdx])) + { + isMatch = false; + break; + } + } + if (isMatch) + { + idxs.Add(curIdx); + } + } + indices = idxs.ToArray(); + if (indices.Length > 0) + { + return true; + } + else + { + return false; + } + } + + /// + /// 현재 인스턴스의 문자열을 HangulChar 클래스 인스턴스의 배열로 변환하여 반환합니다. + /// + /// + public HangulChar[] ToHangulCharArray() => HangulString.ToHangulCharArray(CurrentString); + + /// + /// 현재 인스턴스의 문자열을 한글 문자열 부분과 나머지 문자열 부분으로 구분하여 반환합니다. + /// + /// + public string[] SeparateString() => HangulString.SeparateString(CurrentString); + + /// + /// 현재 인스턴스의 문자열이 모두 한글로만 이루어져 있는지의 여부를 반환합니다. + /// + /// + public bool IsAllHangul() => HangulString.IsAllHangul(CurrentString); + + /// + /// 현재 인스턴스의 문자열에 대해 한글 음절을 초성, 중성, 종성으로 분리하여 반환합니다. + /// + /// + public string SplitToPhonemes() => HangulString.SplitToPhonemes(CurrentString); + + /// + /// 인스턴스 문자열 내의 초성, 중성, 종성 음소를 합성하여 반환합니다. + /// 의도하지 않은 반환 결과를 피하기 위해 일반적으로 사용하는 방식의 + /// (완전한 한글 음절이 분리된) 자음/모음으로 구성된 문자열을 인수로 사용할 것을 권장합니다. + /// + /// + public string JoinPhonemes() => HangulString.JoinPhonemes(CurrentString); + + /// + /// 인스턴스 문자열의 길이(글자수)를 반환합니다. + /// + /// + /// 윈도우 시스템에서는 개행문자가 2글자(2바이트)로 취급됨에 유의해야 합니다. + /// + /// 공백문자(whitespace) 무시 여부 + /// + public int GetStringLength(bool ignoreWhiteSpcaes = false) + { + string inputString = ignoreWhiteSpcaes ? RemoveWhiteSpaces(CurrentString) : CurrentString; + return inputString.Length; + } + + /// + /// 현재 인코딩에 대해 인스턴스 문자열의 길이(바이트)를 반환합니다. + /// + /// + /// 윈도우 시스템에서는 개행문자가 2글자(2바이트)로 취급됨에 유의해야 합니다. + /// + /// 공백문자(whitespace) 무시 여부 + /// + public int GetStringByteLength(bool ignoreWhiteSpcaes = false) + { + string inputString = ignoreWhiteSpcaes ? RemoveWhiteSpaces(CurrentString) : CurrentString; + return Encoding.Default.GetByteCount(inputString); + } + + /// + /// 인수의 문자열에서 공백문자(whitespace)를 제거한 문자열을 반환합니다. + /// + /// + /// + private static string RemoveWhiteSpaces(string aString) => + new string(aString.Where(c => !char.IsWhiteSpace(c)).Select(c => c).ToArray()); + } +} diff --git a/MBN_STOCK_N/Class/Nxt_PageN.cs b/MBN_STOCK_N/Class/Nxt_PageN.cs new file mode 100644 index 0000000..93cbcb1 --- /dev/null +++ b/MBN_STOCK_N/Class/Nxt_PageN.cs @@ -0,0 +1,97 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class Nxt_PageN + { + MainForm mf = null; + public int m_pcnt = 0; + + // public PageN(Form frm, string code, string sub) + public Nxt_PageN(Form frm, string code, string sub, string title) + { + try + { + mf = (MainForm)frm; + DataSet ds = null; + 국내시장종류 type = 국내시장종류.NXT_KOSPI; + + if (code.Equals("코스닥_NXT")) + { + type = 국내시장종류.NXT_KOSDAQ; + } + + if (sub.Contains("시가총액")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.시가총액); + } + else if (sub.Contains("상승률")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.상승률); + } + else if (sub.Contains("하락률")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.하락률); + } + else if (sub.Contains("시간외상승")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.시간외상승률); + } + else if (sub.Contains("시간외하락")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.시간외하락률); + } + else if (sub.Contains("거래량")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.거래량); + } + + mf.dataGridView1.DataSource = ds.Tables[0]; + + int a = 0; + int b = 0; + if (title.Contains("6종목 현재가")) + { + a = (mf.dataGridView1.RowCount - 1) / 6; + b = (mf.dataGridView1.RowCount - 1) % 6; + } + else if (title.Contains("12종목 현재가")) + { + a = (mf.dataGridView1.RowCount - 1) / 12; + b = (mf.dataGridView1.RowCount - 1) % 12; + } + else + { + a = (mf.dataGridView1.RowCount - 1) / 5; + b = (mf.dataGridView1.RowCount - 1) % 5; + } + + if (a > 20) + { + a = 20; + } + else + { + if (b != 0) + a = a + 1; + } + m_pcnt = a; + } + catch(Exception) + { + //MessageBox.Show("데이터가 없습니다"); + } + + //MessageBox.Show(a.ToString()); + } + } +} diff --git a/MBN_STOCK_N/Class/PageN.cs b/MBN_STOCK_N/Class/PageN.cs new file mode 100644 index 0000000..e5a107d --- /dev/null +++ b/MBN_STOCK_N/Class/PageN.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class PageN + { + MainForm mf = null; + public int m_pcnt = 0; + + // public PageN(Form frm, string code, string sub) + public PageN(Form frm, string code, string sub, string title) + { + try + { + mf = (MainForm)frm; + DataSet ds = null; + 국내시장종류 type = 국내시장종류.KOSPI; + + if (code.Equals("코스닥")) + { + type = 국내시장종류.KOSDAQ; + } + + if (sub.Contains("예상가 시가총액 상위")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.예상가시가총액상위); + } + else if (sub.Contains("시가총액")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.시가총액); + } + else if (sub.Contains("업종지수")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.업종); + } + else if (sub.Contains("상승률")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.상승률); + } + else if (sub.Contains("하락률")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.하락률); + } + else if (sub.Contains("시간외상승")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.시간외상승률); + } + else if (sub.Contains("시간외하락")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.시간외하락률); + } + else if (sub.Contains("52주 신고가")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.신고가52주); + + } + else if (sub.Contains("52주 신저가")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.신저가52주); + + } + else if (sub.Contains("코스피 200 종목")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.코스피200); + } + + else if (sub.Contains("ETF 종목")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.ETF); + } + + mf.dataGridView1.DataSource = ds.Tables[0]; + + int a = 0; + int b = 0; + if (title.Contains("6종목 현재가")) + { + a = (mf.dataGridView1.RowCount - 1) / 6; + b = (mf.dataGridView1.RowCount - 1) % 6; + } + else if (title.Contains("12종목 현재가")) + { + a = (mf.dataGridView1.RowCount - 1) / 12; + b = (mf.dataGridView1.RowCount - 1) % 12; + } + else + { + a = (mf.dataGridView1.RowCount - 1) / 5; + b = (mf.dataGridView1.RowCount - 1) % 5; + } + + if (a > 20) + { + a = 20; + } + else + { + if (b != 0) + a = a + 1; + } + m_pcnt = a; + } + catch(Exception) + { + //MessageBox.Show("데이터가 없습니다"); + } + + //MessageBox.Show(a.ToString()); + } + } +} diff --git a/MBN_STOCK_N/Class/Program.cs b/MBN_STOCK_N/Class/Program.cs new file mode 100644 index 0000000..e9ce935 --- /dev/null +++ b/MBN_STOCK_N/Class/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MBN_STOCK_N +{ + static class Program + { + /// + /// 해당 애플리케이션의 주 진입점입니다. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } +} diff --git a/MBN_STOCK_N/Class/Util.cs b/MBN_STOCK_N/Class/Util.cs new file mode 100644 index 0000000..8f48576 --- /dev/null +++ b/MBN_STOCK_N/Class/Util.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.IO; +using FarPoint.Win.Spread; +using System.Windows.Forms; + + +class Util +{ + public Util() + { + + } +} + + diff --git a/MBN_STOCK_N/Control/UC1.Designer.cs b/MBN_STOCK_N/Control/UC1.Designer.cs new file mode 100644 index 0000000..c3e5237 --- /dev/null +++ b/MBN_STOCK_N/Control/UC1.Designer.cs @@ -0,0 +1,96 @@ + +namespace MBN_STOCK_N +{ + partial class UC1 + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.treeView = new System.Windows.Forms.TreeView(); + this.label1 = new System.Windows.Forms.Label(); + this.chE = new System.Windows.Forms.CheckBox(); + this.SuspendLayout(); + // + // treeView + // + this.treeView.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.treeView.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.treeView.ForeColor = System.Drawing.Color.Black; + this.treeView.Location = new System.Drawing.Point(3, 42); + this.treeView.Name = "treeView"; + this.treeView.Size = new System.Drawing.Size(416, 780); + this.treeView.TabIndex = 1; + this.treeView.BeforeCollapse += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView_BeforeCollapse); + this.treeView.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView_BeforeExpand); + this.treeView.DrawNode += new System.Windows.Forms.DrawTreeNodeEventHandler(this.treeView_DrawNode); + this.treeView.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView_BeforeSelect); + this.treeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterSelect); + this.treeView.DoubleClick += new System.EventHandler(this.treeView_DoubleClick); + this.treeView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeView_MouseDown); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(7, 22); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(62, 15); + this.label1.TabIndex = 4; + this.label1.Text = "Category"; + // + // chE + // + this.chE.AutoSize = true; + this.chE.Location = new System.Drawing.Point(8, 4); + this.chE.Name = "chE"; + this.chE.Size = new System.Drawing.Size(67, 16); + this.chE.TabIndex = 3; + this.chE.Text = "Expand"; + this.chE.UseVisualStyleBackColor = true; + this.chE.CheckedChanged += new System.EventHandler(this.chE_CheckedChanged); + // + // UC1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.label1); + this.Controls.Add(this.chE); + this.Controls.Add(this.treeView); + this.Name = "UC1"; + this.Size = new System.Drawing.Size(524, 890); + this.Load += new System.EventHandler(this.UC1_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TreeView treeView; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.CheckBox chE; + } +} diff --git a/MBN_STOCK_N/Control/UC1.cs b/MBN_STOCK_N/Control/UC1.cs new file mode 100644 index 0000000..caf03eb --- /dev/null +++ b/MBN_STOCK_N/Control/UC1.cs @@ -0,0 +1,1428 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.IO; +using System.Diagnostics.Eventing.Reader; + +namespace MBN_STOCK_N +{ + public partial class UC1 : UserControl + { + string[] m_pbuf = new string[20]; + string[,] m_sbuf = new string[20, 50]; + int[] m_row = new int[20]; + int m_idx = 0; + public TreeNode[] m_node = new TreeNode[20]; + + MainForm mf = null; + UC2 uc_2 = null; + UC3 uc_3 = null; + public string m_File = string.Empty; + int scnt = 0; + + public UC1(Form frm, string File, Control ct1, Control ct2) + { + mf = (MainForm)frm; + uc_2 = (UC2)ct1; + uc_3 = (UC3)ct2; + m_File = File; + InitializeComponent(); + } + + private void UC1_Load(object sender, EventArgs e) + { + try + { + + treeView.Font = new System.Drawing.Font("나눔고딕", 11.0F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + + INI_parser(Environment.CurrentDirectory + @"\Res\" + m_File + ".ini"); + treeView.DrawMode = TreeViewDrawMode.OwnerDrawText; + + ImageList imgList = new ImageList(); + imgList.Images.Add(Bitmap.FromFile(Environment.CurrentDirectory + @"\Res\a.png")); + imgList.Images.Add(Bitmap.FromFile(Environment.CurrentDirectory + @"\Res\aa.png")); + imgList.Images.Add(Bitmap.FromFile(Environment.CurrentDirectory + @"\Res\dot.png")); + treeView.ImageList = imgList; + + if (m_File == "종목비교") + scnt = 1; + + for (int i = scnt; i < m_idx; i++) + { + m_node[i] = new TreeNode(m_pbuf[i], 0, 0); + m_node[i].Tag = (i + 1).ToString(); + + for (int j = 0; j < m_row[i]; j++) + { + m_node[i].Nodes.Add(i.ToString() + j.ToString(), m_sbuf[i, j].Replace("&", "&").Trim(), 2, 1); + } + + treeView.Nodes.Add(m_node[i]); + } + chE.Checked = true; + //treeView.ExpandAll(); + + treeView.SelectedNode = m_node[scnt]; + m_node[scnt].EnsureVisible(); + + //------------------ + } + catch(Exception) + { + + } + } + + public void INI_parser(string path) + { + try + { + string str = string.Empty; + + m_idx = 0; + m_row = Enumerable.Repeat(0, 20).ToArray(); + + StreamReader sr = new StreamReader(path, Encoding.Default); + if (sr != null) + { + while (sr.Peek() > -1) + { + str = sr.ReadLine(); str = str.Trim(); + + if (str != "") + { + if (str.Substring(0, 1) == "[") + { + m_pbuf[m_idx] = str; + m_idx += 1; + } + else + { + m_sbuf[m_idx - 1, m_row[m_idx - 1]] = str; + m_row[m_idx - 1] += 1; + } + } + } + } + } + catch (Exception) + { + + } + } + + private void treeView_AfterSelect(object sender, TreeViewEventArgs e) + { + //string nodeKey = e.Node.Name; + //if (!string.IsNullOrEmpty(nodeKey)) + //{ + // //MessageBox.Show("선택된 노드 키 : " + nodeKey); + + // e.Node.BackColor = Color.Black; + // e.Node.ForeColor = Color.Black; + + //} + } + + private void treeView_BeforeSelect(object sender, TreeViewCancelEventArgs e) + { + //if (treeView1.SelectedNode != null) + // // 이전에 선택 된 TreeNode의 폰트를 원상태로 표시한다. + // treeView1.SelectedNode.NodeFont = new Font(treeView1.Font, FontStyle.Regular); + } + + private void treeView_DoubleClick(object sender, EventArgs e) + { + try + { + string[] buf = new string[100]; + int cnt = 0; + int row = 0; + string data1 = string.Empty; + string data2 = string.Empty; + string tstr = string.Empty; + string str = string.Empty; + string str1 = string.Empty; + + if (((TreeView)sender).SelectedNode.FullPath != null) + { + str = ((TreeView)sender).SelectedNode.FullPath; + + if (!str.Contains("\\")) + { + foreach (TreeNode child in ((TreeView)sender).SelectedNode.Nodes) + { + buf[cnt] = child.Text; + cnt += 1; + } + + str1 = str.Replace("[", "").Replace("]", "").Trim(); + + string ss = uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 2) + "," + uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 3); + + if ((str1 == "종목별 수익률 비교") && (ss.Contains("NXT"))) + { + MessageBox.Show("NXT는 제공하지 않습니다."); + return; + } + + + for (int i = 0; i < cnt; i++) + { + row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + + if (m_File == "해외" || m_File == "환율") + { + if (m_File == "해외") + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "해외지수"); + else if (m_File == "환율") + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "환율"); + + mf.PlayList.ActiveSheet.SetText(row - 1, 2, buf[i].Replace("&&", "&").Trim()); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, str.Replace("[", "").Replace("]", "").Trim()); + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + + if (buf[i].IndexOf('_') > 0) + { + data1 = buf[i].Substring(0, buf[i].IndexOf('_')); + data2 = buf[i].Substring(buf[i].IndexOf('_') + 1, buf[i].Length - buf[i].IndexOf('_') - 1); + mf.PlayList.ActiveSheet.SetText(row - 1, 2, data1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, data2); + } + } + + else if (m_File == "업종_코스피" || m_File == "업종_코스닥") + { + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + mf.PlayList.ActiveSheet.SetText(row - 1, 1, m_File); + + if (uc_2.listbox.SelectedIndex != -1) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 2, (string)uc_2.listbox.SelectedItem); + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + + if (buf[i].IndexOf('_') > 0) + { + data1 = buf[i].Substring(0, buf[i].IndexOf('_')); + data2 = buf[i].Substring(buf[i].IndexOf('_') + 1, buf[i].Length - buf[i].IndexOf('_') - 1); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, data1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, data2); + } + else + { + + mf.PlayList.ActiveSheet.SetText(row - 1, 3, buf[i]); + if (buf[i] == "5단 표그래프") + { + //페이지 수 + //mf.m_lcnt = 0; + +// string s = string.Empty; + + if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피_NXT")) + { +// s = "코스피_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, "코스피_NXT", "업종지수", buf[i]); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥_NXT")) + { + // s = "코스닥_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, "코스닥_NXT", "업종지수", buf[i]); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피")) + { +// s = "코스피"; + PageN page = new PageN(mf, "코스피", "업종지수", buf[i]); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥")) + { +// s = "코스닥"; + PageN page = new PageN(mf, "코스닥", "업종지수", buf[i]); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + } + else if (buf[i] == "6종목 현재가") + { + //페이지 수 + //mf.m_lcnt = 0; + + string s = string.Empty; + + if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피_NXT")) + { + s = "코스피_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", buf[i]); //6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥_NXT")) + { + s = "코스닥_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", buf[i]); //6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피")) + { + s = "코스피"; + PageN page = new PageN(mf, s, "업종지수", buf[i]); //6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥")) + { + s = "코스닥"; + PageN page = new PageN(mf, s, "업종지수", buf[i]); //6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + + //nxt20250330 PageN page = new PageN(mf, s, "업종지수", buf[i]); //6종목 현재가 + + } + else if (buf[i] == "12종목 현재가") + { + //페이지 수 + //mf.m_lcnt = 0; + + string s = string.Empty; + + if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피_NXT")) + { + s = "코스피_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", buf[i]); //12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥_NXT")) + { + s = "코스닥_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", buf[i]); //12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피")) + { + s = "코스피"; + PageN page = new PageN(mf, s, "업종지수", buf[i]); //12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥")) + { + s = "코스닥"; + PageN page = new PageN(mf, s, "업종지수", buf[i]); //12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + + } + else + { + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + } + + if (buf[i] == "2열판") + { + if (uc_2.txt1.Text != "" && uc_2.txt2.Text != "") + { + tstr = uc_2.txt1.Text + "-" + uc_2.txt2.Text; + mf.PlayList.ActiveSheet.SetText(row - 1, 2, tstr); + + } + else + { + mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + } + + } + else if (buf[i].Contains("1열판")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 2, (string)uc_2.listbox.SelectedItem); + } + else + { + mf.PlayList.ActiveSheet.SetText(row - 1, 2, m_File.Substring(m_File.IndexOf('_') + 1, m_File.Length - m_File.IndexOf('_') - 1)); + } + } + + + + } + else + { + if (buf[i] == "네모그래프" || buf[i] == "섹터지수" || buf[i] == "5단 표그래프" || buf[i] == "6종목 현재가") + { + mf.PlayList.ActiveSheet.SetText(row - 1, 2, m_File.Substring(m_File.IndexOf('_') + 1, m_File.Length - m_File.IndexOf('_') - 1)); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, buf[i]); + + if (buf[i] == "5단 표그래프") + { + //페이지 수 + //mf.m_lcnt = 0; + + string s = string.Empty; + + if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피_NXT")) + { + s = "코스피_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", buf[i]); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥_NXT")) + { + s = "코스닥_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", buf[i]); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피")) + { + s = "코스피"; + PageN page = new PageN(mf, s, "업종지수", buf[i]); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥")) + { + s = "코스닥"; + PageN page = new PageN(mf, s, "업종지수", buf[i]); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + + + } + else if (buf[i] == "6종목 현재가") + { + //페이지 수 + //mf.m_lcnt = 0; + + string s = string.Empty; + + if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피_NXT")) + { + s = "코스피_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", buf[i]); //6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥_NXT")) + { + s = "코스닥_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", buf[i]); //6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피")) + { + s = "코스피"; + PageN page = new PageN(mf, s, "업종지수", buf[i]); //6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥")) + { + s = "코스닥"; + PageN page = new PageN(mf, s, "업종지수", buf[i]); //6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + + } + else if (buf[i] == "12종목 현재가") + { + //페이지 수 + //mf.m_lcnt = 0; + + string s = string.Empty; + + if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피_NXT")) + { + s = "코스피_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", buf[i]); //12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥_NXT")) + { + s = "코스닥_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", buf[i]); //12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피")) + { + s = "코스피"; + PageN page = new PageN(mf, s, "업종지수", buf[i]); //12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥")) + { + s = "코스닥"; + PageN page = new PageN(mf, s, "업종지수", buf[i]); //12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + + } + + else + { + mf.PlayList.ActiveSheet.SetValue(row - 1, 5, "1/1"); + } + } + else + { + mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + } + + + } + } + else if (m_File == "종목비교") + { + string a = string.Empty; + string s = uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 1); + + if (uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 2) != "" && uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 3) != "") + { + a = uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 2) + "," + uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 3); + + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + mf.PlayList.ActiveSheet.SetText(row - 1, 1, a); + + mf.PlayList.ActiveSheet.SetText(row - 1, 2, s); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, str1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, buf[i]); + mf.PlayList.ActiveSheet.SetValue(row - 1, 5, "1/1"); + } + else + { + mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + } + } + else if (m_File == "지수") + { + mf.PlayList.ActiveSheet.SetText(row - 1, 2, "지수"); + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + + str1 = str.Replace("[", "").Replace("]", "").Trim(); + if (str1 == "매매동향") + { + if (buf[i].IndexOf('_') > 0) + { + if (buf[i].Contains("코스피_NXT")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피_NXT"); + else if (buf[i].Contains("코스닥_NXT")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥_NXT"); + else if (buf[i].Contains("코스피")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피"); + else if (buf[i].Contains("코스닥")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥"); + else + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "전체"); + + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].IndexOf('_') - (buf[i].IndexOf("\\") + 1)); + data2 = buf[i].Substring(buf[i].IndexOf('_') + 1, buf[i].Length - buf[i].IndexOf('_') - 1); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, data1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, data2); + } + else + { + mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + } + } + else if (str1 == "5단 표그래프") + { + if (buf[i].Contains("코스피_NXT")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피_NXT"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + Nxt_PageN page = new Nxt_PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (buf[i].Contains("코스닥_NXT")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥_NXT"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + Nxt_PageN page = new Nxt_PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (buf[i].Contains("코스피")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + PageN page = new PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (buf[i].Contains("코스닥")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + PageN page = new PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (buf[i].Contains("ETF")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "전체"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + PageN page = new PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else + { + mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + + return; + } + + mf.PlayList.ActiveSheet.SetText(row - 1, 3, str1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, buf[i]); + } + else if (str1 == "6종목 현재가") + { + if (buf[i].Contains("코스피_NXT")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피_NXT"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + + //페이지 수 + Nxt_PageN page = new Nxt_PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); // 6종목 현재가 + + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (buf[i].Contains("코스닥_NXT")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥_NXT"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + + //페이지 수 + Nxt_PageN page = new Nxt_PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); // 6종목 현재가 + + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (buf[i].Contains("코스피")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + + //페이지 수 + PageN page = new PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); // 6종목 현재가 + + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (buf[i].Contains("코스닥")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + + //페이지 수 + PageN page = new PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); // 6종목 현재가 + + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (buf[i].Contains("ETF")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "전체"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + + //페이지 수 + PageN page = new PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); // 6종목 현재가 + + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else + { + mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + return; + } + + mf.PlayList.ActiveSheet.SetText(row - 1, 3, str1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, buf[i]); + } + else if (str1 == "12종목 현재가") + { + if (buf[i].Contains("코스피_NXT")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피_NXT"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + + //페이지 수 + Nxt_PageN page = new Nxt_PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (buf[i].Contains("코스닥_NXT")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥_NXT"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + + //페이지 수 + Nxt_PageN page = new Nxt_PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (buf[i].Contains("코스피")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + + //페이지 수 + PageN page = new PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (buf[i].Contains("코스닥")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + + //페이지 수 + PageN page = new PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (buf[i].Contains("ETF")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "전체"); + data1 = buf[i].Substring(buf[i].IndexOf("\\") + 1, buf[i].Length - (buf[i].IndexOf("\\") + 1)); + + //페이지 수 + PageN page = new PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else + { + mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + return; + } + + mf.PlayList.ActiveSheet.SetText(row - 1, 3, str1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, buf[i]); + } + else + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, str1.Replace("[", "").Replace("]", "").Trim()); + + + if (buf[i].IndexOf('_') > 0) + { + data1 = buf[i].Substring(0, buf[i].IndexOf('_')); + data2 = buf[i].Substring(buf[i].IndexOf('_') + 1, buf[i].Length - buf[i].IndexOf('_') - 1); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, data1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, data2); + } + } + } + + } + } + else + { + row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + + string s1 = str.Substring(0, str.IndexOf("\\")).Replace("[", "").Replace("]", "").Trim(); + string s2 = str.Substring(str.IndexOf("\\"), str.Length - str.IndexOf("\\")).Substring(1).Replace("&&", "&").Trim(); + + if (m_File == "해외" || m_File == "환율") + { + + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + + if (m_File == "해외") + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "해외지수"); + else if (m_File == "환율") + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "환율"); + + if (s2.IndexOf('_') > 0) + mf.PlayList.ActiveSheet.SetText(row - 1, 2, s2.Substring(0, s2.IndexOf('_'))); + else + mf.PlayList.ActiveSheet.SetText(row - 1, 2, s2); + + mf.PlayList.ActiveSheet.SetText(row - 1, 3, s1); + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + + if (str.IndexOf('_') > 0) + { + data2 = str.Substring(str.IndexOf('_') + 1, str.Length - str.IndexOf('_') - 1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, data2); + } + } + + else if (m_File == "업종_코스피" || m_File == "업종_코스닥") + { + + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + mf.PlayList.ActiveSheet.SetText(row - 1, 1, m_File); + + if (uc_2.listbox.SelectedIndex != -1) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 2, (string)uc_2.listbox.SelectedItem); + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + + if (s2.IndexOf('_') > 0) + { + data1 = s2.Substring(0, s2.IndexOf('_')); + data2 = s2.Substring(s2.IndexOf('_') + 1, s2.Length - s2.IndexOf('_') - 1); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, data1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, data2); + } + else + { + if (s2 == "2열판") + { + if (uc_2.txt1.Text != "" && uc_2.txt2.Text != "") + { + tstr = uc_2.txt1.Text + "-" + uc_2.txt2.Text; + mf.PlayList.ActiveSheet.SetText(row - 1, 2, tstr); + + } + else + { + mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + } + + } + else if (s2.Contains("1열판")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 2, (string)uc_2.listbox.SelectedItem); + } + else + { + mf.PlayList.ActiveSheet.SetText(row - 1, 2, m_File.Substring(m_File.IndexOf('_') + 1, m_File.Length - m_File.IndexOf('_') - 1)); + } + mf.PlayList.ActiveSheet.SetText(row - 1, 3, s2); + } + + if (s2 == "5단 표그래프") // 5단 표그래프 + { + string s = string.Empty; + if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피_NXT")) + { + s = "코스피_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", s2); // 5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥_NXT")) + { + s = "코스닥_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", s2); // 5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피")) + { + s = "코스피"; + PageN page = new PageN(mf, s, "업종지수", s2); // 5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥")) + { + s = "코스닥"; + PageN page = new PageN(mf, s, "업종지수", s2); // 5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + } + else if (s2 == "6종목 현재가") // 6종목 현재가 + { + string s = string.Empty; + if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피_NXT")) + { + s = "코스피_NXT"; + PageN page = new PageN(mf, s, "업종지수", s2); // 6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥_NXT")) + { + s = "코스닥_NXT"; + PageN page = new PageN(mf, s, "업종지수", s2); // 6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피")) + { + s = "코스피"; + PageN page = new PageN(mf, s, "업종지수", s2); // 6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥")) + { + s = "코스닥"; + PageN page = new PageN(mf, s, "업종지수", s2); // 6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + } + else if (s2 == "12종목 현재가") // 12종목 현재가 + { + string s = string.Empty; + if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피_NXT")) + { + s = "코스피_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", s2); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥_NXT")) + { + s = "코스닥_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", s2); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피")) + { + s = "코스피"; + PageN page = new PageN(mf, s, "업종지수", s2); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥")) + { + s = "코스닥"; + PageN page = new PageN(mf, s, "업종지수", s2); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + } + else + { + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + } + //mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString());) + + } + else + { + if (s2 == "네모그래프" || s2 == "섹터지수" || s2 == "5단 표그래프" || s2 == "6종목 현재가") + { + mf.PlayList.ActiveSheet.SetText(row - 1, 2, m_File.Substring(m_File.IndexOf('_') + 1, m_File.Length - m_File.IndexOf('_') - 1)); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, s2); + + if (s2 == "5단 표그래프") + { + //페이지 수 + //mf.m_lcnt = 0; + + string s = string.Empty; + + if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피_NXT")) + { + s = "코스피_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", s2); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥_NXT")) + { + s = "코스닥_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", s2); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피")) + { + s = "코스피"; + PageN page = new PageN(mf, s, "업종지수", s2); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥")) + { + s = "코스닥"; + PageN page = new PageN(mf, s, "업종지수", s2); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + + } + else if (s2 == "6종목 현재가") + { + //페이지 수 + //mf.m_lcnt = 0; + + string s = string.Empty; + + if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피_NXT")) + { + s = "코스피_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", s2); // 6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥_NXT")) + { + s = "코스닥_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", s2); // 6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피")) + { + s = "코스피"; + PageN page = new PageN(mf, s, "업종지수", s2); // 6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥")) + { + s = "코스닥"; + PageN page = new PageN(mf, s, "업종지수", s2); // 6종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + } + else if (s2 == "12종목 현재가") + { + //페이지 수 + //mf.m_lcnt = 0; + + string s = string.Empty; + + if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피_NXT")) + { + s = "코스피_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", s2); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥_NXT")) + { + s = "코스닥_NXT"; + Nxt_PageN page = new Nxt_PageN(mf, s, "업종지수", s2); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스피")) + { + s = "코스피"; + PageN page = new PageN(mf, s, "업종지수", s2); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else if (mf.PlayList.ActiveSheet.GetText(row - 1, 1).Contains("코스닥")) + { + s = "코스닥"; + PageN page = new PageN(mf, s, "업종지수", s2); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + + } + } + else + { + mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + } + + } + + } + else if (m_File == "종목비교") + { + string a = string.Empty; + string s = uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 1); + + if (uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 2) != "" && uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 3) != "") + { + a = uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 2) + "," + uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 3); + s1 = str.Substring(0, str.IndexOf("\\")).Replace("[", "").Replace("]", "").Trim(); + s2 = str.Substring(str.IndexOf("\\"), str.Length - str.IndexOf("\\")).Substring(1).Replace("&&", "&").Trim(); + + if ((s1 == "종목별 수익률 비교") && (a.Contains("NXT"))) + { + mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + MessageBox.Show("NXT는 제공하지 않습니다."); + return; + } + + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + mf.PlayList.ActiveSheet.SetText(row - 1, 1, a); + + mf.PlayList.ActiveSheet.SetText(row - 1, 2, s); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, s1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, s2); + mf.PlayList.ActiveSheet.SetValue(row - 1, 5, "1/1"); + } + else + { + mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + } + + } + else if (m_File == "지수") + { + mf.PlayList.ActiveSheet.SetText(row - 1, 2, "지수"); + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + + str1 = str.Replace("[", "").Replace("]", "").Trim().Substring(0, str.IndexOf("\\") -2); + + if (str1 == "매매동향") + { + if (str.IndexOf('_') > 0) + { + if (str.Contains("코스피_NXT")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피_NXT"); + else if (str.Contains("코스닥_NXT")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥_NXT"); + else if (str.Contains("코스피")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피"); + else if (str.Contains("코스닥")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥"); + else + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "전체"); + + data1 = str.Substring(str.IndexOf("\\") +1, str.IndexOf('_') - (str.IndexOf("\\") + 1)); + data2 = str.Substring(str.IndexOf('_') + 1, str.Length - str.IndexOf('_') - 1); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, data1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, data2); + } + else + { + //mf.PlayList.ActiveSheet.RemoveRows(mf.PlayList.ActiveSheet.ActiveRowIndex, 1); + str = str.Substring(str.IndexOf("\\") + 1, str.Length - str.IndexOf(" ") + 2); + + mf.PlayList.ActiveSheet.SetText(row - 1, 1, str); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, "순매도 상위"); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, "순매도 상위"); + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + + FSell fm = new FSell(mf, str.Substring(0, str.IndexOf(" "))); + fm.ShowDialog(); + if (mf.m_st == 0) + { + mf.PlayList.ActiveSheet.RemoveRows(row-1, 1); + } + mf.m_st = 1; + + } + } + else if (str1 == "5단 표그래프") + { + if (str.Contains("코스피_NXT")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피_NXT"); + else if (str.Contains("코스닥_NXT")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥_NXT"); + else if (str.Contains("코스피")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피"); + else if (str.Contains("코스닥")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥"); + else + { + if (str.Contains("VI")) + { + mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + VILIST fm = new VILIST(mf); + fm.ShowDialog(); + return; + } + else + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "전체"); + } + + data1 = str.Substring(str.IndexOf("\\") + 1, str.Length - (str.IndexOf("\\") + 1)); + + mf.PlayList.ActiveSheet.SetText(row - 1, 3, str1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, data1); + + + //페이지 수 + if (str.Contains("_NXT")) + { + Nxt_PageN page = new Nxt_PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else + { + PageN page = new PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + } + else if (str1 == "6종목 현재가") + { + if (str.Contains("코스피_NXT")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피_NXT"); + else if (str.Contains("코스닥_NXT")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥_NXT"); + else if (str.Contains("코스피")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피"); + else if (str.Contains("코스닥")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥"); + else + { + if (str.Contains("VI")) + { + mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + VILIST fm = new VILIST(mf); + fm.ShowDialog(); + return; + } + else + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "전체"); + } + + data1 = str.Substring(str.IndexOf("\\") + 1, str.Length - (str.IndexOf("\\") + 1)); + + mf.PlayList.ActiveSheet.SetText(row - 1, 3, str1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, data1); + + + //페이지 수 + //mf.m_lcnt = 0; + if (str.Contains("_NXT")) + { + Nxt_PageN page = new Nxt_PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else + { + PageN page = new PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); //5단 표그래프 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + } + else if (str1 == "12종목 현재가") + { + if (str.Contains("코스피_NXT")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피_NXT"); + else if (str.Contains("코스닥_NXT")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥_NXT"); + else if (str.Contains("코스피")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스피"); + else if (str.Contains("코스닥")) + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "코스닥"); + else + { + if (str.Contains("VI")) + { + mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + VILIST fm = new VILIST(mf); + fm.ShowDialog(); + return; + } + else + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "전체"); + } + + data1 = str.Substring(str.IndexOf("\\") + 1, str.Length - (str.IndexOf("\\") + 1)); + + mf.PlayList.ActiveSheet.SetText(row - 1, 3, str1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, data1); + + + //페이지 수 + //mf.m_lcnt = 0; + if (str.Contains("_NXT")) + { + Nxt_PageN page = new Nxt_PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + else + { + PageN page = new PageN(mf, mf.PlayList.ActiveSheet.GetText(row - 1, 1), data1, str1); // 12종목 현재가 + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/" + page.m_pcnt.ToString()); + } + } + else + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, str1.Replace("[", "").Replace("]", "").Trim()); + + + if (str.IndexOf('_') > 0) + { + data1 = str.Substring(str.IndexOf("\\") + 1, str.IndexOf('_') - (str.IndexOf("\\") + 1)); + data2 = str.Substring(str.IndexOf('_') + 1, str.Length - str.IndexOf('_') - 1); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, data1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, data2); + } + } + } + + } + + if (str1 == "2열판") + { + string s = uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 1); + + row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + if (s.Contains("지수")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "지수"); + } + else + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "종목"); + } + mf.PlayList.ActiveSheet.SetText(row - 1, 2, s); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, str1); + mf.PlayList.ActiveSheet.SetValue(row - 1, 5, "1/1"); + + //mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + } + else if (str1 == "2열판 예상체결") + { + string s = uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 1); + if (s.Contains("NXT")) + { + MessageBox.Show("NXT는 제공하지 않습니다."); + return; + } + + row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + if (s.Contains("지수")) + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "지수"); + } + else + { + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "종목"); + } + mf.PlayList.ActiveSheet.SetText(row - 1, 2, s); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, "2열판"); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, "예상체결"); + mf.PlayList.ActiveSheet.SetValue(row - 1, 5, "1/1"); + } + else if (str1 == "종목별 비교분석_캔들 그래프" || str1 == "종목별 비교분석_라인 그래프") + { + string a = string.Empty; + string s = uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 1); + + if (s.Contains("NXT")) + { + MessageBox.Show("NXT는 제공하지 않습니다."); + return; + } + if (uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 2) != "" && uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 3) != "") + { + a = uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 2) + "," + uc_3.FpSpread.ActiveSheet.GetText(uc_3.FpSpread.ActiveSheet.ActiveRowIndex, 3); + + row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + mf.PlayList.ActiveSheet.SetText(row - 1, 1, a); + mf.PlayList.ActiveSheet.SetText(row - 1, 2, s); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, str1); + mf.PlayList.ActiveSheet.SetValue(row - 1, 5, "1/1"); + } + + //mf.PlayList.ActiveSheet.RemoveRows(row - 1, 1); + } + + + } + + + } + catch(Exception) + { + + } + } + + bool treeCanExpand = false; + + private void treeView_BeforeExpand(object sender, TreeViewCancelEventArgs e) + { + //if (m_chk == 1) + //{ + // m_chk = 0; + //} + //else + //{ + if (treeCanExpand == true && e.Action == TreeViewAction.Expand) + { e.Cancel = true; } + //} + + + } + + private void treeView_BeforeCollapse(object sender, TreeViewCancelEventArgs e) + { + //if (m_chk == 1) + //{ + // m_chk = 0; + //} + //else + //{ + if (treeCanExpand == true && e.Action == TreeViewAction.Collapse) + { e.Cancel = true; } + //} + + } + + private void treeView_MouseDown(object sender, MouseEventArgs e) + { + if (e.Clicks > 1) + treeCanExpand = true; + else + treeCanExpand = false; + } + + private void treeView_DrawNode(object sender, DrawTreeNodeEventArgs e) + { + + //this.treeView.Font = new System.Drawing.Font("나눔고딕", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + + Color back = (e.State & TreeNodeStates.Selected) == TreeNodeStates.Selected ? Color.LightGray : Color.White; + Color back1 = (e.State & TreeNodeStates.Selected) == TreeNodeStates.Selected ? Color.LightGray : Color.White; + + Rectangle rc = new Rectangle(e.Bounds.Left, e.Bounds.Top, this.ClientSize.Width - e.Bounds.Left, e.Bounds.Height); + if (e.Node.Level == 0) + { + e.Graphics.FillRectangle(new SolidBrush(back), rc); + ControlPaint.DrawBorder(e.Graphics, rc, back, ButtonBorderStyle.None); + + } + else + { + e.Graphics.FillRectangle(new SolidBrush(back1), rc); + ControlPaint.DrawBorder(e.Graphics, rc, back1, ButtonBorderStyle.None); + //e.Graphics.DrawString(e.Node.Text.ToString(), new Font("맑은 고딕", 19, FontStyle.Bold), Brushes.DarkGreen, e.Bounds.X, e.Bounds.Y); + + } + if (e.Node.Tag != null) + { + string notice = e.Node.Text.ToString(); + Size noticeSize = e.Graphics.MeasureString(notice, this.treeView.Font).ToSize(); + e.Graphics.DrawString(notice, new Font("맑은 고딕", 12F, FontStyle.Bold), Brushes.DarkGreen, e.Bounds.X, e.Bounds.Y); + } + else + { + e.Graphics.DrawString(e.Node.Text, this.treeView.Font, new SolidBrush(this.ForeColor), e.Bounds.Left, e.Bounds.Top); + } + + //TreeNodeStates state = e.State; + //Font font = e.Node.NodeFont ?? e.Node.TreeView.Font; + //Color fore = e.Node.ForeColor; + //if (fore == Color.Empty) fore = e.Node.TreeView.ForeColor; + //if (e.Node == e.Node.TreeView.SelectedNode) + //{ + // fore = SystemColors.HighlightText; + // e.Graphics.FillRectangle(SystemBrushes.Highlight, e.Bounds); + // ControlPaint.DrawFocusRectangle(e.Graphics, e.Bounds, fore, SystemColors.Highlight); + // TextRenderer.DrawText(e.Graphics, e.Node.Text, font, e.Bounds, fore, TextFormatFlags.GlyphOverhangPadding); + //} + //else + //{ + // e.Graphics.FillRectangle(SystemBrushes.Window, e.Bounds); + // TextRenderer.DrawText(e.Graphics, e.Node.Text, font, e.Bounds, fore, TextFormatFlags.GlyphOverhangPadding); + //} + } + + private void chE_CheckedChanged(object sender, EventArgs e) + { + treeCanExpand = false; + + if (chE.Checked) + { + this.treeView.ExpandAll(); + this.treeView.SelectedNode = m_node[scnt]; + m_node[scnt].EnsureVisible(); + } + else + { + this.treeView.CollapseAll(); + + } + + } + + private void btnswap_Click(object sender, EventArgs e) + { + //this.treeView.CollapseAll(); + + //if (chE.Checked) + //{ + // this.treeView.ExpandAll(); + // this.treeView.SelectedNode = m_node[scnt]; + // m_node[scnt].EnsureVisible(); + //} + //else + //{ + // this.treeView.CollapseAll(); + + //} + } + } +} diff --git a/MBN_STOCK_N/Control/UC1.resx b/MBN_STOCK_N/Control/UC1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/MBN_STOCK_N/Control/UC1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MBN_STOCK_N/Control/UC2.Designer.cs b/MBN_STOCK_N/Control/UC2.Designer.cs new file mode 100644 index 0000000..c5f7eaf --- /dev/null +++ b/MBN_STOCK_N/Control/UC2.Designer.cs @@ -0,0 +1,144 @@ + +namespace MBN_STOCK_N +{ + partial class UC2 + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.txt2 = new System.Windows.Forms.TextBox(); + this.btnswap = new System.Windows.Forms.Button(); + this.txt1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.listbox = new System.Windows.Forms.ListBox(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.txt2); + this.panel1.Controls.Add(this.btnswap); + this.panel1.Controls.Add(this.txt1); + this.panel1.Controls.Add(this.label1); + this.panel1.Location = new System.Drawing.Point(3, 297); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(416, 38); + this.panel1.TabIndex = 593; + // + // txt2 + // + this.txt2.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txt2.Location = new System.Drawing.Point(288, 5); + this.txt2.Name = "txt2"; + this.txt2.Size = new System.Drawing.Size(120, 25); + this.txt2.TabIndex = 592; + // + // btnswap + // + this.btnswap.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnswap.FlatStyle = System.Windows.Forms.FlatStyle.System; + this.btnswap.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnswap.ForeColor = System.Drawing.Color.Black; + this.btnswap.Location = new System.Drawing.Point(200, 3); + this.btnswap.Name = "btnswap"; + this.btnswap.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnswap.Size = new System.Drawing.Size(82, 24); + this.btnswap.TabIndex = 591; + this.btnswap.Text = "◀▶"; + this.btnswap.UseVisualStyleBackColor = true; + this.btnswap.Click += new System.EventHandler(this.btnswap_Click); + // + // txt1 + // + this.txt1.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txt1.Location = new System.Drawing.Point(75, 5); + this.txt1.Name = "txt1"; + this.txt1.Size = new System.Drawing.Size(120, 25); + this.txt1.TabIndex = 590; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(4, 8); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(64, 17); + this.label1.TabIndex = 589; + this.label1.Text = "업종비교"; + // + // listbox + // + this.listbox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.listbox.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.listbox.FormattingEnabled = true; + this.listbox.ItemHeight = 17; + this.listbox.Location = new System.Drawing.Point(3, 3); + this.listbox.Name = "listbox"; + this.listbox.Size = new System.Drawing.Size(416, 291); + this.listbox.TabIndex = 592; + this.listbox.SelectedIndexChanged += new System.EventHandler(this.listbox_SelectedIndexChanged); + this.listbox.DoubleClick += new System.EventHandler(this.listbox_DoubleClick); + // + // dataGridView1 + // + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Location = new System.Drawing.Point(37, 484); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowTemplate.Height = 23; + this.dataGridView1.Size = new System.Drawing.Size(468, 150); + this.dataGridView1.TabIndex = 594; + // + // UC2 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.dataGridView1); + this.Controls.Add(this.panel1); + this.Controls.Add(this.listbox); + this.Name = "UC2"; + this.Size = new System.Drawing.Size(472, 354); + this.Load += new System.EventHandler(this.UC2_Load); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + public System.Windows.Forms.TextBox txt2; + private System.Windows.Forms.Button btnswap; + public System.Windows.Forms.TextBox txt1; + private System.Windows.Forms.Label label1; + public System.Windows.Forms.ListBox listbox; + private System.Windows.Forms.DataGridView dataGridView1; + } +} diff --git a/MBN_STOCK_N/Control/UC2.cs b/MBN_STOCK_N/Control/UC2.cs new file mode 100644 index 0000000..450ce32 --- /dev/null +++ b/MBN_STOCK_N/Control/UC2.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MBN_STOCK_N +{ + public partial class UC2 : UserControl + { + MainForm mf = null; + public int m_idx = 0; + //DBCon m_db = new DBCon(); + + public UC2() + { + InitializeComponent(); + } + + + public UC2(Form frm, int idx) + { + mf = (MainForm)frm; + m_idx = idx; + InitializeComponent(); + } + + private void UC2_Load(object sender, EventArgs e) + { + List list = new List(); + string query = string.Empty; + + if (m_idx == 0) + { + query = "SELECT F_PART_NAME, F_PART_CODE FROM T_PART WHERE F_PART_CODE <> '001' ORDER BY F_PART_NAME"; + } + else + { + query = "SELECT DISTINCT A.F_PART_CODE, A.F_PART_NAME FROM T_KOSDAQ_PART A, T_KOSDAQ_INDEX B"; + query = query + " WHERE A.F_PART_CODE = B.F_PART_CODE AND A.F_PART_CODE < > '001' ORDER BY A.F_PART_CODE"; + } + + + mf.m_db.ViewQuery(dataGridView1, query); + listbox.Items.Clear(); + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + listbox.Items.Add(dataGridView1.Rows[i].Cells[m_idx].Value.ToString()); + + } + } + + private void listbox_DoubleClick(object sender, EventArgs e) + { + txt2.Text = txt1.Text; + txt1.Text = (string)listbox.SelectedItem; + + } + + private void btnswap_Click(object sender, EventArgs e) + { + string tmp = string.Empty; + + tmp = txt1.Text; + + txt1.Text = txt2.Text; + txt2.Text = tmp; + } + + private void listbox_SelectedIndexChanged(object sender, EventArgs e) + { + + } + } +} diff --git a/MBN_STOCK_N/Control/UC2.resx b/MBN_STOCK_N/Control/UC2.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/MBN_STOCK_N/Control/UC2.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MBN_STOCK_N/Control/UC3.Designer.cs b/MBN_STOCK_N/Control/UC3.Designer.cs new file mode 100644 index 0000000..118143e --- /dev/null +++ b/MBN_STOCK_N/Control/UC3.Designer.cs @@ -0,0 +1,792 @@ + +namespace MBN_STOCK_N +{ + partial class UC3 + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer1 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer1 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer2 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer2 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer3 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer3 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + System.Windows.Forms.Button btnswap; + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer6 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer6 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer7 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer7 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer4 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer4 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer5 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer5 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer10 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer10 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer11 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer11 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer12 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer12 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer8 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer8 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UC3)); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer1 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle1 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType1 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.NamedStyle namedStyle2 = new FarPoint.Win.Spread.NamedStyle("CornerDefault"); + FarPoint.Win.Spread.CellType.CornerRenderer cornerRenderer1 = new FarPoint.Win.Spread.CellType.CornerRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle3 = new FarPoint.Win.Spread.NamedStyle("ColumnHeaderEnhanced"); + FarPoint.Win.Spread.NamedStyle namedStyle4 = new FarPoint.Win.Spread.NamedStyle("RowHeaderDefault"); + FarPoint.Win.Spread.SpreadSkin spreadSkin1 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer2 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer3 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.EmptyBorder emptyBorder1 = new FarPoint.Win.EmptyBorder(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer4 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle5 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType2 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.NamedStyle namedStyle6 = new FarPoint.Win.Spread.NamedStyle("CornerDefault"); + FarPoint.Win.Spread.CellType.CornerRenderer cornerRenderer2 = new FarPoint.Win.Spread.CellType.CornerRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle7 = new FarPoint.Win.Spread.NamedStyle("ColumnHeaderEnhanced"); + FarPoint.Win.Spread.NamedStyle namedStyle8 = new FarPoint.Win.Spread.NamedStyle("RowHeaderDefault"); + FarPoint.Win.Spread.SpreadSkin spreadSkin2 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer5 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer6 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.EmptyBorder emptyBorder2 = new FarPoint.Win.EmptyBorder(); + this.txtSearch = new System.Windows.Forms.TextBox(); + this.listBox = new System.Windows.Forms.ListBox(); + this.btnsearch = new System.Windows.Forms.Button(); + this.txt2 = new System.Windows.Forms.TextBox(); + this.txt1 = new System.Windows.Forms.TextBox(); + this.tabp6_1 = new System.Windows.Forms.Panel(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.txtj = new System.Windows.Forms.TextBox(); + this.btnsearch2 = new System.Windows.Forms.Button(); + this.FpSpread2 = new FarPoint.Win.Spread.FpSpread(); + this.FpSpread2_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread2_Sheet2 = new FarPoint.Win.Spread.SheetView(); + this.btnAdd = new System.Windows.Forms.Button(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.label1 = new System.Windows.Forms.Label(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.panel2 = new System.Windows.Forms.Panel(); + this.btn4 = new System.Windows.Forms.Button(); + this.btn3 = new System.Windows.Forms.Button(); + this.btn2 = new System.Windows.Forms.Button(); + this.btn1 = new System.Windows.Forms.Button(); + this.FpSpread = new FarPoint.Win.Spread.FpSpread(); + this.FpSpread_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread_Sheet2 = new FarPoint.Win.Spread.SheetView(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.listBox1 = new System.Windows.Forms.ListBox(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + btnswap = new System.Windows.Forms.Button(); + this.tabp6_1.SuspendLayout(); + this.groupBox4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet2)).BeginInit(); + this.groupBox3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet2)).BeginInit(); + this.groupBox2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + enhancedColumnHeaderRenderer1.Name = "enhancedColumnHeaderRenderer1"; + enhancedColumnHeaderRenderer1.TextRotationAngle = 0D; + rowHeaderRenderer1.Name = "rowHeaderRenderer1"; + rowHeaderRenderer1.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer2.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer2.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer2.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer2.Name = "enhancedColumnHeaderRenderer2"; + enhancedColumnHeaderRenderer2.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer2.TextRotationAngle = 0D; + rowHeaderRenderer2.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer2.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer2.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer2.Name = "rowHeaderRenderer2"; + rowHeaderRenderer2.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer2.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer3.Name = "enhancedColumnHeaderRenderer3"; + enhancedColumnHeaderRenderer3.TextRotationAngle = 0D; + rowHeaderRenderer3.Name = "rowHeaderRenderer3"; + rowHeaderRenderer3.TextRotationAngle = 0D; + // + // btnswap + // + btnswap.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + btnswap.FlatStyle = System.Windows.Forms.FlatStyle.System; + btnswap.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + btnswap.ForeColor = System.Drawing.Color.Black; + btnswap.Location = new System.Drawing.Point(138, 2); + btnswap.Name = "btnswap"; + btnswap.RightToLeft = System.Windows.Forms.RightToLeft.No; + btnswap.Size = new System.Drawing.Size(43, 25); + btnswap.TabIndex = 597; + btnswap.Text = "◀▶"; + btnswap.UseVisualStyleBackColor = true; + btnswap.Click += new System.EventHandler(this.btnswap_Click); + enhancedColumnHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer6.Name = "enhancedColumnHeaderRenderer6"; + enhancedColumnHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer6.TextRotationAngle = 0D; + rowHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer6.Name = "rowHeaderRenderer6"; + rowHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer6.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer7.Name = "enhancedColumnHeaderRenderer7"; + enhancedColumnHeaderRenderer7.TextRotationAngle = 0D; + rowHeaderRenderer7.Name = "rowHeaderRenderer7"; + rowHeaderRenderer7.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer4.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer4.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer4.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer4.Name = "enhancedColumnHeaderRenderer4"; + enhancedColumnHeaderRenderer4.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer4.TextRotationAngle = 0D; + rowHeaderRenderer4.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer4.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer4.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer4.Name = "rowHeaderRenderer4"; + rowHeaderRenderer4.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer4.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer5.Name = "enhancedColumnHeaderRenderer5"; + enhancedColumnHeaderRenderer5.TextRotationAngle = 0D; + rowHeaderRenderer5.Name = "rowHeaderRenderer5"; + rowHeaderRenderer5.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer10.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer10.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer10.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer10.Name = "enhancedColumnHeaderRenderer10"; + enhancedColumnHeaderRenderer10.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer10.TextRotationAngle = 0D; + rowHeaderRenderer10.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer10.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer10.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer10.Name = "rowHeaderRenderer10"; + rowHeaderRenderer10.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer10.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer11.Name = "enhancedColumnHeaderRenderer11"; + enhancedColumnHeaderRenderer11.TextRotationAngle = 0D; + rowHeaderRenderer11.Name = "rowHeaderRenderer11"; + rowHeaderRenderer11.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer12.Name = "enhancedColumnHeaderRenderer12"; + enhancedColumnHeaderRenderer12.TextRotationAngle = 0D; + rowHeaderRenderer12.Name = "rowHeaderRenderer12"; + rowHeaderRenderer12.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer8.Name = "enhancedColumnHeaderRenderer8"; + enhancedColumnHeaderRenderer8.TextRotationAngle = 0D; + rowHeaderRenderer8.Name = "rowHeaderRenderer8"; + rowHeaderRenderer8.TextRotationAngle = 0D; + // + // txtSearch + // + this.txtSearch.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txtSearch.Location = new System.Drawing.Point(6, 19); + this.txtSearch.Name = "txtSearch"; + this.txtSearch.Size = new System.Drawing.Size(128, 25); + this.txtSearch.TabIndex = 591; + this.txtSearch.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtSearch_KeyDown); + this.txtSearch.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtSearch_KeyPress); + // + // listBox + // + this.listBox.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.listBox.FormattingEnabled = true; + this.listBox.ItemHeight = 17; + this.listBox.Location = new System.Drawing.Point(5, 50); + this.listBox.Name = "listBox"; + this.listBox.Size = new System.Drawing.Size(201, 225); + this.listBox.TabIndex = 594; + this.listBox.SelectedIndexChanged += new System.EventHandler(this.listBox_SelectedIndexChanged); + this.listBox.DoubleClick += new System.EventHandler(this.listBox_DoubleClick); + // + // btnsearch + // + this.btnsearch.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnsearch.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnsearch.ForeColor = System.Drawing.Color.Black; + this.btnsearch.Image = ((System.Drawing.Image)(resources.GetObject("btnsearch.Image"))); + this.btnsearch.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnsearch.Location = new System.Drawing.Point(138, 17); + this.btnsearch.Name = "btnsearch"; + this.btnsearch.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnsearch.Size = new System.Drawing.Size(67, 26); + this.btnsearch.TabIndex = 592; + this.btnsearch.Text = " 검색"; + this.btnsearch.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnsearch.UseVisualStyleBackColor = true; + this.btnsearch.Click += new System.EventHandler(this.btnsearch_Click); + // + // txt2 + // + this.txt2.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txt2.Location = new System.Drawing.Point(185, 4); + this.txt2.Name = "txt2"; + this.txt2.ReadOnly = true; + this.txt2.Size = new System.Drawing.Size(120, 25); + this.txt2.TabIndex = 598; + // + // txt1 + // + this.txt1.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txt1.Location = new System.Drawing.Point(13, 4); + this.txt1.Name = "txt1"; + this.txt1.ReadOnly = true; + this.txt1.Size = new System.Drawing.Size(120, 25); + this.txt1.TabIndex = 596; + // + // tabp6_1 + // + this.tabp6_1.Controls.Add(this.groupBox4); + this.tabp6_1.Controls.Add(this.btnAdd); + this.tabp6_1.Controls.Add(this.groupBox3); + this.tabp6_1.Controls.Add(this.groupBox2); + this.tabp6_1.Controls.Add(this.groupBox1); + this.tabp6_1.Controls.Add(this.txt1); + this.tabp6_1.Controls.Add(this.txt2); + this.tabp6_1.Controls.Add(btnswap); + this.tabp6_1.Location = new System.Drawing.Point(3, 0); + this.tabp6_1.Name = "tabp6_1"; + this.tabp6_1.Size = new System.Drawing.Size(439, 607); + this.tabp6_1.TabIndex = 599; + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.panel1); + this.groupBox4.Controls.Add(this.txtj); + this.groupBox4.Controls.Add(this.btnsearch2); + this.groupBox4.Controls.Add(this.FpSpread2); + this.groupBox4.Location = new System.Drawing.Point(223, 162); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(189, 155); + this.groupBox4.TabIndex = 605; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "해외 종목"; + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.White; + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.ForeColor = System.Drawing.SystemColors.ButtonShadow; + this.panel1.Location = new System.Drawing.Point(7, 66); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(174, 1); + this.panel1.TabIndex = 622; + // + // txtj + // + this.txtj.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txtj.Location = new System.Drawing.Point(5, 13); + this.txtj.Name = "txtj"; + this.txtj.Size = new System.Drawing.Size(114, 25); + this.txtj.TabIndex = 608; + this.txtj.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtj_KeyPress); + // + // btnsearch2 + // + this.btnsearch2.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnsearch2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnsearch2.ForeColor = System.Drawing.Color.Black; + this.btnsearch2.Location = new System.Drawing.Point(126, 11); + this.btnsearch2.Name = "btnsearch2"; + this.btnsearch2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnsearch2.Size = new System.Drawing.Size(58, 29); + this.btnsearch2.TabIndex = 609; + this.btnsearch2.Text = "검색"; + this.btnsearch2.UseVisualStyleBackColor = true; + this.btnsearch2.Click += new System.EventHandler(this.btnsearch2_Click); + // + // FpSpread2 + // + this.FpSpread2.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, "; + this.FpSpread2.AutoClipboard = false; + this.FpSpread2.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.FpSpread2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FpSpread2.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders; + this.FpSpread2.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + this.FpSpread2.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread2.HorizontalScrollBar.Name = ""; + this.FpSpread2.HorizontalScrollBar.Renderer = defaultScrollBarRenderer1; + this.FpSpread2.HorizontalScrollBar.TabIndex = 363; + this.FpSpread2.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.FpSpread2.Location = new System.Drawing.Point(5, 41); + this.FpSpread2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.FpSpread2.Name = "FpSpread2"; + namedStyle1.BackColor = System.Drawing.SystemColors.Window; + namedStyle1.CellType = generalCellType1; + namedStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle1.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle1.Renderer = generalCellType1; + namedStyle2.BackColor = System.Drawing.SystemColors.Control; + namedStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle2.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle2.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle2.Renderer = cornerRenderer1; + namedStyle2.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(211)))), ((int)(((byte)(220)))), ((int)(((byte)(233))))); + namedStyle3.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle3.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle3.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle3.Renderer = enhancedColumnHeaderRenderer12; + namedStyle3.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle4.BackColor = System.Drawing.SystemColors.Control; + namedStyle4.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle4.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle4.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle4.Renderer = rowHeaderRenderer12; + namedStyle4.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.FpSpread2.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle1, + namedStyle2, + namedStyle3, + namedStyle4}); + this.FpSpread2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.FpSpread2.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.FpSpread2_Sheet1, + this.FpSpread2_Sheet2}); + this.FpSpread2.Size = new System.Drawing.Size(178, 103); + spreadSkin1.ColumnHeaderDefaultStyle = namedStyle3; + spreadSkin1.DefaultStyle = namedStyle4; + spreadSkin1.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + spreadSkin1.Name = "CustomSkin1"; + spreadSkin1.RowHeaderDefaultStyle = namedStyle3; + spreadSkin1.ScrollBarRenderer = defaultScrollBarRenderer2; + spreadSkin1.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(60)))), ((int)(((byte)(97))))), System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(110)))), ((int)(((byte)(170))))), System.Drawing.Drawing2D.LinearGradientMode.Vertical, 30); + this.FpSpread2.Skin = spreadSkin1; + this.FpSpread2.TabIndex = 612; + this.FpSpread2.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.Never; + this.FpSpread2.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Never; + this.FpSpread2.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread2.VerticalScrollBar.Name = ""; + this.FpSpread2.VerticalScrollBar.Renderer = defaultScrollBarRenderer3; + this.FpSpread2.VerticalScrollBar.TabIndex = 364; + this.FpSpread2.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; + this.FpSpread2.CellClick += new FarPoint.Win.Spread.CellClickEventHandler(this.FpSpread2_CellClick_1); + this.FpSpread2.CellDoubleClick += new FarPoint.Win.Spread.CellClickEventHandler(this.FpSpread2_CellDoubleClick); + // + // FpSpread2_Sheet1 + // + this.FpSpread2_Sheet1.Reset(); + this.FpSpread2_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread2_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread2_Sheet1.ColumnCount = 8; + this.FpSpread2_Sheet1.RowCount = 0; + this.FpSpread2_Sheet1.RowHeader.ColumnCount = 0; + this.FpSpread2_Sheet1.ActiveRowIndex = -1; + this.FpSpread2_Sheet1.ActiveSkin = FarPoint.Win.Spread.DefaultSkins.Classic; + this.FpSpread2_Sheet1.ColumnHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 0).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "Index"; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).BackColor = System.Drawing.SystemColors.ActiveCaption; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).Border = emptyBorder1; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "종목"; + this.FpSpread2_Sheet1.ColumnHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.ColumnHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.FpSpread2_Sheet1.Columns.Get(0).Label = "Index"; + this.FpSpread2_Sheet1.Columns.Get(0).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(0).Width = 79F; + this.FpSpread2_Sheet1.Columns.Get(1).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread2_Sheet1.Columns.Get(1).Label = "종목"; + this.FpSpread2_Sheet1.Columns.Get(1).Width = 200F; + this.FpSpread2_Sheet1.Columns.Get(2).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(3).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(4).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(5).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(6).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(7).Visible = false; + this.FpSpread2_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.RowMode; + this.FpSpread2_Sheet1.RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; + this.FpSpread2_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.FpSpread2_Sheet1.RowHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.RowHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.RowHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.SheetCornerStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.FpSpread2.SetActiveViewport(0, -1, 0); + // + // FpSpread2_Sheet2 + // + this.FpSpread2_Sheet2.Reset(); + this.FpSpread2_Sheet2.SheetName = "Sheet2"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread2_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread2_Sheet2.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet2.DefaultStyle.Parent = "RowHeaderDefault"; + this.FpSpread2_Sheet2.RowHeader.Columns.Default.Resizable = false; + this.FpSpread2_Sheet2.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet2.RowHeader.DefaultStyle.Parent = "ColumnHeaderEnhanced"; + this.FpSpread2_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + // + // btnAdd + // + this.btnAdd.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnAdd.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnAdd.ForeColor = System.Drawing.Color.Black; + this.btnAdd.Location = new System.Drawing.Point(322, 2); + this.btnAdd.Name = "btnAdd"; + this.btnAdd.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnAdd.Size = new System.Drawing.Size(84, 29); + this.btnAdd.TabIndex = 603; + this.btnAdd.Text = "추가"; + this.btnAdd.UseVisualStyleBackColor = true; + this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.label1); + this.groupBox3.Controls.Add(this.dataGridView1); + this.groupBox3.Controls.Add(this.panel2); + this.groupBox3.Controls.Add(this.btn4); + this.groupBox3.Controls.Add(this.btn3); + this.groupBox3.Controls.Add(this.btn2); + this.groupBox3.Controls.Add(this.btn1); + this.groupBox3.Controls.Add(this.FpSpread); + this.groupBox3.Location = new System.Drawing.Point(7, 321); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(405, 266); + this.groupBox3.TabIndex = 602; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "설정리스트"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(189, 2); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(223, 15); + this.label1.TabIndex = 620; + this.label1.Text = "해외시세는 현재가2열판 비교만 됩니다."; + // + // dataGridView1 + // + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Location = new System.Drawing.Point(140, 203); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowTemplate.Height = 23; + this.dataGridView1.Size = new System.Drawing.Size(159, 63); + this.dataGridView1.TabIndex = 617; + this.dataGridView1.Visible = false; + // + // panel2 + // + this.panel2.BackColor = System.Drawing.Color.White; + this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel2.ForeColor = System.Drawing.SystemColors.ButtonShadow; + this.panel2.Location = new System.Drawing.Point(8, 46); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(300, 1); + this.panel2.TabIndex = 618; + // + // btn4 + // + this.btn4.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn4.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn4.ForeColor = System.Drawing.Color.Black; + this.btn4.Location = new System.Drawing.Point(323, 189); + this.btn4.Name = "btn4"; + this.btn4.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn4.Size = new System.Drawing.Size(74, 27); + this.btn4.TabIndex = 592; + this.btn4.Text = "DOWN"; + this.btn4.UseVisualStyleBackColor = true; + this.btn4.Click += new System.EventHandler(this.btn4_Click); + // + // btn3 + // + this.btn3.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn3.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn3.ForeColor = System.Drawing.Color.Black; + this.btn3.Location = new System.Drawing.Point(323, 153); + this.btn3.Name = "btn3"; + this.btn3.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn3.Size = new System.Drawing.Size(74, 27); + this.btn3.TabIndex = 591; + this.btn3.Text = "UP"; + this.btn3.UseVisualStyleBackColor = true; + this.btn3.Click += new System.EventHandler(this.btn3_Click); + // + // btn2 + // + this.btn2.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn2.ForeColor = System.Drawing.Color.Black; + this.btn2.Location = new System.Drawing.Point(323, 117); + this.btn2.Name = "btn2"; + this.btn2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn2.Size = new System.Drawing.Size(74, 27); + this.btn2.TabIndex = 590; + this.btn2.Text = "DEL ALL"; + this.btn2.UseVisualStyleBackColor = true; + this.btn2.Click += new System.EventHandler(this.btn2_Click); + // + // btn1 + // + this.btn1.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn1.ForeColor = System.Drawing.Color.Black; + this.btn1.Location = new System.Drawing.Point(323, 81); + this.btn1.Name = "btn1"; + this.btn1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn1.Size = new System.Drawing.Size(74, 27); + this.btn1.TabIndex = 589; + this.btn1.Text = "DEL"; + this.btn1.UseVisualStyleBackColor = true; + this.btn1.Click += new System.EventHandler(this.btn1_Click); + // + // FpSpread + // + this.FpSpread.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, "; + this.FpSpread.AutoClipboard = false; + this.FpSpread.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.FpSpread.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FpSpread.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders; + this.FpSpread.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + this.FpSpread.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread.HorizontalScrollBar.Name = ""; + this.FpSpread.HorizontalScrollBar.Renderer = defaultScrollBarRenderer4; + this.FpSpread.HorizontalScrollBar.TabIndex = 345; + this.FpSpread.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.FpSpread.Location = new System.Drawing.Point(5, 22); + this.FpSpread.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.FpSpread.MoveActiveOnFocus = false; + this.FpSpread.Name = "FpSpread"; + namedStyle5.BackColor = System.Drawing.SystemColors.Window; + namedStyle5.CellType = generalCellType2; + namedStyle5.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle5.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle5.Renderer = generalCellType2; + namedStyle6.BackColor = System.Drawing.SystemColors.Control; + namedStyle6.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle6.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle6.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle6.Renderer = cornerRenderer2; + namedStyle6.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(211)))), ((int)(((byte)(220)))), ((int)(((byte)(233))))); + namedStyle7.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle7.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle7.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle7.Renderer = enhancedColumnHeaderRenderer11; + namedStyle7.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle8.BackColor = System.Drawing.SystemColors.Control; + namedStyle8.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle8.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle8.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle8.Renderer = rowHeaderRenderer11; + namedStyle8.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.FpSpread.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle5, + namedStyle6, + namedStyle7, + namedStyle8}); + this.FpSpread.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.FpSpread.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.FpSpread_Sheet1, + this.FpSpread_Sheet2}); + this.FpSpread.Size = new System.Drawing.Size(305, 208); + spreadSkin2.ColumnHeaderDefaultStyle = namedStyle7; + spreadSkin2.DefaultStyle = namedStyle8; + spreadSkin2.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + spreadSkin2.Name = "CustomSkin1"; + spreadSkin2.RowHeaderDefaultStyle = namedStyle7; + spreadSkin2.ScrollBarRenderer = defaultScrollBarRenderer5; + spreadSkin2.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(60)))), ((int)(((byte)(97))))), System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(110)))), ((int)(((byte)(170))))), System.Drawing.Drawing2D.LinearGradientMode.Vertical, 30); + this.FpSpread.Skin = spreadSkin2; + this.FpSpread.TabIndex = 0; + this.FpSpread.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.Never; + this.FpSpread.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Never; + this.FpSpread.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread.VerticalScrollBar.Name = ""; + this.FpSpread.VerticalScrollBar.Renderer = defaultScrollBarRenderer6; + this.FpSpread.VerticalScrollBar.TabIndex = 346; + this.FpSpread.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; + this.FpSpread.CellClick += new FarPoint.Win.Spread.CellClickEventHandler(this.FpSpread_CellClick); + // + // FpSpread_Sheet1 + // + this.FpSpread_Sheet1.Reset(); + this.FpSpread_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread_Sheet1.ColumnCount = 8; + this.FpSpread_Sheet1.RowCount = 0; + this.FpSpread_Sheet1.RowHeader.ColumnCount = 0; + this.FpSpread_Sheet1.ActiveRowIndex = -1; + this.FpSpread_Sheet1.ActiveSkin = FarPoint.Win.Spread.DefaultSkins.Classic; + this.FpSpread_Sheet1.ColumnHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers; + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 0).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "Index"; + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).BackColor = System.Drawing.SystemColors.ActiveCaption; + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).Border = emptyBorder2; + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "Set List"; + this.FpSpread_Sheet1.ColumnHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread_Sheet1.ColumnHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.FpSpread_Sheet1.Columns.Get(0).Label = "Index"; + this.FpSpread_Sheet1.Columns.Get(0).Width = 66F; + this.FpSpread_Sheet1.Columns.Get(1).Label = "Set List"; + this.FpSpread_Sheet1.Columns.Get(1).Width = 262F; + this.FpSpread_Sheet1.Columns.Get(2).Visible = false; + this.FpSpread_Sheet1.Columns.Get(3).Visible = false; + this.FpSpread_Sheet1.Columns.Get(4).Visible = false; + this.FpSpread_Sheet1.Columns.Get(5).Visible = false; + this.FpSpread_Sheet1.Columns.Get(6).Visible = false; + this.FpSpread_Sheet1.Columns.Get(7).Visible = false; + this.FpSpread_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.RowMode; + this.FpSpread_Sheet1.RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; + this.FpSpread_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.FpSpread_Sheet1.RowHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet1.RowHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread_Sheet1.RowHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet1.SheetCornerStyle.Parent = "HeaderDefault"; + this.FpSpread_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.FpSpread.SetActiveViewport(0, -1, 0); + // + // FpSpread_Sheet2 + // + this.FpSpread_Sheet2.Reset(); + this.FpSpread_Sheet2.SheetName = "Sheet2"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread_Sheet2.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet2.DefaultStyle.Parent = "RowHeaderDefault"; + this.FpSpread_Sheet2.RowHeader.Columns.Default.Resizable = false; + this.FpSpread_Sheet2.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet2.RowHeader.DefaultStyle.Parent = "ColumnHeaderEnhanced"; + this.FpSpread_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.listBox1); + this.groupBox2.Location = new System.Drawing.Point(222, 31); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(189, 131); + this.groupBox2.TabIndex = 601; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "지수"; + // + // listBox1 + // + this.listBox1.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.listBox1.FormattingEnabled = true; + this.listBox1.ItemHeight = 17; + this.listBox1.Location = new System.Drawing.Point(5, 19); + this.listBox1.Name = "listBox1"; + this.listBox1.Size = new System.Drawing.Size(178, 106); + this.listBox1.TabIndex = 594; + this.listBox1.DoubleClick += new System.EventHandler(this.listBox1_DoubleClick); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.txtSearch); + this.groupBox1.Controls.Add(this.listBox); + this.groupBox1.Controls.Add(this.btnsearch); + this.groupBox1.Location = new System.Drawing.Point(6, 31); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(211, 287); + this.groupBox1.TabIndex = 600; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "종목"; + // + // UC3 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.tabp6_1); + this.Name = "UC3"; + this.Size = new System.Drawing.Size(473, 640); + this.Load += new System.EventHandler(this.UC3_Load); + this.tabp6_1.ResumeLayout(false); + this.tabp6_1.PerformLayout(); + this.groupBox4.ResumeLayout(false); + this.groupBox4.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet2)).EndInit(); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet2)).EndInit(); + this.groupBox2.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.TextBox txtSearch; + private System.Windows.Forms.ListBox listBox; + private System.Windows.Forms.Button btnsearch; + private System.Windows.Forms.TextBox txt2; + private System.Windows.Forms.TextBox txt1; + private System.Windows.Forms.Panel tabp6_1; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.ListBox listBox1; + private System.Windows.Forms.GroupBox groupBox1; + public FarPoint.Win.Spread.FpSpread FpSpread; + public FarPoint.Win.Spread.SheetView FpSpread_Sheet1; + public FarPoint.Win.Spread.SheetView FpSpread_Sheet2; + private System.Windows.Forms.Button btn4; + private System.Windows.Forms.Button btn3; + private System.Windows.Forms.Button btn2; + private System.Windows.Forms.Button btn1; + private System.Windows.Forms.Button btnAdd; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.GroupBox groupBox4; + private System.Windows.Forms.Button btnsearch2; + private System.Windows.Forms.TextBox txtj; + private System.Windows.Forms.DataGridView dataGridView1; + public FarPoint.Win.Spread.FpSpread FpSpread2; + public FarPoint.Win.Spread.SheetView FpSpread2_Sheet1; + public FarPoint.Win.Spread.SheetView FpSpread2_Sheet2; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label1; + } +} diff --git a/MBN_STOCK_N/Control/UC3.cs b/MBN_STOCK_N/Control/UC3.cs new file mode 100644 index 0000000..252e249 --- /dev/null +++ b/MBN_STOCK_N/Control/UC3.cs @@ -0,0 +1,265 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Runtime.InteropServices; +using System.Diagnostics; +using System.Windows; +using FarPoint.Win.Spread; + +namespace MBN_STOCK_N +{ + public partial class UC3 : UserControl + { + MainForm mf = null; + + public UC3() + { + InitializeComponent(); + } + + + public UC3(Form frm) + { + mf = (MainForm)frm; + InitializeComponent(); + + } + + private void UC3_Load(object sender, EventArgs e) + { + mf.INI_parser(Environment.CurrentDirectory + @"\Res\종목비교.ini"); + listBox1.Items.Clear(); + for (int j = 0; j < mf.m_row[0]; j++) + { + listBox1.Items.Add(mf.m_sbuf[0, j]); + } + FpSpread.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + FpSpread2.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + Data_Load(); + FpSpread.Focus(); + } + + private void Data_Load() + { + FpSpread.ActiveSheet.ClearRange(0, 0, FpSpread.ActiveSheet.RowCount, FpSpread.ActiveSheet.ColumnCount, true); + + if (FpSpread.ActiveSheet.RowCount != 0) + FpSpread.ActiveSheet.RemoveRows(0, FpSpread.ActiveSheet.RowCount); + + mf.ReadListFile(mf.m_DataPath + "종목비교.dat", '^', FpSpread.ActiveSheet, mf.m_DataPath, FpSpread, 0); + } + + protected override void OnKeyDown(KeyEventArgs e) + { + + //if (e.KeyCode == Keys.Enter) + //{ + // mf.searchStock(listBox, txtSearch); + //} + //base.OnKeyDown(e); + } + + private void button2_Click(object sender, EventArgs e) + { + mf.searchStock(listBox, txtSearch); + } + + private void btnsearch_Click(object sender, EventArgs e) + { + mf.searchStock(listBox, txtSearch); + } + + private void txtSearch_KeyDown(object sender, KeyEventArgs e) + { + this.OnKeyDown(e); + } + + private void listBox_DoubleClick(object sender, EventArgs e) + { + string tmp = txt1.Text; + txt1.Text = (string)listBox.SelectedItem; + txt2.Text = tmp; + } + + private void listBox_SelectedIndexChanged(object sender, EventArgs e) + { + + } + + private void btnswap_Click(object sender, EventArgs e) + { + string tmp = txt1.Text; + txt1.Text = txt2.Text; + txt2.Text = tmp; + } + + private void listBox1_DoubleClick(object sender, EventArgs e) + { + string tmp = txt1.Text; + txt1.Text = (string)listBox1.SelectedItem; + txt2.Text = tmp; + } + + private void btnAdd_Click(object sender, EventArgs e) + { + string str = string.Empty; + string data1 = string.Empty; + string data2 = string.Empty; + + if (txt1.Text == "" || txt2.Text == "") return; + + int row = FpSpread.ActiveSheet.RowCount + 1; + mf.InsertRow(FpSpread, FpSpread.ActiveSheet, row, 1, 0); + + FpSpread.ActiveSheet.SetText(row - 1, 0, row.ToString()); + FpSpread.ActiveSheet.SetText(row - 1, 1, txt1.Text + "," + txt2.Text); + + str = mf.jongmokCode(txt1.Text); + + if (str != "") + { + //data1 = str.Substring(0, str.IndexOf('/')); + data2 = str.Substring(str.IndexOf('/') + 1, str.Length - str.IndexOf('/') - 1); + FpSpread.ActiveSheet.SetText(row - 1, 2, data2); + } + + str = mf.jongmokCode(txt2.Text); + + if (str != "") + { + //data1 = str.Substring(0, str.IndexOf('/')); + data2 = str.Substring(str.IndexOf('/') + 1, str.Length - str.IndexOf('/') - 1); + FpSpread.ActiveSheet.SetText(row - 1, 3, data2); + } + + + File_Save(); + } + + //파일삭제 + private void btn1_Click(object sender, EventArgs e) + { + if (FpSpread.ActiveSheet.ActiveRowIndex + 1 > 0) + { + FpSpread.ActiveSheet.RemoveRows(FpSpread.ActiveSheet.ActiveRowIndex, 1); + } + File_Save(); + } + + //전체삭제 + private void btn2_Click(object sender, EventArgs e) + { + if (MessageBox.Show("모두 삭제하겠습니까?", "MmoneyCoder", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + FpSpread.ActiveSheet.ClearRange(0, 0, FpSpread.ActiveSheet.RowCount, FpSpread.ActiveSheet.ColumnCount, true); + if (FpSpread.ActiveSheet.RowCount != 0) + FpSpread.ActiveSheet.RemoveRows(0, FpSpread.ActiveSheet.RowCount); + File_Save(); + } + } + + //up + private void btn3_Click(object sender, EventArgs e) + { + mf.Spd_UpDown(FpSpread, FpSpread.ActiveSheet, 0, 1); + File_Save(); + } + + //down + private void btn4_Click(object sender, EventArgs e) + { + mf.Spd_UpDown(FpSpread, FpSpread.ActiveSheet, 1, 1); + File_Save(); + } + + private void File_Save() + { + + if (FpSpread.ActiveSheet.RowCount != 0) + mf.WriteListFile(mf.m_DataPath + "종목비교.dat", FpSpread.ActiveSheet, "^"); + + FpSpread.Focus(); + } + + private void txtSearch_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == (char)Keys.Enter) + { + e.Handled = true; + mf.searchStock(listBox, txtSearch); + } + } + + private void FpSpread2_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e) + { + + } + + private void btnsearch2_Click(object sender, EventArgs e) + { + jongmok_search(); + } + + private void jongmok_search() + { + string query = string.Empty; + + FpSpread2.ActiveSheet.ClearRange(0, 0, FpSpread2.ActiveSheet.RowCount, FpSpread2.ActiveSheet.ColumnCount, true); + if (FpSpread2.ActiveSheet.RowCount != 0) + FpSpread2.ActiveSheet.RemoveRows(0, FpSpread2.ActiveSheet.RowCount); + + if (txtj.Text == "") + { + query = "select F_INPUT_NAME, f_symb from t_world_ix_eq_master WHERE f_fdtc = '1' and (f_natc = 'US' or f_natc = 'TW') ORDER BY F_INPUT_NAME"; + } + else + { + query = "select F_INPUT_NAME, f_symb from t_world_ix_eq_master WHERE f_fdtc = '1' and (f_natc = 'US' or f_natc = 'TW') and UPPER(F_INPUT_NAME) like '%" + txtj.Text.ToUpper() + "%' ORDER BY F_INPUT_NAME"; + } + + mf.m_db.ViewQuery(dataGridView1, query); + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + mf.InsertRow(FpSpread2, FpSpread2.ActiveSheet, FpSpread2.ActiveSheet.RowCount + 1, 1, 0); + FpSpread2.ActiveSheet.SetText(i, 0, dataGridView1.Rows[i].Cells[1].Value.ToString()); + FpSpread2.ActiveSheet.SetText(i, 1, dataGridView1.Rows[i].Cells[0].Value.ToString()); + //FpSpread2.ActiveSheet.SetText(i, 2, dataGridView1.Rows[i].Cells[2].Value.ToString()); + } + } + + private void FpSpread2_CellClick_1(object sender, CellClickEventArgs e) + { + + } + + private void FpSpread2_CellDoubleClick(object sender, CellClickEventArgs e) + { + string tmp = txt1.Text; + txt1.Text = (string)listBox1.SelectedItem; + + txt1.Text = FpSpread2.ActiveSheet.GetText(e.Row, 1); + txt2.Text = tmp; + } + + private void txtj_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == (char)Keys.Enter) + { + e.Handled = true; + jongmok_search(); + } + } + + private void FpSpread_CellClick(object sender, CellClickEventArgs e) + { + + } + } +} diff --git a/MBN_STOCK_N/Control/UC3.resx b/MBN_STOCK_N/Control/UC3.resx new file mode 100644 index 0000000..18bc3dc --- /dev/null +++ b/MBN_STOCK_N/Control/UC3.resx @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAmdEVYdFRpdGxlAEZpbmQ7QmFycztSaWJib247U3Rh + bmRhcmQ7U2VhcmNou2WcCAAAALlJREFUOE+lktsRgjAQRaEdakgpFGEFoj3QBaM1+SNtxHuY3QyziegM + Hydk9j4gQJdzPsW2pJSgF6NYxGqwZ4ZWhWFbzHAT+QtofQyDF3AXjG8xicFgzwxtjGHwAh4V0xQNzExb + ogZu4ryYhmhgZtoaNXDT6YLTRzh6iczhIfAW9gW/PqNzFc0CL2n9SE/RLCkFR5j5LqoS9CoQwWjEkhm9 + GdojY7mKfcmLeRVoYWFnJiwuaM3A/+TuA3z+LAyTGFNzAAAAAElFTkSuQmCC + + + + 670, 157 + + + 824, 157 + + + 510, 118 + + + 664, 118 + + \ No newline at end of file diff --git a/MBN_STOCK_N/Control/UC4.Designer.cs b/MBN_STOCK_N/Control/UC4.Designer.cs new file mode 100644 index 0000000..08048df --- /dev/null +++ b/MBN_STOCK_N/Control/UC4.Designer.cs @@ -0,0 +1,793 @@ + +namespace MBN_STOCK_N +{ + partial class UC4 + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer4 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer4 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer5 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer5 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer6 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer6 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer1 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer1 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer2 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer2 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer3 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer3 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer7 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer7 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer8 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer8 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer9 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer9 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer10 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer10 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer11 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer11 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer12 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer12 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer13 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer13 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer17 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer17 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer14 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer14 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer15 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer15 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer16 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer16 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer18 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer18 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer1 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle1 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType1 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.NamedStyle namedStyle2 = new FarPoint.Win.Spread.NamedStyle("CornerDefault"); + FarPoint.Win.Spread.CellType.CornerRenderer cornerRenderer1 = new FarPoint.Win.Spread.CellType.CornerRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle3 = new FarPoint.Win.Spread.NamedStyle("ColumnHeaderEnhanced"); + FarPoint.Win.Spread.NamedStyle namedStyle4 = new FarPoint.Win.Spread.NamedStyle("RowHeaderDefault"); + FarPoint.Win.Spread.SpreadSkin spreadSkin1 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer2 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer3 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.EmptyBorder emptyBorder1 = new FarPoint.Win.EmptyBorder(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer4 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle5 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType2 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.NamedStyle namedStyle6 = new FarPoint.Win.Spread.NamedStyle("CornerDefault"); + FarPoint.Win.Spread.CellType.CornerRenderer cornerRenderer2 = new FarPoint.Win.Spread.CellType.CornerRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle7 = new FarPoint.Win.Spread.NamedStyle("ColumnHeaderEnhanced"); + FarPoint.Win.Spread.NamedStyle namedStyle8 = new FarPoint.Win.Spread.NamedStyle("RowHeaderDefault"); + FarPoint.Win.Spread.SpreadSkin spreadSkin2 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer5 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer6 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.EmptyBorder emptyBorder2 = new FarPoint.Win.EmptyBorder(); + this.btn1 = new System.Windows.Forms.Button(); + this.txts = new System.Windows.Forms.TextBox(); + this.btn2 = new System.Windows.Forms.Button(); + this.btn3 = new System.Windows.Forms.Button(); + this.btn4 = new System.Windows.Forms.Button(); + this.FpSpread1 = new FarPoint.Win.Spread.FpSpread(); + this.FpSpread1_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread1_Sheet2 = new FarPoint.Win.Spread.SheetView(); + this.btnpre = new System.Windows.Forms.Button(); + this.btnnow = new System.Windows.Forms.Button(); + this.FpSpread2 = new FarPoint.Win.Spread.FpSpread(); + this.FpSpread2_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread2_Sheet2 = new FarPoint.Win.Spread.SheetView(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.btnnow_6 = new System.Windows.Forms.Button(); + this.btnnow_12 = new System.Windows.Forms.Button(); + this.panel3 = new System.Windows.Forms.Panel(); + this.rb_up_rate = new System.Windows.Forms.RadioButton(); + this.rb_input = new System.Windows.Forms.RadioButton(); + this.rb_down_rate = new System.Windows.Forms.RadioButton(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.panel3.SuspendLayout(); + this.SuspendLayout(); + enhancedColumnHeaderRenderer4.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer4.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer4.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer4.Name = "enhancedColumnHeaderRenderer4"; + enhancedColumnHeaderRenderer4.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer4.TextRotationAngle = 0D; + rowHeaderRenderer4.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer4.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer4.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer4.Name = "rowHeaderRenderer4"; + rowHeaderRenderer4.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer4.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer5.Name = "enhancedColumnHeaderRenderer5"; + enhancedColumnHeaderRenderer5.TextRotationAngle = 0D; + rowHeaderRenderer5.Name = "rowHeaderRenderer5"; + rowHeaderRenderer5.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer6.Name = "enhancedColumnHeaderRenderer6"; + enhancedColumnHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer6.TextRotationAngle = 0D; + rowHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer6.Name = "rowHeaderRenderer6"; + rowHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer6.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer1.Name = "enhancedColumnHeaderRenderer1"; + enhancedColumnHeaderRenderer1.TextRotationAngle = 0D; + rowHeaderRenderer1.Name = "rowHeaderRenderer1"; + rowHeaderRenderer1.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer2.Name = "enhancedColumnHeaderRenderer2"; + enhancedColumnHeaderRenderer2.TextRotationAngle = 0D; + rowHeaderRenderer2.Name = "rowHeaderRenderer2"; + rowHeaderRenderer2.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer3.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer3.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer3.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer3.Name = "enhancedColumnHeaderRenderer3"; + enhancedColumnHeaderRenderer3.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer3.TextRotationAngle = 0D; + rowHeaderRenderer3.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer3.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer3.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer3.Name = "rowHeaderRenderer3"; + rowHeaderRenderer3.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer3.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer7.Name = "enhancedColumnHeaderRenderer7"; + enhancedColumnHeaderRenderer7.TextRotationAngle = 0D; + rowHeaderRenderer7.Name = "rowHeaderRenderer7"; + rowHeaderRenderer7.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer8.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer8.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer8.Name = "enhancedColumnHeaderRenderer8"; + enhancedColumnHeaderRenderer8.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer8.TextRotationAngle = 0D; + rowHeaderRenderer8.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer8.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer8.Name = "rowHeaderRenderer8"; + rowHeaderRenderer8.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer8.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer9.Name = "enhancedColumnHeaderRenderer9"; + enhancedColumnHeaderRenderer9.TextRotationAngle = 0D; + rowHeaderRenderer9.Name = "rowHeaderRenderer9"; + rowHeaderRenderer9.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer10.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer10.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer10.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer10.Name = "enhancedColumnHeaderRenderer10"; + enhancedColumnHeaderRenderer10.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer10.TextRotationAngle = 0D; + rowHeaderRenderer10.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer10.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer10.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer10.Name = "rowHeaderRenderer10"; + rowHeaderRenderer10.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer10.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer11.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer11.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer11.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer11.Name = "enhancedColumnHeaderRenderer11"; + enhancedColumnHeaderRenderer11.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer11.TextRotationAngle = 0D; + rowHeaderRenderer11.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer11.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer11.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer11.Name = "rowHeaderRenderer11"; + rowHeaderRenderer11.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer11.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer12.Name = "enhancedColumnHeaderRenderer12"; + enhancedColumnHeaderRenderer12.TextRotationAngle = 0D; + rowHeaderRenderer12.Name = "rowHeaderRenderer12"; + rowHeaderRenderer12.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer13.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer13.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer13.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer13.Name = "enhancedColumnHeaderRenderer13"; + enhancedColumnHeaderRenderer13.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer13.TextRotationAngle = 0D; + rowHeaderRenderer13.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer13.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer13.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer13.Name = "rowHeaderRenderer13"; + rowHeaderRenderer13.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer13.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer17.Name = "enhancedColumnHeaderRenderer17"; + enhancedColumnHeaderRenderer17.TextRotationAngle = 0D; + rowHeaderRenderer17.Name = "rowHeaderRenderer17"; + rowHeaderRenderer17.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer14.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer14.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer14.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer14.Name = "enhancedColumnHeaderRenderer14"; + enhancedColumnHeaderRenderer14.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer14.TextRotationAngle = 0D; + rowHeaderRenderer14.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer14.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer14.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer14.Name = "rowHeaderRenderer14"; + rowHeaderRenderer14.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer14.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer15.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer15.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer15.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer15.Name = "enhancedColumnHeaderRenderer15"; + enhancedColumnHeaderRenderer15.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer15.TextRotationAngle = 0D; + rowHeaderRenderer15.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer15.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer15.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer15.Name = "rowHeaderRenderer15"; + rowHeaderRenderer15.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer15.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer16.Name = "enhancedColumnHeaderRenderer16"; + enhancedColumnHeaderRenderer16.TextRotationAngle = 0D; + rowHeaderRenderer16.Name = "rowHeaderRenderer16"; + rowHeaderRenderer16.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer18.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer18.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer18.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer18.Name = "enhancedColumnHeaderRenderer18"; + enhancedColumnHeaderRenderer18.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer18.TextRotationAngle = 0D; + rowHeaderRenderer18.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer18.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer18.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer18.Name = "rowHeaderRenderer18"; + rowHeaderRenderer18.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer18.TextRotationAngle = 0D; + // + // btn1 + // + this.btn1.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn1.ForeColor = System.Drawing.Color.Black; + this.btn1.Location = new System.Drawing.Point(147, 6); + this.btn1.Name = "btn1"; + this.btn1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn1.Size = new System.Drawing.Size(69, 24); + this.btn1.TabIndex = 607; + this.btn1.Text = "테마검색"; + this.btn1.UseVisualStyleBackColor = true; + this.btn1.Click += new System.EventHandler(this.btn1_Click); + // + // txts + // + this.txts.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txts.Location = new System.Drawing.Point(3, 6); + this.txts.Name = "txts"; + this.txts.Size = new System.Drawing.Size(138, 25); + this.txts.TabIndex = 604; + this.txts.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txts_KeyDown); + // + // btn2 + // + this.btn2.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn2.ForeColor = System.Drawing.Color.Black; + this.btn2.Location = new System.Drawing.Point(219, 6); + this.btn2.Name = "btn2"; + this.btn2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn2.Size = new System.Drawing.Size(64, 24); + this.btn2.TabIndex = 608; + this.btn2.Text = "테마추가"; + this.btn2.UseVisualStyleBackColor = true; + this.btn2.Click += new System.EventHandler(this.btn2_Click); + // + // btn3 + // + this.btn3.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn3.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn3.ForeColor = System.Drawing.Color.Black; + this.btn3.Location = new System.Drawing.Point(286, 6); + this.btn3.Name = "btn3"; + this.btn3.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn3.Size = new System.Drawing.Size(64, 24); + this.btn3.TabIndex = 609; + this.btn3.Text = "테마편집"; + this.btn3.UseVisualStyleBackColor = true; + this.btn3.Click += new System.EventHandler(this.btn3_Click); + // + // btn4 + // + this.btn4.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn4.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn4.ForeColor = System.Drawing.Color.Black; + this.btn4.Location = new System.Drawing.Point(353, 6); + this.btn4.Name = "btn4"; + this.btn4.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn4.Size = new System.Drawing.Size(64, 24); + this.btn4.TabIndex = 610; + this.btn4.Text = "테마삭제"; + this.btn4.UseVisualStyleBackColor = true; + this.btn4.Click += new System.EventHandler(this.btn4_Click); + // + // FpSpread1 + // + this.FpSpread1.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, "; + this.FpSpread1.AutoClipboard = false; + this.FpSpread1.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.FpSpread1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FpSpread1.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders; + this.FpSpread1.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + this.FpSpread1.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread1.HorizontalScrollBar.Name = ""; + this.FpSpread1.HorizontalScrollBar.Renderer = defaultScrollBarRenderer1; + this.FpSpread1.HorizontalScrollBar.TabIndex = 0; + this.FpSpread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.FpSpread1.Location = new System.Drawing.Point(3, 38); + this.FpSpread1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.FpSpread1.Name = "FpSpread1"; + namedStyle1.BackColor = System.Drawing.SystemColors.Window; + namedStyle1.CellType = generalCellType1; + namedStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle1.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle1.Renderer = generalCellType1; + namedStyle2.BackColor = System.Drawing.SystemColors.Control; + namedStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle2.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle2.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle2.Renderer = cornerRenderer1; + namedStyle2.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(211)))), ((int)(((byte)(220)))), ((int)(((byte)(233))))); + namedStyle3.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle3.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle3.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle3.Renderer = enhancedColumnHeaderRenderer16; + namedStyle3.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle4.BackColor = System.Drawing.SystemColors.Control; + namedStyle4.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle4.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle4.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle4.Renderer = rowHeaderRenderer16; + namedStyle4.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.FpSpread1.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle1, + namedStyle2, + namedStyle3, + namedStyle4}); + this.FpSpread1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.FpSpread1.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.FpSpread1_Sheet1, + this.FpSpread1_Sheet2}); + this.FpSpread1.Size = new System.Drawing.Size(416, 455); + spreadSkin1.ColumnHeaderDefaultStyle = namedStyle3; + spreadSkin1.DefaultStyle = namedStyle4; + spreadSkin1.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + spreadSkin1.Name = "CustomSkin1"; + spreadSkin1.RowHeaderDefaultStyle = namedStyle3; + spreadSkin1.ScrollBarRenderer = defaultScrollBarRenderer2; + spreadSkin1.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(60)))), ((int)(((byte)(97))))), System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(110)))), ((int)(((byte)(170))))), System.Drawing.Drawing2D.LinearGradientMode.Vertical, 30); + this.FpSpread1.Skin = spreadSkin1; + this.FpSpread1.TabIndex = 611; + this.FpSpread1.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.Never; + this.FpSpread1.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Never; + this.FpSpread1.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread1.VerticalScrollBar.Name = ""; + this.FpSpread1.VerticalScrollBar.Renderer = defaultScrollBarRenderer3; + this.FpSpread1.VerticalScrollBar.TabIndex = 374; + this.FpSpread1.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; + this.FpSpread1.CellClick += new FarPoint.Win.Spread.CellClickEventHandler(this.FpSpread1_CellClick); + this.FpSpread1.CellDoubleClick += new FarPoint.Win.Spread.CellClickEventHandler(this.FpSpread1_CellDoubleClick); + this.FpSpread1.DoubleClick += new System.EventHandler(this.FpSpread1_DoubleClick); + // + // FpSpread1_Sheet1 + // + this.FpSpread1_Sheet1.Reset(); + this.FpSpread1_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread1_Sheet1.ColumnCount = 9; + this.FpSpread1_Sheet1.RowCount = 0; + this.FpSpread1_Sheet1.RowHeader.ColumnCount = 0; + this.FpSpread1_Sheet1.ActiveRowIndex = -1; + this.FpSpread1_Sheet1.ActiveSkin = FarPoint.Win.Spread.DefaultSkins.Classic; + this.FpSpread1_Sheet1.ColumnHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "테마명"; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 2).BackColor = System.Drawing.SystemColors.ActiveCaption; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 2).Border = emptyBorder1; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 2).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 2).Value = "Set List"; + this.FpSpread1_Sheet1.ColumnHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.ColumnHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.FpSpread1_Sheet1.Columns.Get(0).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(0).Width = 59F; + this.FpSpread1_Sheet1.Columns.Get(1).Label = "테마명"; + this.FpSpread1_Sheet1.Columns.Get(1).Width = 455F; + this.FpSpread1_Sheet1.Columns.Get(2).Label = "Set List"; + this.FpSpread1_Sheet1.Columns.Get(2).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(2).Width = 278F; + this.FpSpread1_Sheet1.Columns.Get(3).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(4).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(5).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(6).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(7).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(8).Visible = false; + this.FpSpread1_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.RowMode; + this.FpSpread1_Sheet1.RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; + this.FpSpread1_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.FpSpread1_Sheet1.RowHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.RowHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.RowHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.SheetCornerStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.FpSpread1.SetActiveViewport(0, -1, 0); + // + // FpSpread1_Sheet2 + // + this.FpSpread1_Sheet2.Reset(); + this.FpSpread1_Sheet2.SheetName = "Sheet2"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread1_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread1_Sheet2.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet2.DefaultStyle.Parent = "RowHeaderDefault"; + this.FpSpread1_Sheet2.RowHeader.Columns.Default.Resizable = false; + this.FpSpread1_Sheet2.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet2.RowHeader.DefaultStyle.Parent = "ColumnHeaderEnhanced"; + this.FpSpread1_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + // + // btnpre + // + this.btnpre.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnpre.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnpre.ForeColor = System.Drawing.Color.Black; + this.btnpre.Location = new System.Drawing.Point(337, 519); + this.btnpre.Name = "btnpre"; + this.btnpre.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnpre.Size = new System.Drawing.Size(84, 31); + this.btnpre.TabIndex = 613; + this.btnpre.Text = "예상체결가"; + this.btnpre.UseVisualStyleBackColor = true; + this.btnpre.Click += new System.EventHandler(this.btnpre_Click); + // + // btnnow + // + this.btnnow.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnnow.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnnow.ForeColor = System.Drawing.Color.Black; + this.btnnow.Location = new System.Drawing.Point(245, 519); + this.btnnow.Name = "btnnow"; + this.btnnow.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnnow.Size = new System.Drawing.Size(84, 31); + this.btnnow.TabIndex = 612; + this.btnnow.Text = "현재가"; + this.btnnow.UseVisualStyleBackColor = true; + this.btnnow.Click += new System.EventHandler(this.btnnow_Click); + // + // FpSpread2 + // + this.FpSpread2.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, "; + this.FpSpread2.AutoClipboard = false; + this.FpSpread2.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.FpSpread2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FpSpread2.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders; + this.FpSpread2.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + this.FpSpread2.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread2.HorizontalScrollBar.Name = ""; + this.FpSpread2.HorizontalScrollBar.Renderer = defaultScrollBarRenderer4; + this.FpSpread2.HorizontalScrollBar.TabIndex = 363; + this.FpSpread2.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.FpSpread2.Location = new System.Drawing.Point(3, 557); + this.FpSpread2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.FpSpread2.Name = "FpSpread2"; + namedStyle5.BackColor = System.Drawing.SystemColors.Window; + namedStyle5.CellType = generalCellType2; + namedStyle5.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle5.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle5.Renderer = generalCellType2; + namedStyle6.BackColor = System.Drawing.SystemColors.Control; + namedStyle6.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle6.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle6.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle6.Renderer = cornerRenderer2; + namedStyle6.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(211)))), ((int)(((byte)(220)))), ((int)(((byte)(233))))); + namedStyle7.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle7.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle7.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle7.Renderer = enhancedColumnHeaderRenderer16; + namedStyle7.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle8.BackColor = System.Drawing.SystemColors.Control; + namedStyle8.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle8.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle8.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle8.Renderer = rowHeaderRenderer16; + namedStyle8.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.FpSpread2.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle5, + namedStyle6, + namedStyle7, + namedStyle8}); + this.FpSpread2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.FpSpread2.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.FpSpread2_Sheet1, + this.FpSpread2_Sheet2}); + this.FpSpread2.Size = new System.Drawing.Size(416, 241); + spreadSkin2.ColumnHeaderDefaultStyle = namedStyle7; + spreadSkin2.DefaultStyle = namedStyle8; + spreadSkin2.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + spreadSkin2.Name = "CustomSkin1"; + spreadSkin2.RowHeaderDefaultStyle = namedStyle7; + spreadSkin2.ScrollBarRenderer = defaultScrollBarRenderer5; + spreadSkin2.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(60)))), ((int)(((byte)(97))))), System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(110)))), ((int)(((byte)(170))))), System.Drawing.Drawing2D.LinearGradientMode.Vertical, 30); + this.FpSpread2.Skin = spreadSkin2; + this.FpSpread2.TabIndex = 614; + this.FpSpread2.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.Never; + this.FpSpread2.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Never; + this.FpSpread2.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread2.VerticalScrollBar.Name = ""; + this.FpSpread2.VerticalScrollBar.Renderer = defaultScrollBarRenderer6; + this.FpSpread2.VerticalScrollBar.TabIndex = 364; + this.FpSpread2.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; + this.FpSpread2.CellClick += new FarPoint.Win.Spread.CellClickEventHandler(this.FpSpread2_CellClick); + // + // FpSpread2_Sheet1 + // + this.FpSpread2_Sheet1.Reset(); + this.FpSpread2_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread2_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread2_Sheet1.ColumnCount = 9; + this.FpSpread2_Sheet1.RowCount = 0; + this.FpSpread2_Sheet1.RowHeader.ColumnCount = 0; + this.FpSpread2_Sheet1.ActiveRowIndex = -1; + this.FpSpread2_Sheet1.ActiveSkin = FarPoint.Win.Spread.DefaultSkins.Classic; + this.FpSpread2_Sheet1.ColumnHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "종목명"; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 2).BackColor = System.Drawing.SystemColors.ActiveCaption; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 2).Border = emptyBorder2; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 2).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 2).Value = "Set List"; + this.FpSpread2_Sheet1.ColumnHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.ColumnHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.FpSpread2_Sheet1.Columns.Get(0).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(1).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + this.FpSpread2_Sheet1.Columns.Get(1).Label = "종목명"; + this.FpSpread2_Sheet1.Columns.Get(1).Width = 455F; + this.FpSpread2_Sheet1.Columns.Get(2).Label = "Set List"; + this.FpSpread2_Sheet1.Columns.Get(2).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(2).Width = 278F; + this.FpSpread2_Sheet1.Columns.Get(3).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(4).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(5).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(6).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(7).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(8).Visible = false; + this.FpSpread2_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.RowMode; + this.FpSpread2_Sheet1.RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; + this.FpSpread2_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.FpSpread2_Sheet1.RowHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.RowHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.RowHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.SheetCornerStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.FpSpread2.SetActiveViewport(0, -1, 0); + // + // FpSpread2_Sheet2 + // + this.FpSpread2_Sheet2.Reset(); + this.FpSpread2_Sheet2.SheetName = "Sheet2"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread2_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread2_Sheet2.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet2.DefaultStyle.Parent = "RowHeaderDefault"; + this.FpSpread2_Sheet2.RowHeader.Columns.Default.Resizable = false; + this.FpSpread2_Sheet2.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet2.RowHeader.DefaultStyle.Parent = "ColumnHeaderEnhanced"; + this.FpSpread2_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + // + // dataGridView1 + // + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Location = new System.Drawing.Point(53, 349); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowTemplate.Height = 23; + this.dataGridView1.Size = new System.Drawing.Size(342, 114); + this.dataGridView1.TabIndex = 615; + this.dataGridView1.Visible = false; + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.White; + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.ForeColor = System.Drawing.SystemColors.ButtonShadow; + this.panel1.Location = new System.Drawing.Point(3, 59); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(413, 1); + this.panel1.TabIndex = 616; + // + // panel2 + // + this.panel2.BackColor = System.Drawing.Color.White; + this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel2.ForeColor = System.Drawing.SystemColors.ButtonShadow; + this.panel2.Location = new System.Drawing.Point(4, 578); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(412, 1); + this.panel2.TabIndex = 617; + // + // timer1 + // + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // btnnow_6 + // + this.btnnow_6.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnnow_6.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnnow_6.ForeColor = System.Drawing.Color.Black; + this.btnnow_6.Location = new System.Drawing.Point(4, 519); + this.btnnow_6.Name = "btnnow_6"; + this.btnnow_6.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnnow_6.Size = new System.Drawing.Size(103, 31); + this.btnnow_6.TabIndex = 618; + this.btnnow_6.Text = "6종목 현재가"; + this.btnnow_6.UseVisualStyleBackColor = true; + this.btnnow_6.Click += new System.EventHandler(this.btnnow_6_Click); + // + // btnnow_12 + // + this.btnnow_12.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnnow_12.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnnow_12.ForeColor = System.Drawing.Color.Black; + this.btnnow_12.Location = new System.Drawing.Point(113, 519); + this.btnnow_12.Name = "btnnow_12"; + this.btnnow_12.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnnow_12.Size = new System.Drawing.Size(103, 31); + this.btnnow_12.TabIndex = 619; + this.btnnow_12.Text = "12종목 현재가"; + this.btnnow_12.UseVisualStyleBackColor = true; + this.btnnow_12.Click += new System.EventHandler(this.btnnow_12_Click); + // + // panel3 + // + this.panel3.Controls.Add(this.rb_down_rate); + this.panel3.Controls.Add(this.rb_up_rate); + this.panel3.Controls.Add(this.rb_input); + this.panel3.Location = new System.Drawing.Point(197, 498); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(222, 22); + this.panel3.TabIndex = 622; + // + // rb_up_rate + // + this.rb_up_rate.AutoSize = true; + this.rb_up_rate.Location = new System.Drawing.Point(71, 2); + this.rb_up_rate.Name = "rb_up_rate"; + this.rb_up_rate.Size = new System.Drawing.Size(71, 16); + this.rb_up_rate.TabIndex = 623; + this.rb_up_rate.Text = "상승률순"; + this.rb_up_rate.UseVisualStyleBackColor = true; + // + // rb_input + // + this.rb_input.AutoSize = true; + this.rb_input.Checked = true; + this.rb_input.Location = new System.Drawing.Point(5, 2); + this.rb_input.Name = "rb_input"; + this.rb_input.Size = new System.Drawing.Size(59, 16); + this.rb_input.TabIndex = 622; + this.rb_input.TabStop = true; + this.rb_input.Text = "입력순"; + this.rb_input.UseVisualStyleBackColor = true; + // + // rb_down_rate + // + this.rb_down_rate.AutoSize = true; + this.rb_down_rate.Location = new System.Drawing.Point(148, 3); + this.rb_down_rate.Name = "rb_down_rate"; + this.rb_down_rate.Size = new System.Drawing.Size(71, 16); + this.rb_down_rate.TabIndex = 624; + this.rb_down_rate.Text = "하락률순"; + this.rb_down_rate.UseVisualStyleBackColor = true; + // + // UC4 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.panel3); + this.Controls.Add(this.btnnow_12); + this.Controls.Add(this.btnnow_6); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel1); + this.Controls.Add(this.dataGridView1); + this.Controls.Add(this.FpSpread2); + this.Controls.Add(this.btnpre); + this.Controls.Add(this.btnnow); + this.Controls.Add(this.FpSpread1); + this.Controls.Add(this.btn4); + this.Controls.Add(this.btn3); + this.Controls.Add(this.btn2); + this.Controls.Add(this.btn1); + this.Controls.Add(this.txts); + this.Name = "UC4"; + this.Size = new System.Drawing.Size(469, 864); + this.Load += new System.EventHandler(this.UC4_Load); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.panel3.ResumeLayout(false); + this.panel3.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button btn1; + private System.Windows.Forms.TextBox txts; + private System.Windows.Forms.Button btn2; + private System.Windows.Forms.Button btn3; + private System.Windows.Forms.Button btn4; + public FarPoint.Win.Spread.FpSpread FpSpread1; + public FarPoint.Win.Spread.SheetView FpSpread1_Sheet1; + public FarPoint.Win.Spread.SheetView FpSpread1_Sheet2; + private System.Windows.Forms.Button btnpre; + private System.Windows.Forms.Button btnnow; + public FarPoint.Win.Spread.FpSpread FpSpread2; + public FarPoint.Win.Spread.SheetView FpSpread2_Sheet1; + public FarPoint.Win.Spread.SheetView FpSpread2_Sheet2; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Button btnnow_6; + private System.Windows.Forms.Button btnnow_12; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.RadioButton rb_up_rate; + private System.Windows.Forms.RadioButton rb_input; + private System.Windows.Forms.RadioButton rb_down_rate; + } +} diff --git a/MBN_STOCK_N/Control/UC4.cs b/MBN_STOCK_N/Control/UC4.cs new file mode 100644 index 0000000..3357308 --- /dev/null +++ b/MBN_STOCK_N/Control/UC4.cs @@ -0,0 +1,440 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics.Eventing.Reader; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MBN_STOCK_N +{ + public partial class UC4 : UserControl + { + MainForm mf = null; + int m_idx = 0; + //DBCon m_db = new DBCon(); + string m_code = string.Empty; + string m_tname = string.Empty; + + public UC4() + { + InitializeComponent(); + } + + + public UC4(Form frm, int idx) + { + mf = (MainForm)frm; + m_idx = idx; + + InitializeComponent(); + FpSpread1.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + FpSpread2.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + + //FpSpread1.ActiveSheet.ClearRange(0, 0, FpSpread1.ActiveSheet.RowCount, FpSpread1.ActiveSheet.ColumnCount, true); + + //if (FpSpread1.ActiveSheet.RowCount != 0) + // FpSpread1.ActiveSheet.RemoveRows(0, FpSpread1.ActiveSheet.RowCount); + + //mf.m_db.ViewQuery(dataGridView1, "SELECT SB_TITLE, SB_CODE FROM SB_LIST"); + + //for (int i = 0; i < dataGridView1.RowCount - 1; i++) + //{ + // mf.InsertRow(FpSpread1, FpSpread1.ActiveSheet, FpSpread1.ActiveSheet.RowCount + 1, 1, 0); + // FpSpread1.ActiveSheet.SetText(i, 1, dataGridView1.Rows[i].Cells[0].Value.ToString()); + // FpSpread1.ActiveSheet.SetText(i, 0, dataGridView1.Rows[i].Cells[1].Value.ToString()); + + //} + + + } + + private void UC4_Load(object sender, EventArgs e) + { + timer1.Start(); + } + + private void FpSpread1_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e) + { + m_code = FpSpread1.ActiveSheet.GetText(e.Row, 0); + m_tname = FpSpread1.ActiveSheet.GetText(e.Row, 1); + string query = string.Empty; + + if (FpSpread2.ActiveSheet.RowCount != 0) + FpSpread2.ActiveSheet.RemoveRows(0, FpSpread2.ActiveSheet.RowCount); + + if (m_tname.Contains("(NXT)")) + { + query = "SELECT a.SB_I_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index " + + " FROM SB_ITEM a, v_all_stock b " + + " WHERE a.SB_M_CODE = '" + m_code + "' " + + " and substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " and b.f_stop_gubun = 'N' " + + " ORDER BY a.SB_I_INDEX"; + + mf.m_db.Nxt_ViewQuery(dataGridView1, query); + } + else + { + query = "SELECT a.SB_I_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index " + + " FROM SB_ITEM a, v_all_stock b " + + " WHERE a.SB_M_CODE = '" + m_code + "' " + + " and substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " and b.f_mkt_halt = 'N' ORDER BY a.SB_I_INDEX"; + + mf.m_db.ViewQuery(dataGridView1, query); + } + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + mf.InsertRow(FpSpread2, FpSpread2.ActiveSheet, FpSpread2.ActiveSheet.RowCount + 1, 1, 0); + FpSpread2.ActiveSheet.SetText(i, 1, dataGridView1.Rows[i].Cells[0].Value.ToString()); + FpSpread2.ActiveSheet.SetText(i, 0, dataGridView1.Rows[i].Cells[1].Value.ToString()); + } + } + + protected override void OnKeyDown(KeyEventArgs e) + { + + if (e.KeyCode == Keys.Enter) + { + GetThemeByKeyword(); + } + base.OnKeyDown(e); + } + + private void btn1_Click(object sender, EventArgs e) + { + GetThemeByKeyword(); + } + + private void GetThemeByKeyword() + { + List addItem_name = new List(); + string name, code; + FpSpread1.ActiveSheet.ClearRange(0, 0, FpSpread1.ActiveSheet.RowCount, FpSpread1.ActiveSheet.ColumnCount, true); + + if (FpSpread1.ActiveSheet.RowCount != 0) + FpSpread1.ActiveSheet.RemoveRows(0, FpSpread1.ActiveSheet.RowCount); + + mf.m_db.ViewQuery(dataGridView1, "SELECT SB_TITLE, SB_CODE FROM SB_LIST WHERE UPPER(SB_TITLE) LIKE '%%%" + txts.Text.ToUpper() + "%%'"); + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + addItem_name.Add(dataGridView1.Rows[i].Cells[0].Value.ToString()+";"+ + dataGridView1.Rows[i].Cells[1].Value.ToString() ); + } + + // NXT추가 + mf.m_db.Nxt_ViewQuery(dataGridView1, "SELECT SB_TITLE, SB_CODE, SB_MARKET FROM SB_LIST WHERE UPPER(SB_TITLE) LIKE '%%%" + txts.Text.ToUpper() + "%%'"); + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + addItem_name.Add(dataGridView1.Rows[i].Cells[0].Value.ToString() + "(NXT);" + + dataGridView1.Rows[i].Cells[1].Value.ToString()); + } + + for (int i = 0; i < addItem_name.Count ; i++) + { + name = addItem_name[i].Substring(0, addItem_name[i].IndexOf(";")); + code = addItem_name[i].Substring(addItem_name[i].IndexOf(";")+1, addItem_name[i].Length-name.Length-1); + + mf.InsertRow(FpSpread1, FpSpread1.ActiveSheet, FpSpread1.ActiveSheet.RowCount + 1, 1, 0); + + FpSpread1.ActiveSheet.SetText(i, 1, name ); // title + FpSpread1.ActiveSheet.SetText(i, 0, code); // code + } + + + //FpSpread1.ActiveSheet.ClearRange(0, 0, FpSpread1.ActiveSheet.RowCount, FpSpread1.ActiveSheet.ColumnCount, true); + + //if (FpSpread1.ActiveSheet.RowCount != 0) + // FpSpread1.ActiveSheet.RemoveRows(0, FpSpread1.ActiveSheet.RowCount); + + //mf.m_db.ViewQuery(dataGridView1, "SELECT SB_TITLE, SB_CODE, SB_MARKET FROM SB_LIST WHERE UPPER(SB_TITLE) LIKE '%%%" + txts.Text.ToUpper() + "%%'"); + + //for (int i = 0; i < dataGridView1.RowCount - 1; i++) + //{ + // mf.InsertRow(FpSpread1, FpSpread1.ActiveSheet, FpSpread1.ActiveSheet.RowCount + 1, 1, 0); + + // FpSpread1.ActiveSheet.SetText(i, 1, dataGridView1.Rows[i].Cells[0].Value.ToString()); // title + // FpSpread1.ActiveSheet.SetText(i, 0, dataGridView1.Rows[i].Cells[1].Value.ToString()); // code + // tot_cnt = i; + //} + ////NXT용 + //mf.m_db.Nxt_ViewQuery(dataGridView1, "SELECT SB_TITLE, SB_CODE, SB_MARKET FROM SB_LIST WHERE UPPER(SB_TITLE) LIKE '%%%" + txts.Text.ToUpper() + "%%'"); + //nxt_cnt = dataGridView1.RowCount; + + //// for (int i = 0; i < dataGridView1.RowCount - 1 + trx_cnt; i++) + //for (int i = krx_cnt; i < krx_cnt + nxt_cnt - 1; i++) + //{ + // mf.InsertRow(FpSpread1, FpSpread1.ActiveSheet, FpSpread1.ActiveSheet.RowCount + 1, 1, 0); + + // FpSpread1.ActiveSheet.SetText(i, 1, dataGridView1.Rows[i].Cells[0].Value.ToString() + "(NXT)"); // title + // FpSpread1.ActiveSheet.SetText(i, 0, dataGridView1.Rows[i].Cells[1].Value.ToString()); // code + //} + + } + + private void btn2_Click(object sender, EventArgs e) + { + Theme fm = new Theme(mf, "", ""); + + fm.ShowDialog(); + + } + + private void btn3_Click(object sender, EventArgs e) + { + + if (m_code != "") + { + Theme fm = new Theme(mf, m_code, m_tname); + + fm.ShowDialog(); + } + + } + + private void btn4_Click(object sender, EventArgs e) + { + + if (MessageBox.Show("선택한 테마를 삭제하겠습니까?", "MmoneyCoder", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + if (FpSpread1.ActiveSheet.ActiveRowIndex + 1 > 0) + { + FpSpread1.ActiveSheet.RemoveRows(FpSpread1.ActiveSheet.ActiveRowIndex, 1); + + if (m_tname.Contains("(NXT)")) + { + mf.m_db.Nxt_ExecuteQuery("DELETE FROM SB_ITEM WHERE SB_M_CODE = '" + m_code + "'"); + mf.m_db.Nxt_ExecuteQuery("DELETE FROM SB_LIST WHERE SB_CODE = '" + m_code + "'"); + + m_code = ""; m_tname = ""; + } + else + { + mf.m_db.ExecuteQuery("DELETE FROM SB_ITEM WHERE SB_M_CODE = '" + m_code + "'"); + mf.m_db.ExecuteQuery("DELETE FROM SB_LIST WHERE SB_CODE = '" + m_code + "'"); + + m_code = ""; m_tname = ""; + } + + if (FpSpread2.ActiveSheet.RowCount != 0) + FpSpread2.ActiveSheet.RemoveRows(0, FpSpread2.ActiveSheet.RowCount); + } + } + + } + + //현재가 + private void btnnow_Click(object sender, EventArgs e) + { + SetNowPrice(FpSpread1.ActiveSheet.ActiveRowIndex, "현재가"); + } + + //예상체결가 + private void btnpre_Click(object sender, EventArgs e) + { + SetNowPrice(FpSpread1.ActiveSheet.ActiveRowIndex, "예상체결가"); + } + + private void txts_KeyDown(object sender, KeyEventArgs e) + { + this.OnKeyDown(e); + } + + private void FpSpread1_DoubleClick(object sender, EventArgs e) + { + + + } + + private void FpSpread1_CellDoubleClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e) + { + + SetNowPrice(e.Row, "현재가"); + } + + private void SetNowPrice(int nrow, string now) + { + + string tname = FpSpread1.ActiveSheet.GetText(nrow, 1); + + if (now == "예상체결가") + { + if (tname.Contains("(NXT")) + { + MessageBox.Show("NXT는 데이터가 없습니다."); + return; + } + } + + int row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + + if (tname.Contains("(NXT")) + mf.PlayList.ActiveSheet.SetValue(row - 1, 1, "테마_NXT"); + else + mf.PlayList.ActiveSheet.SetValue(row - 1, 1, "테마"); + + mf.PlayList.ActiveSheet.SetText(row - 1, 2, FpSpread1.ActiveSheet.GetText(nrow, 1)); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, "5단 표그래프"); + // mf.PlayList.ActiveSheet.SetText(row - 1, 4, "테마-"+ now); + if (rb_up_rate.Checked == true) // 상승률순 + { + mf.PlayList.ActiveSheet.SetText(row - 1, 4, "테마-" + now + "(상승률순)"); + } + else if (rb_down_rate.Checked == true) // 하락률순 + { + mf.PlayList.ActiveSheet.SetText(row - 1, 4, "테마-" + now + "(하락률순)"); + } + else if (rb_input.Checked == true) // 입력순 + { + mf.PlayList.ActiveSheet.SetText(row - 1, 4, "테마-" + now + "(입력순)"); + } + + mf.PlayList.ActiveSheet.SetText(row - 1, 6, m_code); //테마 코드 추가 + + int cnt = FpSpread2.ActiveSheet.RowCount; + int lcnt = 0; + + if ((cnt % 5) != 0) + lcnt = 1; + + lcnt = (cnt / 5) + lcnt; + + mf.PlayList.ActiveSheet.SetValue(row - 1, 5, "1/" + lcnt.ToString()); + + } + private void SetNowPrice_6(int nrow, string now) + { + string tname = FpSpread1.ActiveSheet.GetText(nrow, 1); + + if (now == "예상체결가") + { + if (tname.Contains("(NXT")) + { + MessageBox.Show("NXT는 데이터가 없습니다."); + return; + } + } + int row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + + if (tname.Contains("(NXT")) + mf.PlayList.ActiveSheet.SetValue(row - 1, 1, "테마_NXT"); + else + mf.PlayList.ActiveSheet.SetValue(row - 1, 1, "테마"); + + mf.PlayList.ActiveSheet.SetText(row - 1, 2, FpSpread1.ActiveSheet.GetText(nrow, 1)); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, "6종목 현재가"); + // mf.PlayList.ActiveSheet.SetText(row - 1, 4, "테마-" + now); + if (rb_up_rate.Checked == true) // 상승률순 + { + mf.PlayList.ActiveSheet.SetText(row - 1, 4, "테마-" + now + "(상승률순)"); + } + else if (rb_down_rate.Checked == true) // 하락률순 + { + mf.PlayList.ActiveSheet.SetText(row - 1, 4, "테마-" + now + "(하락률순)"); + } + else if (rb_input.Checked == true) // 입력순 + { + mf.PlayList.ActiveSheet.SetText(row - 1, 4, "테마-" + now + "(입력순)"); + } + + mf.PlayList.ActiveSheet.SetText(row - 1, 6, m_code); //테마 코드 추가 + + int cnt = FpSpread2.ActiveSheet.RowCount; + int lcnt = 0; + + if ((cnt % 6) != 0) + lcnt = 1; + + lcnt = (cnt / 6) + lcnt; + + mf.PlayList.ActiveSheet.SetValue(row - 1, 5, "1/" + lcnt.ToString()); + + } + + private void SetNowPrice_12(int nrow, string now) + { + string tname = FpSpread1.ActiveSheet.GetText(nrow, 1); + + if (now == "예상체결가") + { + if (tname.Contains("(NXT")) + { + MessageBox.Show("NXT는 데이터가 없습니다."); + return; + } + } + int row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + + if (tname.Contains("(NXT")) + mf.PlayList.ActiveSheet.SetValue(row - 1, 1, "테마_NXT"); + else + mf.PlayList.ActiveSheet.SetValue(row - 1, 1, "테마"); + +// mf.PlayList.ActiveSheet.SetValue(row - 1, 1, "테마"); + mf.PlayList.ActiveSheet.SetText(row - 1, 2, FpSpread1.ActiveSheet.GetText(nrow, 1)); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, "12종목 현재가"); + // mf.PlayList.ActiveSheet.SetText(row - 1, 4, "테마-" + now); + if (rb_up_rate.Checked == true) // 상승률순 + { + mf.PlayList.ActiveSheet.SetText(row - 1, 4, "테마-" + now + "(상승률순)"); + } + else if (rb_down_rate.Checked == true) // 하락률순 + { + mf.PlayList.ActiveSheet.SetText(row - 1, 4, "테마-" + now + "(하락률순)"); + } + else if (rb_input.Checked == true) // 입력순 + { + mf.PlayList.ActiveSheet.SetText(row - 1, 4, "테마-" + now + "(입력순)"); + } + + + mf.PlayList.ActiveSheet.SetText(row - 1, 6, m_code); //테마 코드 추가 + + int cnt = FpSpread2.ActiveSheet.RowCount; + int lcnt = 0; + + if ((cnt % 12) != 0) + lcnt = 1; + + lcnt = (cnt / 12) + lcnt; + + mf.PlayList.ActiveSheet.SetValue(row - 1, 5, "1/" + lcnt.ToString()); + + } + + + private void timer1_Tick(object sender, EventArgs e) + { + GetThemeByKeyword(); + timer1.Stop(); + } + + private void FpSpread2_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e) + { + + } + + private void btnnow_6_Click(object sender, EventArgs e) // 6종목 현재가 + { + SetNowPrice_6(FpSpread1.ActiveSheet.ActiveRowIndex, "현재가"); + } + + private void btnnow_12_Click(object sender, EventArgs e) // 12종목 현재가 + { + SetNowPrice_12(FpSpread1.ActiveSheet.ActiveRowIndex, "현재가"); + + } + } +} diff --git a/MBN_STOCK_N/Control/UC4.resx b/MBN_STOCK_N/Control/UC4.resx new file mode 100644 index 0000000..2e890e9 --- /dev/null +++ b/MBN_STOCK_N/Control/UC4.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 811, 118 + + + 958, 118 + + + 1073, 118 + + + 1188, 118 + + + 1342, 118 + + \ No newline at end of file diff --git a/MBN_STOCK_N/Control/UC5.Designer.cs b/MBN_STOCK_N/Control/UC5.Designer.cs new file mode 100644 index 0000000..d450a79 --- /dev/null +++ b/MBN_STOCK_N/Control/UC5.Designer.cs @@ -0,0 +1,1064 @@ + +namespace MBN_STOCK_N +{ + partial class UC5 + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer6 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer6 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer1 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer1 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer7 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer7 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer2 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer2 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer5 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer5 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer3 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer3 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer4 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer4 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer12 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer12 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer10 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer10 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer11 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer11 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer9 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer9 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer8 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer8 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer13 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer13 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer14 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer14 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer15 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer15 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer16 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer16 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer17 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer17 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer18 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer18 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer19 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer19 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer1 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle1 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType1 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.NamedStyle namedStyle2 = new FarPoint.Win.Spread.NamedStyle("CornerDefault"); + FarPoint.Win.Spread.CellType.CornerRenderer cornerRenderer1 = new FarPoint.Win.Spread.CellType.CornerRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle3 = new FarPoint.Win.Spread.NamedStyle("ColumnHeaderEnhanced"); + FarPoint.Win.Spread.NamedStyle namedStyle4 = new FarPoint.Win.Spread.NamedStyle("RowHeaderDefault"); + FarPoint.Win.Spread.SpreadSkin spreadSkin1 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer2 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer3 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.EmptyBorder emptyBorder1 = new FarPoint.Win.EmptyBorder(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer4 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle5 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType2 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.NamedStyle namedStyle6 = new FarPoint.Win.Spread.NamedStyle("CornerDefault"); + FarPoint.Win.Spread.CellType.CornerRenderer cornerRenderer2 = new FarPoint.Win.Spread.CellType.CornerRenderer(); + FarPoint.Win.Spread.SpreadSkin spreadSkin2 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer5 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer6 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.EmptyBorder emptyBorder2 = new FarPoint.Win.EmptyBorder(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer7 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle7 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType3 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.NamedStyle namedStyle8 = new FarPoint.Win.Spread.NamedStyle("CornerDefault"); + FarPoint.Win.Spread.CellType.CornerRenderer cornerRenderer3 = new FarPoint.Win.Spread.CellType.CornerRenderer(); + FarPoint.Win.Spread.SpreadSkin spreadSkin3 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer8 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer9 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.EmptyBorder emptyBorder3 = new FarPoint.Win.EmptyBorder(); + this.tabp6_1 = new System.Windows.Forms.Panel(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.panel3 = new System.Windows.Forms.Panel(); + this.FpSpread2 = new FarPoint.Win.Spread.FpSpread(); + this.FpSpread2_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread2_Sheet2 = new FarPoint.Win.Spread.SheetView(); + this.button5 = new System.Windows.Forms.Button(); + this.button7 = new System.Windows.Forms.Button(); + this.button8 = new System.Windows.Forms.Button(); + this.button9 = new System.Windows.Forms.Button(); + this.button10 = new System.Windows.Forms.Button(); + this.btnsearch2 = new System.Windows.Forms.Button(); + this.txtj = new System.Windows.Forms.TextBox(); + this.button4 = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.FpSpread1 = new FarPoint.Win.Spread.FpSpread(); + this.FpSpread1_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread1_Sheet2 = new FarPoint.Win.Spread.SheetView(); + this.btnsearch1 = new System.Windows.Forms.Button(); + this.txts = new System.Windows.Forms.TextBox(); + this.button6 = new System.Windows.Forms.Button(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.panel2 = new System.Windows.Forms.Panel(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.button1 = new System.Windows.Forms.Button(); + this.btn4 = new System.Windows.Forms.Button(); + this.btn3 = new System.Windows.Forms.Button(); + this.btn2 = new System.Windows.Forms.Button(); + this.btn1 = new System.Windows.Forms.Button(); + this.FpSpread = new FarPoint.Win.Spread.FpSpread(); + this.FpSpread_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread_Sheet2 = new FarPoint.Win.Spread.SheetView(); + this.tabp6_1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet2)).BeginInit(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet2)).BeginInit(); + this.groupBox3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet2)).BeginInit(); + this.SuspendLayout(); + enhancedColumnHeaderRenderer6.Name = "enhancedColumnHeaderRenderer6"; + enhancedColumnHeaderRenderer6.TextRotationAngle = 0D; + rowHeaderRenderer6.Name = "rowHeaderRenderer6"; + rowHeaderRenderer6.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer1.Name = "enhancedColumnHeaderRenderer1"; + enhancedColumnHeaderRenderer1.TextRotationAngle = 0D; + rowHeaderRenderer1.Name = "rowHeaderRenderer1"; + rowHeaderRenderer1.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer7.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer7.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer7.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer7.Name = "enhancedColumnHeaderRenderer7"; + enhancedColumnHeaderRenderer7.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer7.TextRotationAngle = 0D; + rowHeaderRenderer7.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer7.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer7.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer7.Name = "rowHeaderRenderer7"; + rowHeaderRenderer7.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer7.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer2.Name = "enhancedColumnHeaderRenderer2"; + enhancedColumnHeaderRenderer2.TextRotationAngle = 0D; + rowHeaderRenderer2.Name = "rowHeaderRenderer2"; + rowHeaderRenderer2.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer5.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer5.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer5.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer5.Name = "enhancedColumnHeaderRenderer5"; + enhancedColumnHeaderRenderer5.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer5.TextRotationAngle = 0D; + rowHeaderRenderer5.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer5.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer5.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer5.Name = "rowHeaderRenderer5"; + rowHeaderRenderer5.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer5.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer3.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer3.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer3.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer3.Name = "enhancedColumnHeaderRenderer3"; + enhancedColumnHeaderRenderer3.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer3.TextRotationAngle = 0D; + rowHeaderRenderer3.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer3.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer3.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer3.Name = "rowHeaderRenderer3"; + rowHeaderRenderer3.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer3.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer4.Name = "enhancedColumnHeaderRenderer4"; + enhancedColumnHeaderRenderer4.TextRotationAngle = 0D; + rowHeaderRenderer4.Name = "rowHeaderRenderer4"; + rowHeaderRenderer4.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer12.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer12.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer12.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer12.Name = "enhancedColumnHeaderRenderer12"; + enhancedColumnHeaderRenderer12.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer12.TextRotationAngle = 0D; + rowHeaderRenderer12.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer12.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer12.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer12.Name = "rowHeaderRenderer12"; + rowHeaderRenderer12.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer12.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer10.Name = "enhancedColumnHeaderRenderer10"; + enhancedColumnHeaderRenderer10.TextRotationAngle = 0D; + rowHeaderRenderer10.Name = "rowHeaderRenderer10"; + rowHeaderRenderer10.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer11.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer11.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer11.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer11.Name = "enhancedColumnHeaderRenderer11"; + enhancedColumnHeaderRenderer11.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer11.TextRotationAngle = 0D; + rowHeaderRenderer11.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer11.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer11.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer11.Name = "rowHeaderRenderer11"; + rowHeaderRenderer11.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer11.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer9.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer9.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer9.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer9.Name = "enhancedColumnHeaderRenderer9"; + enhancedColumnHeaderRenderer9.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer9.TextRotationAngle = 0D; + rowHeaderRenderer9.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer9.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer9.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer9.Name = "rowHeaderRenderer9"; + rowHeaderRenderer9.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer9.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer8.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer8.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer8.Name = "enhancedColumnHeaderRenderer8"; + enhancedColumnHeaderRenderer8.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer8.TextRotationAngle = 0D; + rowHeaderRenderer8.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer8.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer8.Name = "rowHeaderRenderer8"; + rowHeaderRenderer8.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer8.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer13.Name = "enhancedColumnHeaderRenderer13"; + enhancedColumnHeaderRenderer13.TextRotationAngle = 0D; + rowHeaderRenderer13.Name = "rowHeaderRenderer13"; + rowHeaderRenderer13.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer14.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer14.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer14.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer14.Name = "enhancedColumnHeaderRenderer14"; + enhancedColumnHeaderRenderer14.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer14.TextRotationAngle = 0D; + rowHeaderRenderer14.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer14.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer14.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer14.Name = "rowHeaderRenderer14"; + rowHeaderRenderer14.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer14.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer15.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer15.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer15.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer15.Name = "enhancedColumnHeaderRenderer15"; + enhancedColumnHeaderRenderer15.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer15.TextRotationAngle = 0D; + rowHeaderRenderer15.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer15.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer15.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer15.Name = "rowHeaderRenderer15"; + rowHeaderRenderer15.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer15.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer16.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer16.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer16.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer16.Name = "enhancedColumnHeaderRenderer16"; + enhancedColumnHeaderRenderer16.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer16.TextRotationAngle = 0D; + rowHeaderRenderer16.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer16.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer16.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer16.Name = "rowHeaderRenderer16"; + rowHeaderRenderer16.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer16.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer17.Name = "enhancedColumnHeaderRenderer17"; + enhancedColumnHeaderRenderer17.TextRotationAngle = 0D; + rowHeaderRenderer17.Name = "rowHeaderRenderer17"; + rowHeaderRenderer17.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer18.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer18.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer18.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer18.Name = "enhancedColumnHeaderRenderer18"; + enhancedColumnHeaderRenderer18.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer18.TextRotationAngle = 0D; + rowHeaderRenderer18.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer18.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer18.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer18.Name = "rowHeaderRenderer18"; + rowHeaderRenderer18.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer18.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer19.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer19.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer19.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer19.Name = "enhancedColumnHeaderRenderer19"; + enhancedColumnHeaderRenderer19.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer19.TextRotationAngle = 0D; + rowHeaderRenderer19.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer19.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer19.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer19.Name = "rowHeaderRenderer19"; + rowHeaderRenderer19.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer19.TextRotationAngle = 0D; + // + // tabp6_1 + // + this.tabp6_1.Controls.Add(this.groupBox2); + this.tabp6_1.Controls.Add(this.groupBox1); + this.tabp6_1.Controls.Add(this.groupBox3); + this.tabp6_1.Location = new System.Drawing.Point(3, 3); + this.tabp6_1.Name = "tabp6_1"; + this.tabp6_1.Size = new System.Drawing.Size(466, 893); + this.tabp6_1.TabIndex = 600; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.panel3); + this.groupBox2.Controls.Add(this.FpSpread2); + this.groupBox2.Controls.Add(this.button5); + this.groupBox2.Controls.Add(this.button7); + this.groupBox2.Controls.Add(this.button8); + this.groupBox2.Controls.Add(this.button9); + this.groupBox2.Controls.Add(this.button10); + this.groupBox2.Controls.Add(this.btnsearch2); + this.groupBox2.Controls.Add(this.txtj); + this.groupBox2.Controls.Add(this.button4); + this.groupBox2.Location = new System.Drawing.Point(4, 551); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(451, 282); + this.groupBox2.TabIndex = 604; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "해외 종목"; + // + // panel3 + // + this.panel3.BackColor = System.Drawing.Color.White; + this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel3.ForeColor = System.Drawing.SystemColors.ButtonShadow; + this.panel3.Location = new System.Drawing.Point(6, 73); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(288, 1); + this.panel3.TabIndex = 619; + // + // FpSpread2 + // + this.FpSpread2.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, "; + this.FpSpread2.AutoClipboard = false; + this.FpSpread2.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.FpSpread2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FpSpread2.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders; + this.FpSpread2.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + this.FpSpread2.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread2.HorizontalScrollBar.Name = ""; + this.FpSpread2.HorizontalScrollBar.Renderer = defaultScrollBarRenderer1; + this.FpSpread2.HorizontalScrollBar.TabIndex = 359; + this.FpSpread2.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.FpSpread2.Location = new System.Drawing.Point(5, 52); + this.FpSpread2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.FpSpread2.Name = "FpSpread2"; + namedStyle1.BackColor = System.Drawing.SystemColors.Window; + namedStyle1.CellType = generalCellType1; + namedStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle1.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle1.Renderer = generalCellType1; + namedStyle2.BackColor = System.Drawing.SystemColors.Control; + namedStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle2.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle2.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle2.Renderer = cornerRenderer1; + namedStyle2.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(211)))), ((int)(((byte)(220)))), ((int)(((byte)(233))))); + namedStyle3.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle3.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle3.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle3.Renderer = enhancedColumnHeaderRenderer17; + namedStyle3.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle4.BackColor = System.Drawing.SystemColors.Control; + namedStyle4.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle4.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle4.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle4.Renderer = rowHeaderRenderer17; + namedStyle4.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.FpSpread2.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle1, + namedStyle2, + namedStyle3, + namedStyle4}); + this.FpSpread2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.FpSpread2.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.FpSpread2_Sheet1, + this.FpSpread2_Sheet2}); + this.FpSpread2.Size = new System.Drawing.Size(308, 214); + spreadSkin1.ColumnHeaderDefaultStyle = namedStyle3; + spreadSkin1.DefaultStyle = namedStyle4; + spreadSkin1.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + spreadSkin1.Name = "CustomSkin1"; + spreadSkin1.RowHeaderDefaultStyle = namedStyle3; + spreadSkin1.ScrollBarRenderer = defaultScrollBarRenderer2; + spreadSkin1.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(60)))), ((int)(((byte)(97))))), System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(110)))), ((int)(((byte)(170))))), System.Drawing.Drawing2D.LinearGradientMode.Vertical, 30); + this.FpSpread2.Skin = spreadSkin1; + this.FpSpread2.TabIndex = 611; + this.FpSpread2.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.Never; + this.FpSpread2.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Never; + this.FpSpread2.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread2.VerticalScrollBar.Name = ""; + this.FpSpread2.VerticalScrollBar.Renderer = defaultScrollBarRenderer3; + this.FpSpread2.VerticalScrollBar.TabIndex = 360; + this.FpSpread2.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; + // + // FpSpread2_Sheet1 + // + this.FpSpread2_Sheet1.Reset(); + this.FpSpread2_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread2_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread2_Sheet1.ColumnCount = 8; + this.FpSpread2_Sheet1.RowCount = 0; + this.FpSpread2_Sheet1.RowHeader.ColumnCount = 0; + this.FpSpread2_Sheet1.ActiveRowIndex = -1; + this.FpSpread2_Sheet1.ActiveSkin = FarPoint.Win.Spread.DefaultSkins.Classic; + this.FpSpread2_Sheet1.ColumnHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 0).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "Index"; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).BackColor = System.Drawing.SystemColors.ActiveCaption; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).Border = emptyBorder1; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "종목"; + this.FpSpread2_Sheet1.ColumnHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.ColumnHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.FpSpread2_Sheet1.Columns.Get(0).Label = "Index"; + this.FpSpread2_Sheet1.Columns.Get(0).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(0).Width = 79F; + this.FpSpread2_Sheet1.Columns.Get(1).Label = "종목"; + this.FpSpread2_Sheet1.Columns.Get(1).Width = 332F; + this.FpSpread2_Sheet1.Columns.Get(2).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(3).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(4).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(5).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(6).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(7).Visible = false; + this.FpSpread2_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.RowMode; + this.FpSpread2_Sheet1.RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; + this.FpSpread2_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.FpSpread2_Sheet1.RowHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.RowHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.RowHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.SheetCornerStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.FpSpread2.SetActiveViewport(0, -1, 0); + // + // FpSpread2_Sheet2 + // + this.FpSpread2_Sheet2.Reset(); + this.FpSpread2_Sheet2.SheetName = "Sheet2"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread2_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread2_Sheet2.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet2.DefaultStyle.Parent = "RowHeaderDefault"; + this.FpSpread2_Sheet2.RowHeader.Columns.Default.Resizable = false; + this.FpSpread2_Sheet2.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet2.RowHeader.DefaultStyle.Parent = "ColumnHeaderEnhanced"; + this.FpSpread2_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + // + // button5 + // + this.button5.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.button5.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button5.ForeColor = System.Drawing.Color.Black; + this.button5.Location = new System.Drawing.Point(325, 238); + this.button5.Name = "button5"; + this.button5.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.button5.Size = new System.Drawing.Size(79, 27); + this.button5.TabIndex = 614; + this.button5.Tag = "12"; + this.button5.Text = "240일"; + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.btn1_Click); + // + // button7 + // + this.button7.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.button7.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button7.ForeColor = System.Drawing.Color.Black; + this.button7.Location = new System.Drawing.Point(325, 202); + this.button7.Name = "button7"; + this.button7.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.button7.Size = new System.Drawing.Size(79, 27); + this.button7.TabIndex = 613; + this.button7.Tag = "11"; + this.button7.Text = "120일"; + this.button7.UseVisualStyleBackColor = true; + this.button7.Click += new System.EventHandler(this.btn1_Click); + // + // button8 + // + this.button8.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.button8.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button8.ForeColor = System.Drawing.Color.Black; + this.button8.Location = new System.Drawing.Point(325, 166); + this.button8.Name = "button8"; + this.button8.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.button8.Size = new System.Drawing.Size(79, 27); + this.button8.TabIndex = 612; + this.button8.Tag = "10"; + this.button8.Text = "60일"; + this.button8.UseVisualStyleBackColor = true; + this.button8.Click += new System.EventHandler(this.btn1_Click); + // + // button9 + // + this.button9.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.button9.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button9.ForeColor = System.Drawing.Color.Black; + this.button9.Location = new System.Drawing.Point(325, 130); + this.button9.Name = "button9"; + this.button9.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.button9.Size = new System.Drawing.Size(79, 27); + this.button9.TabIndex = 611; + this.button9.Tag = "9"; + this.button9.Text = "20일"; + this.button9.UseVisualStyleBackColor = true; + this.button9.Click += new System.EventHandler(this.btn1_Click); + // + // button10 + // + this.button10.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.button10.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button10.ForeColor = System.Drawing.Color.Black; + this.button10.Location = new System.Drawing.Point(325, 94); + this.button10.Name = "button10"; + this.button10.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.button10.Size = new System.Drawing.Size(79, 27); + this.button10.TabIndex = 610; + this.button10.Tag = "8"; + this.button10.Text = "5일"; + this.button10.UseVisualStyleBackColor = true; + this.button10.Click += new System.EventHandler(this.btn1_Click); + // + // btnsearch2 + // + this.btnsearch2.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnsearch2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnsearch2.ForeColor = System.Drawing.Color.Black; + this.btnsearch2.Location = new System.Drawing.Point(218, 19); + this.btnsearch2.Name = "btnsearch2"; + this.btnsearch2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnsearch2.Size = new System.Drawing.Size(92, 29); + this.btnsearch2.TabIndex = 609; + this.btnsearch2.Text = "종목 검색"; + this.btnsearch2.UseVisualStyleBackColor = true; + this.btnsearch2.Click += new System.EventHandler(this.btnsearch2_Click); + // + // txtj + // + this.txtj.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txtj.Location = new System.Drawing.Point(5, 22); + this.txtj.Name = "txtj"; + this.txtj.Size = new System.Drawing.Size(195, 25); + this.txtj.TabIndex = 608; + this.txtj.TextChanged += new System.EventHandler(this.txtj_TextChanged); + this.txtj.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtj_KeyPress); + // + // button4 + // + this.button4.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.button4.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button4.ForeColor = System.Drawing.Color.Black; + this.button4.Location = new System.Drawing.Point(325, 51); + this.button4.Name = "button4"; + this.button4.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.button4.Size = new System.Drawing.Size(79, 27); + this.button4.TabIndex = 589; + this.button4.Tag = "7"; + this.button4.Text = "1열판"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.btn1_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.panel1); + this.groupBox1.Controls.Add(this.FpSpread1); + this.groupBox1.Controls.Add(this.btnsearch1); + this.groupBox1.Controls.Add(this.txts); + this.groupBox1.Controls.Add(this.button6); + this.groupBox1.Location = new System.Drawing.Point(4, 273); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(451, 270); + this.groupBox1.TabIndex = 603; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "해외 업종지수"; + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.White; + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.ForeColor = System.Drawing.SystemColors.ButtonShadow; + this.panel1.Location = new System.Drawing.Point(8, 84); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(306, 1); + this.panel1.TabIndex = 619; + // + // FpSpread1 + // + this.FpSpread1.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, "; + this.FpSpread1.AutoClipboard = false; + this.FpSpread1.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.FpSpread1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FpSpread1.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders; + this.FpSpread1.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + this.FpSpread1.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread1.HorizontalScrollBar.Name = ""; + this.FpSpread1.HorizontalScrollBar.Renderer = defaultScrollBarRenderer4; + this.FpSpread1.HorizontalScrollBar.TabIndex = 357; + this.FpSpread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.FpSpread1.Location = new System.Drawing.Point(6, 58); + this.FpSpread1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.FpSpread1.Name = "FpSpread1"; + namedStyle5.BackColor = System.Drawing.SystemColors.Window; + namedStyle5.CellType = generalCellType2; + namedStyle5.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle5.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle5.Renderer = generalCellType2; + namedStyle6.BackColor = System.Drawing.SystemColors.Control; + namedStyle6.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle6.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle6.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle6.Renderer = cornerRenderer2; + namedStyle6.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.FpSpread1.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle5, + namedStyle6, + namedStyle3, + namedStyle4}); + this.FpSpread1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.FpSpread1.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.FpSpread1_Sheet1, + this.FpSpread1_Sheet2}); + this.FpSpread1.Size = new System.Drawing.Size(308, 198); + spreadSkin2.ColumnHeaderDefaultStyle = namedStyle3; + spreadSkin2.DefaultStyle = namedStyle4; + spreadSkin2.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + spreadSkin2.Name = "CustomSkin1"; + spreadSkin2.RowHeaderDefaultStyle = namedStyle3; + spreadSkin2.ScrollBarRenderer = defaultScrollBarRenderer5; + spreadSkin2.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(60)))), ((int)(((byte)(97))))), System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(110)))), ((int)(((byte)(170))))), System.Drawing.Drawing2D.LinearGradientMode.Vertical, 30); + this.FpSpread1.Skin = spreadSkin2; + this.FpSpread1.TabIndex = 610; + this.FpSpread1.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.Never; + this.FpSpread1.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Never; + this.FpSpread1.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread1.VerticalScrollBar.Name = ""; + this.FpSpread1.VerticalScrollBar.Renderer = defaultScrollBarRenderer6; + this.FpSpread1.VerticalScrollBar.TabIndex = 358; + this.FpSpread1.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; + // + // FpSpread1_Sheet1 + // + this.FpSpread1_Sheet1.Reset(); + this.FpSpread1_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread1_Sheet1.ColumnCount = 8; + this.FpSpread1_Sheet1.RowCount = 0; + this.FpSpread1_Sheet1.RowHeader.ColumnCount = 0; + this.FpSpread1_Sheet1.ActiveRowIndex = -1; + this.FpSpread1_Sheet1.ActiveSkin = FarPoint.Win.Spread.DefaultSkins.Classic; + this.FpSpread1_Sheet1.ColumnHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 0).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "Index"; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).BackColor = System.Drawing.SystemColors.ActiveCaption; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Border = emptyBorder2; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "업종"; + this.FpSpread1_Sheet1.ColumnHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.ColumnHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.FpSpread1_Sheet1.Columns.Get(0).Label = "Index"; + this.FpSpread1_Sheet1.Columns.Get(0).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(0).Width = 79F; + this.FpSpread1_Sheet1.Columns.Get(1).Label = "업종"; + this.FpSpread1_Sheet1.Columns.Get(1).Width = 330F; + this.FpSpread1_Sheet1.Columns.Get(2).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(3).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(4).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(5).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(6).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(7).Visible = false; + this.FpSpread1_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.RowMode; + this.FpSpread1_Sheet1.RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; + this.FpSpread1_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.FpSpread1_Sheet1.RowHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.RowHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.RowHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.SheetCornerStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.FpSpread1.SetActiveViewport(0, -1, 0); + // + // FpSpread1_Sheet2 + // + this.FpSpread1_Sheet2.Reset(); + this.FpSpread1_Sheet2.SheetName = "Sheet2"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread1_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread1_Sheet2.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet2.DefaultStyle.Parent = "RowHeaderDefault"; + this.FpSpread1_Sheet2.RowHeader.Columns.Default.Resizable = false; + this.FpSpread1_Sheet2.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet2.RowHeader.DefaultStyle.Parent = "ColumnHeaderEnhanced"; + this.FpSpread1_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + // + // btnsearch1 + // + this.btnsearch1.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnsearch1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnsearch1.ForeColor = System.Drawing.Color.Black; + this.btnsearch1.Location = new System.Drawing.Point(221, 20); + this.btnsearch1.Name = "btnsearch1"; + this.btnsearch1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnsearch1.Size = new System.Drawing.Size(93, 26); + this.btnsearch1.TabIndex = 609; + this.btnsearch1.Text = "업종 검색"; + this.btnsearch1.UseVisualStyleBackColor = true; + this.btnsearch1.Click += new System.EventHandler(this.btnsearch1_Click); + // + // txts + // + this.txts.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txts.Location = new System.Drawing.Point(6, 23); + this.txts.Name = "txts"; + this.txts.Size = new System.Drawing.Size(195, 25); + this.txts.TabIndex = 608; + this.txts.TextChanged += new System.EventHandler(this.txts_TextChanged); + this.txts.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txts_KeyPress); + // + // button6 + // + this.button6.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.button6.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button6.ForeColor = System.Drawing.Color.Black; + this.button6.Location = new System.Drawing.Point(325, 58); + this.button6.Name = "button6"; + this.button6.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.button6.Size = new System.Drawing.Size(79, 27); + this.button6.TabIndex = 589; + this.button6.Tag = "6"; + this.button6.Text = "1열판"; + this.button6.UseVisualStyleBackColor = true; + this.button6.Click += new System.EventHandler(this.btn1_Click); + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.panel2); + this.groupBox3.Controls.Add(this.dataGridView1); + this.groupBox3.Controls.Add(this.button1); + this.groupBox3.Controls.Add(this.btn4); + this.groupBox3.Controls.Add(this.btn3); + this.groupBox3.Controls.Add(this.btn2); + this.groupBox3.Controls.Add(this.btn1); + this.groupBox3.Controls.Add(this.FpSpread); + this.groupBox3.Location = new System.Drawing.Point(3, 3); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(451, 263); + this.groupBox3.TabIndex = 602; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "해외지수"; + // + // panel2 + // + this.panel2.BackColor = System.Drawing.Color.White; + this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel2.ForeColor = System.Drawing.SystemColors.ButtonShadow; + this.panel2.Location = new System.Drawing.Point(9, 41); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(304, 1); + this.panel2.TabIndex = 619; + // + // dataGridView1 + // + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Location = new System.Drawing.Point(140, 147); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowTemplate.Height = 23; + this.dataGridView1.Size = new System.Drawing.Size(159, 63); + this.dataGridView1.TabIndex = 616; + this.dataGridView1.Visible = false; + // + // button1 + // + this.button1.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.button1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button1.ForeColor = System.Drawing.Color.Black; + this.button1.Location = new System.Drawing.Point(326, 160); + this.button1.Name = "button1"; + this.button1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.button1.Size = new System.Drawing.Size(79, 27); + this.button1.TabIndex = 593; + this.button1.Tag = "5"; + this.button1.Text = "240일"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.btn1_Click); + // + // btn4 + // + this.btn4.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn4.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn4.ForeColor = System.Drawing.Color.Black; + this.btn4.Location = new System.Drawing.Point(326, 124); + this.btn4.Name = "btn4"; + this.btn4.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn4.Size = new System.Drawing.Size(79, 27); + this.btn4.TabIndex = 592; + this.btn4.Tag = "4"; + this.btn4.Text = "120일"; + this.btn4.UseVisualStyleBackColor = true; + this.btn4.Click += new System.EventHandler(this.btn1_Click); + // + // btn3 + // + this.btn3.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn3.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn3.ForeColor = System.Drawing.Color.Black; + this.btn3.Location = new System.Drawing.Point(326, 88); + this.btn3.Name = "btn3"; + this.btn3.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn3.Size = new System.Drawing.Size(79, 27); + this.btn3.TabIndex = 591; + this.btn3.Tag = "3"; + this.btn3.Text = "60일"; + this.btn3.UseVisualStyleBackColor = true; + this.btn3.Click += new System.EventHandler(this.btn1_Click); + // + // btn2 + // + this.btn2.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn2.ForeColor = System.Drawing.Color.Black; + this.btn2.Location = new System.Drawing.Point(326, 52); + this.btn2.Name = "btn2"; + this.btn2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn2.Size = new System.Drawing.Size(79, 27); + this.btn2.TabIndex = 590; + this.btn2.Tag = "2"; + this.btn2.Text = "20일"; + this.btn2.UseVisualStyleBackColor = true; + this.btn2.Click += new System.EventHandler(this.btn1_Click); + // + // btn1 + // + this.btn1.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn1.ForeColor = System.Drawing.Color.Black; + this.btn1.Location = new System.Drawing.Point(326, 16); + this.btn1.Name = "btn1"; + this.btn1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn1.Size = new System.Drawing.Size(79, 27); + this.btn1.TabIndex = 589; + this.btn1.Tag = "1"; + this.btn1.Text = "5일"; + this.btn1.UseVisualStyleBackColor = true; + this.btn1.Click += new System.EventHandler(this.btn1_Click); + // + // FpSpread + // + this.FpSpread.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, "; + this.FpSpread.AutoClipboard = false; + this.FpSpread.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.FpSpread.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FpSpread.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders; + this.FpSpread.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + this.FpSpread.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread.HorizontalScrollBar.Name = ""; + this.FpSpread.HorizontalScrollBar.Renderer = defaultScrollBarRenderer7; + this.FpSpread.HorizontalScrollBar.TabIndex = 359; + this.FpSpread.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.FpSpread.Location = new System.Drawing.Point(7, 16); + this.FpSpread.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.FpSpread.Name = "FpSpread"; + namedStyle7.BackColor = System.Drawing.SystemColors.Window; + namedStyle7.CellType = generalCellType3; + namedStyle7.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle7.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle7.Renderer = generalCellType3; + namedStyle8.BackColor = System.Drawing.SystemColors.Control; + namedStyle8.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle8.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle8.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle8.Renderer = cornerRenderer3; + namedStyle8.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.FpSpread.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle7, + namedStyle8, + namedStyle3, + namedStyle4}); + this.FpSpread.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.FpSpread.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.FpSpread_Sheet1, + this.FpSpread_Sheet2}); + this.FpSpread.Size = new System.Drawing.Size(308, 232); + spreadSkin3.ColumnHeaderDefaultStyle = namedStyle3; + spreadSkin3.DefaultStyle = namedStyle4; + spreadSkin3.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + spreadSkin3.Name = "CustomSkin1"; + spreadSkin3.RowHeaderDefaultStyle = namedStyle3; + spreadSkin3.ScrollBarRenderer = defaultScrollBarRenderer8; + spreadSkin3.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(60)))), ((int)(((byte)(97))))), System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(110)))), ((int)(((byte)(170))))), System.Drawing.Drawing2D.LinearGradientMode.Vertical, 30); + this.FpSpread.Skin = spreadSkin3; + this.FpSpread.TabIndex = 588; + this.FpSpread.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.Never; + this.FpSpread.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Never; + this.FpSpread.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread.VerticalScrollBar.Name = ""; + this.FpSpread.VerticalScrollBar.Renderer = defaultScrollBarRenderer9; + this.FpSpread.VerticalScrollBar.TabIndex = 360; + this.FpSpread.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; + this.FpSpread.CellClick += new FarPoint.Win.Spread.CellClickEventHandler(this.FpSpread_CellClick); + // + // FpSpread_Sheet1 + // + this.FpSpread_Sheet1.Reset(); + this.FpSpread_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread_Sheet1.ColumnCount = 8; + this.FpSpread_Sheet1.RowCount = 0; + this.FpSpread_Sheet1.RowHeader.ColumnCount = 0; + this.FpSpread_Sheet1.ActiveRowIndex = -1; + this.FpSpread_Sheet1.ActiveSkin = FarPoint.Win.Spread.DefaultSkins.Classic; + this.FpSpread_Sheet1.ColumnHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers; + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 0).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "Index"; + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).BackColor = System.Drawing.SystemColors.ActiveCaption; + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).Border = emptyBorder3; + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "지수"; + this.FpSpread_Sheet1.ColumnHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread_Sheet1.ColumnHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.FpSpread_Sheet1.Columns.Get(0).Label = "Index"; + this.FpSpread_Sheet1.Columns.Get(0).Visible = false; + this.FpSpread_Sheet1.Columns.Get(0).Width = 79F; + this.FpSpread_Sheet1.Columns.Get(1).Label = "지수"; + this.FpSpread_Sheet1.Columns.Get(1).Width = 333F; + this.FpSpread_Sheet1.Columns.Get(2).Visible = false; + this.FpSpread_Sheet1.Columns.Get(3).Visible = false; + this.FpSpread_Sheet1.Columns.Get(4).Visible = false; + this.FpSpread_Sheet1.Columns.Get(5).Visible = false; + this.FpSpread_Sheet1.Columns.Get(6).Visible = false; + this.FpSpread_Sheet1.Columns.Get(7).Visible = false; + this.FpSpread_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.RowMode; + this.FpSpread_Sheet1.RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; + this.FpSpread_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.FpSpread_Sheet1.RowHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet1.RowHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread_Sheet1.RowHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet1.SheetCornerStyle.Parent = "HeaderDefault"; + this.FpSpread_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.FpSpread.SetActiveViewport(0, -1, 0); + // + // FpSpread_Sheet2 + // + this.FpSpread_Sheet2.Reset(); + this.FpSpread_Sheet2.SheetName = "Sheet2"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread_Sheet2.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet2.DefaultStyle.Parent = "RowHeaderDefault"; + this.FpSpread_Sheet2.RowHeader.Columns.Default.Resizable = false; + this.FpSpread_Sheet2.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet2.RowHeader.DefaultStyle.Parent = "ColumnHeaderEnhanced"; + this.FpSpread_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + // + // UC5 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.tabp6_1); + this.Name = "UC5"; + this.Size = new System.Drawing.Size(473, 908); + this.Load += new System.EventHandler(this.UC5_Load); + this.tabp6_1.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet2)).EndInit(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet2)).EndInit(); + this.groupBox3.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet2)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel tabp6_1; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button btn4; + private System.Windows.Forms.Button btn3; + private System.Windows.Forms.Button btn2; + private System.Windows.Forms.Button btn1; + public FarPoint.Win.Spread.FpSpread FpSpread; + public FarPoint.Win.Spread.SheetView FpSpread_Sheet1; + public FarPoint.Win.Spread.SheetView FpSpread_Sheet2; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button button8; + private System.Windows.Forms.Button button9; + private System.Windows.Forms.Button button10; + private System.Windows.Forms.Button btnsearch2; + private System.Windows.Forms.TextBox txtj; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button btnsearch1; + private System.Windows.Forms.TextBox txts; + public FarPoint.Win.Spread.FpSpread FpSpread2; + public FarPoint.Win.Spread.SheetView FpSpread2_Sheet1; + public FarPoint.Win.Spread.SheetView FpSpread2_Sheet2; + public FarPoint.Win.Spread.FpSpread FpSpread1; + public FarPoint.Win.Spread.SheetView FpSpread1_Sheet1; + public FarPoint.Win.Spread.SheetView FpSpread1_Sheet2; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + } +} diff --git a/MBN_STOCK_N/Control/UC5.cs b/MBN_STOCK_N/Control/UC5.cs new file mode 100644 index 0000000..4e87423 --- /dev/null +++ b/MBN_STOCK_N/Control/UC5.cs @@ -0,0 +1,260 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MBN_STOCK_N +{ + public partial class UC5 : UserControl + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + public UC5() + { + InitializeComponent(); + } + + public UC5(Form frm) + { + mf = (MainForm)frm; + InitializeComponent(); + + } + + //string[] worldstock = { "다우존스", "나스닥", "S&P500", "독일 DAX 30", "영국 FTSE 100", "프랑스 CAC 40", + //"일본 니케이", "중국 상해종합", "홍콩 항셍", "대만 가권", "싱가포르 지수", "태국 SET", "필리핀", "말레이시아 KLSE", "인도네시아 JKSE"}; + + string[] worldstock = { "다우존스", "나스닥", "S&P500", "독일 DAX 30", "영국 FTSE 100", "프랑스 CAC 40", + "일본 니케이", "중국 상해종합", "홍콩 항셍", "대만 가권"}; + + private void UC5_Load(object sender, EventArgs e) + { + FpSpread.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + FpSpread1.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + FpSpread2.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + + for (int i=0; i< worldstock.Length; i++) + { + mf.InsertRow(FpSpread, FpSpread.ActiveSheet, FpSpread.ActiveSheet.RowCount + 1, 1, 0); + FpSpread.ActiveSheet.SetText(i, 1, worldstock[i]); + } + } + + + //업종검색 + private void btnsearch1_Click(object sender, EventArgs e) + { + upjong_search(); + } + + + //종목검색 + private void btnsearch2_Click(object sender, EventArgs e) + { + jongmok_search(); + } + + private void txts_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == (char)Keys.Enter) + { + e.Handled = true; + upjong_search(); + } + } + + private void txtj_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == (char)Keys.Enter) + { + e.Handled = true; + jongmok_search(); + } + } + + private void upjong_search() + { + string query = string.Empty; + + FpSpread1.ActiveSheet.ClearRange(0, 0, FpSpread1.ActiveSheet.RowCount, FpSpread1.ActiveSheet.ColumnCount, true); + if (FpSpread1.ActiveSheet.RowCount != 0) + FpSpread1.ActiveSheet.RemoveRows(0, FpSpread1.ActiveSheet.RowCount); + + if (txts.Text == "") + { + query = "select F_INPUT_NAME, f_knam, f_symb from t_world_ix_eq_master WHERE f_fdtc = '0' and f_natc = 'US' ORDER BY F_KNAM"; + } + else + { + query = "select F_INPUT_NAME, f_knam, f_symb from t_world_ix_eq_master WHERE f_fdtc = '0' and f_natc = 'US' and F_KNAM like '%" + txts.Text.ToUpper() + "%' ORDER BY F_KNAM"; + } + + mf.m_db.ViewQuery(dataGridView1, query); + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + mf.InsertRow(FpSpread1, FpSpread1.ActiveSheet, FpSpread1.ActiveSheet.RowCount + 1, 1, 0); + FpSpread1.ActiveSheet.SetText(i, 1, dataGridView1.Rows[i].Cells[1].Value.ToString()); + FpSpread1.ActiveSheet.SetText(i, 0, dataGridView1.Rows[i].Cells[0].Value.ToString()); + FpSpread1.ActiveSheet.SetText(i, 2, dataGridView1.Rows[i].Cells[2].Value.ToString()); + } + } + + private void jongmok_search() + { + string query = string.Empty; + + FpSpread2.ActiveSheet.ClearRange(0, 0, FpSpread2.ActiveSheet.RowCount, FpSpread2.ActiveSheet.ColumnCount, true); + if (FpSpread2.ActiveSheet.RowCount != 0) + FpSpread2.ActiveSheet.RemoveRows(0, FpSpread2.ActiveSheet.RowCount); + + if (txtj.Text == "") + { +// query = "select F_INPUT_NAME, f_symb from t_world_ix_eq_master WHERE f_fdtc = '1' and (f_natc = 'US' or f_natc = 'TW') ORDER BY F_INPUT_NAME"; + query = "select F_INPUT_NAME, f_symb from t_world_ix_eq_master WHERE f_fdtc = '1' and (f_natc = 'US' or f_natc = 'TW') ORDER BY F_INPUT_NAME"; + } + else + { +// query = "select F_INPUT_NAME, f_symb from t_world_ix_eq_master WHERE f_fdtc = '1' and (f_natc = 'US' or f_natc = 'TW') and UPPER(F_INPUT_NAME) like '%"+ txtj.Text.ToUpper() + "%' ORDER BY F_INPUT_NAME"; + query = "select F_INPUT_NAME, f_symb from t_world_ix_eq_master WHERE f_fdtc = '1' and UPPER(F_INPUT_NAME) like '%" + txtj.Text.ToUpper() + "%' ORDER BY F_INPUT_NAME"; + } + + mf.m_db.ViewQuery(dataGridView1, query); + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + mf.InsertRow(FpSpread2, FpSpread2.ActiveSheet, FpSpread2.ActiveSheet.RowCount + 1, 1, 0); + FpSpread2.ActiveSheet.SetText(i, 0, dataGridView1.Rows[i].Cells[1].Value.ToString()); + FpSpread2.ActiveSheet.SetText(i, 1, dataGridView1.Rows[i].Cells[0].Value.ToString()); + //FpSpread2.ActiveSheet.SetText(i, 2, dataGridView1.Rows[i].Cells[2].Value.ToString()); + } + } + + + + private void btn1_Click(object sender, EventArgs e) + { + + Button btn = (Button)sender; + string date = string.Empty; + + if ((string)btn.Tag == "1") + date = "5일"; + else if ((string)btn.Tag == "2") + date = "20일"; + else if ((string)btn.Tag == "3") + date = "60일"; + else if ((string)btn.Tag == "4") + date = "120일"; + else if ((string)btn.Tag == "5") + date = "240일"; + else if ((string)btn.Tag == "6") //업종 1열판 + { + if (FpSpread1.ActiveSheet.RowCount != 0) + { + int row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "해외업종"); + mf.PlayList.ActiveSheet.SetText(row - 1, 2, FpSpread1.ActiveSheet.GetText(FpSpread1.ActiveSheet.ActiveRowIndex, 1)); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, "1열판기본"); + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + } + return; + } + else if ((string)btn.Tag == "7") //해외종목 1열판 + { + if (FpSpread2.ActiveSheet.RowCount != 0) + { + int row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "해외종목"); + mf.PlayList.ActiveSheet.SetText(row - 1, 2, FpSpread2.ActiveSheet.GetText(FpSpread2.ActiveSheet.ActiveRowIndex, 1)); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, "1열판기본"); + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + } + return; + + } + else if ((string)btn.Tag == "8") //해외종목 5일 + { + Account_Graph("5일"); + return; + } + else if ((string)btn.Tag == "9") //해외종목 20일 + { + Account_Graph("20일"); + return; + } + else if ((string)btn.Tag == "10") //해외종목 60일 + { + Account_Graph("60일"); + return; + } + else if ((string)btn.Tag == "11") //해외종목 120일 + { + Account_Graph("120일"); + return; + } + else if ((string)btn.Tag == "12") //해외종목 240일 + { + Account_Graph("240일"); + return; + } + + + if (FpSpread.ActiveSheet.GetText(FpSpread.ActiveSheet.ActiveRowIndex, 1) != "") + { + int row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "해외지수"); + mf.PlayList.ActiveSheet.SetText(row - 1, 2, FpSpread.ActiveSheet.GetText(FpSpread.ActiveSheet.ActiveRowIndex, 1)); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, "캔들그래프"); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, date); + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + } + } + + public void Account_Graph(string date) + { + if (FpSpread2.ActiveSheet.RowCount != 0) + { + int row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + mf.PlayList.ActiveSheet.SetText(row - 1, 1, "해외종목"); + mf.PlayList.ActiveSheet.SetText(row - 1, 2, FpSpread2.ActiveSheet.GetText(FpSpread2.ActiveSheet.ActiveRowIndex, 1)); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, "캔들그래프"); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, date); + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + } + } + + private void FpSpread_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e) + { + + } + + private void txts_TextChanged(object sender, EventArgs e) + { + //txts.CharacterCasing = CharacterCasing.Upper; ; + } + + private void txtj_TextChanged(object sender, EventArgs e) + { + // txtj.CharacterCasing = CharacterCasing.Upper; ; + } + } +} diff --git a/MBN_STOCK_N/Control/UC5.resx b/MBN_STOCK_N/Control/UC5.resx new file mode 100644 index 0000000..0a9a252 --- /dev/null +++ b/MBN_STOCK_N/Control/UC5.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 401, 157 + + + 516, 157 + + + 171, 157 + + + 286, 157 + + + 811, 118 + + + 958, 118 + + \ No newline at end of file diff --git a/MBN_STOCK_N/Control/UC6.Designer.cs b/MBN_STOCK_N/Control/UC6.Designer.cs new file mode 100644 index 0000000..cfebb88 --- /dev/null +++ b/MBN_STOCK_N/Control/UC6.Designer.cs @@ -0,0 +1,709 @@ + +namespace MBN_STOCK_N +{ + partial class UC6 + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer2 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer2 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer3 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer3 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer1 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer1 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer4 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer4 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer5 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer5 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer8 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer8 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer12 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer12 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer11 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer11 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer6 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer6 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer7 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer7 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer9 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer9 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer10 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer10 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer13 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer13 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer17 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer17 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer18 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer18 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer14 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer14 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UC6)); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer1 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle1 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType1 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.NamedStyle namedStyle2 = new FarPoint.Win.Spread.NamedStyle("CornerDefault"); + FarPoint.Win.Spread.CellType.CornerRenderer cornerRenderer1 = new FarPoint.Win.Spread.CellType.CornerRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle3 = new FarPoint.Win.Spread.NamedStyle("ColumnHeaderEnhanced"); + FarPoint.Win.Spread.NamedStyle namedStyle4 = new FarPoint.Win.Spread.NamedStyle("RowHeaderDefault"); + FarPoint.Win.Spread.SpreadSkin spreadSkin1 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer2 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer3 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.EmptyBorder emptyBorder1 = new FarPoint.Win.EmptyBorder(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer4 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle5 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType2 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.NamedStyle namedStyle6 = new FarPoint.Win.Spread.NamedStyle("CornerDefault"); + FarPoint.Win.Spread.CellType.CornerRenderer cornerRenderer2 = new FarPoint.Win.Spread.CellType.CornerRenderer(); + FarPoint.Win.Spread.SpreadSkin spreadSkin2 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer5 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer6 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.EmptyBorder emptyBorder2 = new FarPoint.Win.EmptyBorder(); + this.btlistadd = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.txtSearch = new System.Windows.Forms.TextBox(); + this.listBox = new System.Windows.Forms.ListBox(); + this.btnsearch = new System.Windows.Forms.Button(); + this.tabp6_1 = new System.Windows.Forms.Panel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.btnsave = new System.Windows.Forms.Button(); + this.btndel = new System.Windows.Forms.Button(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.FpSpread1 = new FarPoint.Win.Spread.FpSpread(); + this.FpSpread1_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread1_Sheet2 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread2 = new FarPoint.Win.Spread.FpSpread(); + this.FpSpread2_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread2_Sheet2 = new FarPoint.Win.Spread.SheetView(); + this.btnDelete = new System.Windows.Forms.Button(); + this.btnAdd = new System.Windows.Forms.Button(); + this.groupBox1.SuspendLayout(); + this.tabp6_1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet2)).BeginInit(); + this.SuspendLayout(); + enhancedColumnHeaderRenderer2.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer2.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer2.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer2.Name = "enhancedColumnHeaderRenderer2"; + enhancedColumnHeaderRenderer2.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer2.TextRotationAngle = 0D; + rowHeaderRenderer2.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer2.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer2.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer2.Name = "rowHeaderRenderer2"; + rowHeaderRenderer2.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer2.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer3.Name = "enhancedColumnHeaderRenderer3"; + enhancedColumnHeaderRenderer3.TextRotationAngle = 0D; + rowHeaderRenderer3.Name = "rowHeaderRenderer3"; + rowHeaderRenderer3.TextRotationAngle = 0D; + rowHeaderRenderer1.Name = "rowHeaderRenderer1"; + rowHeaderRenderer1.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer1.Name = "enhancedColumnHeaderRenderer1"; + enhancedColumnHeaderRenderer1.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer4.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer4.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer4.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer4.Name = "enhancedColumnHeaderRenderer4"; + enhancedColumnHeaderRenderer4.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer4.TextRotationAngle = 0D; + rowHeaderRenderer4.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer4.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer4.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer4.Name = "rowHeaderRenderer4"; + rowHeaderRenderer4.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer4.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer5.Name = "enhancedColumnHeaderRenderer5"; + enhancedColumnHeaderRenderer5.TextRotationAngle = 0D; + rowHeaderRenderer5.Name = "rowHeaderRenderer5"; + rowHeaderRenderer5.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer8.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer8.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer8.Name = "enhancedColumnHeaderRenderer8"; + enhancedColumnHeaderRenderer8.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer8.TextRotationAngle = 0D; + rowHeaderRenderer8.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer8.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer8.Name = "rowHeaderRenderer8"; + rowHeaderRenderer8.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer8.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer12.Name = "enhancedColumnHeaderRenderer12"; + enhancedColumnHeaderRenderer12.TextRotationAngle = 0D; + rowHeaderRenderer12.Name = "rowHeaderRenderer12"; + rowHeaderRenderer12.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer11.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer11.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer11.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer11.Name = "enhancedColumnHeaderRenderer11"; + enhancedColumnHeaderRenderer11.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer11.TextRotationAngle = 0D; + rowHeaderRenderer11.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer11.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer11.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer11.Name = "rowHeaderRenderer11"; + rowHeaderRenderer11.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer11.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer6.Name = "enhancedColumnHeaderRenderer6"; + enhancedColumnHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer6.TextRotationAngle = 0D; + rowHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer6.Name = "rowHeaderRenderer6"; + rowHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer6.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer7.Name = "enhancedColumnHeaderRenderer7"; + enhancedColumnHeaderRenderer7.TextRotationAngle = 0D; + rowHeaderRenderer7.Name = "rowHeaderRenderer7"; + rowHeaderRenderer7.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer9.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer9.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer9.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer9.Name = "enhancedColumnHeaderRenderer9"; + enhancedColumnHeaderRenderer9.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer9.TextRotationAngle = 0D; + rowHeaderRenderer9.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer9.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer9.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer9.Name = "rowHeaderRenderer9"; + rowHeaderRenderer9.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer9.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer10.Name = "enhancedColumnHeaderRenderer10"; + enhancedColumnHeaderRenderer10.TextRotationAngle = 0D; + rowHeaderRenderer10.Name = "rowHeaderRenderer10"; + rowHeaderRenderer10.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer13.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer13.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer13.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer13.Name = "enhancedColumnHeaderRenderer13"; + enhancedColumnHeaderRenderer13.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer13.TextRotationAngle = 0D; + rowHeaderRenderer13.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer13.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer13.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer13.Name = "rowHeaderRenderer13"; + rowHeaderRenderer13.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer13.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer17.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer17.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer17.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer17.Name = "enhancedColumnHeaderRenderer17"; + enhancedColumnHeaderRenderer17.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer17.TextRotationAngle = 0D; + rowHeaderRenderer17.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer17.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer17.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer17.Name = "rowHeaderRenderer17"; + rowHeaderRenderer17.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer17.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer18.Name = "enhancedColumnHeaderRenderer18"; + enhancedColumnHeaderRenderer18.TextRotationAngle = 0D; + rowHeaderRenderer18.Name = "rowHeaderRenderer18"; + rowHeaderRenderer18.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer14.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer14.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer14.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer14.Name = "enhancedColumnHeaderRenderer14"; + enhancedColumnHeaderRenderer14.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer14.TextRotationAngle = 0D; + rowHeaderRenderer14.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer14.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer14.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer14.Name = "rowHeaderRenderer14"; + rowHeaderRenderer14.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer14.TextRotationAngle = 0D; + // + // btlistadd + // + this.btlistadd.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btlistadd.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btlistadd.ForeColor = System.Drawing.Color.Black; + this.btlistadd.Location = new System.Drawing.Point(9, 309); + this.btlistadd.Name = "btlistadd"; + this.btlistadd.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btlistadd.Size = new System.Drawing.Size(187, 35); + this.btlistadd.TabIndex = 595; + this.btlistadd.Text = "송출 리스트에 추가"; + this.btlistadd.UseVisualStyleBackColor = true; + this.btlistadd.Click += new System.EventHandler(this.btlistadd_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.txtSearch); + this.groupBox1.Controls.Add(this.listBox); + this.groupBox1.Controls.Add(this.btnsearch); + this.groupBox1.Location = new System.Drawing.Point(202, 51); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(209, 294); + this.groupBox1.TabIndex = 600; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "종목"; + // + // txtSearch + // + this.txtSearch.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txtSearch.Location = new System.Drawing.Point(6, 21); + this.txtSearch.Name = "txtSearch"; + this.txtSearch.Size = new System.Drawing.Size(128, 25); + this.txtSearch.TabIndex = 591; + this.txtSearch.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtSearch_KeyPress); + // + // listBox + // + this.listBox.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.listBox.FormattingEnabled = true; + this.listBox.ItemHeight = 17; + this.listBox.Location = new System.Drawing.Point(6, 60); + this.listBox.Name = "listBox"; + this.listBox.Size = new System.Drawing.Size(192, 225); + this.listBox.TabIndex = 594; + this.listBox.DoubleClick += new System.EventHandler(this.listBox_DoubleClick); + // + // btnsearch + // + this.btnsearch.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnsearch.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnsearch.ForeColor = System.Drawing.Color.Black; + this.btnsearch.Image = ((System.Drawing.Image)(resources.GetObject("btnsearch.Image"))); + this.btnsearch.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnsearch.Location = new System.Drawing.Point(140, 17); + this.btnsearch.Name = "btnsearch"; + this.btnsearch.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnsearch.Size = new System.Drawing.Size(63, 26); + this.btnsearch.TabIndex = 592; + this.btnsearch.Text = " 검색"; + this.btnsearch.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnsearch.UseVisualStyleBackColor = true; + this.btnsearch.Click += new System.EventHandler(this.btnsearch_Click); + // + // tabp6_1 + // + this.tabp6_1.Controls.Add(this.panel1); + this.tabp6_1.Controls.Add(this.panel2); + this.tabp6_1.Controls.Add(this.btnsave); + this.tabp6_1.Controls.Add(this.btndel); + this.tabp6_1.Controls.Add(this.dataGridView1); + this.tabp6_1.Controls.Add(this.btlistadd); + this.tabp6_1.Controls.Add(this.FpSpread1); + this.tabp6_1.Controls.Add(this.FpSpread2); + this.tabp6_1.Controls.Add(this.btnDelete); + this.tabp6_1.Controls.Add(this.btnAdd); + this.tabp6_1.Controls.Add(this.groupBox1); + this.tabp6_1.Location = new System.Drawing.Point(4, 2); + this.tabp6_1.Name = "tabp6_1"; + this.tabp6_1.Size = new System.Drawing.Size(460, 812); + this.tabp6_1.TabIndex = 602; + this.tabp6_1.Paint += new System.Windows.Forms.PaintEventHandler(this.tabp6_1_Paint); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.White; + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.ForeColor = System.Drawing.SystemColors.ButtonShadow; + this.panel1.Location = new System.Drawing.Point(10, 390); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(398, 1); + this.panel1.TabIndex = 621; + // + // panel2 + // + this.panel2.BackColor = System.Drawing.Color.White; + this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel2.ForeColor = System.Drawing.SystemColors.ButtonShadow; + this.panel2.Location = new System.Drawing.Point(10, 38); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(184, 1); + this.panel2.TabIndex = 620; + // + // btnsave + // + this.btnsave.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnsave.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnsave.ForeColor = System.Drawing.Color.Black; + this.btnsave.Location = new System.Drawing.Point(305, 753); + this.btnsave.Name = "btnsave"; + this.btnsave.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnsave.Size = new System.Drawing.Size(105, 29); + this.btnsave.TabIndex = 619; + this.btnsave.Text = "저장"; + this.btnsave.UseVisualStyleBackColor = true; + this.btnsave.Click += new System.EventHandler(this.btnsave_Click); + // + // btndel + // + this.btndel.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btndel.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btndel.ForeColor = System.Drawing.Color.Black; + this.btndel.Location = new System.Drawing.Point(189, 753); + this.btndel.Name = "btndel"; + this.btndel.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btndel.Size = new System.Drawing.Size(105, 29); + this.btndel.TabIndex = 618; + this.btndel.Text = "종목삭제"; + this.btndel.UseVisualStyleBackColor = true; + this.btndel.Click += new System.EventHandler(this.btndel_Click); + // + // dataGridView1 + // + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Location = new System.Drawing.Point(37, 455); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowTemplate.Height = 23; + this.dataGridView1.Size = new System.Drawing.Size(179, 63); + this.dataGridView1.TabIndex = 617; + this.dataGridView1.Visible = false; + // + // FpSpread1 + // + this.FpSpread1.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, "; + this.FpSpread1.AutoClipboard = false; + this.FpSpread1.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.FpSpread1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FpSpread1.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders; + this.FpSpread1.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + this.FpSpread1.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread1.HorizontalScrollBar.Name = ""; + this.FpSpread1.HorizontalScrollBar.Renderer = defaultScrollBarRenderer1; + this.FpSpread1.HorizontalScrollBar.TabIndex = 361; + this.FpSpread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.FpSpread1.Location = new System.Drawing.Point(9, 12); + this.FpSpread1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.FpSpread1.Name = "FpSpread1"; + namedStyle1.BackColor = System.Drawing.SystemColors.Window; + namedStyle1.CellType = generalCellType1; + namedStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle1.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle1.Renderer = generalCellType1; + namedStyle2.BackColor = System.Drawing.SystemColors.Control; + namedStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle2.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle2.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle2.Renderer = cornerRenderer1; + namedStyle2.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(211)))), ((int)(((byte)(220)))), ((int)(((byte)(233))))); + namedStyle3.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle3.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle3.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle3.Renderer = enhancedColumnHeaderRenderer18; + namedStyle3.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle4.BackColor = System.Drawing.SystemColors.Control; + namedStyle4.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle4.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle4.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle4.Renderer = rowHeaderRenderer18; + namedStyle4.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.FpSpread1.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle1, + namedStyle2, + namedStyle3, + namedStyle4}); + this.FpSpread1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.FpSpread1.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.FpSpread1_Sheet1, + this.FpSpread1_Sheet2}); + this.FpSpread1.Size = new System.Drawing.Size(187, 291); + spreadSkin1.ColumnHeaderDefaultStyle = namedStyle3; + spreadSkin1.DefaultStyle = namedStyle4; + spreadSkin1.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + spreadSkin1.Name = "CustomSkin1"; + spreadSkin1.RowHeaderDefaultStyle = namedStyle3; + spreadSkin1.ScrollBarRenderer = defaultScrollBarRenderer2; + spreadSkin1.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(60)))), ((int)(((byte)(97))))), System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(110)))), ((int)(((byte)(170))))), System.Drawing.Drawing2D.LinearGradientMode.Vertical, 30); + this.FpSpread1.Skin = spreadSkin1; + this.FpSpread1.TabIndex = 605; + this.FpSpread1.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.Never; + this.FpSpread1.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Never; + this.FpSpread1.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread1.VerticalScrollBar.Name = ""; + this.FpSpread1.VerticalScrollBar.Renderer = defaultScrollBarRenderer3; + this.FpSpread1.VerticalScrollBar.TabIndex = 362; + this.FpSpread1.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; + this.FpSpread1.CellClick += new FarPoint.Win.Spread.CellClickEventHandler(this.FpSpread1_CellClick); + // + // FpSpread1_Sheet1 + // + this.FpSpread1_Sheet1.Reset(); + this.FpSpread1_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread1_Sheet1.ColumnCount = 7; + this.FpSpread1_Sheet1.RowCount = 0; + this.FpSpread1_Sheet1.RowHeader.ColumnCount = 0; + this.FpSpread1_Sheet1.ActiveRowIndex = -1; + this.FpSpread1_Sheet1.ActiveSkin = FarPoint.Win.Spread.DefaultSkins.Classic; + this.FpSpread1_Sheet1.ColumnHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 0).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "Index"; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).BackColor = System.Drawing.SystemColors.ActiveCaption; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Border = emptyBorder1; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "전문가"; + this.FpSpread1_Sheet1.ColumnHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.ColumnHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.FpSpread1_Sheet1.Columns.Get(0).Label = "Index"; + this.FpSpread1_Sheet1.Columns.Get(0).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(0).Width = 79F; + this.FpSpread1_Sheet1.Columns.Get(1).Label = "전문가"; + this.FpSpread1_Sheet1.Columns.Get(1).Width = 193F; + this.FpSpread1_Sheet1.Columns.Get(2).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(3).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(4).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(5).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(6).Visible = false; + this.FpSpread1_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.RowMode; + this.FpSpread1_Sheet1.RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; + this.FpSpread1_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.FpSpread1_Sheet1.RowHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.RowHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.RowHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.SheetCornerStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.FpSpread1.SetActiveViewport(0, -1, 0); + // + // FpSpread1_Sheet2 + // + this.FpSpread1_Sheet2.Reset(); + this.FpSpread1_Sheet2.SheetName = "Sheet2"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread1_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread1_Sheet2.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet2.DefaultStyle.Parent = "RowHeaderDefault"; + this.FpSpread1_Sheet2.RowHeader.Columns.Default.Resizable = false; + this.FpSpread1_Sheet2.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet2.RowHeader.DefaultStyle.Parent = "ColumnHeaderEnhanced"; + this.FpSpread1_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + // + // FpSpread2 + // + this.FpSpread2.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, "; + this.FpSpread2.AllowDragDrop = true; + this.FpSpread2.AllowDragFill = true; + this.FpSpread2.AllowUserFormulas = true; + this.FpSpread2.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.FpSpread2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FpSpread2.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + this.FpSpread2.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread2.HorizontalScrollBar.Name = ""; + this.FpSpread2.HorizontalScrollBar.Renderer = defaultScrollBarRenderer4; + this.FpSpread2.HorizontalScrollBar.TabIndex = 363; + this.FpSpread2.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.FpSpread2.Location = new System.Drawing.Point(8, 364); + this.FpSpread2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.FpSpread2.Name = "FpSpread2"; + namedStyle5.BackColor = System.Drawing.SystemColors.Window; + namedStyle5.CellType = generalCellType2; + namedStyle5.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle5.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle5.Renderer = generalCellType2; + namedStyle6.BackColor = System.Drawing.SystemColors.Control; + namedStyle6.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle6.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle6.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle6.Renderer = cornerRenderer2; + namedStyle6.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.FpSpread2.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle5, + namedStyle6, + namedStyle3, + namedStyle4}); + this.FpSpread2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.FpSpread2.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.FpSpread2_Sheet1, + this.FpSpread2_Sheet2}); + this.FpSpread2.Size = new System.Drawing.Size(402, 382); + spreadSkin2.ColumnHeaderDefaultStyle = namedStyle3; + spreadSkin2.DefaultStyle = namedStyle4; + spreadSkin2.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + spreadSkin2.Name = "CustomSkin1"; + spreadSkin2.RowHeaderDefaultStyle = namedStyle3; + spreadSkin2.ScrollBarRenderer = defaultScrollBarRenderer5; + spreadSkin2.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(60)))), ((int)(((byte)(97))))), System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(110)))), ((int)(((byte)(170))))), System.Drawing.Drawing2D.LinearGradientMode.Vertical, 30); + this.FpSpread2.Skin = spreadSkin2; + this.FpSpread2.TabIndex = 1; + this.FpSpread2.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.Never; + this.FpSpread2.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Never; + this.FpSpread2.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread2.VerticalScrollBar.Name = ""; + this.FpSpread2.VerticalScrollBar.Renderer = defaultScrollBarRenderer6; + this.FpSpread2.VerticalScrollBar.TabIndex = 364; + this.FpSpread2.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; + this.FpSpread2.CellClick += new FarPoint.Win.Spread.CellClickEventHandler(this.FpSpread2_CellClick); + this.FpSpread2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FpSpread2_KeyDown); + // + // FpSpread2_Sheet1 + // + this.FpSpread2_Sheet1.Reset(); + this.FpSpread2_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread2_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread2_Sheet1.ColumnCount = 8; + this.FpSpread2_Sheet1.RowCount = 0; + this.FpSpread2_Sheet1.RowHeader.ColumnCount = 0; + this.FpSpread2_Sheet1.ActiveRowIndex = -1; + this.FpSpread2_Sheet1.ActiveSkin = FarPoint.Win.Spread.DefaultSkins.Classic; + this.FpSpread2_Sheet1.ColumnHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 0).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "Index"; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).BackColor = System.Drawing.SystemColors.ActiveCaption; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).Border = emptyBorder2; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "종목"; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 2).Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 2).Value = "매수가"; + this.FpSpread2_Sheet1.ColumnHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.ColumnHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.FpSpread2_Sheet1.Columns.Get(0).Label = "Index"; + this.FpSpread2_Sheet1.Columns.Get(0).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(0).Width = 79F; + this.FpSpread2_Sheet1.Columns.Get(1).Label = "종목"; + this.FpSpread2_Sheet1.Columns.Get(1).Width = 273F; + this.FpSpread2_Sheet1.Columns.Get(2).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread2_Sheet1.Columns.Get(2).Label = "매수가"; + this.FpSpread2_Sheet1.Columns.Get(2).Width = 163F; + this.FpSpread2_Sheet1.Columns.Get(3).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(4).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(5).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(6).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(7).Visible = false; + this.FpSpread2_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.RowMode; + this.FpSpread2_Sheet1.RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; + this.FpSpread2_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.FpSpread2_Sheet1.RowHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.RowHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.RowHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.SheetCornerStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.FpSpread2.SetActiveViewport(0, -1, 0); + // + // FpSpread2_Sheet2 + // + this.FpSpread2_Sheet2.Reset(); + this.FpSpread2_Sheet2.SheetName = "Sheet2"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread2_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread2_Sheet2.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet2.DefaultStyle.Parent = "RowHeaderDefault"; + this.FpSpread2_Sheet2.RowHeader.Columns.Default.Resizable = false; + this.FpSpread2_Sheet2.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet2.RowHeader.DefaultStyle.Parent = "ColumnHeaderEnhanced"; + this.FpSpread2_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + // + // btnDelete + // + this.btnDelete.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnDelete.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnDelete.ForeColor = System.Drawing.Color.Black; + this.btnDelete.Location = new System.Drawing.Point(312, 12); + this.btnDelete.Name = "btnDelete"; + this.btnDelete.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnDelete.Size = new System.Drawing.Size(93, 29); + this.btnDelete.TabIndex = 604; + this.btnDelete.Text = "삭제"; + this.btnDelete.UseVisualStyleBackColor = true; + this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click); + // + // btnAdd + // + this.btnAdd.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnAdd.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnAdd.ForeColor = System.Drawing.Color.Black; + this.btnAdd.Location = new System.Drawing.Point(208, 12); + this.btnAdd.Name = "btnAdd"; + this.btnAdd.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnAdd.Size = new System.Drawing.Size(100, 29); + this.btnAdd.TabIndex = 603; + this.btnAdd.Text = "추가"; + this.btnAdd.UseVisualStyleBackColor = true; + this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); + // + // UC6 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.tabp6_1); + this.Controls.Add(rowHeaderRenderer1); + this.Controls.Add(enhancedColumnHeaderRenderer1); + this.Name = "UC6"; + this.Size = new System.Drawing.Size(470, 817); + this.Load += new System.EventHandler(this.UC6_Load); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.tabp6_1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet2)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Button btlistadd; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.TextBox txtSearch; + private System.Windows.Forms.ListBox listBox; + private System.Windows.Forms.Button btnsearch; + private System.Windows.Forms.Panel tabp6_1; + public FarPoint.Win.Spread.FpSpread FpSpread2; + public FarPoint.Win.Spread.SheetView FpSpread2_Sheet1; + public FarPoint.Win.Spread.SheetView FpSpread2_Sheet2; + private System.Windows.Forms.Button btnDelete; + private System.Windows.Forms.Button btnAdd; + public FarPoint.Win.Spread.FpSpread FpSpread1; + public FarPoint.Win.Spread.SheetView FpSpread1_Sheet1; + public FarPoint.Win.Spread.SheetView FpSpread1_Sheet2; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.Button btnsave; + private System.Windows.Forms.Button btndel; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Panel panel1; + } +} diff --git a/MBN_STOCK_N/Control/UC6.cs b/MBN_STOCK_N/Control/UC6.cs new file mode 100644 index 0000000..21bbffd --- /dev/null +++ b/MBN_STOCK_N/Control/UC6.cs @@ -0,0 +1,238 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MBN_STOCK_N +{ + public partial class UC6 : UserControl + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + string m_code = string.Empty; + string m_name = string.Empty; + string m_scode = string.Empty; + public UC6() + { + InitializeComponent(); + } + + + public UC6(Form frm) + { + mf = (MainForm)frm; + InitializeComponent(); + + } + + + private void btnAdd_Click(object sender, EventArgs e) + { + EList fm = new EList(mf); + fm.ShowDialog(); + + Data_Load(); + } + + private void UC6_Load(object sender, EventArgs e) + { + + FpSpread1.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + FpSpread2.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + Data_Load(); + FpSpread2.Focus(); + + } + + private void Data_Load() + { + FpSpread1.ActiveSheet.ClearRange(0, 0, FpSpread1.ActiveSheet.RowCount, FpSpread1.ActiveSheet.ColumnCount, true); + + if (FpSpread1.ActiveSheet.RowCount != 0) + FpSpread1.ActiveSheet.RemoveRows(0, FpSpread1.ActiveSheet.RowCount); + + mf.m_db.ViewQuery(dataGridView1, "SELECT EP_NAME, EP_CODE FROM EXPERT_LIST"); + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + mf.InsertRow(FpSpread1, FpSpread1.ActiveSheet, FpSpread1.ActiveSheet.RowCount + 1, 1, 0); + FpSpread1.ActiveSheet.SetText(i, 1, dataGridView1.Rows[i].Cells[0].Value.ToString()); + FpSpread1.ActiveSheet.SetText(i, 0, dataGridView1.Rows[i].Cells[1].Value.ToString()); + + } + } + + private void FpSpread1_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e) + { + + FpSpread2.ActiveSheet.ClearRange(0, 0, FpSpread2.ActiveSheet.RowCount, FpSpread2.ActiveSheet.ColumnCount, true); + + if (FpSpread2.ActiveSheet.RowCount != 0) + FpSpread2.ActiveSheet.RemoveRows(0, FpSpread2.ActiveSheet.RowCount); + + m_code = FpSpread1.ActiveSheet.GetText(e.Row, 0); + m_name = FpSpread1.ActiveSheet.GetText(e.Row, 1); + + mf.m_db.ViewQuery(dataGridView1, "SELECT * FROM RECOMMEND_LIST WHERE RC_CODE = '" + m_code + "' order by PLAYINDEX"); + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + mf.InsertRow(FpSpread2, FpSpread2.ActiveSheet, FpSpread2.ActiveSheet.RowCount + 1, 1, 0); + FpSpread2.ActiveSheet.SetText(i, 0, dataGridView1.Rows[i].Cells[1].Value.ToString()); + FpSpread2.ActiveSheet.SetText(i, 1, dataGridView1.Rows[i].Cells[2].Value.ToString()); + FpSpread2.ActiveSheet.SetText(i, 2, dataGridView1.Rows[i].Cells[3].Value.ToString()); + FpSpread2.ActiveSheet.SetText(i, 3, dataGridView1.Rows[i].Cells[0].Value.ToString()); + + } + + + } + + private void btnDelete_Click(object sender, EventArgs e) + { + + if (m_code != "") + { + if (MessageBox.Show("선택한 전문가를 삭제하겠습니까?", "MmoneyCoder", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + if (FpSpread1.ActiveSheet.ActiveRowIndex + 1 > 0) + { + FpSpread1.ActiveSheet.RemoveRows(FpSpread1.ActiveSheet.ActiveRowIndex, 1); + } + + mf.m_db.ExecuteQuery("DELETE FROM RECOMMEND_LIST WHERE RC_CODE = '" + m_code + "'"); + mf.m_db.ExecuteQuery("DELETE FROM EXPERT_LIST WHERE EP_CODE = '" + m_code + "'"); + } + } + + } + + + //종목삭제 + private void btndel_Click(object sender, EventArgs e) + { + if (FpSpread2.ActiveSheet.ActiveRowIndex + 1 > 0) + { + //mf.m_db.ExecuteQuery("DELETE FROM RECOMMEND_LIST WHERE RC_CODE = '" + m_code + "' AND RC_STOCK_CODE = '" + m_scode + "'"); + FpSpread2.ActiveSheet.RemoveRows(FpSpread2.ActiveSheet.ActiveRowIndex, 1); + } + } + + + //저장 + private void btnsave_Click(object sender, EventArgs e) + { + + if (m_code != "" && FpSpread2.ActiveSheet.RowCount != 0) + { + mf.m_db.ExecuteQuery("DELETE FROM RECOMMEND_LIST WHERE RC_CODE = '" + m_code + "'"); + mf.m_db.ExecuteQuery("DELETE FROM EXPERT_LIST WHERE EP_CODE = '" + m_code + "'"); + + + mf.m_db.ExecuteQuery("INSERT INTO EXPERT_LIST(EP_CODE, EP_NAME) VALUES('" + m_code + "', '" + m_name + "')"); + + for (int i = 0; i < FpSpread2.ActiveSheet.RowCount; i++) + { + //상세종목 입력 + mf.m_db.ExecuteQuery("INSERT INTO RECOMMEND_LIST (RC_CODE, RC_STOCK_CODE, RC_STOCK_NAME, RC_BUY_AMOUNT, PLAYINDEX) VALUES('" + m_code + "', '" + FpSpread2.ActiveSheet.GetText(i, 0) + "', '" + FpSpread2.ActiveSheet.GetText(i, 1) + "', '" + FpSpread2.ActiveSheet.GetText(i, 2) + "','" + i.ToString() + "')"); + } + + MessageBox.Show("저장되었습니다"); + } + + + } + + private void txtSearch_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == (char)Keys.Enter) + { + e.Handled = true; + mf.searchStock(listBox, txtSearch); + } + } + + private void btnsearch_Click(object sender, EventArgs e) + { + mf.searchStock(listBox, txtSearch); + } + + private void FpSpread2_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e) + { + + + if (e.Column == 2) + { + FpSpread2.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.Normal; + // MessageBox.Show("A"); + } + else + { + FpSpread2.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + } + m_scode = FpSpread2.ActiveSheet.GetText(e.Row, 0); + } + + private void listBox_DoubleClick(object sender, EventArgs e) + { + string str = mf.jongmokCode((string)listBox.SelectedItem); + + string data3 = str.Substring(0, str.IndexOf('/')); //종목코드 + string data4 = str.Substring(str.IndexOf('/') + 1, str.Length - str.IndexOf('/') - 1); //코스피, 코스닥체크 + string jcode = string.Empty; + + + + + //열추가 + int row = FpSpread2.ActiveSheet.RowCount + 1; + mf.InsertRow(FpSpread2, FpSpread2.ActiveSheet, row, 1, 0); + + FpSpread2.ActiveSheet.SetText(row - 1, 1, (string)listBox.SelectedItem); + FpSpread2.ActiveSheet.SetText(row - 1, 0, data3); + FpSpread2.ActiveSheet.SetText(row - 1, 3, m_code); + } + + private void btlistadd_Click(object sender, EventArgs e) + { + int row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + + + mf.PlayList.ActiveSheet.SetValue(row - 1, 1, "전문가 추천"); + mf.PlayList.ActiveSheet.SetText(row - 1, 2, FpSpread1.ActiveSheet.GetText(FpSpread1.ActiveSheet.ActiveRowIndex, 1)); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, "5단 표그래프"); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, "현재가"); + mf.PlayList.ActiveSheet.SetText(row - 1, 6, m_code); //테마 코드 추가 + + int cnt = FpSpread2.ActiveSheet.RowCount; + int lcnt = 0; + + if ((cnt % 5) != 0) + lcnt = 1; + + lcnt = (cnt / 5) + lcnt; + + mf.PlayList.ActiveSheet.SetValue(row - 1, 5, "1/" + lcnt.ToString()); + } + + private void tabp6_1_Paint(object sender, PaintEventArgs e) + { + + } + + private void FpSpread2_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Delete) + { + btndel_Click(null, null); + } + } + } +} diff --git a/MBN_STOCK_N/Control/UC6.resx b/MBN_STOCK_N/Control/UC6.resx new file mode 100644 index 0000000..f56eeaf --- /dev/null +++ b/MBN_STOCK_N/Control/UC6.resx @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAmdEVYdFRpdGxlAEZpbmQ7QmFycztSaWJib247U3Rh + bmRhcmQ7U2VhcmNou2WcCAAAALlJREFUOE+lktsRgjAQRaEdakgpFGEFoj3QBaM1+SNtxHuY3QyziegM + Hydk9j4gQJdzPsW2pJSgF6NYxGqwZ4ZWhWFbzHAT+QtofQyDF3AXjG8xicFgzwxtjGHwAh4V0xQNzExb + ogZu4ryYhmhgZtoaNXDT6YLTRzh6iczhIfAW9gW/PqNzFc0CL2n9SE/RLCkFR5j5LqoS9CoQwWjEkhm9 + GdojY7mKfcmLeRVoYWFnJiwuaM3A/+TuA3z+LAyTGFNzAAAAAElFTkSuQmCC + + + + 1073, 118 + + + 1188, 118 + + + 811, 118 + + + 958, 118 + + \ No newline at end of file diff --git a/MBN_STOCK_N/Control/UC7.Designer.cs b/MBN_STOCK_N/Control/UC7.Designer.cs new file mode 100644 index 0000000..baa52ff --- /dev/null +++ b/MBN_STOCK_N/Control/UC7.Designer.cs @@ -0,0 +1,393 @@ + +namespace MBN_STOCK_N +{ + partial class UC7 + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer1 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer1 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer2 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer2 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer5 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer5 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer6 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer6 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer7 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer7 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer8 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer8 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer9 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer9 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer3 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer3 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer4 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer4 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer1 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle1 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType1 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.NamedStyle namedStyle2 = new FarPoint.Win.Spread.NamedStyle("CornerDefault"); + FarPoint.Win.Spread.CellType.CornerRenderer cornerRenderer1 = new FarPoint.Win.Spread.CellType.CornerRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle3 = new FarPoint.Win.Spread.NamedStyle("ColumnHeaderEnhanced"); + FarPoint.Win.Spread.NamedStyle namedStyle4 = new FarPoint.Win.Spread.NamedStyle("RowHeaderDefault"); + FarPoint.Win.Spread.SpreadSkin spreadSkin1 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer2 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer3 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.EmptyBorder emptyBorder1 = new FarPoint.Win.EmptyBorder(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.btnsearch = new System.Windows.Forms.Button(); + this.txts = new System.Windows.Forms.TextBox(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.btn2 = new System.Windows.Forms.Button(); + this.btn1 = new System.Windows.Forms.Button(); + this.FpSpread1 = new FarPoint.Win.Spread.FpSpread(); + this.FpSpread1_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread1_Sheet2 = new FarPoint.Win.Spread.SheetView(); + this.groupBox3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet2)).BeginInit(); + this.SuspendLayout(); + enhancedColumnHeaderRenderer1.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer1.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer1.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer1.Name = "enhancedColumnHeaderRenderer1"; + enhancedColumnHeaderRenderer1.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer1.TextRotationAngle = 0D; + rowHeaderRenderer1.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer1.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer1.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer1.Name = "rowHeaderRenderer1"; + rowHeaderRenderer1.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer1.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer2.Name = "enhancedColumnHeaderRenderer2"; + enhancedColumnHeaderRenderer2.TextRotationAngle = 0D; + rowHeaderRenderer2.Name = "rowHeaderRenderer2"; + rowHeaderRenderer2.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer5.Name = "enhancedColumnHeaderRenderer5"; + enhancedColumnHeaderRenderer5.TextRotationAngle = 0D; + rowHeaderRenderer5.Name = "rowHeaderRenderer5"; + rowHeaderRenderer5.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer6.Name = "enhancedColumnHeaderRenderer6"; + enhancedColumnHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer6.TextRotationAngle = 0D; + rowHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer6.Name = "rowHeaderRenderer6"; + rowHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer6.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer7.Name = "enhancedColumnHeaderRenderer7"; + enhancedColumnHeaderRenderer7.TextRotationAngle = 0D; + rowHeaderRenderer7.Name = "rowHeaderRenderer7"; + rowHeaderRenderer7.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer8.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer8.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer8.Name = "enhancedColumnHeaderRenderer8"; + enhancedColumnHeaderRenderer8.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer8.TextRotationAngle = 0D; + rowHeaderRenderer8.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer8.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer8.Name = "rowHeaderRenderer8"; + rowHeaderRenderer8.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer8.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer9.Name = "enhancedColumnHeaderRenderer9"; + enhancedColumnHeaderRenderer9.TextRotationAngle = 0D; + rowHeaderRenderer9.Name = "rowHeaderRenderer9"; + rowHeaderRenderer9.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer3.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer3.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer3.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer3.Name = "enhancedColumnHeaderRenderer3"; + enhancedColumnHeaderRenderer3.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer3.TextRotationAngle = 0D; + rowHeaderRenderer3.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer3.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer3.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer3.Name = "rowHeaderRenderer3"; + rowHeaderRenderer3.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer3.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer4.Name = "enhancedColumnHeaderRenderer4"; + enhancedColumnHeaderRenderer4.TextRotationAngle = 0D; + rowHeaderRenderer4.Name = "rowHeaderRenderer4"; + rowHeaderRenderer4.TextRotationAngle = 0D; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.panel1); + this.groupBox3.Controls.Add(this.btnsearch); + this.groupBox3.Controls.Add(this.txts); + this.groupBox3.Controls.Add(this.dataGridView1); + this.groupBox3.Controls.Add(this.btn2); + this.groupBox3.Controls.Add(this.btn1); + this.groupBox3.Controls.Add(this.FpSpread1); + this.groupBox3.Location = new System.Drawing.Point(2, 12); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(451, 602); + this.groupBox3.TabIndex = 603; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "거래정지 종목"; + this.groupBox3.Enter += new System.EventHandler(this.groupBox3_Enter); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.White; + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.ForeColor = System.Drawing.SystemColors.ButtonShadow; + this.panel1.Location = new System.Drawing.Point(6, 80); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(301, 1); + this.panel1.TabIndex = 622; + // + // btnsearch + // + this.btnsearch.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnsearch.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnsearch.ForeColor = System.Drawing.Color.Black; + this.btnsearch.Location = new System.Drawing.Point(226, 19); + this.btnsearch.Name = "btnsearch"; + this.btnsearch.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnsearch.Size = new System.Drawing.Size(88, 31); + this.btnsearch.TabIndex = 618; + this.btnsearch.Text = "검 색"; + this.btnsearch.UseVisualStyleBackColor = true; + this.btnsearch.Click += new System.EventHandler(this.btnsearch_Click); + // + // txts + // + this.txts.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txts.Location = new System.Drawing.Point(6, 24); + this.txts.Name = "txts"; + this.txts.Size = new System.Drawing.Size(195, 25); + this.txts.TabIndex = 0; + this.txts.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txts_KeyPress); + // + // dataGridView1 + // + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Location = new System.Drawing.Point(32, 450); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowTemplate.Height = 23; + this.dataGridView1.Size = new System.Drawing.Size(243, 130); + this.dataGridView1.TabIndex = 616; + this.dataGridView1.Visible = false; + // + // btn2 + // + this.btn2.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn2.ForeColor = System.Drawing.Color.Black; + this.btn2.Location = new System.Drawing.Point(321, 340); + this.btn2.Name = "btn2"; + this.btn2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn2.Size = new System.Drawing.Size(90, 34); + this.btn2.TabIndex = 593; + this.btn2.Tag = "2"; + this.btn2.Text = "120일 캔들"; + this.btn2.UseVisualStyleBackColor = true; + this.btn2.Click += new System.EventHandler(this.btn4_Click); + // + // btn1 + // + this.btn1.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn1.ForeColor = System.Drawing.Color.Black; + this.btn1.Location = new System.Drawing.Point(321, 288); + this.btn1.Name = "btn1"; + this.btn1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn1.Size = new System.Drawing.Size(90, 34); + this.btn1.TabIndex = 592; + this.btn1.Tag = "1"; + this.btn1.Text = "현재가"; + this.btn1.UseVisualStyleBackColor = true; + this.btn1.Click += new System.EventHandler(this.btn4_Click); + // + // FpSpread1 + // + this.FpSpread1.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, "; + this.FpSpread1.AutoClipboard = false; + this.FpSpread1.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.FpSpread1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FpSpread1.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders; + this.FpSpread1.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + this.FpSpread1.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread1.HorizontalScrollBar.Name = ""; + this.FpSpread1.HorizontalScrollBar.Renderer = defaultScrollBarRenderer1; + this.FpSpread1.HorizontalScrollBar.TabIndex = 349; + this.FpSpread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.FpSpread1.Location = new System.Drawing.Point(6, 56); + this.FpSpread1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.FpSpread1.Name = "FpSpread1"; + namedStyle1.BackColor = System.Drawing.SystemColors.Window; + namedStyle1.CellType = generalCellType1; + namedStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle1.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle1.Renderer = generalCellType1; + namedStyle2.BackColor = System.Drawing.SystemColors.Control; + namedStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle2.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle2.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle2.Renderer = cornerRenderer1; + namedStyle2.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(211)))), ((int)(((byte)(220)))), ((int)(((byte)(233))))); + namedStyle3.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle3.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle3.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle3.Renderer = enhancedColumnHeaderRenderer4; + namedStyle3.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle4.BackColor = System.Drawing.SystemColors.Control; + namedStyle4.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle4.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle4.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle4.Renderer = rowHeaderRenderer4; + namedStyle4.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.FpSpread1.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle1, + namedStyle2, + namedStyle3, + namedStyle4}); + this.FpSpread1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.FpSpread1.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.FpSpread1_Sheet1, + this.FpSpread1_Sheet2}); + this.FpSpread1.Size = new System.Drawing.Size(303, 533); + spreadSkin1.ColumnHeaderDefaultStyle = namedStyle3; + spreadSkin1.DefaultStyle = namedStyle4; + spreadSkin1.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + spreadSkin1.Name = "CustomSkin1"; + spreadSkin1.RowHeaderDefaultStyle = namedStyle3; + spreadSkin1.ScrollBarRenderer = defaultScrollBarRenderer2; + spreadSkin1.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(60)))), ((int)(((byte)(97))))), System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(110)))), ((int)(((byte)(170))))), System.Drawing.Drawing2D.LinearGradientMode.Vertical, 30); + this.FpSpread1.Skin = spreadSkin1; + this.FpSpread1.TabIndex = 588; + this.FpSpread1.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.Never; + this.FpSpread1.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Never; + this.FpSpread1.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread1.VerticalScrollBar.Name = ""; + this.FpSpread1.VerticalScrollBar.Renderer = defaultScrollBarRenderer3; + this.FpSpread1.VerticalScrollBar.TabIndex = 350; + this.FpSpread1.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; + this.FpSpread1.CellClick += new FarPoint.Win.Spread.CellClickEventHandler(this.FpSpread1_CellClick); + // + // FpSpread1_Sheet1 + // + this.FpSpread1_Sheet1.Reset(); + this.FpSpread1_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread1_Sheet1.ColumnCount = 8; + this.FpSpread1_Sheet1.RowCount = 0; + this.FpSpread1_Sheet1.RowHeader.ColumnCount = 0; + this.FpSpread1_Sheet1.ActiveRowIndex = -1; + this.FpSpread1_Sheet1.ActiveSkin = FarPoint.Win.Spread.DefaultSkins.Classic; + this.FpSpread1_Sheet1.ColumnHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 0).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "Index"; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).BackColor = System.Drawing.SystemColors.ActiveCaption; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Border = emptyBorder1; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "종목명"; + this.FpSpread1_Sheet1.ColumnHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.ColumnHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.FpSpread1_Sheet1.Columns.Get(0).Label = "Index"; + this.FpSpread1_Sheet1.Columns.Get(0).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(0).Width = 79F; + this.FpSpread1_Sheet1.Columns.Get(1).Label = "종목명"; + this.FpSpread1_Sheet1.Columns.Get(1).Width = 327F; + this.FpSpread1_Sheet1.Columns.Get(2).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(3).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(4).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(5).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(6).Visible = false; + this.FpSpread1_Sheet1.Columns.Get(7).Visible = false; + this.FpSpread1_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.RowMode; + this.FpSpread1_Sheet1.RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; + this.FpSpread1_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.FpSpread1_Sheet1.RowHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.RowHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.RowHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.SheetCornerStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.FpSpread1.SetActiveViewport(0, -1, 0); + // + // FpSpread1_Sheet2 + // + this.FpSpread1_Sheet2.Reset(); + this.FpSpread1_Sheet2.SheetName = "Sheet2"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread1_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread1_Sheet2.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet2.DefaultStyle.Parent = "RowHeaderDefault"; + this.FpSpread1_Sheet2.RowHeader.Columns.Default.Resizable = false; + this.FpSpread1_Sheet2.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet2.RowHeader.DefaultStyle.Parent = "ColumnHeaderEnhanced"; + this.FpSpread1_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + // + // UC7 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.groupBox3); + this.Name = "UC7"; + this.Size = new System.Drawing.Size(458, 715); + this.Load += new System.EventHandler(this.UC7_Load); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet2)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.Button btn2; + private System.Windows.Forms.Button btn1; + public FarPoint.Win.Spread.FpSpread FpSpread1; + public FarPoint.Win.Spread.SheetView FpSpread1_Sheet1; + public FarPoint.Win.Spread.SheetView FpSpread1_Sheet2; + private System.Windows.Forms.Button btnsearch; + private System.Windows.Forms.TextBox txts; + private System.Windows.Forms.Panel panel1; + } +} diff --git a/MBN_STOCK_N/Control/UC7.cs b/MBN_STOCK_N/Control/UC7.cs new file mode 100644 index 0000000..f9ef9f0 --- /dev/null +++ b/MBN_STOCK_N/Control/UC7.cs @@ -0,0 +1,243 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MBN_STOCK_N +{ + public partial class UC7 : UserControl + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + + + public UC7() + { + InitializeComponent(); + } + + + public UC7(Form frm) + { + mf = (MainForm)frm; + InitializeComponent(); + + } + + private void UC7_Load(object sender, EventArgs e) + { + FpSpread1.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + } + + //검색 + private void btnsearch_Click(object sender, EventArgs e) + { + search(); + } + + private void txts_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == (char)Keys.Enter) + { + e.Handled = true; + search(); + } + } + + private void search() + { + string query = string.Empty; + + FpSpread1.ActiveSheet.ClearRange(0, 0, FpSpread1.ActiveSheet.RowCount, FpSpread1.ActiveSheet.ColumnCount, true); + + if (FpSpread1.ActiveSheet.RowCount != 0) + FpSpread1.ActiveSheet.RemoveRows(0, FpSpread1.ActiveSheet.RowCount); + + if (txts.Text == "") + { + //query = "SELECT DISTINCT b.F_STOCK_WANNAME stock_name, b.f_stock_code stock_code "; + //query = query + "FROM t_stop_online1 a, t_stock b "; + //query = query + "WHERE b.f_mkt_halt = 'Y' "; + //query = query + "AND a.f_curr_price < > 0 "; + //query = query + "AND a.f_stock_code = b.f_stock_code"; + + + query = "SELECT b.f_stock_code stock_code, b.F_STOCK_WANNAME stock_name "; + query = query + "FROM t_stop_online1 a, t_stock b "; + query = query + "WHERE b.f_mkt_halt = 'Y' "; + query = query + "and a.f_stock_code = b.f_stock_code order by 2"; + + mf.m_db.ViewQuery(dataGridView1, query); + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + mf.InsertRow(FpSpread1, FpSpread1.ActiveSheet, FpSpread1.ActiveSheet.RowCount + 1, 1, 0); + //FpSpread1.ActiveSheet.SetText(i, 0, dataGridView1.Rows[i].Cells[1].Value.ToString()); + FpSpread1.ActiveSheet.SetText(i, 1, dataGridView1.Rows[i].Cells[1].Value.ToString()); + FpSpread1.ActiveSheet.SetText(i, 0, "코스피"); + } + + int cnt = dataGridView1.RowCount-1; + query = ""; + //query = "SELECT DISTINCT b.F_STOCK_WANNAME stock_name, b.f_stock_code stock_code "; + //query = query + "FROM T_STOP_KOSDAQ_ONLINE1 a, T_KOSDAQ_STOCK b "; + //query = query + "WHERE b.f_mkt_halt = 'Y' "; + //query = query + "AND a.f_curr_price < > 0 "; + //query = query + "AND a.f_stock_code = b.f_stock_code"; + + query = "SELECT b.f_stock_code stock_code, b.F_STOCK_WANNAME stock_name "; + query = query + "FROM t_stop_kosdaq_online1 a, t_kosdaq_stock b "; + query = query + "WHERE b.f_mkt_halt = 'Y' "; + query = query + "and a.f_stock_code = b.f_stock_code order by 2"; + + + mf.m_db.ViewQuery(dataGridView1, query); + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + mf.InsertRow(FpSpread1, FpSpread1.ActiveSheet, FpSpread1.ActiveSheet.RowCount + 1, 1, 0); + //FpSpread1.ActiveSheet.SetText(i + cnt, 0, dataGridView1.Rows[i].Cells[1].Value.ToString()); + FpSpread1.ActiveSheet.SetText(i + cnt, 1, dataGridView1.Rows[i].Cells[1].Value.ToString()); + FpSpread1.ActiveSheet.SetText(i + cnt, 0, "코스닥"); + + } + + } + else + { + string s = string.Empty; + + s = txts.Text.ToUpper(); + //query = "SELECT F_STOCK_WANNAME, F_STOCK_CODE FROM T_STOCK WHERE F_MKT_HALT = 'Y' AND UPPER(F_STOCK_WANNAME) LIKE '%" + s + "%'"; + + //query = "select stock_name, stock_code "; + //query = query + "from( "; + //query = query + "SELECT b.f_stock_code stock_code, b.F_STOCK_WANNAME stock_name "; + //query = query + "FROM t_stop_online1 a, t_stock b "; + //query = query + "WHERE b.f_mkt_halt = 'Y' "; + //query = query + "and a.f_stock_code = b.f_stock_code "; + //query = query + "union "; + //query = query + "SELECT b.f_stock_code stock_code, b.F_STOCK_WANNAME stock_name "; + //query = query + "FROM t_stop_kosdaq_online1 a, t_kosdaq_stock b "; + //query = query + " WHERE b.f_mkt_halt = 'Y' "; + //query = query + "and a.f_stock_code = b.f_stock_code) "; + //query = query + "where stock_name like '%" + s + "%' "; + + + + query = "SELECT b.f_stock_code stock_code, b.F_STOCK_WANNAME stock_name "; + query = query + "FROM t_stop_online1 a, t_stock b "; + query = query + "WHERE b.f_mkt_halt = 'Y' "; + query = query + "and a.f_stock_code = b.f_stock_code "; + query = query + "and b.F_STOCK_WANNAME like '%" + s + "%' "; + + + mf.m_db.ViewQuery(dataGridView1, query); + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + mf.InsertRow(FpSpread1, FpSpread1.ActiveSheet, FpSpread1.ActiveSheet.RowCount + 1, 1, 0); + //FpSpread1.ActiveSheet.SetText(i, 0, dataGridView1.Rows[i].Cells[1].Value.ToString()); + FpSpread1.ActiveSheet.SetText(i, 1, dataGridView1.Rows[i].Cells[1].Value.ToString()); + FpSpread1.ActiveSheet.SetText(i, 0, "코스피"); + + } + + int cnt = dataGridView1.RowCount - 1; + query = ""; + query = query + "SELECT b.f_stock_code stock_code, b.F_STOCK_WANNAME stock_name "; + query = query + "FROM t_stop_kosdaq_online1 a, t_kosdaq_stock b "; + query = query + "WHERE b.f_mkt_halt = 'Y' "; + query = query + "and a.f_stock_code = b.f_stock_code "; + query = query + "and b.F_STOCK_WANNAME like '%" + s + "%' "; + + + mf.m_db.ViewQuery(dataGridView1, query); + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + mf.InsertRow(FpSpread1, FpSpread1.ActiveSheet, FpSpread1.ActiveSheet.RowCount + 1, 1, 0); + //FpSpread1.ActiveSheet.SetText(i + cnt, 0, dataGridView1.Rows[i].Cells[1].Value.ToString()); + FpSpread1.ActiveSheet.SetText(i + cnt, 1, dataGridView1.Rows[i].Cells[1].Value.ToString()); + FpSpread1.ActiveSheet.SetText(i + cnt, 0, "코스닥"); + } + } + } + + bool[] sortAscending = new bool[6]; + private void FpSpread1_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e) + { + if (e.ColumnHeader) + { + if (e.Column == 1) + { + FarPoint.Win.Spread.SortInfo[] si = new FarPoint.Win.Spread.SortInfo[2]; + + //int sindex = (e.Column == 1 ? 0 : (e.Column == 1 ? 0 : (e.Column == 1 ? 0 : 0))); + int sindex = (e.Column == 1 ? 0 : (e.Column == 3 ? 1 : (e.Column == 5 ? 2 : 3))); + si[0] = new FarPoint.Win.Spread.SortInfo(e.Column, sortAscending[sindex], System.Collections.Comparer.Default); + + sortAscending[sindex] = (sortAscending[sindex] == false ? true : false); + FpSpread1.Sheets[0].SortRange(0, 0, FpSpread1.Sheets[0].GetLastNonEmptyRow(FarPoint.Win.Spread.NonEmptyItemFlag.Data), FpSpread1.Sheets[0].ColumnCount, true, si); + } + + } + } + + //현재가 + private void btn4_Click(object sender, EventArgs e) + { + Button btn = (Button)sender; + string data1 = string.Empty; + string data2 = string.Empty; + + if ((string)btn.Tag == "1") + { + data1 = "1열판기본"; + data2 = "거래정지-현재가"; + } + else if ((string)btn.Tag == "2") + { + data1 = "캔들그래프-거래정지"; + data2 = "120일"; + } + + + + if (FpSpread1.ActiveSheet.GetText(FpSpread1.ActiveSheet.ActiveRowIndex, 1) != "") + { + int row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + mf.PlayList.ActiveSheet.SetText(row - 1, 1, FpSpread1.ActiveSheet.GetText(FpSpread1.ActiveSheet.ActiveRowIndex, 0)); + mf.PlayList.ActiveSheet.SetText(row - 1, 2, FpSpread1.ActiveSheet.GetText(FpSpread1.ActiveSheet.ActiveRowIndex, 1)); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, data1); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, data2); + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + + + //string s = mf.jongmokCode(FpSpread1.ActiveSheet.GetText(FpSpread1.ActiveSheet.ActiveRowIndex, 1)); + + //if (s != "") + //{ + // string data3 = s.Substring(s.IndexOf('/') + 1, s.Length - s.IndexOf('/') - 1); + // mf.PlayList.ActiveSheet.SetText(row - 1, 1, data3); + //} + + + } + } + + private void groupBox3_Enter(object sender, EventArgs e) + { + + } + } +} diff --git a/MBN_STOCK_N/Control/UC7.resx b/MBN_STOCK_N/Control/UC7.resx new file mode 100644 index 0000000..36e4751 --- /dev/null +++ b/MBN_STOCK_N/Control/UC7.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1104, 118 + + + 1251, 118 + + \ No newline at end of file diff --git a/MBN_STOCK_N/Data/Classification/CutList.cs b/MBN_STOCK_N/Data/Classification/CutList.cs new file mode 100644 index 0000000..16829b6 --- /dev/null +++ b/MBN_STOCK_N/Data/Classification/CutList.cs @@ -0,0 +1,243 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Classification +{ + public class CutList + { + public string cutPath = @"D:\매경TVCuts\"; + public string videoPath = @"D:\매경TVCuts\Video\"; + + + public string[] getCutInfo(string info) + { + string[] rtn = new string[] { "", "" }; + try + { + string path = cutPath; + + if (info.Contains("해외증시 - ")) + { + rtn[0] = "6001"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("영업이익수동^")) + { + rtn[0] = "5081"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("매출액수동^")) + { + rtn[0] = "5080"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("성장성수동^")) + { + rtn[0] = "5079"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("원그래프수동^")) + { + rtn[0] = "5076"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("순매도수동^")) + { + rtn[0] = "5025"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("5단수동^")) + { + rtn[0] = "50740"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("5단표 - ")) + { + rtn[0] = "5074"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("호가창 - ")) + { + rtn[0] = "8003"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("거래원 - ")) + { + rtn[0] = "5037"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("수급 - ")) + { + //디자인 미완성 + } + else if (info.Contains("선그래프 - 주체별 - ")) + { + rtn[0] = "5083"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("선그래프 - 종류별 - ")) + { + rtn[0] = "5084"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("막대그래프 - ")) + { + rtn[0] = "5024"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("유가금값 - ")) + { + rtn[0] = "8086"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("업종별 등락 - 코스피")) + { + rtn[0] = "8001"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("업종별 등락 - 코스닥")) + { + rtn[0] = "8002"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("업종별 섹터지수 - ")) + { + rtn[0] = "5078"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("3열판 - ")) + { + rtn[0] = "5016"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("매매동향 - 주체별")) + { + rtn[0] = "5082"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("매매동향 - 지수별")) + { + rtn[0] = "5023"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("프로그램 매매")) + { + rtn[0] = "5085"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("기관 순매수")) + { + rtn[0] = "6067"; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (CutList_WorldMap.ContainsValue(info)) + { + rtn[0] = CutList_WorldMap.FirstOrDefault(x => x.Value == info).Key; + rtn[1] = path + rtn[0] + ".t2s"; + } + + + + string[] infos = info.Split('-'); + string infoPlate1 = info.Replace(infos[infos.Length - 1], " "); + string infoGraph = info.Remove(info.IndexOf('-')-1); + + if (info.Contains("캔들 그래프")) + { + string term = infos[1]; + + if (term.Equals(" 일봉 (5분) ")) + rtn[0] = "8035"; + else if (term.Equals(" 5일 ")) + rtn[0] = "8061"; + else if (term.Equals(" 1개월 ")) + rtn[0] = "8040"; + else if (term.Equals(" 3개월 ")) + rtn[0] = "8046"; + else if (term.Equals(" 6개월 ")) + rtn[0] = "8051"; + else if (term.Equals(" 1년 ")) + rtn[0] = "8056"; + + + + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (info.Contains("2열판")) + { + if (info.Contains("비교분석 캔들형")) + { + rtn[0] = "5026"; + } + else if (info.Contains("비교분석 라인형")) + { + rtn[0] = "5087"; + } + else if (info.Contains("수익률 비교")) + { + rtn[0] = "5029"; + } + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (CutList_Plate1.ContainsValue(infoPlate1)) + { + rtn[0] = CutList_Plate1.FirstOrDefault(x => x.Value == infoPlate1).Key; + rtn[1] = path + rtn[0] + ".t2s"; + } + else if (CutList_Graph.ContainsValue(infoGraph)) + { + rtn[0] = CutList_Graph.FirstOrDefault(x => x.Value == infoGraph).Key; + rtn[1] = path + rtn[0] + ".t2s"; + } + + } + catch (Exception) + { + } + + + + return rtn; + } + + + public Dictionary CutList_Plate1 = new Dictionary + { + { "5001", "1열판 - 기본 - " }, + { "5006", "1열판 - 시가 - " }, + { "5012", "1열판 - 액면가 - " }, + { "5012_NE", "1열판 - PBR - " }, //디자인 변경해야함 + { "5011", "1열판 - 거래량 - " } + }; + + + public Dictionary CutList_Graph = new Dictionary + { + { "5086", "수익률 그래프" } + }; + + public Dictionary CutList_Candle = new Dictionary + { + {"8035", "5분봉" }, + {"8040", "1개월" }, + {"8046", "3개월" }, + {"8051", "6개월" }, + {"8056", "12개월" }, + {"8061", "1주일" } + }; + + //세계지도 관련 컷 + public Dictionary CutList_WorldMap = new Dictionary + { + { "8067", "세계지도 1장" }, + { "5068", "미국지도" }, + { "5070", "유럽지도" }, + { "5072", "아시아지도" } + }; + + + } +} diff --git a/MBN_STOCK_N/Data/DBDefine.cs b/MBN_STOCK_N/Data/DBDefine.cs new file mode 100644 index 0000000..7959e8e --- /dev/null +++ b/MBN_STOCK_N/Data/DBDefine.cs @@ -0,0 +1,353 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp +{ + public static class DBDefine + { + + [Flags] + public enum 요구데이터분류 + { + 지수, + 종목, + 환율, + 업종과동향 + } + + /// + /// Cut_5,10참조 + /// + public enum 선그래프데이터분류 + { + 원달러, + 원엔, + 원위엔, + 원유로, + 코스피수익률, + 코스닥수익률, + 코스피200수익률, + KRX100수익률, + 코스피업종지수수익률, + 코스닥업종지수수익률, + 코스피종목수익률, + 코스닥종목수익률, + 개인매매동향, + 외국인매매동향, + 기관매매동향, + 코스피매매동향, + 코스닥매매동향 + } + + /// + /// Cut_7참조 + /// + public enum 봉차트데이터분류 + { + KOSPI, + KOSDAQ, + KOSPI200, + KRX100, + 선물, + 코스피종목, + 코스닥종목, + 코스피업종지수, + 코스닥업종지수, + 해외지수, + 해외종목, + 거래정지, + 거래정지k + } + + /// + /// Cut_7 세부종목 + /// KRX100, 업종지수는 예상지수가 없음. + /// + public enum 봉차트세부종목 + { + 예상지수, + 일반지수, + 거래량 + } + + /// + /// Cut_8, Cut_9 참조 + /// + public enum 봉차트매매동향 + { + 주체별매매동향, + 코스피매매동향5단, + 코스닥매매동향5단 + } + + + public enum 그리드표그래프종류 + { + 투자자순매수매도상위14번컷, + 프로그램매매13번컷, + 기관순매수현황11번컷, + 지수별매매동향9번컷, + 주체별매매동향8번컷 + } + + + public enum 데이터기간 + { + [StringValue("1")] + 일, + [StringValue("5")] + 주, + [StringValue("20")] + 월, + [StringValue("60")] + 분기, + [StringValue("120")] + 반기, + [StringValue("240")] + 연 + } + + public enum 환율 + { + [StringValue("A09")] + 달러, + + [StringValue("A10")] + 엔, + + [StringValue("A90")] + 위엔, + + [StringValue("A91")] + 유로 + } + + [Flags] + public enum 국내지수종류 + { + KOSPI, KOSDAQ, NXT_KOSPI, NXT_KOSDAQ, KOSPI200, KRX100, 선물 + } + + [Flags] + public enum 국제지수종류 + { + 다우, 나스닥, SP, 독일, 영국, 프랑스, 니케이, 중국상해, 홍콩항셍, 대만가권, + 싱가포르지수, 태국지수, 필리핀지수, 말레이시아지수, 인도네시아지수, 일본, + 유가두바이지수, 유가WTI지수, 유가브랜드유지수, 금지수 + } + + [Flags] + public enum 국내시장종류 + { + KOSPI, KOSDAQ, NXT_KOSPI, NXT_KOSDAQ, 거래정지, 거래정지K + } + + [Flags] + public enum 종목데이터분류 + { + 거래량, PBR, 현재가, 시가, 액면가, 시가총액, + 등락비율, 주52고저, 시간외등락, 예상시가총액최고최저 + } + + [Flags] + public enum 원환율 + { + 원위엔, 원달러, 원엔, 원유로 + } + + [Flags] + public enum 달러환율 + { + 달러엔, 달러유로, 달러위안 + } + + [Flags] + public enum 업종데이터 + { + KOSPI, KOSDAQ, 해외 + } + + [Flags] + public enum 매매동향 + { + 개인, 외국인, 기관, 코스피, 코스닥, 해외종목 + } + + public enum 섹터지수막대그래프분류 + { + 코스피, 코스닥, 다우, 나스닥, SNP + } + + public enum 판1그래프데이터지수류 + { + 예상지수, + 현재지수, + } + + public enum 판1그래프데이터산업및종목류 + { + 종목현재가, + 종목예상체결가, + 종목시간외단일가, + 지수업종 + } + + + public enum 판1그래프데이터해외류 + { + 해외업종, + 해외종목 + } + + public enum 판3데이터분류 + { + 주요지수_코스피_코스닥_코스피200, + 주요지수_코스피_코스닥_선물, + 예상체결지수_코스피_코스닥_코스피200, + 예상체결지수_코스피_코스닥_선물, + 미국지수, + 중화권지수, + 유럽지수, + 아시아지수_상해_대만_일본, + 달러환율_엔_위안_유로, + 원환율_달러_엔_유로, + 미국국채, + 채권금리, + 유가_두바이_WTI_브랜트, + 광물, + 식자재, + 소맥_옥수수_밀, + 대두_콩_현미, + 커피_코코아_설탕, + 생우_비육우_돈육, + 구리_철광석_니켈, + 천연가스_백금_팔라듐, + 납_아연_주석, + 원면_목화, + 국제금, + 국내금 + } + + + public enum 해외지수종류 + { + [StringValue("DJI@DJI")] + 다우, + [StringValue("NAS@IXIC")] + 나스닥, + [StringValue("SPI@SPX")] + SNP, + [StringValue("XTR@DAX30")] + 독일, + [StringValue("LNS@FTSE100")] + 영국, + [StringValue("PAS@CAC40")] + 프랑스, + [StringValue("NII@NI225")] + 니케이, + [StringValue("SHS@000001")] + 중국상해, + [StringValue("HSI@HSI")] + 홍콩항셍, + [StringValue("TWS@TI01")] + 대만가권, + [StringValue("SGI@STI")] + 싱가포르지수, + [StringValue("THI@SET")] + 태국지수, + [StringValue("PHI@COMP")] + 필리핀, + [StringValue("IDI@JKSE")] + 인도네시아, + [StringValue("MYI@KLSE")] + 말레이시아 + } + + public enum 상세판데이터분류 + { + 시가, + 액면가, + PBR, + 거래량 + } + + public enum 지도데이터분류 + { + 글로벌, + 아시아, + 미국, + 유럽 + } + + public enum 데이터5단판지수별 + { + 시가총액, + 상승률, + 하락률, + 신고가52주, + 신저가52주, + 시간외상승률, + 시간외하락률, + 예상가시가총액상위, + 업종, + 코스피200, + 거래량, + ETF + } + + public enum 데이터5단판기타 + { + 전문가추천, + 테마주, + 테마예상 + } + + public static string GetStringValue(this Enum value) + { + // Get the type + Type type = value.GetType(); + + // Get fieldinfo for this type + FieldInfo fieldInfo = type.GetField(value.ToString()); + + // Get the stringvalue attributes + StringValueAttribute[] attribs = fieldInfo.GetCustomAttributes( + typeof(StringValueAttribute), false) as StringValueAttribute[]; + + // Return the first if there was a match. + return attribs.Length > 0 ? attribs[0].StringValue : null; + } + + public class StringValueAttribute : Attribute + { + + #region Properties + + /// + /// Holds the stringvalue for a value in an enum. + /// + public string StringValue { get; protected set; } + + #endregion + + #region Constructor + + /// + /// Constructor used to init a StringValue Attribute + /// + /// + public StringValueAttribute(string value) + { + this.StringValue = value; + } + + #endregion + + } + + } +} diff --git a/MBN_STOCK_N/Data/DBManager.cs b/MBN_STOCK_N/Data/DBManager.cs new file mode 100644 index 0000000..443702e --- /dev/null +++ b/MBN_STOCK_N/Data/DBManager.cs @@ -0,0 +1,266 @@ +using Oracle.ManagedDataAccess.Client; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using MySql.Data.MySqlClient; +using System.Security.Cryptography; + +namespace MMoneyCoderSharp.DB +{ + public class DBManager + { + + #region "싱글턴" + private static volatile DBManager mInstance = null; + + private static object mSingletonLocker = new object(); + + private static System.Threading.Timer timerForCheck; + private DBManager() + { + timerForCheck = new System.Threading.Timer(callBackOfChecker); + timerForCheck.Change(0, 10000); + } + + delegate void TimerEventDelegate(); + private void callBackOfChecker(object state) + { + DBAliveChecker(); + //invoke(new TimerEventDelegate(DBAliveChecker)); + } + + private void DBAliveChecker() + { + if (strConn == "") + { + Console.WriteLine("DBManager DB 미연결"); + } + + bool alived = false; + OracleConnection conn = new OracleConnection(strConn); + try + { + if (conn.State == ConnectionState.Closed) + { + conn.Open(); + } + + if (conn.State == ConnectionState.Open) + { + alived = true; + } + + } + catch (Exception) + { + + } + finally + { + conn.Close(); + } + + if (alived) + { + Console.WriteLine("DBManager DB 생존"); + } + else + { + Console.WriteLine("DBManager DB 사망"); + } + + MySqlConnection nxt_conn = new MySqlConnection(strConn); + try + { + if (conn.State == ConnectionState.Closed) + { + conn.Open(); + } + + if (conn.State == ConnectionState.Open) + { + alived = true; + } + + } + catch (Exception) + { + + } + finally + { + conn.Close(); + } + + if (alived) + { + Console.WriteLine("DBManager DB 생존"); + } + else + { + Console.WriteLine("DBManager DB 사망"); + } + } + + public static DBManager getInstance() + { + lock (mSingletonLocker) + { + if (mInstance == null) + { + mInstance = new DBManager(); + } + } + + return mInstance; + } + + #endregion + + string DBHOST = ""; + string DBPORT = ""; + string ID = ""; + string PASS = ""; + string CONNECT_DATA = ""; + + string nxt_DBHOST = ""; + string nxt_DBPORT = ""; + string nxt_ID = ""; + string nxt_PASS = ""; + string nxt_CONNECT_DATA = ""; + + public void setDB_HOST(string value, string nxt_value) + { + DBHOST = value; + nxt_DBHOST = nxt_value; + + setStrConn(); + } + + public void setDB_PORT(string value, string nxt_value) + { + DBPORT = value; + nxt_DBPORT = nxt_value; + + setStrConn(); + } + public void setDB_ID(string value, string nxt_value) + { + ID = value; + nxt_ID = nxt_value; + + setStrConn(); + } + public string getDB_ID() { return ID; } + public void setDB_PASS(string value, string nxt_value) + { + PASS = value; + nxt_PASS = nxt_value; + setStrConn(); + } + public string getDB_PASS() { return PASS; } + public void setDB_CONNECT_DATA(string value, string nxt_value) + { + CONNECT_DATA = value; + nxt_CONNECT_DATA = nxt_value; + setStrConn(); + } + public string getDB_CONNECT_DATA() { return CONNECT_DATA; } + + + private void setStrConn() + { + //strConn = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" + DBHOST + ")" + + // "(PORT=" + DBPORT + ")))(CONNECT_DATA=" + CONNECT_DATA + "));User Id=" + ID + ";Password=" + PASS + ";"; + + strConn = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" + DBHOST + ")(PORT=" + DBPORT + ")))(CONNECT_DATA=(SERVER=DEDICATED)(SID=" + CONNECT_DATA + ")));User Id=" + ID + ";Password=" + PASS + ";"; + // nxt_strConn = "SERVER=" + nxt_DBHOST + " PORT=" + nxt_DBPORT + " DATABASE= "+nxt_CONNECT_DATA+" User Id=" + nxt_ID + " Password=" + nxt_PASS ; + nxt_strConn = "SERVER=" + nxt_DBHOST + "; DATABASE=" + nxt_CONNECT_DATA + "; UId=" + nxt_ID + "; Pwd=" + nxt_PASS; + + } + + string strConn = ""; + string nxt_strConn = ""; + + //private IDBDataHandle mCallback = null; + + + public DataTable requestData(string tableName, string recvQuery) + { + + DataTable dt = new DataTable(); + + try + { + + OracleConnection conn = new OracleConnection(strConn); + + conn.Open(); + + OracleDataAdapter adapter = new OracleDataAdapter(); + + adapter.SelectCommand = new OracleCommand(recvQuery, conn); + + adapter.Fill(dt); + + conn.Close(); + + dt.TableName = tableName; + + return dt; + + + } + catch (Exception) + { + MessageBox.Show("데이터베이스가 연결되지 않았습니다." + Environment.NewLine + "연결정보를 확인하세요."); + Application.Exit(); + throw; + } + + } + + public DataTable Nxt_requestData(string tableName, string recvQuery) + { + DataTable nxt_dt = new DataTable(); + + try + { + + MySqlConnection nxt_conn = new MySqlConnection(nxt_strConn); + + nxt_conn.Open(); + + MySqlDataAdapter nxt_adapter = new MySqlDataAdapter(); + + nxt_adapter.SelectCommand = new MySqlCommand(recvQuery, nxt_conn); + + nxt_adapter.Fill(nxt_dt); + + nxt_conn.Close(); + + nxt_dt.TableName = tableName; + + return nxt_dt; + + } + catch (Exception e) + { + MessageBox.Show(e.ToString()); + MessageBox.Show("NXT 데이터베이스가 연결되지 않았습니다." + Environment.NewLine + "연결정보를 확인하세요."); + Application.Exit(); + throw; + } + + } + + + } + + + +} diff --git a/MBN_STOCK_N/Data/DataDefineBuilder.cs b/MBN_STOCK_N/Data/DataDefineBuilder.cs new file mode 100644 index 0000000..bca556e --- /dev/null +++ b/MBN_STOCK_N/Data/DataDefineBuilder.cs @@ -0,0 +1,131 @@ +using MMoneyCoderSharp.DB; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.Data +{ + + /// + /// 데이터의 입/출력에 관한 정의를 위해 만든 추상화 빌더객체. + /// 필요한 데이터를 순서대로 빌드 할 수 있도록 리턴값으로 유도하고, + /// 모든 데이터가 있다면 최종적인 객체를 Struct형태로 리턴이 가능하도록 유도한다. + /// + /// 내부의 데이터에 관련된 내용은 enum으로 정의하고 Int로 최종적으로 리턴받아 멤버변수로 보유한다. + /// + /// 20210207 규합할수 없는 부분(지수와 종목의 쿼리합)에 대한 정의가 불가능하여 버린다. + /// 데이터를 기반으로 씬에 접근하려는 계획은 포기해야겠다. 이미 쿼리 자체가 그래픽에 파편화되어있어서 데이터를 기반으로 추상화 하기 불가능하다. + /// + public class DataDefineBuilder + { + + // protected int mBuildedIntValue = 0; + + // public static DataDefineBuilder setDefine(요구데이터분류 requestDataType) + // { + + // switch (requestDataType) + // { + // case 요구데이터분류.환율 : + // return new 환율분류(); + + // case 요구데이터분류.종목: + // return new 종목(); + + // case 요구데이터분류.지수: + // return new 지수(); + + // default: + // return null; + + // } + + // } + + //#region "환율" + + // public class 환율분류 : DataDefineBuilder, IBuilderDefined + // { + + // private Exchange mRequestInstance = null; + + // private 원환율? mExchangeValueWON; + + // private 달러환율? mExchangeValueDOLLOR; + + // private bool mIsLastDataRequest = false; + + // public void build() + // { + + // if (mExchangeValueWON.HasValue) + // { + // //this.mBuildedIntValue = (int)mRecvEnum; + // } + // else + // { + // throw new Exception("환율분류 잘못된 빌드시도"); + // } + + // } + + // public static DataDefineBuilder setDefine(원환율 requestDataType) + // { + // switch(requestDataType) + // { + // case 원환율.원달러: + // return new Exchange(); + // case 환율기준통화.달러: + // return new 달러기준환율(); + // default: + // return null; + // } + + // } + + // public static DataDefineBuilder setDefine(달러환율 requestDataType) + // { + + + // } + + // public DataDefineBuilder IsNeedLastDataList(bool recvNeedLastData) + // { + // this.mIsLastDataRequest = recvNeedLastData; + // } + + // } + + + //#endregion + + // public class 지수빌더 : DataDefineBuilder + // { + + // } + + // public class 종목빌더 : DataDefineBuilder + // { + + // } + + // public class 업종과동향빌더 : DataDefineBuilder + // { + + // } + + + // } + + // public interface IBuilderDefined + // { + // void build(); + // } + + + } + +} diff --git a/MBN_STOCK_N/Data/DataManager.cs b/MBN_STOCK_N/Data/DataManager.cs new file mode 100644 index 0000000..cf1e49f --- /dev/null +++ b/MBN_STOCK_N/Data/DataManager.cs @@ -0,0 +1,666 @@ +using MMoneyCoderSharp.Data.Request; +using MMoneyCoderSharp.Data.Request.봉차트; +using MMoneyCoderSharp.DB; +using System; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics.Eventing.Reader; +using System.Linq; +using System.Text; +//using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.Data +{ + /// + /// 씬단위로 요청사항을 매핑해서 DB에서 받은 데이터를 리턴해줄 매니저 객체. + /// + public class DataManager + { + + + #region "싱글턴" + private static volatile DataManager mInstance = null; + + private static object mSingletonLocker = new object(); + + private DataManager() + { + + } + + public static DataManager getInstance() + { + lock (mSingletonLocker) + { + if (mInstance == null) + { + mInstance = new DataManager(); + } + } + + return mInstance; + } + + #endregion + + + /// + /// 스탁포멧정리기준.hwp로 컷 대 기준을 작성함. + /// 1. 1열판 기본 -> 판그래프데이터참조 + /// 2. 2열판 상세 -> 판그래프데이터참조 + /// 3. 2열판 기본 -> 판그래프데이터참조 + /// 4. 3열판 그래프 -> 판3데이터분류 + /// 5. 라인그래프 -> 선그래프데이터분류 + /// 6. 캔들차트 -> 봉차트데이터분류 + /// 7. 캔들차트 -> 봉차트데이터분류 + /// 8. 주체별매매동향 -> 그리드표 + /// 9. 지수별매매동향 -> 그리드표 + /// 10. 매매동향선그래프 -> 선그래프데이터분류 + /// 11. 기관순매수현황 -> 그리드표 + /// 12. 매매동향막대그래프 -> 막대그래프데이터분류 + /// 13. 프로그램매매 표그래프 -> 그리드표 + /// 14. 외국인투자자 순매도 상위 -> 쿼리가 없음 + /// 15~18 -> 지도그래프 + /// 19. 이미지 그래프 -> 아직안함 + /// 20. 네모그래프 -> 네모그래프 + /// 21. 섹터지수 막대그래프 -> 막대그래프데이터분류 + /// 22. 캔들차트 두개 -> 이거 고민되네.. + /// 23. 선그래프 두개 -> 이거도 고민되네.. + /// 24. 종목별 수익률 -> 선그래프데이터분류(아직안함) + /// 25. 5단그래프 -> + /// 26. 호가창 + /// 27. 거래원 + /// 28. 수급동향 + /// 29. 매출구성 원그래프 + /// 30. 성장지표 선그래프 + /// 31. 종목매출액 막대그래프 -> 쿼리가 없음 + /// 32. 영업이익 막대그래프 -> 쿼리가 없음 + /// + + + private DataSet mStockInfoDataSet = null; + + public DataSet getStocksInfoTable() + { + + if (mStockInfoDataSet == null) + { + updateStocksInfoSet(); + } + + return mStockInfoDataSet; + + } + + + public void updateStocksInfoSet() + { + + string sql = string.Empty; + + mStockInfoDataSet = new DataSet(); + + DataTable bufTableKospi = DBManager.getInstance().requestData("코스피", "SELECT F_STOCK_WANNAME, F_STOCK_CODE FROM T_STOCK WHERE F_MKT_HALT = 'N'"); + mStockInfoDataSet.Tables.Add(bufTableKospi); + + DataTable bufTableKosdaq = DBManager.getInstance().requestData("코스닥", "SELECT F_STOCK_WANNAME, F_STOCK_CODE FROM T_KOSDAQ_STOCK WHERE F_MKT_HALT = 'N'"); + mStockInfoDataSet.Tables.Add(bufTableKosdaq); + + DataTable bufTableNXTKospi = DBManager.getInstance().Nxt_requestData("NXT코스피", "SELECT CONCAT(F_STOCK_NAME, '(NXT)') F_STOCK_NAME, F_STOCK_CODE FROM N_STOCK WHERE F_STOP_GUBUN = 'N'"); + mStockInfoDataSet.Tables.Add(bufTableNXTKospi); + + DataTable bufTableNXTKosdaq = DBManager.getInstance().Nxt_requestData("NXT코스닥", "SELECT CONCAT(F_STOCK_NAME, '(NXT)') F_STOCK_NAME, F_STOCK_CODE FROM N_KOSDAQ_STOCK WHERE F_STOP_GUBUN = 'N'"); + mStockInfoDataSet.Tables.Add(bufTableNXTKosdaq); + + DataTable bufTableForgien = DBManager.getInstance().requestData("해외", "SELECT F_KNAM, F_SYMB FROM T_WORLD_IX_EQ_MASTER"); + mStockInfoDataSet.Tables.Add(bufTableForgien); + + DataTable bufTableKOSPI_INDUSTRY = DBManager.getInstance().requestData("코스피업종", "select a.f_part_code, b.f_part_name from t_index a, t_part b where a.f_part_code = b.f_part_code order by a.f_part_code"); + mStockInfoDataSet.Tables.Add(bufTableKOSPI_INDUSTRY); + + DataTable bufTableKOSDAQ_INDUSTRY = DBManager.getInstance().requestData("코스닥업종", "select a.f_part_code, b.f_part_name from t_kosdaq_index a, t_kosdaq_part b where a.f_part_code = b.f_part_code order by a.f_part_code"); + mStockInfoDataSet.Tables.Add(bufTableKOSDAQ_INDUSTRY); + + DataTable bufTableKFORGIEN_INDUSTRY = DBManager.getInstance().requestData("해외업종", "select F_INPUT_NAME, f_knam, f_symb from t_world_ix_eq_master WHERE f_fdtc = '0' and f_natc = 'US' ORDER BY F_KNAM"); + mStockInfoDataSet.Tables.Add(bufTableKFORGIEN_INDUSTRY); + + DataTable bufTableKFORGIEN_INDEX = DBManager.getInstance().requestData("해외지수", "select F_SYMB, F_KNAM, F_ENAM, F_INPUT_NAME from t_world_ix_eq_master WHERE F_FDTC = '0'"); + mStockInfoDataSet.Tables.Add(bufTableKFORGIEN_INDEX); + + DataTable bufTableKFORGIEN_STOCK = DBManager.getInstance().requestData("해외종목", "select F_INPUT_NAME, f_symb from t_world_ix_eq_master WHERE f_fdtc = '1' and (f_natc = 'US' or f_natc = 'TW') ORDER BY F_INPUT_NAME"); + mStockInfoDataSet.Tables.Add(bufTableKFORGIEN_STOCK); + + } + + + /// + /// 선그래프 데이터 요청 메서드 + /// 마지막 매개변수는 종목일때는 한글종목명, 지수일때는 분류코드. + /// + /// 여기가 기존 코드 중 cut_5,10으로 검색해서 나오는 데이터 모두. + /// + /// + /// 선그래프씬 데이터 분류 + /// 선그래프씬 데이터 길이 + /// 종목은 해당 종목의 한글명으로, 지수는 코드값으로.... + /// + public DataSet createLineGraphData(선그래프데이터분류 recvDataType, 데이터기간 recvDataLength, string recvArgData = null) + { + + IDataRequest bufInstance = null; + + switch (recvDataType) + { + case 선그래프데이터분류.원달러: + bufInstance = new Exchange(환율.달러, recvDataLength); + break; + case 선그래프데이터분류.원엔: + bufInstance = new Exchange(환율.엔, recvDataLength); + break; + case 선그래프데이터분류.원위엔: + bufInstance = new Exchange(환율.위엔, recvDataLength); + break; + case 선그래프데이터분류.원유로: + bufInstance = new Exchange(환율.유로, recvDataLength); + break; + case 선그래프데이터분류.코스피수익률: + bufInstance = new IndexYield(recvDataLength, 국내지수종류.KOSPI); + break; + case 선그래프데이터분류.코스닥수익률: + bufInstance = new IndexYield(recvDataLength, 국내지수종류.KOSDAQ); + break; + case 선그래프데이터분류.코스피200수익률: + bufInstance = new IndexYield(recvDataLength, 국내지수종류.KOSPI200); + break; + case 선그래프데이터분류.KRX100수익률: + bufInstance = new IndexYield(recvDataLength, 국내지수종류.KRX100); + break; + case 선그래프데이터분류.코스피업종지수수익률: + bufInstance = new IndexIndustryYield(recvArgData, recvDataLength, 국내시장종류.KOSPI); + break; + case 선그래프데이터분류.코스닥업종지수수익률: + bufInstance = new IndexIndustryYield(recvArgData, recvDataLength, 국내시장종류.KOSDAQ); + break; + case 선그래프데이터분류.코스피종목수익률: + bufInstance = new StockYield(recvArgData, recvDataLength, 국내시장종류.KOSPI); + break; + case 선그래프데이터분류.코스닥종목수익률: + bufInstance = new StockYield(recvArgData, recvDataLength, 국내시장종류.KOSDAQ); + break; + case 선그래프데이터분류.개인매매동향: + case 선그래프데이터분류.기관매매동향: + case 선그래프데이터분류.외국인매매동향: + case 선그래프데이터분류.코스피매매동향: + case 선그래프데이터분류.코스닥매매동향: + bufInstance = new Trading(recvDataType); + break; + default: + break; + } + + bufInstance.buildData(); + + return bufInstance.getResult(); + + } + + /// + /// 봉차트를 위한데이터 + /// 종목과 업종지수 모두 추가 데이터로는 Code를 받는다. + /// + /// 기존 코드에서 6,7컷부분 + /// + /// + /// + /// + /// 종목은 코드값 지수는 한글명.. + /// + public DataSet createCandleChartData(봉차트데이터분류 recvDataTypeMain, 봉차트세부종목 recvDataTypeSub, 데이터기간 recvDataLength, string recvArgData = null) + { + + IDataRequest bufInstance = null; + + switch (recvDataTypeMain) + { + case 봉차트데이터분류.KOSPI: + bufInstance = new CandleKOSPI(recvDataTypeSub, recvDataLength); + break; + case 봉차트데이터분류.KOSDAQ: + bufInstance = new CandleKOSDAQ(recvDataTypeSub, recvDataLength); + break; + case 봉차트데이터분류.KOSPI200: + bufInstance = new CandleKOSPI200(recvDataTypeSub, recvDataLength); + break; + case 봉차트데이터분류.KRX100: + bufInstance = new CandleKRX100(recvDataTypeSub, recvDataLength); + break; + case 봉차트데이터분류.선물: + bufInstance = new CandleFutures(recvDataTypeSub, recvDataLength); + break; + case 봉차트데이터분류.코스피종목: + bufInstance = new CandleStockKOSPI(recvDataTypeSub, recvDataLength, recvArgData); + break; + case 봉차트데이터분류.코스닥종목: + bufInstance = new CandleStockKOSDAQ(recvDataTypeSub, recvDataLength, recvArgData); + break; + case 봉차트데이터분류.코스피업종지수: + bufInstance = new CandleIndustryKOSPI(recvDataTypeSub, recvDataLength, recvArgData); + break; + case 봉차트데이터분류.코스닥업종지수: + bufInstance = new CandleIndustryKOSDAQ(recvDataTypeSub, recvDataLength, recvArgData); + break; + + case 봉차트데이터분류.해외지수: + bufInstance = new Candleforeign(recvDataTypeSub, recvDataLength, recvArgData); + break; + + case 봉차트데이터분류.해외종목: + bufInstance = new CandleforeignStock(recvDataTypeSub, recvDataLength, recvArgData); + break; + + case 봉차트데이터분류.거래정지: + bufInstance = new CandleStockDIS(recvDataTypeSub, recvDataLength, recvArgData); + + break; + + case 봉차트데이터분류.거래정지k: + bufInstance = new CandleStockDISK(recvDataTypeSub, recvDataLength, recvArgData); + + break; + default: + break; + } + + bufInstance.buildData(); + + return bufInstance.getResult(); + + } + + /// + /// 그리드표 그래프 데이터 + /// 컷14번은 쿼리가 없음 + /// + /// + /// + public DataSet createGridChartData(그리드표그래프종류 recvDataType, 국내시장종류? recvMarketType = null) + { + IDataRequest bufInstance = null; + + switch (recvDataType) + { + case 그리드표그래프종류.투자자순매수매도상위14번컷: + throw new Exception("쿼리가 없음"); + //break; + case 그리드표그래프종류.프로그램매매13번컷: + bufInstance = new Grid13(); + break; + case 그리드표그래프종류.기관순매수현황11번컷: + bufInstance = new Grid11(); + break; + case 그리드표그래프종류.지수별매매동향9번컷: + bufInstance = new Grid9(recvMarketType.Value); + break; + case 그리드표그래프종류.주체별매매동향8번컷: + bufInstance = new Grid8(); + break; + } + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + + /// + /// 20번컷 사각그래프용 데이터. + /// 국내시장 업종별 네모그래프 + /// 15개종목이 이미 정해져있음.(선택불가) + /// + /// 시장종류 + /// + public DataSet createSquareChartData_Cut20(국내시장종류 recvDataType) + { + + IDataRequest bufInstance = new Square20(recvDataType); + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + + /// + /// 12번컷 데이터. + /// HWP 표와는 다르게 선물은 없음. + /// + /// + /// + public DataSet createCut12StickData(국내시장종류 recvDataType) + { + IDataRequest bufInstance = new Stick12(recvDataType); + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + + /// + /// 21번컷 데이터. + /// 12번과 헷갈리지 말 것 + /// + /// + /// + public DataSet createCut21StickData(섹터지수막대그래프분류 recvDataType) + { + IDataRequest bufInstance = new Stick21(recvDataType); + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + + + + public DataSet createWorldMapData(지도데이터분류 recvDataType) + { + IDataRequest bufInstance = null; + + switch (recvDataType) + { + case 지도데이터분류.글로벌: + bufInstance = new MapWorld(); + break; + case 지도데이터분류.아시아: + bufInstance = new MapAsia(); + break; + case 지도데이터분류.미국: + bufInstance = new MapUSA(); + break; + case 지도데이터분류.유럽: + bufInstance = new MapEurope(); + break; + default: + break; + } + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + + #region "판데이터" + + /// + /// 1열판 국내지수류 데이터 + /// + /// + /// + /// + public DataSet createPlateData(판1그래프데이터지수류 recvDataList, 국내지수종류 recvDataType) + { + IDataRequest bufInstance = null; + + switch (recvDataList) + { + case 판1그래프데이터지수류.현재지수: + bufInstance = new INDEX_PAN(recvDataType); + break; + case 판1그래프데이터지수류.예상지수: + bufInstance = new INDEX_FORECAST_PAN(recvDataType); + break; + } + + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + + /// + /// 1열판 산업종목류 데이터 + /// + /// + /// + /// + /// + public DataSet createPlateData(판1그래프데이터산업및종목류 recvDataList, 국내시장종류 recvDataType, string recvDataCode) + { + IDataRequest bufInstance = null; + Nxt_IDataRequest Nxt_bufInstance = null; + + switch (recvDataList) + { + case 판1그래프데이터산업및종목류.종목현재가: + if ((recvDataType == 국내시장종류.NXT_KOSPI) || (recvDataType == 국내시장종류.NXT_KOSDAQ)) + Nxt_bufInstance = new Nxt_STOCK_PAN(recvDataType, recvDataCode); + else + bufInstance = new STOCK_PAN(recvDataType, recvDataCode); + break; + case 판1그래프데이터산업및종목류.종목예상체결가: + bufInstance = new STOCK_FORECAST_PAN(recvDataType, recvDataCode); + break; + case 판1그래프데이터산업및종목류.종목시간외단일가: + bufInstance = new STOCK_OVERTIME_PAN(recvDataType, recvDataCode); + break; + case 판1그래프데이터산업및종목류.지수업종: + bufInstance = new INDUSTRY_PAN(recvDataType, recvDataCode); + break; + } + + if ((recvDataType == 국내시장종류.NXT_KOSPI) || (recvDataType == 국내시장종류.NXT_KOSDAQ)) + { + Nxt_bufInstance.Nxt_buildData(); + return Nxt_bufInstance.Nxt_getResult(); + } + else + { + bufInstance.buildData(); + return bufInstance.getResult(); + } + + } + + /// + /// 1열판 해외산업종목 데이터 + /// + /// + /// + /// + public DataSet createPlateData(판1그래프데이터해외류 recvDataList, string recvDataCode) + { + IDataRequest bufInstance = null; + + switch (recvDataList) + { + case 판1그래프데이터해외류.해외업종: + bufInstance = new INDUSTRY_FORGIEN_PAN(recvDataCode); + break; + case 판1그래프데이터해외류.해외종목: + bufInstance = new STOCK_FORGIEN_PAN(recvDataCode); + break; + } + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + + /// + /// 1열판해외지수류 데이터 + /// + /// + /// + public DataSet createPlateData(해외지수종류 recvDataList, string recvDataCode) + { + IDataRequest bufInstance = new INDEX_FORGIEN_PAN(recvDataList, recvDataCode); + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + + /// + /// 1열판원환율 + /// + /// + /// + public DataSet createPlateData(원환율 recvDataList) + { + IDataRequest bufInstance = new EXCHANGE_PAN(recvDataList); + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + + public DataSet createPlate3Data_Cut4(판3데이터분류 recvDataList) + { + IDataRequest bufInstance = new DataObject_3PAN(recvDataList); + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + + public DataSet createPlateData(국내시장종류 recvDataType1, 상세판데이터분류 recvDataType2, string recvStockCode) + { + IDataRequest bufInstance = new SANGSE_PAN(recvDataType1, recvDataType2, recvStockCode); + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + + public DataSet createPlateNxtData(국내시장종류 recvDataType1, 상세판데이터분류 recvDataType2, string recvStockCode) + { + Nxt_IDataRequest bufInstance = new Nxt_SANGSE_PAN(recvDataType1, recvDataType2, recvStockCode); + + bufInstance.Nxt_buildData(); + + return bufInstance.Nxt_getResult(); + } + + + #endregion + + + public DataSet createCut26Data(국내시장종류 recvDataType1, string recvStockCode) + { + IDataRequest bufInstance = new Quote_Stocks(recvDataType1, recvStockCode); + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + + public DataSet createCut27Data(국내시장종류 recvDataType1, string recvStockCode) + { + IDataRequest bufInstance = new Trader_Stocks(recvDataType1, recvStockCode); + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + + public DataSet create5DanDataIndex(국내시장종류 recvDataType1, 데이터5단판지수별 recvDataType2) + { + IDataRequest bufInstance = null; + + switch (recvDataType2) + { + + case 데이터5단판지수별.하락률: + bufInstance = new lower_5dan(recvDataType1); + break; + case 데이터5단판지수별.신고가52주: + bufInstance = new high52_5dan(recvDataType1); + break; + case 데이터5단판지수별.신저가52주: + bufInstance = new low52_5dan(recvDataType1); + break; + case 데이터5단판지수별.시간외상승률: + bufInstance = new high_overtime_5dan(recvDataType1); + break; + case 데이터5단판지수별.시간외하락률: + bufInstance = new low_overtime_5dan(recvDataType1); + break; + case 데이터5단판지수별.예상가시가총액상위: + bufInstance = new capital_forecast_5dan(recvDataType1); + break; + case 데이터5단판지수별.업종: + bufInstance = new upjong_5dan(recvDataType1); + break; + case 데이터5단판지수별.시가총액: + bufInstance = new capital_5dan(recvDataType1); + break; + case 데이터5단판지수별.상승률: + bufInstance = new upper_5dan(recvDataType1); + break; + case 데이터5단판지수별.코스피200: + bufInstance = new kospi200(recvDataType1); + break; + case 데이터5단판지수별.ETF: + bufInstance = new ETF(recvDataType1); + + break; + } + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + public DataSet Nxt_create5DanDataIndex(국내시장종류 recvDataType1, 데이터5단판지수별 recvDataType2) + { + Nxt_IDataRequest Nxt_bufInstance = null; + + switch (recvDataType2) + { + case 데이터5단판지수별.상승률: + Nxt_bufInstance = new Nxt_upper_5dan(recvDataType1); + break; + case 데이터5단판지수별.하락률: + Nxt_bufInstance = new Nxt_lower_5dan(recvDataType1); + break; + case 데이터5단판지수별.거래량: + Nxt_bufInstance = new Nxt_vol_5dan(recvDataType1); + break; + case 데이터5단판지수별.시간외상승률: + Nxt_bufInstance = new Nxt_high_overtime_5dan(recvDataType1); + break; + case 데이터5단판지수별.시간외하락률: + Nxt_bufInstance = new Nxt_low_overtime_5dan(recvDataType1); + break; + case 데이터5단판지수별.시가총액: + Nxt_bufInstance = new Nxt_capital_5dan(recvDataType1); + break; + } + + Nxt_bufInstance.Nxt_buildData(); + + return Nxt_bufInstance.Nxt_getResult(); + } + + public DataSet create5DanDataTheme(데이터5단판기타 recvDataType2, List 테마주코드리스트) + { + IDataRequest bufInstance = null; + + switch (recvDataType2) + { + case 데이터5단판기타.전문가추천: + bufInstance = new suggest_5dan(테마주코드리스트); + break; + case 데이터5단판기타.테마주: + bufInstance = new theme_5dan(테마주코드리스트); + break; + case 데이터5단판기타.테마예상: + bufInstance = new theme_yesang_5dan(테마주코드리스트); + break; + } + + bufInstance.buildData(); + + return bufInstance.getResult(); + } + + } +} diff --git a/MBN_STOCK_N/Data/IDBDataHandle.cs b/MBN_STOCK_N/Data/IDBDataHandle.cs new file mode 100644 index 0000000..870e3e2 --- /dev/null +++ b/MBN_STOCK_N/Data/IDBDataHandle.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp +{ + /// + /// 콜백 인터페이스 + /// + public interface IDBDataHandle + { + + void onDataReceived(); + + void onDBError(); + + } +} diff --git a/MBN_STOCK_N/Data/Request/ADataObject.cs b/MBN_STOCK_N/Data/Request/ADataObject.cs new file mode 100644 index 0000000..4abf655 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/ADataObject.cs @@ -0,0 +1,50 @@ +using MMoneyCoderSharp.DB; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request +{ + /// + /// Data Access Object + /// + public abstract class ADataObject : IDataRequest + { + + public ADataObject() + { + mRequestQuery = new Dictionary(); + mReturnDataSet = new DataSet(); + } + + /// + /// 완성되어 DB로 전송될 쿼리 + /// + protected Dictionary mRequestQuery = new Dictionary(); + + /// + /// 완성되어 결과를 리턴할 데이터 셋 + /// + protected DataSet mReturnDataSet = null; + + public string getQuery(string tableName) + { + return mRequestQuery[tableName]; + } + + public abstract IDataRequest buildData(); + + public DataSet getResult() + { + foreach (KeyValuePair item in mRequestQuery) + { + mReturnDataSet.Tables.Add(DBManager.getInstance().requestData(item.Key, item.Value)); + } + + return mReturnDataSet; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/IDataRequest.cs b/MBN_STOCK_N/Data/Request/IDataRequest.cs new file mode 100644 index 0000000..89c4534 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/IDataRequest.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request +{ + public interface IDataRequest + { + + string getQuery(string recvTableName); + + DataSet getResult(); + + IDataRequest buildData(); + + } +} diff --git a/MBN_STOCK_N/Data/Request/Nxt_ADataObject.cs b/MBN_STOCK_N/Data/Request/Nxt_ADataObject.cs new file mode 100644 index 0000000..60561a5 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/Nxt_ADataObject.cs @@ -0,0 +1,51 @@ +using MMoneyCoderSharp.Data.Request; +using MMoneyCoderSharp.DB; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request +{ + /// + /// Data Access Object + /// + public abstract class Nxt_ADataObject : Nxt_IDataRequest + { + + public Nxt_ADataObject() + { + Nxt_mRequestQuery = new Dictionary(); + Nxt_mReturnDataSet = new DataSet(); + } + + /// + /// 완성되어 DB로 전송될 쿼리 + /// + protected Dictionary Nxt_mRequestQuery = new Dictionary(); + + /// + /// 완성되어 결과를 리턴할 데이터 셋 + /// + protected DataSet Nxt_mReturnDataSet = null; + + public string Nxt_getQuery(string tableName) + { + return Nxt_mRequestQuery[tableName]; + } + + public abstract Nxt_IDataRequest Nxt_buildData(); + + public DataSet Nxt_getResult() + { + foreach (KeyValuePair item in Nxt_mRequestQuery) + { + Nxt_mReturnDataSet.Tables.Add(DBManager.getInstance().Nxt_requestData(item.Key, item.Value)); + } + + return Nxt_mReturnDataSet; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/Nxt_IDataRequest.cs b/MBN_STOCK_N/Data/Request/Nxt_IDataRequest.cs new file mode 100644 index 0000000..82334a4 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/Nxt_IDataRequest.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request +{ + public interface Nxt_IDataRequest + { + + string Nxt_getQuery(string recvTableName); + + DataSet Nxt_getResult(); + + Nxt_IDataRequest Nxt_buildData(); + + } +} diff --git a/MBN_STOCK_N/Data/Request/거래원/trader_stocks.cs b/MBN_STOCK_N/Data/Request/거래원/trader_stocks.cs new file mode 100644 index 0000000..5aa7ae3 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/거래원/trader_stocks.cs @@ -0,0 +1,263 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Trader_Stocks : ADataObject + { + + internal Trader_Stocks(국내시장종류 recvDataType, string recvStockCode) + { + this.mDataType = recvDataType; + + this.mStockCode = recvStockCode; + } + + 국내시장종류 mDataType; + + string mStockCode = ""; + + #region 쿼리 + //코스피 상단 + string queryKOSPI상단 = @"SELECT DISTINCT b.f_stock_code STOCK_CODE, + b.f_stock_wanname STOCK_NAME, + a.f_curr_price CURR_PRICE, + a.f_net_chg NET_CHG, + decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') CHG_TYPE, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_online1 a, t_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + and b.f_stock_wanname in('{0}')"; + + + string queryKOSPI매도 = @"select f_sale_nick_kname sale_name, f_sell_vol sell_vol + from( + select a.f_stock_code, + b.f_sale_nick_kname, a.f_sell_dealer_vol_1 f_sell_vol + from t_dealer a, t_sale_member b, t_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_sell_dealer_no_1 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_sell_dealer_vol_2 f_sell_vol + from t_dealer a, t_sale_member b, t_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_sell_dealer_no_2 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_sell_dealer_vol_3 f_sell_vol + from t_dealer a, t_sale_member b, t_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_sell_dealer_no_3 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_sell_dealer_vol_4 f_sell_vol + from t_dealer a, t_sale_member b, t_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_sell_dealer_no_4 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_sell_dealer_vol_5 f_sell_vol + from t_dealer a, t_sale_member b, t_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_sell_dealer_no_5 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + ) + order by f_sell_vol desc"; + + string queryKOSPI매수 = @"select f_sale_nick_kname sale_name, f_buy_vol buy_vol + from( + select a.f_stock_code, + b.f_sale_nick_kname, a.f_buy_dealer_vol_1 f_buy_vol + from t_dealer a, t_sale_member b, t_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_buy_dealer_no_1 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_buy_dealer_vol_2 f_buy_vol + from t_dealer a, t_sale_member b, t_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_buy_dealer_no_2 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_buy_dealer_vol_3 f_buy_vol + from t_dealer a, t_sale_member b, t_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_buy_dealer_no_3 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_buy_dealer_vol_4 f_buy_vol + from t_dealer a, t_sale_member b, t_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_buy_dealer_no_4 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_buy_dealer_vol_5 f_buy_vol + from t_dealer a, t_sale_member b, t_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_buy_dealer_no_5 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + ) + order by f_buy_vol desc"; + + string queryKOSDAQ상단 = @"SELECT DISTINCT b.f_stock_code STOCK_CODE, + b.f_stock_wanname STOCK_NAME, + a.f_curr_price CURR_PRICE, + a.f_net_chg NET_CHG, + decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') CHG_TYPE, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_kosdaq_online1 a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + and b.f_stock_wanname in('{0}')"; + + string queryKOSDAQ매도 = @"select f_sale_nick_kname sale_name, f_sell_vol sell_vol + from( + select a.f_stock_code, + b.f_sale_nick_kname, a.f_buy_dealer_vol_1 f_sell_vol + from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_sell_dealer_no_1 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_sell_dealer_vol_2 f_sell_vol + from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_sell_dealer_no_2 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_sell_dealer_vol_3 f_sell_vol + from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_sell_dealer_no_3 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_sell_dealer_vol_4 f_sell_vol + from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_sell_dealer_no_4 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_sell_dealer_vol_5 f_sell_vol + from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_sell_dealer_no_5 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + ) + order by f_sell_vol desc"; + + string queryKOSDAQ매수 = @"select f_sale_nick_kname sale_name, f_buy_vol buy_vol + from( + select a.f_stock_code, + b.f_sale_nick_kname, a.f_buy_dealer_vol_1 f_buy_vol + from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_buy_dealer_no_1 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_buy_dealer_vol_2 f_buy_vol + from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_buy_dealer_no_2 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_buy_dealer_vol_3 f_buy_vol + from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_buy_dealer_no_3 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_buy_dealer_vol_4 f_buy_vol + from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_buy_dealer_no_4 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + union + select a.f_stock_code, + b.f_sale_nick_kname, a.f_buy_dealer_vol_5 f_buy_vol + from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c + where c.f_stock_wanname = '{0}' + and c.f_mkt_halt = 'N' + and a.f_buy_dealer_no_5 = b.f_sale_no + and a.f_stock_code = c.f_stock_code + ) + order by f_buy_vol desc"; + + + #endregion + + public override IDataRequest buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + mRequestQuery.Add("상단", String.Format(queryKOSPI상단, this.mStockCode)); + mRequestQuery.Add("매도", String.Format(queryKOSPI매도, this.mStockCode)); + mRequestQuery.Add("매수", String.Format(queryKOSPI매수, this.mStockCode)); + break; + case 국내시장종류.KOSDAQ: + mRequestQuery.Add("상단", String.Format(queryKOSDAQ상단, this.mStockCode)); + mRequestQuery.Add("매도", String.Format(queryKOSDAQ매도, this.mStockCode)); + mRequestQuery.Add("매수", String.Format(queryKOSDAQ매수, this.mStockCode)); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/그리드/Grid11.cs b/MBN_STOCK_N/Data/Request/그리드/Grid11.cs new file mode 100644 index 0000000..6f1f66e --- /dev/null +++ b/MBN_STOCK_N/Data/Request/그리드/Grid11.cs @@ -0,0 +1,67 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Grid11 : ADataObject + { + + /// + /// 금일 데이터 쿼리 + /// + string queryToday = @"select '코스피' name, + decode(f_invest_code, '1000', '증권', '2000', '보험', + '3000', '투신', + '4000', '은행', '6000', '기금') invest_name, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000) amt + from t_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '4000', '6000') + group by decode(f_invest_code, '1000', '증권', '2000', '보험', + '3000', '투신', + '4000', '은행', '6000', '기금') + union + select '코스닥' name, + decode(f_invest_code, '1000', '증권', '2000', '보험', + '3000', '투신', + '4000', '은행', '6000', '기금') invest_name, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000) amt + from t_kosdaq_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '4000', '6000') + group by decode(f_invest_code, '1000', '증권', '2000', '보험', + '3000', '투신', + '4000', '은행', '6000', '기금') + union + select '코스피200' name, + decode(f_invest_code, '1000', '증권', '2000', '보험', + '3000', '투신', + '4000', '은행', '6000', '기금') invest_name, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000) amt + from t_invest + where F_PART_CODE = '029' + and F_INVEST_CODE in('1000', '2000', '3000', '4000', '6000') + group by decode(f_invest_code, '1000', '증권', '2000', '보험', + '3000', '투신', + '4000', '은행', '6000', '기금')"; + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + bufQuery += String.Format(queryToday); + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/그리드/Grid13.cs b/MBN_STOCK_N/Data/Request/그리드/Grid13.cs new file mode 100644 index 0000000..b1159c0 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/그리드/Grid13.cs @@ -0,0 +1,76 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Grid13 : ADataObject + { + + /// + /// 금일 데이터 쿼리 + /// + string queryToday = @"select '차익' name, + round(((F_CCON_BUY_W_AMT + F_CCON_BUY_J_AMT) - (F_CCON_SELL_W_AMT + F_CCON_SELL_J_AMT)) / 100000000) part_idx + from t_pgm_tot + union + select '비차익' name, + round(((F_BCON_BUY_W_AMT + F_BCON_BUY_J_AMT) - (F_BCON_SELL_W_AMT + F_BCON_SELL_J_AMT)) / 100000000) part_idx + from t_pgm_tot + union + select '순매수' name, + round((((F_BCON_BUY_W_AMT + F_BCON_BUY_J_AMT) - (F_BCON_SELL_W_AMT + F_BCON_SELL_J_AMT)) + + ((F_CCON_BUY_W_AMT + F_CCON_BUY_J_AMT) - (F_CCON_SELL_W_AMT + F_CCON_SELL_J_AMT))) / 100000000) part_idx + from t_pgm_tot + union + SELECT '코스피200' name, decode(f_chg_type, '-', (f_part_idx / 100) * -1, f_part_idx / 100) part_idx + FROM T_200_INDEX + WHERE f_part_code = '029' + union + SELECT '선물' name, decode(chg_type, '-', part_idx * -1, part_idx) part_idx + FROM(SELECT f_curr_price / 100 part_idx, + decode(sign(f_curr_price - f_base_price), 1, '+', -1, '-', 0, ' ') chg_type + FROM t_sunmul_online + WHERE f_stock_code = (select f_stock_code from t_sunmul_batch + where f_market_date = (select max(f_market_date) + from t_sunmul_batch) + and substr(f_stock_code, 4, 1) = '1' + and F_MONTH_GUBUN = '1') + ) + union + select '베이시스' name, + b.part_idx - a.part_idx part_idx + from + (SELECT '코스피200' name, decode(f_chg_type, '-', (f_part_idx / 100) * -1, f_part_idx / 100) part_idx + FROM T_200_INDEX + WHERE f_part_code = '029') A, + (SELECT '선물' name, decode(chg_type, '-', part_idx * -1, part_idx) part_idx + FROM(SELECT f_curr_price / 100 part_idx, + decode(sign(f_curr_price - f_base_price), 1, '+', -1, '-', 0, ' ') chg_type + FROM t_sunmul_online + WHERE f_stock_code = (select f_stock_code from t_sunmul_batch + where f_market_date = (select max(f_market_date) + from t_sunmul_batch) + and substr(f_stock_code, 4, 1) = '1' + and F_MONTH_GUBUN = '1') + )) B"; + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + bufQuery += String.Format(queryToday); + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/그리드/Grid14.cs b/MBN_STOCK_N/Data/Request/그리드/Grid14.cs new file mode 100644 index 0000000..a51b90d --- /dev/null +++ b/MBN_STOCK_N/Data/Request/그리드/Grid14.cs @@ -0,0 +1,33 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Grid14 : ADataObject + { + + /// + /// 금일 데이터 쿼리 + /// + string queryToday = @""; + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + bufQuery += String.Format(queryToday); + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/그리드/Grid8.cs b/MBN_STOCK_N/Data/Request/그리드/Grid8.cs new file mode 100644 index 0000000..7977941 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/그리드/Grid8.cs @@ -0,0 +1,70 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Grid8 : ADataObject + { + + /// + /// 금일 데이터 쿼리 + /// + string queryToday = @"select + name, + sum(decode(invest, '개인', org_amt, 0)) ""개인"", + sum(decode(invest, '외국인', org_amt, 0)) ""외국인"", + sum(decode(invest, '기관', org_amt, 0)) ""기관"" + from( + select + 1 s, + '코스피' name, + decode(f_invest_code, '8000', '개인', '9000', '외국인', '9001', '외국인', '기관') invest, + round((sum(F_SELL_turnover) / 100000000) - (sum(F_BUY_turnover) / 100000000)) as org_amt + from t_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + group by decode(f_invest_code, '8000', '개인', '9000', '외국인', '9001', '외국인', '기관') + UNION + select + 2 s, + '코스닥' name, + decode(f_invest_code, '8000', '개인', '9000', '외국인', '9001', '외국인', '기관') invest, + round((sum(F_SELL_turnover) / 100000000) - (sum(F_BUY_turnover) / 100000000)) as org_amt + from t_kosdaq_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + group by decode(f_invest_code, '8000', '개인', '9000', '외국인', '9001', '외국인', '기관') + UNION + select + 3 s, + '코스피200' name, + decode(f_invest_code, '8000', '개인', '9000', '외국인', '9001', '외국인', '기관') invest, + round((sum(F_SELL_turnover) / 100000000) - (sum(F_BUY_turnover) / 100000000)) as org_amt + from t_invest + where F_PART_CODE = '029' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + group by decode(f_invest_code, '8000', '개인', '9000', '외국인', '9001', '외국인', '기관') + ) + group by name, s + order by s"; + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + bufQuery += String.Format(queryToday); + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/그리드/Grid9.cs b/MBN_STOCK_N/Data/Request/그리드/Grid9.cs new file mode 100644 index 0000000..be24a0c --- /dev/null +++ b/MBN_STOCK_N/Data/Request/그리드/Grid9.cs @@ -0,0 +1,232 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Grid9 : ADataObject + { + + public Grid9(국내시장종류 recvMarketType) + { + this.mMarketType = recvMarketType; + } + + private 국내시장종류 mMarketType; + + /// + /// 금일 데이터 쿼리 + /// + string queryKOSPIList = @"select + (select max(open_day) from v_open_day) f_data_time, + P_1 ""개인"", + P_2 ""외국인"", + P_3 ""기관"" + FROM( + select + sum(decode(f_invest_code, '8000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0)) p_1, + sum(decode(f_invest_code, '9000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), '9001', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0)) p_2, + sum(decode(f_invest_code, '8000', 0, '9000', 0, '9001', 0, round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000))) p_3 + from t_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + group by f_invest_code + ) + UNION + select + f_data_time, + sum(p_1) ""개인"", + sum(p_2) ""외국인"", + sum(p_3) ""기관"" + from( + select + substr(f_data_time, 1, 8) f_data_time, + decode(f_invest_code, '8000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0) p_1, + decode(f_invest_code, '9000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), '9001', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0) p_2, + decode(f_invest_code, '8000', 0, '9000', 0, '9001', 0, round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000)) p_3 + from t_invest_his + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + and f_data_time in ( + select data_time || '1535' + from(select open_day data_time from v_open_day + minus + select substr(f_data_time, 1, 8) data_time + from t_index + where f_part_code = '001' + order by data_time desc + ) + where rownum< 5 + ) + group by f_data_time, f_invest_code + ) + group by f_data_time + order by f_data_time desc"; + + string queryKOSPISum = @"select + sum(p_1) ""개인"", + sum(p_2) ""외국인"", + sum(p_3) ""기관"" + from( + select + sum(decode(f_invest_code, '8000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0)) p_1, + sum(decode(f_invest_code, '9000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), '9001', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0)) p_2, + sum(decode(f_invest_code, '8000', 0, '9000', 0, '9001', 0, round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000))) p_3 + from t_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + group by f_invest_code + union + select + sum(p_1) p_1, + sum(p_2) p_2, + sum(p_3) p_3 + from( + select + f_data_time f_data_time, + decode(f_invest_code, '8000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0) p_1, + decode(f_invest_code, '9000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), '9001', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0) p_2, + decode(f_invest_code, '8000', 0, '9000', 0, '9001', 0, round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000)) p_3 + from t_invest_his + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + and f_data_time in ( + select + data_time + from( + select + open_day || '1535' data_time + from v_open_day + minus + select + substr(f_data_time, 1, 8) data_time + from t_index + where f_part_code = '001' + order by data_time desc + ) + where rownum< 20 + ) + group by f_data_time, f_invest_code + ) + )"; + + string queryKOSDAQList = @"select + (select max(open_day) from v_open_day) f_data_time, + P_1 ""개인"", + P_2 ""외국인"", + P_3 ""기관"" + FROM( + select + sum(decode(f_invest_code, '8000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0)) p_1, + sum(decode(f_invest_code, '9000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), '9001', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0)) p_2, + sum(decode(f_invest_code, '8000', 0, '9000', 0, '9001', 0, round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000))) p_3 + from t_kosdaq_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + group by f_invest_code + ) + UNION + select + f_data_time, + sum(p_1) ""개인"", + sum(p_2) ""외국인"", + sum(p_3) ""기관"" + from( + select + substr(f_data_time, 1, 8) f_data_time, + decode(f_invest_code, '8000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0) p_1, + decode(f_invest_code, '9000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), '9001', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0) p_2, + decode(f_invest_code, '8000', 0, '9000', 0, '9001', 0, round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000)) p_3 + from t_kosdaq_invest_his + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + and f_data_time in ( + select data_time || '1535' + from( + select open_day data_time from v_open_day + minus + select substr(f_data_time, 1, 8) data_time from t_index + where f_part_code = '001' + order by data_time desc + ) + where rownum< 5 + ) + group by f_data_time, f_invest_code + ) + group by f_data_time + order by f_data_time desc"; + + string queryKOSDAQSum = @"select + sum(p_1) ""개인"", + sum(p_2) ""외국인"", + sum(p_3) ""기관"" + from( + select + sum(decode(f_invest_code, '8000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0)) p_1, + sum(decode(f_invest_code, '9000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), '9001', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0)) p_2, + sum(decode(f_invest_code, '8000', 0, '9000', 0, '9001', 0, round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000))) p_3 + from t_kosdaq_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + group by f_invest_code + union + select + sum(p_1) p_1, + sum(p_2) p_2, + sum(p_3) p_3 + from( + select + f_data_time f_data_time, + decode(f_invest_code, '8000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0) p_1, + decode(f_invest_code, '9000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), '9001', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0) p_2, + decode(f_invest_code, '8000', 0, '9000', 0, '9001', 0, round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000)) p_3 + from t_kosdaq_invest_his + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + and f_data_time in ( + select + data_time + from( + select + open_day || '1535' data_time + from v_open_day + minus + select + substr(f_data_time, 1, 8) data_time + from t_index + where f_part_code = '001' + order by data_time desc + ) + where rownum< 20 + ) + group by f_data_time, f_invest_code + ) + )"; + + public override IDataRequest buildData() + { + + + if (mMarketType == 국내시장종류.KOSPI) + { + mRequestQuery.Add("일별리스트", queryKOSPIList); + mRequestQuery.Add("한달합계", queryKOSPISum); + } + else + { + mRequestQuery.Add("일별리스트", queryKOSDAQList); + mRequestQuery.Add("한달합계", queryKOSDAQSum); + } + + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/막대그래프/Stick12.cs b/MBN_STOCK_N/Data/Request/막대그래프/Stick12.cs new file mode 100644 index 0000000..de0d649 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/막대그래프/Stick12.cs @@ -0,0 +1,64 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Stick12 : ADataObject + { + + + public Stick12(국내시장종류 recvMarketType) + { + this.mMarketType = recvMarketType; + } + + private 국내시장종류 mMarketType; + + /// + /// 금일 데이터 쿼리 + /// + string queryKOSPI = @"select + decode(f_invest_code,'8000','개인','9000','외국인','9001','외국인','기관') invest_name, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000) amt + from t_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + group by decode(f_invest_code, '8000', '개인', '9000', '외국인', '9001', '외국인', '기관')"; + + + string queryKOSDAQ = @"select + decode(f_invest_code,'8000','개인','9000','외국인','9001','외국인','기관') invest_name, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000) amt + from t_kosdaq_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + group by decode(f_invest_code, '8000', '개인', '9000', '외국인', '9001', '외국인', '기관')"; + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + switch (this.mMarketType) + { + case 국내시장종류.KOSPI: + bufQuery = queryKOSPI; + break; + case 국내시장종류.KOSDAQ: + bufQuery = queryKOSDAQ; + break; + } + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/막대그래프/Stick21.cs b/MBN_STOCK_N/Data/Request/막대그래프/Stick21.cs new file mode 100644 index 0000000..89d5fa9 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/막대그래프/Stick21.cs @@ -0,0 +1,112 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Stick21 : ADataObject + { + + + public Stick21(섹터지수막대그래프분류 recvDataType) + { + this.mDataType = recvDataType; + } + + private 섹터지수막대그래프분류 mDataType; + + /// + /// 금일 데이터 쿼리 + /// + string queryKOSPI = @"select + b.f_part_name, + a.F_PART_IDX/100, + a.F_CHG_TYPE, + a.F_PART_CHG/100, + round(a.f_part_chg / decode(a.f_chg_type, '+', (a.f_part_idx / 100) - (a.f_part_chg / 100), '-', (a.f_part_idx / 100) + (a.f_part_chg / 100)), 2) rate + from t_index a, t_part b + where a.f_part_code = b.f_part_code + and a.f_part_code in('013', '009', '011', '016', '018', '021', '008', '007', '015', '005') + order by a.f_part_code"; + + + string queryKOSDAQ = @"select + b.f_part_name, + a.F_PART_IDX/100, + a.F_CHG_TYPE, + a.F_PART_CHG/100, + round(a.f_part_chg / decode(a.f_chg_type, '+', (a.f_part_idx / 100) - (a.f_part_chg / 100), '-', (a.f_part_idx / 100) + (a.f_part_chg / 100)), 2) rate + from t_kosdaq_index a, t_kosdaq_part b + where a.f_part_code = b.f_part_code + and a.f_part_code in('159', '160', '066', '154', '065', '031', '029', '070', '024', '153') + order by a.f_part_code"; + + string queryDOW = @"select + a.f_input_name name, + round(b.f_last,2) part_idx, + b.f_sign chg_type, + ABS(round(b.f_diff, 2)) part_chg, + round(b.f_rate, 2) rate + from t_world_ix_eq_master a, t_world_ix_eq_sise b + where a.f_symb = b.f_symb + and a.f_symb in('DJI@DJINET', 'DJI@DJUSAU', 'DJI@DJUSCH', 'DJI@DJUSNF', 'DJI@DJUSCN', 'DJI@DJT', 'DJI@DJU', 'DJI@DJUSFB', 'DJI@DJUSCFT', 'DJI@DJUSEE')"; + + + string queryNASDAQ = @"select + a.f_input_name name, + round(b.f_last,2) part_idx, + b.f_sign chg_type, + ABS(round(b.f_diff, 2)) part_chg, + round(b.f_rate, 2) rate + from t_world_ix_eq_master a, t_world_ix_eq_sise b + where a.f_symb = b.f_symb + and a.f_symb in('NAS@CXBT', 'NAS@NDX', 'NAS@NQSSSE', 'NAS@IXBK', 'NAS@IXIS', 'NAS@IXUT', 'NAS@IXK', 'NAS@NBI', 'NAS@IXF', 'NAS@NDXT')"; + + + string querySNP = @"select + a.f_input_name name, + round(b.f_last,2) part_idx, + b.f_sign chg_type, + ABS(round(b.f_diff, 2)) part_chg, + round(b.f_rate, 2) rate + from t_world_ix_eq_master a, t_world_ix_eq_sise b + where a.f_symb = b.f_symb + and a.f_symb in('SPI@S5ENRS', 'SPI@S5RLST', 'SPI@S5AUCO', 'SPI@S5INFT', 'SPI@S5COND', 'SPI@S5INSU', 'SPI@S5ELUTX', 'SPI@S5HLTH', 'SPI@S5FINL', 'SPI@S5TELS')"; + + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + switch (this.mDataType) + { + case 섹터지수막대그래프분류.코스피: + bufQuery = queryKOSPI; + break; + case 섹터지수막대그래프분류.코스닥: + bufQuery = queryKOSDAQ; + break; + case 섹터지수막대그래프분류.다우: + bufQuery = queryDOW; + break; + case 섹터지수막대그래프분류.나스닥: + bufQuery = queryNASDAQ; + break; + case 섹터지수막대그래프분류.SNP: + bufQuery = querySNP; + break; + } + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/봉차트/ACandleData.cs b/MBN_STOCK_N/Data/Request/봉차트/ACandleData.cs new file mode 100644 index 0000000..a5fe7c3 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/봉차트/ACandleData.cs @@ -0,0 +1,107 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.Data.Request +{ + internal abstract class ACandleData : ADataObject + { + + /// + /// + /// + /// + /// + public ACandleData(봉차트세부종목 recvDataType, 데이터기간 recvDataLength) + { + this.mDataLength = recvDataLength; + this.mDataType = recvDataType; + this.setQuery(); + } + + protected 데이터기간 mDataLength; + + protected 봉차트세부종목 mDataType; + + protected string mStockCode = string.Empty; + + protected string queryForecastToday = @""; + + protected string queryForecastLast = @""; + + protected string queryIndexNow = @""; + + protected string queryIndexToday = @""; + + protected string queryIndexLast = @""; + + protected string queryQuantityToday = @""; + + protected string queryQuantityLast = @""; + + + public override IDataRequest buildData() + { + + switch (mDataType) + { + case 봉차트세부종목.예상지수: + buildQueryMethod(queryForecastToday, queryForecastLast); + break; + case 봉차트세부종목.일반지수: + buildQueryMethod(queryIndexNow, queryIndexLast, queryIndexToday); + break; + case 봉차트세부종목.거래량: + buildQueryMethod(queryIndexNow, queryQuantityLast, queryQuantityToday); + break; + } + + + return this; + + } + + private void buildQueryMethod(string query1, string query2, string query3 = null) + { + + if (this.mStockCode != string.Empty) + { + mRequestQuery.Add("현재", string.Format(query1, this.mStockCode)); + + if (mDataLength == 데이터기간.일 && query3 != null) + { + mRequestQuery.Add("누적", string.Format(query3, this.mStockCode)); + } + else + { + mRequestQuery.Add("누적", String.Format(query2, this.mDataLength.GetStringValue(), this.mStockCode)); + } + + } + else + { + + mRequestQuery.Add("현재", query1); + + if (mDataLength == 데이터기간.일 && query3 != null) + { + mRequestQuery.Add("누적", query3); + } + else + { + mRequestQuery.Add("누적", String.Format(query2, this.mDataLength.GetStringValue())); + } + } + + } + + + protected abstract void setQuery(); + + } + +} diff --git a/MBN_STOCK_N/Data/Request/봉차트/CandleFutures.cs b/MBN_STOCK_N/Data/Request/봉차트/CandleFutures.cs new file mode 100644 index 0000000..8c4ebb6 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/봉차트/CandleFutures.cs @@ -0,0 +1,135 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request.봉차트 +{ + internal class CandleFutures : ACandleData + { + public CandleFutures(DBDefine.봉차트세부종목 recvDataType, DBDefine.데이터기간 recvDataLength) : base(recvDataType, recvDataLength) + { + + if (recvDataType == DBDefine.봉차트세부종목.거래량) + { + throw new Exception("선물은 거래량 쿼리가 없음."); + } + + } + + protected override void setQuery() + { + + #region 예상지수 + + this.queryForecastToday = @"SELECT + '선물' name, + part_idx part_idx, + chg_type, + ABS(part_chg) part_chg, + round(part_chg / decode(chg_type, '+', (part_idx / 100) - (part_chg / 100), '-', (part_idx / 100) + (part_chg / 100), 1), 2) rate + FROM ( + SELECT decode(a.f_fo_price,0, b.F_JUN_LAST_PRICE, a.f_fo_price) part_idx, + decode(a.f_fo_price, 0, 0, (a.f_fo_price - b.F_JUN_LAST_PRICE)/100) part_chg, + decode(a.f_fo_price, 0, ' ', decode(sign(a.f_fo_price -b.F_JUN_LAST_PRICE),1,'+',-1,'-',0,' ')) chg_type + FROM t_sunmul_online a, t_sunmul_batch b +WHERE a.f_stock_code = b.f_stock_code + AND a.f_stock_seq = 1 + AND b.f_market_date = (select max(OPEN_DAY) from v_open_day) + AND b.F_MONTH_GUBUN = '1' + )"; + + this.queryForecastLast = @"select + F_DATA_DAY, + chg_type, + part_chg, + part_high_idx / 100 part_high_idx, + part_low_idx / 100 part_low_idx, + part_init_idx / 100 part_init_idx, + part_idx / 100 part_idx, + part_ma5_idx / 100 part_ma5_idx, + part_ma20_idx / 100 part_ma20_idx + FROM( + select F_DATA_DAY, F_CHG_TYPE chg_type, F_PART_CHG part_chg, + F_PART_HIGH_IDX part_high_idx, F_PART_LOW_IDX part_low_idx, F_PART_INIT_IDX part_init_idx, + F_PART_IDX part_idx, F_PART_MA5_IDX part_ma5_idx, F_PART_MA20_IDX part_ma20_idx + from T_SUNMUL_HIS_DAY + order by f_data_day desc) + where rownum <= {0} order by F_DATA_DAY asc"; + + #endregion + + #region 지수 + + this.queryIndexNow = @"SELECT + '선물' name, + part_idx part_idx, + chg_type, + ABS(part_chg) part_chg, + ABS(round(part_chg / decode(chg_type, '+', (part_idx / 100) - (part_chg / 100), '-', (part_idx / 100) + (part_chg / 100), 1), 2)) rate + FROM ( + SELECT decode(a.f_curr_price,0, b.F_JUN_LAST_PRICE/100, a.f_curr_price/100) part_idx, a.F_NET_VOL, a.f_out_vol, a.F_NET_TURNOVER, + decode(a.f_curr_price, 0, 0, (a.f_curr_price - b.F_JUN_LAST_PRICE*100)/100) part_chg, + decode(a.f_curr_price, 0, ' ', decode(sign(a.f_curr_price -b.F_JUN_LAST_PRICE*100),1,'+',-1,'-',0,' ')) chg_type + FROM t_sunmul_online a, t_sunmul_batch b + WHERE a.f_stock_code = b.f_stock_code + AND a.f_stock_seq = 1 + AND b.f_market_date = (select max(OPEN_DAY) from v_open_day) + AND b.F_MONTH_GUBUN = '1' + )"; + + this.queryIndexToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_PART_IDX/100, + a.F_CHG_TYPE, + a.F_PART_CHG, + a.F_PART_HIGH_IDX/100, + a.F_PART_LOW_IDX/100, + a.F_PART_INIT_IDX/100 + from t_sunmul_his_5M a + where a.f_data_day = (select max(open_day) from v_open_day) + order by a.F_DATA_DAY, a.F_DATA_TIME"; + + this.queryIndexLast = @"select + F_DATA_DAY, + chg_type, + part_chg, + part_high_idx/100, + part_low_idx/100, + part_init_idx/100, + part_idx/100, + part_ma5_idx/100, + part_ma20_idx/100 + FROM ( + select + F_DATA_DAY, + F_CHG_TYPE chg_type, + F_PART_CHG part_chg, + F_PART_HIGH_IDX part_high_idx, + F_PART_LOW_IDX part_low_idx, + F_PART_INIT_IDX part_init_idx, + F_PART_IDX part_idx, + F_PART_MA5_IDX part_ma5_idx, + F_PART_MA20_IDX part_ma20_idx + from T_SUNMUL_HIS_DAY + order by f_data_day desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + #endregion + + #region 거래량 + + this.queryQuantityToday = @""; + + + this.queryQuantityLast = @""; + + } + + #endregion + + } +} diff --git a/MBN_STOCK_N/Data/Request/봉차트/CandleIndustryKOSDAQ.cs b/MBN_STOCK_N/Data/Request/봉차트/CandleIndustryKOSDAQ.cs new file mode 100644 index 0000000..5072030 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/봉차트/CandleIndustryKOSDAQ.cs @@ -0,0 +1,142 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request.봉차트 +{ + internal class CandleIndustryKOSDAQ : ACandleData + { + public CandleIndustryKOSDAQ(DBDefine.봉차트세부종목 recvDataType, DBDefine.데이터기간 recvDataLength, string recvStockCode) : base(recvDataType, recvDataLength) + { + + if (recvDataType == DBDefine.봉차트세부종목.예상지수) + { + throw new Exception("업종지수는 예상지수 쿼리가 없음."); + } + + + this.mStockCode = recvStockCode; + + } + + protected override void setQuery() + { + + #region 예상지수 + + this.queryForecastToday = @""; + + this.queryForecastLast = @""; + + #endregion + + #region 지수 + + this.queryIndexNow = @"SELECT + b.f_part_name part_name, + f_part_vol part_vol, + round(f_part_idx/100,2) part_idx, + f_chg_type chg_type, + round(f_part_chg/100,2) part_chg, + round((f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg, 1)) * 100, 2) rate + FROM t_kosdaq_index a, t_kosdaq_part b + WHERE a.f_part_code = b.f_part_code + AND b.f_part_name = '{0}'"; + + this.queryIndexToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_PART_CODE, + b.f_part_name, + a.F_CHG_TYPE chg_type, + a.F_PART_CHG / 100 part_chg, + a.F_PART_HIGH_IDX / 100 part_high_idx, + a.F_PART_LOW_IDX / 100 part_low_idx, + a.F_PART_INIT_IDX / 100 part_init_idx, + a.F_PART_IDX / 100 part_idx, + a.f_part_vol + from t_kosdaq_index_his_5M a, t_kosdaq_part b + where a.f_part_code = b.f_part_code + and b.f_part_name = '{0}' + order by a.F_DATA_DAY, a.F_DATA_TIME"; + + this.queryIndexLast = @"select + F_DATA_DAY, + F_PART_CODE, + f_part_name part_name, + F_CHG_TYPE chg_type, + f_part_vol part_vol, + F_PART_CHG / 100 part_chg, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_MA5_IDX / 100 part_ma5_idx, + F_PART_MA20_IDX / 100 part_ma20_idx + from ( + select a.F_DATA_DAY, a.F_PART_CODE, b.f_part_name, + a.F_CHG_TYPE, a.F_PART_CHG, a.f_part_vol, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_kosdaq_index_his_day a, t_kosdaq_part b + where a.f_part_code = b.f_part_code + and b.f_part_name = '{1}' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + #endregion + + #region 거래량 + + this.queryQuantityToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_PART_CODE, + b.f_part_name, + a.F_CHG_TYPE chg_type, + a.F_PART_CHG / 100 part_chg, + a.F_PART_HIGH_IDX / 100 part_high_idx, + a.F_PART_LOW_IDX / 100 part_low_idx, + a.F_PART_INIT_IDX / 100 part_init_idx, + a.F_PART_IDX / 100 part_idx, + a.f_part_vol part_vol + from t_kosdaq_index_his_5M a, t_kosdaq_part b + where a.f_part_code = b.f_part_code + and b.f_part_name = '{0}' + order by a.F_DATA_DAY, a.F_DATA_TIME"; + + + this.queryQuantityLast = @"select + F_DATA_DAY, + F_PART_CODE, + f_part_name part_name, + F_CHG_TYPE chg_type, + f_part_vol part_vol, + F_PART_CHG / 100 part_chg, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_MA5_IDX / 100 part_ma5_idx, + F_PART_MA20_IDX / 100 part_ma20_idx + from ( + select a.F_DATA_DAY, a.F_PART_CODE, b.f_part_name, + a.F_CHG_TYPE, a.F_PART_CHG, a.f_part_vol, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_kosdaq_index_his_day a, t_kosdaq_part b + where a.f_part_code = b.f_part_code + and b.f_part_name = '{1}' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + } + + #endregion + + } +} diff --git a/MBN_STOCK_N/Data/Request/봉차트/CandleIndustryKOSPI.cs b/MBN_STOCK_N/Data/Request/봉차트/CandleIndustryKOSPI.cs new file mode 100644 index 0000000..b979736 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/봉차트/CandleIndustryKOSPI.cs @@ -0,0 +1,144 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request.봉차트 +{ + internal class CandleIndustryKOSPI : ACandleData + { + public CandleIndustryKOSPI(DBDefine.봉차트세부종목 recvDataType, DBDefine.데이터기간 recvDataLength, string recvStockCode) : base(recvDataType, recvDataLength) + { + + if (recvDataType == DBDefine.봉차트세부종목.예상지수) + { + throw new Exception("업종지수는 예상지수 쿼리가 없음."); + } + + + this.mStockCode = recvStockCode; + + } + + protected override void setQuery() + { + + #region 예상지수 + + this.queryForecastToday = @""; + + this.queryForecastLast = @""; + + #endregion + + #region 지수 + + this.queryIndexNow = @"SELECT + b.f_part_name part_name, + a.f_part_vol part_vol, + round(f_part_idx / 100, 2) part_idx, + f_chg_type chg_type, + round(f_part_chg / 100, 2) part_chg, + round((f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg, 1)) * 100, 2) rate + FROM t_index a, t_part b + WHERE a.f_part_code = b.f_part_code + AND b.f_part_name = '{0}'"; + + this.queryIndexToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_PART_CODE, + b.f_part_name, + a.F_CHG_TYPE, + a.F_PART_CHG / 100 part_chg, + a.F_PART_HIGH_IDX / 100 part_high_idx, + a.F_PART_LOW_IDX / 100 part_low_idx, + a.F_PART_INIT_IDX / 100 part_init_idx, + a.F_PART_IDX / 100 part_idx, + F_PART_VOL + from t_index_his_5M a, t_part b + where a.f_part_code = b.f_part_code + and b.f_part_name = '{0}' + and a.f_data_day = (select max(open_day) from v_open_day) + order by a.F_DATA_DAY, a.F_DATA_TIME"; + + this.queryIndexLast = @"select + F_DATA_DAY, + F_PART_CODE, + f_part_name part_name, + F_CHG_TYPE chg_type, + f_part_vol part_vol, + F_PART_CHG / 100 part_chg, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_MA5_IDX / 100 part_ma5_idx, + F_PART_MA20_IDX / 100 part_ma20_idx + from ( + select a.F_DATA_DAY, a.F_PART_CODE, b.f_part_name, + a.F_CHG_TYPE, a.F_PART_CHG, a.F_PART_VOL, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_index_his_day a, t_part b + where a.f_part_code = b.f_part_code + and b.f_part_name = '{1}' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + #endregion + + #region 거래량 + + this.queryQuantityToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_PART_CODE, + b.f_part_name, + a.F_CHG_TYPE, + a.F_PART_CHG / 100 part_chg, + a.F_PART_HIGH_IDX / 100 part_high_idx, + a.F_PART_LOW_IDX / 100 part_low_idx, + a.F_PART_INIT_IDX / 100 part_init_idx, + a.F_PART_IDX / 100 part_idx, + F_PART_VOL part_vol + from t_index_his_5M a, t_part b + where a.f_part_code = b.f_part_code + and b.f_part_name = '{0}' + and a.f_data_day = (select max(open_day) from v_open_day) + order by a.F_DATA_DAY, a.F_DATA_TIME"; + + + this.queryQuantityLast = @"select + F_DATA_DAY, + F_PART_CODE, + f_part_name part_name, + F_CHG_TYPE chg_type, + f_part_vol part_vol, + F_PART_CHG / 100 part_chg, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_MA5_IDX / 100 part_ma5_idx, + F_PART_MA20_IDX / 100 part_ma20_idx + from ( + select a.F_DATA_DAY, a.F_PART_CODE, b.f_part_name, + a.F_CHG_TYPE, a.F_PART_CHG, a.F_PART_VOL, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_index_his_day a, t_part b + where a.f_part_code = b.f_part_code + and b.f_part_name = '{1}' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + } + + #endregion + + } +} diff --git a/MBN_STOCK_N/Data/Request/봉차트/CandleKOSDAQ.cs b/MBN_STOCK_N/Data/Request/봉차트/CandleKOSDAQ.cs new file mode 100644 index 0000000..9769ea7 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/봉차트/CandleKOSDAQ.cs @@ -0,0 +1,151 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request.봉차트 +{ + internal class CandleKOSDAQ : ACandleData + { + public CandleKOSDAQ(DBDefine.봉차트세부종목 recvDataType, DBDefine.데이터기간 recvDataLength) : base(recvDataType, recvDataLength) + { + + + } + + protected override void setQuery() + { + + #region 예상지수 + + this.queryForecastToday = @"SELECT + '코스닥 예상' NAME, + round(f_part_idx / 100, 2) part_idx, + f_chg_type chg_type, + ABS(round(f_part_chg / 100, 2)) part_chg, + round((f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg),1) * 100, 2) rate + FROM t_kosdaq_fo_index + WHERE f_part_code = '001'"; + + this.queryForecastLast = @"select + F_DATA_DAY, + F_PART_CODE, + F_CHG_TYPE chg_type, + F_PART_CHG / 100 part_chg, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_MA5_IDX / 100 part_ma5_idx, + F_PART_MA20_IDX / 100 part_ma20_idx + from ( + select a.F_DATA_DAY, a.F_PART_CODE, + a.F_CHG_TYPE, a.F_PART_CHG, a.f_part_vol, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_kosdaq_index_his_day a + where a.f_part_code = '001' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + #endregion + + #region 지수 + + this.queryIndexNow = @"SELECT + round(f_part_idx/100,2) part_idx, + f_chg_type chg_type, + round(f_part_chg/100,2) part_chg, + round((f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg, 1)) * 100, 2) rate + FROM t_kosdaq_index + WHERE f_part_code = '001'"; + + this.queryIndexToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_PART_CODE, + F_CHG_TYPE chg_type, + F_PART_CHG / 100 part_chg, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx + from t_kosdaq_index_his_5M a + where a.f_part_code = '001' + and a.f_data_day = (select max(open_day) from v_open_day) + order by a.F_DATA_DAY, a.F_DATA_TIME"; + + this.queryIndexLast = @"select + F_DATA_DAY, + F_PART_CODE, + F_CHG_TYPE chg_type, + F_PART_CHG / 100 part_chg, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_MA5_IDX / 100 part_ma5_idx, + F_PART_MA20_IDX / 100 part_ma20_idx + from ( + select a.F_DATA_DAY, a.F_PART_CODE, + a.F_CHG_TYPE, a.F_PART_CHG, a.f_part_vol, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_kosdaq_index_his_day a + where a.f_part_code = '001' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + #endregion + + #region 거래량 + + this.queryQuantityToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_PART_CODE, + F_CHG_TYPE chg_type, + F_PART_CHG / 100 part_chg, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_VOL part_vol + from t_kosdaq_index_his_5M a + where a.f_part_code = '001' + and a.f_data_day = (select max(open_day) from v_open_day) + order by a.F_DATA_DAY, a.F_DATA_TIME"; + + + this.queryQuantityLast = @"select + F_DATA_DAY, + F_PART_CODE, + F_CHG_TYPE chg_type, + F_PART_CHG / 100 part_chg, + F_PART_VOL part_vol, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_MA5_IDX / 100 part_ma5_idx, + F_PART_MA20_IDX / 100 part_ma20_idx + from ( + select a.F_DATA_DAY, a.F_PART_CODE, + a.F_CHG_TYPE, a.F_PART_CHG, a.f_part_vol, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_kosdaq_index_his_day a + where a.f_part_code = '001' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + } + + #endregion + + } +} diff --git a/MBN_STOCK_N/Data/Request/봉차트/CandleKOSPI.cs b/MBN_STOCK_N/Data/Request/봉차트/CandleKOSPI.cs new file mode 100644 index 0000000..193605e --- /dev/null +++ b/MBN_STOCK_N/Data/Request/봉차트/CandleKOSPI.cs @@ -0,0 +1,147 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request.봉차트 +{ + internal class CandleKOSPI : ACandleData + { + public CandleKOSPI(DBDefine.봉차트세부종목 recvDataType, DBDefine.데이터기간 recvDataLength) : base(recvDataType, recvDataLength) + { + + + } + + protected override void setQuery() + { + + #region 예상지수 + + this.queryForecastToday = @"SELECT + '코스피 예상' NAME, + round(f_part_idx / 100, 2) part_idx, + f_chg_type chg_type, + ABS(round(f_part_chg / 100, 2)) part_chg, + round((f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg, 1)) * 100, 2) rate + FROM t_fo_index + WHERE f_part_code = '001'"; + + this.queryForecastLast = @"select + F_DATA_DAY, + F_PART_CODE, + F_CHG_TYPE chg_type, + F_PART_CHG / 100 part_chg, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_MA5_IDX / 100 part_ma5_idx, + F_PART_MA20_IDX / 100 part_ma20_idx + from ( + select a.F_DATA_DAY, a.F_PART_CODE, + a.F_CHG_TYPE, a.F_PART_CHG, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_index_his_day a + where a.f_part_code = '001' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + #endregion + + #region 지수 + + this.queryIndexNow = @"SELECT + round(f_part_idx/100,2) part_idx, + f_chg_type chg_type, + round(f_part_chg/100,2) part_chg, + round((f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg, 1)) * 100, 2) rate + FROM t_index + WHERE f_part_code = '001'"; + + this.queryIndexToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_PART_CODE, + a.F_CHG_TYPE chg_type, + a.F_PART_CHG / 100 part_chg, + a.F_PART_HIGH_IDX / 100 part_high_idx, + a.F_PART_LOW_IDX / 100 part_low_idx, + a.F_PART_INIT_IDX / 100 part_init_idx, + a.F_PART_IDX / 100 part_idx + from t_index_his_5M a + where a.f_part_code = '001' + and a.f_data_day = (select max(open_day) from v_open_day) + order by a.F_DATA_DAY, a.F_DATA_TIME"; + + this.queryIndexLast = @"select + F_DATA_DAY, + F_PART_CODE, + F_CHG_TYPE chg_type, + F_PART_CHG / 100 part_chg, + F_PART_HIGH_IDX / 100 part_high_idx, F_PART_LOW_IDX / 100 part_low_idx, F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, F_PART_MA5_IDX / 100 part_ma5_idx, F_PART_MA20_IDX / 100 part_ma20_idx + from ( + select a.F_DATA_DAY, a.F_PART_CODE, + a.F_CHG_TYPE, a.F_PART_CHG, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_index_his_day a + where a.f_part_code = '001' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + #endregion + + #region 거래량 + + this.queryQuantityToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_PART_CODE, + a.F_CHG_TYPE chg_type, + a.F_PART_CHG / 100 part_chg, + a.F_PART_HIGH_IDX / 100 part_high_idx, + a.F_PART_LOW_IDX / 100 part_low_idx, + a.F_PART_INIT_IDX / 100 part_init_idx, + a.F_PART_IDX / 100 part_idx, + a.F_PART_VOL part_vol + from t_index_his_5M a + where a.f_part_code = '001' + and a.f_data_day = (select max(open_day) from v_open_day) + order by a.F_DATA_DAY, a.F_DATA_TIME"; + + + this.queryQuantityLast = @"select + F_DATA_DAY, + F_PART_CODE, + F_CHG_TYPE chg_type, + F_PART_CHG / 100 part_chg, + F_PART_VOL part_vol, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_MA5_IDX / 100 part_ma5_idx, + F_PART_MA20_IDX / 100 part_ma20_idx + from ( + select a.F_DATA_DAY, a.F_PART_CODE, + a.F_CHG_TYPE, a.F_PART_CHG, a.f_part_vol, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_index_his_day a + where a.f_part_code = '001' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + } + + #endregion + + } +} diff --git a/MBN_STOCK_N/Data/Request/봉차트/CandleKOSPI200.cs b/MBN_STOCK_N/Data/Request/봉차트/CandleKOSPI200.cs new file mode 100644 index 0000000..ebeb841 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/봉차트/CandleKOSPI200.cs @@ -0,0 +1,149 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request.봉차트 +{ + internal class CandleKOSPI200 : ACandleData + { + public CandleKOSPI200(DBDefine.봉차트세부종목 recvDataType, DBDefine.데이터기간 recvDataLength) : base(recvDataType, recvDataLength) + { + + + } + + protected override void setQuery() + { + + #region 예상지수 + + this.queryForecastToday = @"SELECT + 'KOSPI200' name, + f_part_idx/100 part_idx, + f_chg_type chg_type, + ABS(round(f_part_chg/100,2)) part_chg, + round(f_part_chg / decode(f_chg_type, '+', (f_part_idx / 100) - (f_part_chg / 100), '-', (f_part_idx / 100) + (f_part_chg / 100), 1), 2) rate + FROM T_200_FO_INDEX + WHERE f_part_code = '029'"; + + this.queryForecastLast = @"select + F_DATA_DAY, + F_PART_CODE, + F_CHG_TYPE chg_type, + F_PART_CHG / 100 part_chg, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_MA5_IDX / 100 part_ma5_idx, + F_PART_MA20_IDX / 100 part_ma20_idx + from ( + select a.F_DATA_DAY, a.F_PART_CODE, + a.F_CHG_TYPE, a.F_PART_CHG, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_200_index_his_day a + where a.f_part_code = '029' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + #endregion + + #region 지수 + + this.queryIndexNow = @"SELECT + round(f_part_idx/100,2) part_idx, + f_chg_type chg_type, + round(f_part_chg/100,2) part_chg, + round((f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg, 1)) * 100, 2) rate + FROM T_200_INDEX + WHERE f_part_code = '029'"; + + this.queryIndexToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_PART_CODE, + a.F_CHG_TYPE chg_type, + a.F_PART_CHG / 100 part_chg, + a.F_PART_HIGH_IDX / 100 part_high_idx, + a.F_PART_LOW_IDX / 100 part_low_idx, + a.F_PART_INIT_IDX / 100 part_init_idx, + a.F_PART_IDX / 100 part_idx + from t_200_index_his_5M a + where a.f_part_code = '029' + and a.f_data_day = (select max(open_day) from v_open_day) + order by a.F_DATA_DAY, a.F_DATA_TIME"; + + this.queryIndexLast = @"select + F_DATA_DAY, + F_PART_CODE, + F_CHG_TYPE chg_type, + F_PART_CHG / 100 part_chg, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_MA5_IDX / 100 part_ma5_idx, + F_PART_MA20_IDX / 100 part_ma20_idx + from ( + select a.F_DATA_DAY, a.F_PART_CODE, + a.F_CHG_TYPE, a.F_PART_CHG, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_200_index_his_day a + where a.f_part_code = '029' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + #endregion + + #region 거래량 + + this.queryQuantityToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_PART_CODE, + a.F_PART_CHG / 100 part_chg, + a.F_PART_HIGH_IDX / 100 part_high_idx, + a.F_PART_LOW_IDX / 100 part_low_idx, + a.F_PART_INIT_IDX / 100 part_init_idx, + a.F_PART_IDX / 100 part_idx, + F_PART_VOL part_vol + from t_200_index_his_5M a + where a.f_part_code = '029' + and a.f_data_day = (select max(open_day) from v_open_day) + order by a.F_DATA_DAY, a.F_DATA_TIME"; + + + this.queryQuantityLast = @"select + F_DATA_DAY, + F_PART_CODE, + F_CHG_TYPE chg_type, + F_PART_CHG / 100 part_chg, + F_PART_VOL part_vol, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_MA5_IDX / 100 part_ma5_idx, + F_PART_MA20_IDX / 100 part_ma20_idx + from (select a.F_DATA_DAY, a.F_PART_CODE, + a.F_CHG_TYPE, a.F_PART_CHG, a.f_part_vol, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_200_index_his_day a + where a.f_part_code = '029' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + } + + #endregion + + } +} diff --git a/MBN_STOCK_N/Data/Request/봉차트/CandleKRX100.cs b/MBN_STOCK_N/Data/Request/봉차트/CandleKRX100.cs new file mode 100644 index 0000000..e81f8fb --- /dev/null +++ b/MBN_STOCK_N/Data/Request/봉차트/CandleKRX100.cs @@ -0,0 +1,145 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request.봉차트 +{ + internal class CandleKRX100 : ACandleData + { + public CandleKRX100(DBDefine.봉차트세부종목 recvDataType, DBDefine.데이터기간 recvDataLength) : base(recvDataType, recvDataLength) + { + + if (recvDataType == DBDefine.봉차트세부종목.예상지수) + { + throw new Exception("KRX100은 예상지수 쿼리가 없음."); + } + + } + + protected override void setQuery() + { + + #region 예상지수 + + this.queryForecastToday = @""; + + this.queryForecastLast = @""; + + #endregion + + #region 지수 + + this.queryIndexNow = @"SELECT + round(f_part_idx/100,2) part_idx, + f_chg_type chg_type, + round(f_part_chg/100,2) part_chg, + round((f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg, 1)) * 100, 2) rate + FROM t_krx100_index + WHERE f_part_code = '043'"; + + this.queryIndexToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_PART_CODE, + F_CHG_TYPE chg_type, + F_PART_CHG / 100 part_chg, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx + from t_krx100_index_his_5M a + where a.f_part_code = '043' + and a.f_data_day = (select max(open_day) from v_open_day) + order by a.F_DATA_DAY, a.F_DATA_TIME"; + + this.queryIndexLast = @"select + F_DATA_DAY, + F_PART_CODE, + F_CHG_TYPE chg_type, + F_PART_CHG / 100 part_chg, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_MA5_IDX / 100 part_ma5_idx, + F_PART_MA20_IDX / 100 part_ma20_idx + from ( + select a.F_DATA_DAY, a.F_PART_CODE, + a.F_CHG_TYPE, a.F_PART_CHG, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_krx100_index_his_day a + where a.f_part_code = '043' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + #endregion + + #region 거래량 + + //this.queryQuantityToday = @"select + // a.F_DATA_DAY, + // a.F_DATA_TIME, + // a.F_PART_CODE, + // F_CHG_TYPE chg_type, + // F_PART_CHG / 100 part_chg, + // F_PART_HIGH_IDX / 100 part_high_idx, + // F_PART_LOW_IDX / 100 part_low_idx, + // F_PART_INIT_IDX / 100 part_init_idx, + // F_PART_IDX / 100 part_idx + //from t_krx100_index_his_5M a + //where a.f_part_code = '043' + // and a.f_data_day = (select max(open_day) from v_open_day) + //order by a.F_DATA_DAY, a.F_DATA_TIME"; + + + this.queryQuantityToday = @"select + a.F_DATA_DAY, + a.F_PART_CODE, + a.F_CHG_TYPE, + F_PART_CHG / 100 part_chg, + F_PART_VOL part_vol, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + a.F_DATA_TIME + from t_krx100_index_his_5M a + where a.f_part_code = '043' + and a.f_data_day = (select max(open_day) from v_open_day) + order by a.F_DATA_DAY, a.F_DATA_TIME"; + + + + this.queryQuantityLast = @"select + F_DATA_DAY, + F_PART_CODE, + F_CHG_TYPE chg_type, + F_PART_CHG / 100 part_chg, + F_PART_VOL part_vol, + F_PART_HIGH_IDX / 100 part_high_idx, + F_PART_LOW_IDX / 100 part_low_idx, + F_PART_INIT_IDX / 100 part_init_idx, + F_PART_IDX / 100 part_idx, + F_PART_MA5_IDX / 100 part_ma5_idx, + F_PART_MA20_IDX / 100 part_ma20_idx + from ( + select a.F_DATA_DAY, a.F_PART_CODE, + a.F_CHG_TYPE, a.F_PART_CHG, a.f_part_vol, + a.F_PART_HIGH_IDX, a.F_PART_LOW_IDX, a.F_PART_INIT_IDX, + a.F_PART_IDX, a.F_PART_MA5_IDX, a.F_PART_MA20_IDX + from t_krx100_index_his_day a + where a.f_part_code = '043' + order by a.F_DATA_DAY desc + ) + where rownum <= {0} order by F_DATA_DAY asc"; + + } + + #endregion + + } +} diff --git a/MBN_STOCK_N/Data/Request/봉차트/CandleStockDIS.cs b/MBN_STOCK_N/Data/Request/봉차트/CandleStockDIS.cs new file mode 100644 index 0000000..b32b6d9 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/봉차트/CandleStockDIS.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request.봉차트 +{ + internal class CandleStockDIS : ACandleData + { + public CandleStockDIS(DBDefine.봉차트세부종목 recvDataType, DBDefine.데이터기간 recvDataLength, string recvStockCode) : base(recvDataType, recvDataLength) + { + + this.mStockCode = recvStockCode; + + } + + protected override void setQuery() + { + + #region 지수 + + this.queryIndexNow = @"SELECT DISTINCT + b.f_stock_code stock_code, + b.F_STOCK_WANNAME stock_name, + a.f_curr_price curr_price, + ABS(a.f_net_chg) net_chg, + decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') chg_type, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1 * (a.f_curr_price + a.f_net_chg), + '5', -1 * (a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_stop_online1 a, t_stock b + WHERE b.f_mkt_halt = 'Y' + + AND a.f_curr_price < > 0 + + AND a.f_stock_code = b.f_stock_code + AND b.f_stock_wanname = '{0}'"; + + + + this.queryIndexLast = @"select O.OPEN_DAY, X.F_STOCK_CODE, X.f_stock_wanname, + X.F_CHG_TYPE, X.F_NET_CHG, + X.F_HIGH_PRICE, X.F_LOW_PRICE, X.F_INIT_PRICE, + X.F_CURR_PRICE, X.F_MA5_PRICE, X.F_MA20_PRICE + from(select a.F_DATA_DATE, a.F_STOCK_CODE, b.f_stock_wanname, + a.F_CHG_TYPE, a.F_NET_CHG, + a.F_HIGH_PRICE, a.F_LOW_PRICE, a.F_INIT_PRICE, + a.F_CURR_PRICE, a.F_MA5_PRICE, a.F_MA20_PRICE + from t_candle_history a, t_stock b + where a.f_stock_code = b.f_stock_code + and b.f_stock_wanname = '{1}' + and b.f_mkt_halt = 'Y' + order by a.F_DATA_DATE desc) X, + (select open_day from(select open_day from v_open_day + order by open_day desc) + where rownum <= {0} ) O + + where X.f_data_date(+) = o.open_day + order by O.OPEN_DAY"; + + #endregion + } + } + } diff --git a/MBN_STOCK_N/Data/Request/봉차트/CandleStockDISK.cs b/MBN_STOCK_N/Data/Request/봉차트/CandleStockDISK.cs new file mode 100644 index 0000000..53ef69c --- /dev/null +++ b/MBN_STOCK_N/Data/Request/봉차트/CandleStockDISK.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request.봉차트 +{ + internal class CandleStockDISK : ACandleData + { + public CandleStockDISK(DBDefine.봉차트세부종목 recvDataType, DBDefine.데이터기간 recvDataLength, string recvStockCode) : base(recvDataType, recvDataLength) + { + + this.mStockCode = recvStockCode; + + } + + protected override void setQuery() + { + + #region 지수 + + this.queryIndexNow = @"SELECT DISTINCT + b.f_stock_code stock_code, + b.F_STOCK_WANNAME stock_name, + a.f_curr_price curr_price, + ABS(a.f_net_chg) net_chg, + decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') chg_type, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1 * (a.f_curr_price + a.f_net_chg), + '5', -1 * (a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_stop_kosdaq_online1 a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'Y' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + AND b.f_stock_wanname = '{0}'"; + + + + this.queryIndexLast = @"select O.OPEN_DAY, X.F_STOCK_CODE, X.f_stock_wanname, + X.F_CHG_TYPE, X.F_NET_CHG, + X.F_HIGH_PRICE, X.F_LOW_PRICE, X.F_INIT_PRICE, + X.F_CURR_PRICE, X.F_MA5_PRICE, X.F_MA20_PRICE + from(select a.F_DATA_DATE, a.F_STOCK_CODE, b.f_stock_wanname, + a.F_CHG_TYPE, a.F_NET_CHG, + a.F_HIGH_PRICE, a.F_LOW_PRICE, a.F_INIT_PRICE, + a.F_CURR_PRICE, a.F_MA5_PRICE, a.F_MA20_PRICE + from t_kosdaq_candle_history a, t_kosdaq_stock b + where a.f_stock_code = b.f_stock_code + and b.f_stock_wanname = '{1}' + and b.f_mkt_halt = 'Y' + order by a.F_DATA_DATE desc) X, + (select open_day from(select open_day from v_open_day + order by open_day desc) + where rownum <= {0}) O + where X.f_data_date(+) = o.open_day + order by O.OPEN_DAY"; + + #endregion + } + } +} diff --git a/MBN_STOCK_N/Data/Request/봉차트/CandleStockKOSDAQ.cs b/MBN_STOCK_N/Data/Request/봉차트/CandleStockKOSDAQ.cs new file mode 100644 index 0000000..905a5c4 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/봉차트/CandleStockKOSDAQ.cs @@ -0,0 +1,219 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request.봉차트 +{ + internal class CandleStockKOSDAQ : ACandleData + { + public CandleStockKOSDAQ(DBDefine.봉차트세부종목 recvDataType, DBDefine.데이터기간 recvDataLength, string recvStockCode) : base(recvDataType, recvDataLength) + { + + this.mStockCode = recvStockCode; + + } + + protected override void setQuery() + { + + #region 예상지수 + + this.queryForecastToday = @"SELECT DISTINCT + b.f_stock_code stock_code, + b.f_stock_nickname nickname, + b.F_STOCK_WANNAME wanname, + a.f_fore_price curr_price, + a.f_fore_vol net_vol, + c.f_final_price final_price, + ABS(a.f_fore_price - c.f_final_price) net_chg, + ' ' f_net_chg, + case when(a.f_fore_price - c.f_final_price) > 0 then '+' + when(a.f_fore_price - c.f_final_price) = 0 then '' + when(a.f_fore_price - c.f_final_price) < 0 then '-' end chg_type, + round(((a.f_fore_price - c.f_final_price) / c.f_final_price) * 100, 2) rate + FROM t_kosdaq_online1_call a, t_kosdaq_stock b, t_kosdaq_batch_day c + WHERE a.f_stock_code = b.f_stock_code + AND b.f_mkt_halt = 'N' + AND c.f_stock_code = b.f_stock_code + and b.f_stock_wanname = '{0}'"; + + ////////////this.queryForecastToday = @"SELECT DISTINCT + //////////// b.f_stock_code stock_code, + //////////// b.f_stock_nickname nickname, + //////////// b.F_STOCK_WANNAME wanname, + //////////// a.f_fore_price curr_price, + //////////// a.f_fore_vol net_vol, + //////////// c.f_final_price final_price, + //////////// a.f_fore_price - c.f_final_price net_chg, + //////////// a.f_net_chg, + //////////// case when(a.f_fore_price - c.f_final_price) > 0 then '+' + //////////// when(a.f_fore_price - c.f_final_price) = 0 then '' + //////////// when(a.f_fore_price - c.f_final_price) < 0 then '-' end chg_type, + //////////// round(((a.f_fore_price - c.f_final_price) / c.f_final_price) * 100, 2) rate + ////////////FROM t_kosdaq_online1 a, t_kosdaq_stock b, t_kosdaq_batch_day c + ////////////WHERE a.f_stock_code = b.f_stock_code + //////////// AND b.f_mkt_halt = 'N' + //////////// AND c.f_stock_code = b.f_stock_code + //////////// and b.f_stock_wanname = '{0}'"; + // 테스트로 막아놓음 + //this.queryForecastLast = @"select + // F_DATA_DATE, + // F_STOCK_CODE, + // f_stock_wanname, + // F_CHG_TYPE, + // F_NET_CHG, + // F_HIGH_PRICE, + // F_LOW_PRICE, + // F_INIT_PRICE, + // F_CURR_PRICE, + // F_MA5_PRICE, + // F_MA20_PRICE + //from ( + // select a.F_DATA_DATE, a.F_STOCK_CODE, b.f_stock_wanname, + // a.F_CHG_TYPE, a.F_NET_CHG, + // a.F_HIGH_PRICE, a.F_LOW_PRICE, a.F_INIT_PRICE, + // a.F_CURR_PRICE, a.F_MA5_PRICE, a.F_MA20_PRICE + // from t_kosdaq_candle_history a, t_kosdaq_stock b + // where a.f_stock_code = b.f_stock_code + // and b.f_stock_wanname = '{1}' + // order by a.F_DATA_DATE desc + //) + //where rownum <= {0} order by F_DATA_DATE asc"; + + this.queryForecastLast = @"select + O.OPEN_DAY F_DATA_DATE, + X.F_STOCK_CODE, + X.f_stock_wanname, + X.F_CHG_TYPE, + X.F_NET_CHG, + X.F_HIGH_PRICE, + X.F_LOW_PRICE, + X.F_INIT_PRICE, + X.F_CURR_PRICE, + X.F_MA5_PRICE, + X.F_MA20_PRICE + from(select a.F_DATA_DATE, a.F_STOCK_CODE, b.f_stock_wanname, + a.F_CHG_TYPE, a.F_NET_CHG, + a.F_HIGH_PRICE, a.F_LOW_PRICE, a.F_INIT_PRICE, + a.F_CURR_PRICE, a.F_MA5_PRICE, a.F_MA20_PRICE + from t_kosdaq_candle_history a, t_kosdaq_stock b + where a.f_stock_code = b.f_stock_code + and b.f_stock_wanname = '{1}' + and b.f_mkt_halt = 'N' + order by a.F_DATA_DATE desc) X, + (select open_day from(select open_day from v_open_day + order by open_day desc) + where rownum <= {0}) O + where X.f_data_date(+) = o.open_day + order by O.OPEN_DAY"; + + #endregion + + #region 지수 + + this.queryIndexNow = @"SELECT DISTINCT + b.f_stock_code stock_code, + b.F_STOCK_WANNAME stock_name , + a.f_curr_price curr_price, + ABS(a.f_net_chg) net_chg, + decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') chg_type, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), '2', (a.f_curr_price - a.f_net_chg), '3', (a.f_curr_price), '4', -1*(a.f_curr_price + a.f_net_chg), '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_kosdaq_online1 a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + AND b.f_stock_wanname = '{0}'"; + + this.queryIndexToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_STOCK_CODE, + b.f_stock_wanname, + a.F_CURR_PRICE, + a.F_CHG_TYPE, + a.F_NET_CHG, + a.F_NET_VOL, + a.F_HIGH_PRICE, + a.F_LOW_PRICE, + a.F_INIT_PRICE + from t_kosdaq_online_his_5M a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + AND b.f_stock_wanname = '{0}' + and b.f_mkt_halt = 'N' + and a.f_data_day = ( + select max(open_day) from v_open_day + ) + ORDER BY a.F_DATA_TIME"; + + this.queryIndexLast = @"select O.OPEN_DAY, X.F_STOCK_CODE, X.f_stock_wanname, + X.F_CHG_TYPE, X.F_NET_CHG, + X.F_HIGH_PRICE, X.F_LOW_PRICE, X.F_INIT_PRICE, + X.F_CURR_PRICE, X.F_MA5_PRICE, X.F_MA20_PRICE + from(select a.F_DATA_DATE, a.F_STOCK_CODE, b.f_stock_wanname, + a.F_CHG_TYPE, a.F_NET_CHG, + a.F_HIGH_PRICE, a.F_LOW_PRICE, a.F_INIT_PRICE, + a.F_CURR_PRICE, a.F_MA5_PRICE, a.F_MA20_PRICE + from t_kosdaq_candle_history a, t_kosdaq_stock b + where a.f_stock_code = b.f_stock_code + and b.f_stock_wanname = '{1}' + and b.f_mkt_halt = 'N' + order by a.F_DATA_DATE desc) X, + (select open_day from(select open_day from v_open_day + order by open_day desc) + where rownum <= {0}) O + where X.f_data_date(+) = o.open_day + order by O.OPEN_DAY"; + + #endregion + + #region 거래량 + + this.queryQuantityToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_STOCK_CODE, + b.f_stock_wanname, + a.F_CURR_PRICE, + a.F_CHG_TYPE, + a.F_NET_CHG, + a.F_NET_VOL, + a.F_HIGH_PRICE, + a.F_LOW_PRICE, + a.F_INIT_PRICE + from t_kosdaq_online_his_5M a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + AND b.f_stock_wanname = '{0}' + and a.f_data_day = (select max(open_day) from v_open_day) + ORDER BY a.F_DATA_TIME"; + + this.queryQuantityLast = @"select O.OPEN_DAY, X.F_STOCK_CODE, X.f_stock_wanname, + X.F_CHG_TYPE, X.F_NET_CHG, X.F_NET_VOL, + X.F_HIGH_PRICE, X.F_LOW_PRICE, X.F_INIT_PRICE, + X.F_CURR_PRICE, X.F_MA5_PRICE, X.F_MA20_PRICE + from(select a.F_DATA_DATE, a.F_STOCK_CODE, b.f_stock_wanname, + a.F_CHG_TYPE, a.F_NET_CHG, a.F_NET_VOL, + a.F_HIGH_PRICE, a.F_LOW_PRICE, a.F_INIT_PRICE, + a.F_CURR_PRICE, a.F_MA5_PRICE, a.F_MA20_PRICE + from t_kosdaq_candle_history a, t_kosdaq_stock b + where a.f_stock_code = b.f_stock_code + and b.f_stock_wanname = '{1}' + and b.f_mkt_halt = 'N' + order by a.F_DATA_DATE desc) X, + (select open_day from(select open_day from v_open_day + order by open_day desc) + where rownum <= {0}) O + where X.f_data_date(+) = o.open_day + order by O.OPEN_DAY"; + + } + + #endregion + + } +} diff --git a/MBN_STOCK_N/Data/Request/봉차트/CandleStockKOSPI.cs b/MBN_STOCK_N/Data/Request/봉차트/CandleStockKOSPI.cs new file mode 100644 index 0000000..f7ce756 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/봉차트/CandleStockKOSPI.cs @@ -0,0 +1,221 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request.봉차트 +{ + internal class CandleStockKOSPI : ACandleData + { + public CandleStockKOSPI(DBDefine.봉차트세부종목 recvDataType, DBDefine.데이터기간 recvDataLength, string recvStockCode) : base(recvDataType, recvDataLength) + { + + this.mStockCode = recvStockCode; + + } + + protected override void setQuery() + { + + #region 예상지수 + + this.queryForecastToday = @"SELECT DISTINCT + b.f_stock_code stock_code, + b.f_stock_nickname nickname, + b.F_STOCK_WANNAME wanname, + a.f_fore_price curr_price, + a.f_fore_vol net_vol, + c.f_final_price final_price, + ABS(a.f_fore_price - c.f_final_price) net_chg, + '' f_net_chg, + case when(a.f_fore_price - c.f_final_price) > 0 then '+' + when(a.f_fore_price - c.f_final_price) = 0 then '' + when(a.f_fore_price - c.f_final_price) < 0 then '-' end chg_type, + round(((a.f_fore_price - c.f_final_price) / c.f_final_price) * 100, 2) rate + FROM t_online1_call a, t_stock b, t_batch_day c + WHERE b.f_stock_code = a.f_stock_code + AND c.f_stock_code = a.f_stock_code + AND b.f_mkt_halt = 'N' + and b.f_STOCK_wanname = '{0}'"; + + //////////this.queryForecastToday = @"SELECT DISTINCT + ////////// b.f_stock_code stock_code, + ////////// b.f_stock_nickname nickname, + ////////// b.F_STOCK_WANNAME wanname, + ////////// a.f_fore_price curr_price, + ////////// a.f_fore_vol net_vol, + ////////// c.f_final_price final_price, + ////////// a.f_fore_price - c.f_final_price net_chg, + ////////// a.f_net_chg, + ////////// case when(a.f_fore_price - c.f_final_price) > 0 then '+' when(a.f_fore_price - c.f_final_price) = 0 then '' when(a.f_fore_price - c.f_final_price) < 0 then '-' end chg_type, + ////////// round(((a.f_fore_price - c.f_final_price) / c.f_final_price) * 100, 2) rate + //////////FROM t_online1 a, t_stock b, t_batch_day c + //////////WHERE b.f_stock_code = a.f_stock_code + ////////// AND c.f_stock_code = a.f_stock_code + ////////// AND b.f_mkt_halt = 'N' + ////////// and b.f_STOCK_wanname = '{0}'"; + + //==================== + //this.queryForecastLast = @"select + // F_DATA_DATE, + // F_STOCK_CODE, + // f_stock_wanname, + // F_CHG_TYPE, + // F_NET_CHG, + // F_HIGH_PRICE, + // F_LOW_PRICE, + // F_INIT_PRICE, + // F_CURR_PRICE, + // F_MA5_PRICE, + // F_MA20_PRICE + //from ( + // select a.F_DATA_DATE, a.F_STOCK_CODE, b.f_stock_wanname, + // a.F_CHG_TYPE, a.F_NET_CHG, + // a.F_HIGH_PRICE, a.F_LOW_PRICE, a.F_INIT_PRICE, + // a.F_CURR_PRICE, a.F_MA5_PRICE, a.F_MA20_PRICE + // from t_candle_history a, t_stock b + // where a.f_stock_code = b.f_stock_code + // and b.f_stock_wanname = '{1}' + // and b.f_mkt_halt = 'N' + // order by a.F_DATA_DATE desc + //) + //where rownum <= {0} order by F_DATA_DATE asc"; + this.queryForecastLast = @"select + O.OPEN_DAY F_DATA_DATE, + X.F_STOCK_CODE, + X.f_stock_wanname, + X.F_CHG_TYPE, + X.F_NET_CHG, + X.F_HIGH_PRICE, + X.F_LOW_PRICE, + X.F_INIT_PRICE, + X.F_CURR_PRICE, + X.F_MA5_PRICE, + X.F_MA20_PRICE + from(select a.F_DATA_DATE, a.F_STOCK_CODE, b.f_stock_wanname, + a.F_CHG_TYPE, a.F_NET_CHG, + a.F_HIGH_PRICE, a.F_LOW_PRICE, a.F_INIT_PRICE, + a.F_CURR_PRICE, a.F_MA5_PRICE, a.F_MA20_PRICE + from t_candle_history a, t_stock b + where a.f_stock_code = b.f_stock_code + and b.f_stock_wanname = '{1}' + and b.f_mkt_halt = 'N' + order by a.F_DATA_DATE desc) X, + (select open_day from(select open_day from v_open_day + order by open_day desc) + where rownum <= {0}) O + where X.f_data_date(+) = o.open_day + order by O.OPEN_DAY"; + + //================================= + + #endregion + + #region 지수 + + this.queryIndexNow = @"SELECT DISTINCT + b.f_stock_code stock_code, + b.F_STOCK_WANNAME stock_name , + a.f_curr_price curr_price, + ABS(a.f_net_chg) net_chg, + a.f_net_vol, + decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') chg_type, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), '2', (a.f_curr_price - a.f_net_chg), '3', (a.f_curr_price), '4', -1*(a.f_curr_price + a.f_net_chg), '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_online1 a, t_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + AND b.f_stock_wanname = '{0}'"; + + this.queryIndexToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_STOCK_CODE, + b.f_stock_wanname, + a.F_CURR_PRICE, + a.F_CHG_TYPE, + a.F_NET_CHG, + a.F_NET_VOL, + a.F_HIGH_PRICE, + a.F_LOW_PRICE, + a.F_INIT_PRICE + from t_online_his_5M a, t_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + AND b.f_stock_wanname = '{0}' + and a.f_data_day = ( + select max(open_day) from v_open_day + ) + ORDER BY a.F_DATA_TIME"; + + this.queryIndexLast = @"select O.OPEN_DAY, X.F_STOCK_CODE, X.f_stock_wanname, + X.F_CHG_TYPE, X.F_NET_CHG, + X.F_HIGH_PRICE, X.F_LOW_PRICE, X.F_INIT_PRICE, + X.F_CURR_PRICE, X.F_MA5_PRICE, X.F_MA20_PRICE + from(select a.F_DATA_DATE, a.F_STOCK_CODE, b.f_stock_wanname, + a.F_CHG_TYPE, a.F_NET_CHG, + a.F_HIGH_PRICE, a.F_LOW_PRICE, a.F_INIT_PRICE, + a.F_CURR_PRICE, a.F_MA5_PRICE, a.F_MA20_PRICE + from t_candle_history a, t_stock b + where a.f_stock_code = b.f_stock_code + and b.f_stock_wanname = '{1}' + and b.f_mkt_halt = 'N' + order by a.F_DATA_DATE desc) X, + (select open_day from(select open_day from v_open_day + order by open_day desc) + where rownum <= {0}) O + where X.f_data_date(+) = o.open_day + order by O.OPEN_DAY"; + + #endregion + + #region 거래량 + + this.queryQuantityToday = @"select + a.F_DATA_DAY, + a.F_DATA_TIME, + a.F_STOCK_CODE, + b.f_stock_wanname, + a.F_CURR_PRICE, + a.F_CHG_TYPE, + a.F_NET_CHG, + a.F_NET_VOL, + a.F_HIGH_PRICE, + a.F_LOW_PRICE, + a.F_INIT_PRICE + from t_online_his_5M a, t_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + AND b.f_stock_wanname = '{0}' + and a.f_data_day = (select max(open_day) from v_open_day) + ORDER BY a.F_DATA_TIME"; + + + this.queryQuantityLast = @"select O.OPEN_DAY, X.F_STOCK_CODE, X.f_stock_wanname, + X.F_CHG_TYPE, X.F_NET_CHG, X.F_NET_VOL, + X.F_HIGH_PRICE, X.F_LOW_PRICE, X.F_INIT_PRICE, + X.F_CURR_PRICE, X.F_MA5_PRICE, X.F_MA20_PRICE + from(select a.F_DATA_DATE, a.F_STOCK_CODE, b.f_stock_wanname, + a.F_CHG_TYPE, a.F_NET_CHG, a.F_NET_VOL, + a.F_HIGH_PRICE, a.F_LOW_PRICE, a.F_INIT_PRICE, + a.F_CURR_PRICE, a.F_MA5_PRICE, a.F_MA20_PRICE + from t_candle_history a, t_stock b + where a.f_stock_code = b.f_stock_code + and b.f_stock_wanname = '{1}' + and b.f_mkt_halt = 'N' + order by a.F_DATA_DATE desc) X, + (select open_day from(select open_day from v_open_day + order by open_day desc) + where rownum <= {0}) O + where X.f_data_date(+) = o.open_day + order by O.OPEN_DAY"; + + } + + #endregion + + } +} diff --git a/MBN_STOCK_N/Data/Request/봉차트/Candleforeign.cs b/MBN_STOCK_N/Data/Request/봉차트/Candleforeign.cs new file mode 100644 index 0000000..06d96dd --- /dev/null +++ b/MBN_STOCK_N/Data/Request/봉차트/Candleforeign.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request.봉차트 +{ + internal class Candleforeign : ACandleData + { + public Candleforeign(DBDefine.봉차트세부종목 recvDataType, DBDefine.데이터기간 recvDataLength, string recvStockCode) : base(recvDataType, recvDataLength) + { + + this.mStockCode = recvStockCode; + + } + + protected override void setQuery() + { + + #region 지수 + + //this.queryIndexNow = @"select distinct a.f_input_name name, b.F_xYMD, round(b.f_last,2) part_idx, b.f_sign chg_type, + //ABS(round(b.f_diff, 2)) part_chg, round(b.f_rate, 2) rate + //from t_world_ix_eq_master a, t_world_ix_eq_sise b + //where a.f_symb = b.f_symb + // and a.f_input_name like '{0}' + // and b.f_fdtc = '0'"; + + this.queryIndexNow = @"select distinct a.f_input_name name, b.F_xYMD, round(b.f_last, 2) part_idx, b.f_sign chg_type, + ABS(round(b.f_diff, 2)) part_chg, round(b.f_rate, 2) rate + from t_world_ix_eq_master a, t_world_ix_eq_sise b + where a.f_symb = b.f_symb + and a.f_input_name like '{0}' + and b.f_fdtc in ('0', '1')"; + + this.queryIndexLast = @"select name, F_xYMD ymd, part_idx, chg_type, part_chg, rate, high, open, low + from(select distinct a.f_input_name name, b.F_xYMD, round(b.f_last, 2) part_idx, b.f_sign chg_type, + b.f_high high, b.f_open open, b.f_low low, + ABS(round(b.f_diff, 2)) part_chg, round(b.f_rate, 2) rate + from t_world_ix_eq_master a, t_world_ix_eq_his b + where a.f_symb = b.f_symb + and a.f_input_name like '{1}' + and b.f_fdtc in ( '0','1') + order by b.F_xYMD desc) + where rownum <= {0} order by ymd asc"; + + + + + #endregion + + + } + + + } +} diff --git a/MBN_STOCK_N/Data/Request/봉차트/CandleforeignStock.cs b/MBN_STOCK_N/Data/Request/봉차트/CandleforeignStock.cs new file mode 100644 index 0000000..187324c --- /dev/null +++ b/MBN_STOCK_N/Data/Request/봉차트/CandleforeignStock.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MMoneyCoderSharp.Data.Request.봉차트 +{ + internal class CandleforeignStock : ACandleData + { + public CandleforeignStock(DBDefine.봉차트세부종목 recvDataType, DBDefine.데이터기간 recvDataLength, string recvStockCode) : base(recvDataType, recvDataLength) + { + + this.mStockCode = recvStockCode; + + } + + protected override void setQuery() + { + + #region 종목 + + + + this.queryIndexNow = @"select distinct a.f_input_name name, b.F_xYMD, round(b.f_last, 2) part_idx, b.f_sign chg_type, + ABS(round(b.f_diff, 2)) part_chg, round(b.f_rate, 2) rate + from t_world_ix_eq_master a, t_world_ix_eq_sise b + where a.f_symb = b.f_symb + and a.f_input_name like '{0}' + and b.f_fdtc = '1'"; + + + + + + this.queryIndexLast = @"select name, F_xYMD ymd, part_idx, chg_type, part_chg, rate, high, open, low + from(select distinct a.f_input_name name, b.F_xYMD, round(b.f_last, 2) part_idx, b.f_sign chg_type, + b.f_high high, b.f_open open, b.f_low low, + ABS(round(b.f_diff, 2)) part_chg, round(b.f_rate, 2) rate + from t_world_ix_eq_master a, t_world_ix_eq_his b + where a.f_symb = b.f_symb + and a.f_input_name like '{1}' + and b.f_fdtc = '1' + order by b.F_xYMD desc) + where rownum <= {0} order by ymd asc"; + + #endregion + + + } + + + } +} diff --git a/MBN_STOCK_N/Data/Request/사각형그래프/Square20.cs b/MBN_STOCK_N/Data/Request/사각형그래프/Square20.cs new file mode 100644 index 0000000..1c9da57 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/사각형그래프/Square20.cs @@ -0,0 +1,65 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Square20 : ADataObject + { + + + public Square20(국내시장종류 recvMarketType) + { + this.mMarketType = recvMarketType; + } + + private 국내시장종류 mMarketType; + + /// + /// 금일 데이터 쿼리 + /// + string queryKOSPI = @"select b.f_part_name, a.F_PART_IDX/100 part_idx, a.F_CHG_TYPE, a.F_PART_CHG/100 part_chg, + round(a.f_part_chg / decode(a.f_chg_type, '+', (a.f_part_idx / 100) - (a.f_part_chg / 100), + '-', (a.f_part_idx / 100) + (a.f_part_chg / 100)), 2) rate + from t_index a, t_part b + where a.f_part_code = b.f_part_code + and a.f_part_code in('013', '009', '011', '016', '018', + '021', '008', '020', '007', '012','015', '005', '014', '006', '019') order by a.f_part_code"; + + + string queryKOSDAQ = @"select b.f_part_name, a.F_PART_IDX/100 part_idx, a.F_CHG_TYPE, a.F_PART_CHG/100 part_chg, + round(a.f_part_chg / decode(a.f_chg_type, '+', (a.f_part_idx / 100) - (a.f_part_chg / 100), + '-', (a.f_part_idx / 100) + (a.f_part_chg / 100)), 2) rate + from t_kosdaq_index a, t_kosdaq_part b + where a.f_part_code = b.f_part_code + and a.f_part_code in('066', '159', '154', '160', '065', + '031', '029', '070', '026', '024', + '041', '056', '153', '027', '062') order by a.f_part_code"; + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + switch (this.mMarketType) + { + case 국내시장종류.KOSPI: + bufQuery = queryKOSPI; + break; + case 국내시장종류.KOSDAQ: + bufQuery = queryKOSDAQ; + break; + } + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/선그래프/Exchange.cs b/MBN_STOCK_N/Data/Request/선그래프/Exchange.cs new file mode 100644 index 0000000..1bf3116 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/선그래프/Exchange.cs @@ -0,0 +1,105 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// 환율선그래프관련 DB데이터 쿼리매핑 오브젝트. + /// + /// 오늘데이터를 가져오는 쿼리와 기존 데이터 목록을 가져오는 쿼리가 각각 정리되어있다. + /// 선그래프등의 여러 데이터를 가져와야하는 쿼리의 경우 해당 쿼리를 union하여 더해서 리턴한다. + /// + internal class Exchange : ADataObject + { + + public Exchange(환율 recvDataType, 데이터기간 recvDataLength) + { + + this.dataType = recvDataType; + this.dataLenght = recvDataLength; + + } + + /// + /// 환율데이터 종류 + /// + private 환율 dataType; + + /// + /// 가져올 데이터 기간 + /// + private 데이터기간 dataLenght; + + /// + /// 누적데이터 쿼리 + /// + const string queryLast = @"select + a.f_data_day data_day, + a.f_input_code input_code, + b.f_input_name, + a.f_curr_price curr_price, + a.F_net_CHG net_chg, + a.f_chg_type chg_type, + round((a.f_net_chg / decode(a.f_chg_type, '+', (a.f_curr_price - a.f_net_chg), '', (a.f_curr_price), '-', (a.f_curr_price + a.f_net_chg), 1)) * 100, 2) rate + from t_week_index a, t_input_code b + where a.f_input_code = b.f_input_code + and a.f_input_code = '{0}' + and a.f_data_day in ( + select open_day + from ( + select open_day + from v_open_day + minus + select f_data_day data_day + from t_input_index + where f_input_code = '{0}' + order by open_day desc + ) + where rownum < {1} + ) + "; + + /// + /// 금일 데이터 쿼리 + /// + const string queryToday = @"SELECT + a.f_data_day data_day, + a.f_input_code input_code, + b.f_input_name input_name, + a.f_curr_price curr_price, + a.f_net_chg net_chg, + a.f_chg_type, + round((a.f_net_chg / decode(a.f_chg_type, '+', (a.f_curr_price - a.f_net_chg), '', (a.f_curr_price), '-', (a.f_curr_price + a.f_net_chg), 1)) * 100, 2) rate + FROM t_input_index a, t_input_code b + WHERE a.f_input_code = b.f_input_code + AND a.f_input_code = '{0}' + order by data_day desc + "; + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + if (dataLenght != 데이터기간.일) + { + + bufQuery += String.Format(queryLast, dataType.GetStringValue(), dataLenght.GetStringValue()); + + bufQuery += " union "; + + } + + bufQuery += String.Format(queryToday, dataType.GetStringValue()); + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/선그래프/IndexIndustryYield.cs b/MBN_STOCK_N/Data/Request/선그래프/IndexIndustryYield.cs new file mode 100644 index 0000000..a9b678a --- /dev/null +++ b/MBN_STOCK_N/Data/Request/선그래프/IndexIndustryYield.cs @@ -0,0 +1,117 @@ +using MMoneyCoderSharp.DB; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.Data.Request +{ + internal class IndexIndustryYield : ADataObject + { + + /// + /// + /// + /// + /// + public IndexIndustryYield(string recvIndustryCode, 데이터기간 recvDataLength, 국내시장종류 recvMarketType) + { + this.mIndustryCode = recvIndustryCode; + this.mDataLength = recvDataLength; + this.mMarketType = recvMarketType; + } + + private string mIndustryCode = ""; + + private 데이터기간 mDataLength; + + private 국내시장종류 mMarketType; + + const string queryKOSPI = @"select + substr(f_data_time, 1,8) data_day, + f_part_idx/100 curr_price, + f_chg_type chg_type, + F_PART_CHG/100 net_chg, + round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg))) * 100, 2) rate + from t_index_his + where f_part_code = '{0}' + and Rtrim(f_data_time) in ( + select open_day || '1535' + from ( + select open_day from v_open_day + where open_day <> to_char(sysdate, 'yyyymmdd') + minus + select substr(f_data_time, 1, 8) data_day + from t_index + where f_part_code = '001' + order by open_day desc + ) + where rownum < {1} + ) + UNION + select + substr(f_data_time, 1, 8) data_day, + f_part_idx / 100 curr_price, + f_chg_type chg_type, + F_PART_CHG / 100 net_chg, + round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg))) * 100, 2) rate + from t_index + where f_part_code = '{0}' + order by data_day desc"; + + + + const string queryKOSDAQ = @"select + substr(f_data_time, 1,8) data_day, + f_part_idx/100 curr_price, + f_chg_type chg_type, + F_PART_CHG/100 net_chg, + round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg))) * 100, 2) rate + from t_kosdaq_index_his + where f_part_code = '{0}' + and Rtrim(f_data_time) in ( + select open_day || '1535' + from ( + select open_day from v_open_day + where open_day <> to_char(sysdate, 'yyyymmdd') + minus + select substr(f_data_time, 1, 8) data_day + from t_kosdaq_index + where f_part_code = '001' + order by open_day desc + ) + where rownum < {1} + ) + UNION + select + substr(f_data_time, 1, 8) data_day, + f_part_idx / 100 curr_price, + f_chg_type chg_type, + F_PART_CHG / 100 net_chg, + round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg))) * 100, 2) rate + from t_kosdaq_index + where f_part_code = '{0}' + order by data_day desc"; + + public override IDataRequest buildData() + { + string bufQuery = string.Empty; + + if (mMarketType == 국내시장종류.KOSPI) + { + bufQuery = String.Format(queryKOSPI, this.mIndustryCode, this.mDataLength.GetStringValue()); + } + else + { + bufQuery = String.Format(queryKOSDAQ, this.mIndustryCode, this.mDataLength.GetStringValue()); + } + + mRequestQuery.Add("", bufQuery); + + return this; + } + } + +} diff --git a/MBN_STOCK_N/Data/Request/선그래프/IndexYield.cs b/MBN_STOCK_N/Data/Request/선그래프/IndexYield.cs new file mode 100644 index 0000000..d17c2a7 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/선그래프/IndexYield.cs @@ -0,0 +1,312 @@ +using MMoneyCoderSharp.DB; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.Data.Request +{ + internal class IndexYield : ADataObject + { + + /// + /// + /// + /// + /// + public IndexYield(데이터기간 recvDataLength, 국내지수종류 recvIndexType) + { + this.mDataLength = recvDataLength; + this.mIndexType = recvIndexType; + } + + private 데이터기간 mDataLength; + + private 국내지수종류 mIndexType; + + //const string queryKOSPI = @"select + // substr(f_data_time, 1,8) data_day, + // f_part_idx/100 curr_price, + // f_chg_type chg_type, + // F_PART_CHG/100 net_chg, + // round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + // from t_index_his + // where f_part_code = '001' + // and Rtrim(f_data_time) in( + // select open_day || '1535' + // from ( + // select open_day + // from v_open_day + // where open_day <> to_char(sysdate, 'yyyymmdd') + // minus + // select substr(f_data_time, 1, 8) data_day + // from t_index + // where f_part_code = '001' + // order by open_day desc + // ) + // where rownum < {0} + // ) + // UNION + // select + // substr(f_data_time, 1, 8) data_day, + // f_part_idx / 100 curr_price, + // f_chg_type chg_type, + // F_PART_CHG / 100 net_chg, + // round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + // from t_index + // where f_part_code = '001' + // order by data_day desc"; + + const string queryKOSPI = @"select + f_data_day data_day, + f_part_idx/100 curr_price, + f_chg_type chg_type, + F_PART_CHG/100 net_chg, + round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + from t_index_his_day + where f_part_code = '001' + and Rtrim(f_data_day) in( + select open_day + from ( + select open_day + from v_open_day + where open_day <> to_char(sysdate, 'yyyymmdd') + minus + select substr(f_data_time, 1, 8) data_day + from t_index + where f_part_code = '001' + order by open_day desc + ) + where rownum < {0} + ) + UNION + select + substr(f_data_time, 1, 8) data_day, + f_part_idx / 100 curr_price, + f_chg_type chg_type, + F_PART_CHG / 100 net_chg, + round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + from t_index + where f_part_code = '001' + order by data_day desc"; + + //const string queryKOSDAQ = @"select + // substr(f_data_time, 1,8) data_day, + // f_part_idx/100 curr_price, + // f_chg_type chg_type, + // F_PART_CHG/100 net_chg, + // round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + // from t_kosdaq_index_his + // where f_part_code = '001' + // and Rtrim(f_data_time) in ( + // select open_day || '1535' + // from ( + // select open_day from v_open_day + // where open_day <> to_char(sysdate, 'yyyymmdd') + // minus + // select substr(f_data_time, 1, 8) data_day + // from t_kosdaq_index + // where f_part_code = '001' + // order by open_day desc + // ) + // where rownum < {0} + // ) + // UNION + // select + // substr(f_data_time, 1, 8) data_day, + // f_part_idx / 100 curr_price, + // f_chg_type chg_type, + // F_PART_CHG / 100 net_chg, + // round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + // from t_kosdaq_index + // where f_part_code = '001' + // order by data_day desc"; + const string queryKOSDAQ = @"select + f_data_day data_day, + f_part_idx/100 curr_price, + f_chg_type chg_type, + F_PART_CHG/100 net_chg, + round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + from t_kosdaq_index_his_day + where f_part_code = '001' + and Rtrim(f_data_day) in ( + select open_day + from ( + select open_day from v_open_day + where open_day <> to_char(sysdate, 'yyyymmdd') + minus + select substr(f_data_time, 1, 8) data_day + from t_kosdaq_index + where f_part_code = '001' + order by open_day desc + ) + where rownum < {0} + ) + UNION + select + substr(f_data_time, 1, 8) data_day, + f_part_idx / 100 curr_price, + f_chg_type chg_type, + F_PART_CHG / 100 net_chg, + round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + from t_kosdaq_index + where f_part_code = '001' + order by data_day desc"; + + //const string queryKOSPI200 = @"select + // substr(f_data_time, 1,8) data_day, + // f_part_idx/100 curr_price, + // f_chg_type chg_type, + // F_PART_CHG/100 net_chg, + // round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + // from T_200_INDEX_his + // where f_part_code = '029' + // and Rtrim(f_data_time) in ( + // select open_day || '1535' + // from ( + // select open_day from v_open_day + // where open_day <> to_char(sysdate, 'yyyymmdd') + // minus + // select substr(f_data_time, 1, 8) data_day + // from t_200_index + // where f_part_code = '029' + // order by open_day desc + // ) + // where rownum < {0} + // ) + // UNION + // SELECT + // substr(f_data_time, 1, 8) data_day, + // f_part_idx / 100 part_idx, + // f_chg_type chg_type, + // f_part_chg / 100 part_chg, + // round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + // FROM T_200_INDEX + // WHERE f_part_code = '029' + // order by data_day desc"; + const string queryKOSPI200 = @"select + f_data_day data_day, + f_part_idx/100 curr_price, + f_chg_type chg_type, + F_PART_CHG/100 net_chg, + round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + from T_200_INDEX_his_day + where f_part_code = '029' + and Rtrim(f_data_day) in ( + select open_day + from ( + select open_day from v_open_day + where open_day <> to_char(sysdate, 'yyyymmdd') + minus + select substr(f_data_time, 1, 8) data_day + from t_200_index + where f_part_code = '029' + order by open_day desc + ) + where rownum < {0} + ) + UNION + SELECT + substr(f_data_time, 1, 8) data_day, + f_part_idx / 100 part_idx, + f_chg_type chg_type, + f_part_chg / 100 part_chg, + round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + FROM T_200_INDEX + WHERE f_part_code = '029' + order by data_day desc"; + + //const string queryKRX100 = @"select + // substr(f_data_time, 1,8) data_day, + // f_part_idx/100 curr_price, + // f_chg_type chg_type, + // F_PART_CHG/100 net_chg, + // round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + // from T_KRX100_INDEX_his + // where f_part_code = '043' + // and Rtrim(f_data_time) in ( + // select open_day || '1535' + // from ( + // select open_day from v_open_day + // where open_day <> to_char(sysdate, 'yyyymmdd') + // minus + // select substr(f_data_time, 1, 8) data_day + // from t_krx100_index + // where f_part_code = '043' + // order by open_day desc + // ) + // where rownum < {0} + // ) + // UNION + // SELECT + // substr(f_data_time, 1, 8) data_day, + // f_part_idx / 100 part_idx, + // f_chg_type chg_type, + // f_part_chg / 100 part_chg, + // round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + // FROM T_KRX100_INDEX + // WHERE f_part_code = '043' + // order by data_day desc"; + + const string queryKRX100 = @"select + f_data_day data_day, + f_part_idx/100 curr_price, + f_chg_type chg_type, + F_PART_CHG/100 net_chg, + round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + from T_KRX100_INDEX_his_day + where f_part_code = '043' + and f_data_day in ( + select open_day + from ( + select open_day from v_open_day + where open_day <> to_char(sysdate, 'yyyymmdd') + minus + select substr(f_data_time, 1, 8) data_day + from t_krx100_index + where f_part_code = '043' + order by open_day desc + ) + where rownum < {0} + ) + UNION + SELECT + substr(f_data_time, 1, 8) data_day, + f_part_idx / 100 part_idx, + f_chg_type chg_type, + f_part_chg / 100 part_chg, + round((f_part_chg / decode(f_chg_type, '+', (f_part_idx - f_part_chg), '-', (f_part_idx + f_part_chg),1)) * 100, 2) rate + FROM T_KRX100_INDEX + WHERE f_part_code = '043' + order by data_day desc"; + + public override IDataRequest buildData() + { + string bufQuery = string.Empty; + + if (mIndexType == 국내지수종류.KOSPI) + { + bufQuery = String.Format(queryKOSPI, this.mDataLength.GetStringValue()); + } + else if (mIndexType == 국내지수종류.KOSDAQ) + { + bufQuery = String.Format(queryKOSDAQ, this.mDataLength.GetStringValue()); + } + else if (mIndexType == 국내지수종류.KOSPI200) + { + bufQuery = String.Format(queryKOSPI200, this.mDataLength.GetStringValue()); + } + else if (mIndexType == 국내지수종류.KRX100) + { + bufQuery = String.Format(queryKRX100, this.mDataLength.GetStringValue()); + } + + mRequestQuery.Add("", bufQuery); + + return this; + } + } + +} diff --git a/MBN_STOCK_N/Data/Request/선그래프/StockYield.cs b/MBN_STOCK_N/Data/Request/선그래프/StockYield.cs new file mode 100644 index 0000000..2ff467e --- /dev/null +++ b/MBN_STOCK_N/Data/Request/선그래프/StockYield.cs @@ -0,0 +1,128 @@ +using MMoneyCoderSharp.DB; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.Data.Request +{ + internal class StockYield : ADataObject + { + + /// + /// + /// + /// + /// + public StockYield(string recvStockNameKorean, 데이터기간 recvDataLength, 국내시장종류 recvMarketType) + { + if (recvStockNameKorean == "" || recvStockNameKorean == null) + { + throw new Exception("선그래프, 종목수익률, 종목명이 없음"); + } + + this.mStockNameKorean = recvStockNameKorean; + this.mDataLength = recvDataLength; + this.mMarketType = recvMarketType; + } + + private string mStockNameKorean = ""; + + private 데이터기간 mDataLength; + + private 국내시장종류 mMarketType; + + const string queryKOSPI = @"select O.open_day data_day , X.curr_price, X.chg_type, + X.rate, X.net_chg, X.f_stock_wanname + from(select a.f_stock_code, a.f_data_date data_day, a.f_curr_price curr_price, a.f_chg_type chg_type, a.F_net_CHG net_chg, + b.f_stock_wanname, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate + from t_candle_history a, t_stock b + where a.f_stock_code = b.f_stock_code + and b.f_stock_wanname = '{0}' + and b.f_mkt_halt = 'N') X, + (select open_day from(select open_day from v_open_day + minus + select substr(f_data_time, 1, 8) data_day + from t_index + where f_part_code = '001' + order by open_day desc) + where rownum< {1}) O + where X.data_day(+) = o.open_day + UNION + select(select substr(f_data_time, 1, 8) data_day from t_index where f_part_code = '001') data_day, + a.f_curr_price curr_price, a.f_chg_type chg_type, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate, + a.F_net_CHG net_chg, b.f_stock_wanname + from t_online1 a, t_stock b + where a.f_stock_code = b.f_stock_code + and b.f_stock_wanname = '{0}' + and b.f_mkt_halt = 'N' + order by data_day desc"; + + const string queryKOSDAQ = @"select O.open_day data_day , X.curr_price, X.chg_type, + X.rate, X.net_chg, X.f_stock_wanname + from(select a.f_stock_code, a.f_data_date data_day, a.f_curr_price curr_price, a.f_chg_type chg_type, a.F_net_CHG net_chg, + b.f_stock_wanname, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate + from t_kosdaq_candle_history a, t_kosdaq_stock b + where a.f_stock_code = b.f_stock_code + and b.f_stock_wanname = '{0}' + and b.f_mkt_halt = 'N') X, + (select open_day from(select open_day from v_open_day + minus + select substr(f_data_time, 1, 8) data_day + from t_index + where f_part_code = '001' + order by open_day desc) + where rownum < {1}) O + where X.data_day(+) = o.open_day + UNION + select(select substr(f_data_time, 1, 8) data_day from t_index where f_part_code = '001') data_day, + a.f_curr_price curr_price, a.f_chg_type chg_type, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate, + a.F_net_CHG net_chg, b.f_stock_wanname + from t_kosdaq_online1 a, t_kosdaq_stock b + where a.f_stock_code = b.f_stock_code + and b.f_stock_wanname = '{0}' + and b.f_mkt_halt = 'N' + order by data_day desc"; + + public override IDataRequest buildData() + { + string bufQuery = string.Empty; + + if (mMarketType == 국내시장종류.KOSPI) + { + bufQuery = String.Format(queryKOSPI, this.mStockNameKorean, this.mDataLength.GetStringValue()); + } + else + { + bufQuery = String.Format(queryKOSDAQ, this.mStockNameKorean, this.mDataLength.GetStringValue()); + } + + mRequestQuery.Add("", bufQuery); + + return this; + } + } + +} diff --git a/MBN_STOCK_N/Data/Request/선그래프/Trading.cs b/MBN_STOCK_N/Data/Request/선그래프/Trading.cs new file mode 100644 index 0000000..7a358e1 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/선그래프/Trading.cs @@ -0,0 +1,296 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// 10번컷 + /// + internal class Trading : ADataObject + { + + + public Trading(선그래프데이터분류 recvDataType) + { + this.mDataType = recvDataType; + } + + private 선그래프데이터분류 mDataType; + + #region 개인쿼리 + + string queryRetailNumber = @"select + '코스피' name, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover))/100000000) amt + from t_invest + where F_PART_CODE = '001' + and F_INVEST_CODE = '8000' + UNION + select + '코스닥' name, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000) amt + from t_kosdaq_invest + where F_PART_CODE = '001' + and F_INVEST_CODE = '8000' + union + select + '코스피200' name, + round((sum(F_SELL_turnover) / 100000000) - (sum(F_BUY_turnover) / 100000000)) as amt + from t_invest + where F_PART_CODE = '029' + and F_INVEST_CODE = '8000'"; + + string queryRetailGraph = @"select + '코스피' f_name, + f_data_time f_data_time, + round((F_SELL_turnover - F_BUY_turnover) / 100000000) price + from t_invest_his + where F_PART_CODE = '001' + and F_INVEST_CODE = '8000' + and f_data_time like(select max(open_day) || '%' data_time from v_open_day) + union + select + '코스닥' f_name, + f_data_time f_data_time, + round((F_SELL_turnover - F_BUY_turnover) / 100000000) price + from t_kosdaq_invest_his + where F_PART_CODE = '001' + and F_INVEST_CODE = '8000' + and f_data_time like(select max(open_day) || '%' data_time from v_open_day) + union + select + '코스피200' f_name, + f_data_time f_data_time, + round((F_SELL_turnover - F_BUY_turnover) / 100000000) price + from t_invest_his + where F_PART_CODE = '029' + and F_INVEST_CODE = '8000' + and f_data_time like(select max(open_day) || '%' data_time from v_open_day) + order by f_name, f_data_time"; + + #endregion + + #region "외국인" + + string queryForgienNumber = @"select + '코스피' name, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover))/100000000) amt + from t_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('9000', '9001') + UNION + select + '코스닥' name, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000) amt + from t_kosdaq_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('9000', '9001') + union + select + '코스피200' name, + round((sum(F_SELL_turnover) / 100000000) - (sum(F_BUY_turnover) / 100000000)) as amt + from t_invest + where F_PART_CODE = '029' + and F_INVEST_CODE in('9000', '9001')"; + + string queryForgienGraph = @"select + '코스피' f_name, + f_data_time f_data_time, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000) price + from t_invest_his + where F_PART_CODE = '001' + and F_INVEST_CODE in('9000', '9001') + and f_data_time like(select max(open_day) || '%' data_time from v_open_day) + group by f_data_time + union + select + '코스닥' f_name, + f_data_time f_data_time, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000) price + from t_kosdaq_invest_his + where F_PART_CODE = '001' + and F_INVEST_CODE in('9000', '9001') + and f_data_time like(select max(open_day) || '%' data_time from v_open_day) + group by f_data_time + union + select + '코스피200' f_name, + f_data_time f_data_time, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000) price + from t_invest_his + where F_PART_CODE = '029' + and F_INVEST_CODE in('9000', '9001') + and f_data_time like(select max(open_day) || '%' data_time from v_open_day) + group by f_data_time + order by f_name, f_data_time"; + + #endregion + + #region "기관" + + string queryInstitutionalNumber = @"select + '코스피' f_name, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover))/100000000) amt + from t_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000') + group by f_part_code + UNION + select + '코스닥' f_name, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000) amt + from t_kosdaq_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000') + group by f_part_code + union + select + '코스피200' f_name, + round((sum(F_SELL_turnover) / 100000000) - (sum(F_BUY_turnover) / 100000000)) as amt + from t_invest + where F_PART_CODE = '029' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000')"; + + string queryInstitutionalGraph = @"select + '코스피' f_name, + f_data_time f_data_time, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000) price + from t_invest_his + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000') + and f_data_time like(select max(open_day) || '%' data_time from v_open_day) + group by f_data_time + union + select + '코스닥' f_name, + f_data_time f_data_time, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000) price + from t_kosdaq_invest_his + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000') + and f_data_time like(select max(open_day) || '%' data_time from v_open_day) + group by f_data_time + union + select + '코스피200' f_name, + f_data_time f_data_time, + round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000) price + from t_invest_his + where F_PART_CODE = '029' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000') + and f_data_time like(select max(open_day) || '%' data_time from v_open_day) + group by f_data_time + order by f_name, f_data_time"; + + #endregion + + #region "코스피" + + string queryKOSPINumber = @"select + sum(decode(f_invest_code, '8000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover))/100000000),0) ) ""개인"", + sum(decode(f_invest_code, '9000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), '9001', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0)) ""외국인"", + sum(decode(f_invest_code, '8000', 0, '9000', 0, '9001', 0, round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000))) ""기관"" + from t_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + group by f_invest_code"; + + string queryKOSPIGraph = @"select + f_data_time, sum(p_1) ""개인"", + sum(p_2) ""외국인"", + sum(p_3) ""기관"" + from( + select + f_data_time f_data_time, + decode(f_invest_code, '8000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0) p_1, + decode(f_invest_code, '9000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), '9001', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0) p_2, + decode(f_invest_code, '8000', 0, '9000', 0, '9001', 0, round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000)) p_3 + from t_invest_his + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + and f_data_time like(select max(open_day) || '%' data_time from v_open_day) + group by f_data_time, f_invest_code + ) + group by f_data_time + order by f_data_time"; + + #endregion + + #region "코스닥" + + string queryKOSDAQNumber = @"select + sum(decode(f_invest_code, '8000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover))/100000000),0) ) ""개인"", + sum(decode(f_invest_code, '9000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), '9001', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0)) ""외국인"", + sum(decode(f_invest_code, '8000', 0, '9000', 0, '9001', 0, round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000))) ""기관"" + from t_kosdaq_invest + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + group by f_invest_code"; + + string queryKOSDAQGraph = @"select + f_data_time, + sum(p_1) ""개인"", + sum(p_2) ""외국인"", + sum(p_3) ""기관"" + from( + select + f_data_time f_data_time, + decode(f_invest_code, '8000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0) p_1, + decode(f_invest_code, '9000', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), '9001', round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000), 0) p_2, + decode(f_invest_code, '8000', 0, '9000', 0, '9001', 0, round((sum(F_SELL_turnover) - sum(F_BUY_turnover)) / 100000000)) p_3 + from t_kosdaq_invest_his + where F_PART_CODE = '001' + and F_INVEST_CODE in('1000', '2000', '3000', '3100', '4000', '5000', '6000', '7000', '8000', '9000', '9001') + and f_data_time like(select max(open_day) || '%' data_time from v_open_day) + group by f_data_time, f_invest_code + ) + group by f_data_time + order by f_data_time"; + + #endregion + + public override IDataRequest buildData() + { + + string bufQueryNumber = ""; + + string bufQueryGraph = ""; + + switch (this.mDataType) + { + case 선그래프데이터분류.개인매매동향: + bufQueryNumber = queryRetailNumber; + bufQueryGraph = queryRetailGraph; + break; + case 선그래프데이터분류.기관매매동향: + bufQueryNumber = queryInstitutionalNumber; + bufQueryGraph = queryInstitutionalGraph; + break; + case 선그래프데이터분류.외국인매매동향: + bufQueryNumber = queryForgienNumber; + bufQueryGraph = queryForgienGraph; + break; + case 선그래프데이터분류.코스피매매동향: + bufQueryNumber = queryKOSPINumber; + bufQueryGraph = queryKOSPIGraph; + break; + case 선그래프데이터분류.코스닥매매동향: + bufQueryNumber = queryKOSDAQNumber; + bufQueryGraph = queryKOSDAQGraph; + break; + default: + throw new Exception("잘못 참조한 데이터(매매동향에 없는 데이터)"); + } + + mRequestQuery.Add("현재지수", bufQueryNumber); + mRequestQuery.Add("그래프데이터", bufQueryGraph); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/지도데이터/MapAsia.cs b/MBN_STOCK_N/Data/Request/지도데이터/MapAsia.cs new file mode 100644 index 0000000..f8b7f5d --- /dev/null +++ b/MBN_STOCK_N/Data/Request/지도데이터/MapAsia.cs @@ -0,0 +1,49 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class MapAsia : ADataObject + { + + /// + /// 금일 데이터 쿼리 + /// + string queryToday = @"SELECT + '한국' NAME, + round(f_part_idx/100,2) curr_price, + round(f_part_chg/100,2) net_chg, + f_chg_type chg_type, + round((f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg)) * 100, 2) rate + FROM t_index + WHERE f_part_code = '001' + UNION + SELECT + decode(f_symb, 'SHS@000001', '중국', 'HSI@HSI', '홍콩', 'NII@NI225', '일본', 'TWS@TI01', '대만') NAME, + to_number(f_last) curr_price, + to_number(f_diff) net_chg, + f_sign chg_type, + to_number(f_rate) rate + FROM t_world_ix_eq_sise + WHERE f_symb in('SHS@000001', 'HSI@HSI', 'NII@NI225', 'TWS@TI01')"; + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + bufQuery += String.Format(queryToday); + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/지도데이터/MapEurope.cs b/MBN_STOCK_N/Data/Request/지도데이터/MapEurope.cs new file mode 100644 index 0000000..2ef97a8 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/지도데이터/MapEurope.cs @@ -0,0 +1,40 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class MapEurope : ADataObject + { + + /// + /// 금일 데이터 쿼리 + /// + string queryToday = @"SELECT + decode(f_symb, 'LNS@FTSE100', '영국', 'XTR@DAX30', '독일', 'PAS@CAC40', '프랑스', 'ITI@FTSEMIB', '이탈리아') NAME, + to_number(f_last) curr_price, + to_number(f_diff) net_chg, + f_sign chg_type, + to_number(f_rate) rate + FROM t_world_ix_eq_sise + WHERE f_symb in('LNS@FTSE100', 'XTR@DAX30', 'PAS@CAC40', 'ITI@FTSEMIB')"; + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + bufQuery += String.Format(queryToday); + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/지도데이터/MapUSA.cs b/MBN_STOCK_N/Data/Request/지도데이터/MapUSA.cs new file mode 100644 index 0000000..c8208c6 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/지도데이터/MapUSA.cs @@ -0,0 +1,40 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class MapUSA : ADataObject + { + + /// + /// 금일 데이터 쿼리 + /// + string queryToday = @"SELECT + decode(f_symb, 'DJI@DJI', '다우', 'NAS@IXIC', '나스닥', 'SPI@SPX', 'S&P') NAME, + to_number(f_last) curr_price, + to_number(f_diff) net_chg, + f_sign chg_type, + to_number(f_rate) rate + FROM t_world_ix_eq_sise + WHERE f_symb in('DJI@DJI', 'NAS@IXIC', 'SPI@SPX')"; + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + bufQuery += String.Format(queryToday); + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/지도데이터/MapWorld.cs b/MBN_STOCK_N/Data/Request/지도데이터/MapWorld.cs new file mode 100644 index 0000000..2b544f7 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/지도데이터/MapWorld.cs @@ -0,0 +1,49 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class MapWorld : ADataObject + { + + /// + /// 금일 데이터 쿼리 + /// + string queryToday = @"SELECT + '한국' NAME, + round(f_part_idx / 100, 2) curr_price, + round(f_part_chg / 100, 2) net_chg, + f_chg_type chg_type, + round((f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg)) * 100, 2) rate + FROM t_index + WHERE f_part_code = '001' + UNION + SELECT + decode(f_symb, 'SHS@000001', '중국', 'HSI@HSI', '홍콩', 'NII@NI225', '일본', 'TWS@TI01', '대만', 'DJI@DJI', '다우', 'NAS@IXIC', '나스닥', 'SPI@SPX', 'S&P', 'LNS@FTSE100', '영국', 'XTR@DAX30', '독일', 'PAS@CAC40', '프랑스') NAME, + to_number(f_last) curr_price, + to_number(f_diff) net_chg, + f_sign chg_type, + to_number(f_rate) rate + FROM t_world_ix_eq_sise + WHERE f_symb in('SHS@000001', 'HSI@HSI', 'NII@NI225', 'TWS@TI01', 'DJI@DJI', 'NAS@IXIC', 'SPI@SPX', 'LNS@FTSE100', 'XTR@DAX30', 'PAS@CAC40')"; + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + bufQuery += String.Format(queryToday); + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/ETF.cs b/MBN_STOCK_N/Data/Request/판5단/ETF.cs new file mode 100644 index 0000000..3a4daea --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/ETF.cs @@ -0,0 +1,88 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class ETF : ADataObject + { + + internal ETF(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + + string queryKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME wanname, + a.f_curr_price curr_price, + a.f_net_chg net_chg, a.f_chg_type chg_type, + b.f_list_num * a.f_curr_price sigachong, + round((a.f_net_chg/decode(a.f_chg_type,'1', (a.f_curr_price-a.f_net_chg), + '2', (a.f_curr_price-a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price+a.f_net_chg), + '5', -1*(a.f_curr_price+a.f_net_chg)) ) * 100,2) rate + FROM t_online1 a, t_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price <> 0 + AND f_sect_code = 'EF' + ORDER BY sigachong DESC"; + + string queryKOSDAQ = @"select + b.f_stock_code, + b.f_stock_wanname, + d.f_curr_price, + d.f_chg_type, + d.f_net_chg, + round((d.f_net_chg / decode(d.f_chg_type, '1', d.f_curr_price - d.f_net_chg, + '2', d.f_curr_price - d.f_net_chg, + '3', d.f_curr_price, + '4', -1*(d.f_curr_price + d.f_net_chg), + '5', -1*(d.f_curr_price + d.f_net_chg))) * 100, 2) rate + from ( + select f_stock_code, max(f_low_price) f_low_price + from t_kosdaq_candle_history + where f_data_date between '{0}' and '{1}' + group by f_stock_code) a, + t_kosdaq_stock b, t_kosdaq_online1 d + where a.f_stock_code = b.f_stock_code + and d.f_mkt_halt = 'N' + and d.f_curr_price > 0 + and a.f_stock_code = d.f_stock_code + and a.f_low_price <= d.f_low_price order by rate desc"; + + + + + #endregion + + public override IDataRequest buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + mRequestQuery.Add("", queryKOSPI); + break; + case 국내시장종류.KOSDAQ: + mRequestQuery.Add("", queryKOSDAQ); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/Nxt_capital_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/Nxt_capital_5dan.cs new file mode 100644 index 0000000..6c9551a --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/Nxt_capital_5dan.cs @@ -0,0 +1,73 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Nxt_capital_5dan : Nxt_ADataObject + { + + internal Nxt_capital_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + // + } + + 국내시장종류 mDataType; + + #region 쿼리 + string queryNXT_KOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME wanname, + a.f_curr_price curr_price, + a.f_net_chg net_chg, a.f_chg_type chg_type, + b.f_list_num * a.f_curr_price sigachong, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate + FROM n_online a, n_stock b + WHERE b.f_stop_gubun = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price != 0 + ORDER BY sigachong DESC"; + + string queryNXT_KOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME wanname, + a.f_curr_price curr_price, + a.f_net_chg net_chg, a.f_chg_type chg_type, + b.f_list_num * a.f_curr_price sigachong, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate + FROM n_kosdaq_online a, n_kosdaq_stock b + WHERE b.f_stop_gubun = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price != 0 + ORDER BY sigachong DESC"; + + #endregion + + public override Nxt_IDataRequest Nxt_buildData() + { + + switch (this.mDataType) + { + case 국내시장종류.NXT_KOSPI: + Nxt_mRequestQuery.Add("", queryNXT_KOSPI); + break; + case 국내시장종류.NXT_KOSDAQ: + Nxt_mRequestQuery.Add("", queryNXT_KOSDAQ); + break; + } + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/Nxt_high_overtime_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/Nxt_high_overtime_5dan.cs new file mode 100644 index 0000000..46a7ffd --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/Nxt_high_overtime_5dan.cs @@ -0,0 +1,80 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Nxt_high_overtime_5dan : Nxt_ADataObject + { + + internal Nxt_high_overtime_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + + string queryNXT_KOSPI = @"SELECT DISTINCT + b.f_stock_code stock_code, + b.F_STOCK_NAME wanname, a.f_net_chg net_chg, a.f_chg_type chg_type, a.f_curr_price, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate + FROM n_overtime a, n_stock b + WHERE b.f_stop_gubun = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price != 0 + AND a.f_chg_type in ('1', '2') + ORDER BY rate DESC"; + + + string queryNXT_KOSDAQ = @"SELECT DISTINCT + b.f_stock_code stock_code, + b.F_STOCK_NAME wanname, + a.f_net_chg net_chg, + a.f_chg_type chg_type, + a.f_curr_price, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate + FROM n_kosdaq_overtime a, n_kosdaq_stock b + WHERE b.f_stop_gubun = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price != 0 + AND a.f_chg_type in ('1', '2') + ORDER BY rate DESC"; + + #endregion + + public override Nxt_IDataRequest Nxt_buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.NXT_KOSPI: + Nxt_mRequestQuery.Add("", queryNXT_KOSPI); + break; + case 국내시장종류.NXT_KOSDAQ: + Nxt_mRequestQuery.Add("", queryNXT_KOSDAQ); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/Nxt_low_overtime_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/Nxt_low_overtime_5dan.cs new file mode 100644 index 0000000..a128c9f --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/Nxt_low_overtime_5dan.cs @@ -0,0 +1,75 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Nxt_low_overtime_5dan : Nxt_ADataObject + { + + internal Nxt_low_overtime_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + string queryNXT_KOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME wanname, a.f_net_chg net_chg, + a.f_chg_type chg_type, a.f_curr_price, a.f_init_price, a.f_high_price, a.f_low_price, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate + FROM n_overtime a, n_stock b + WHERE b.f_stop_gubun = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price != 0 + AND a.f_chg_type in('4', '5') + ORDER BY rate"; + + + string queryNXT_KOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME wanname, a.f_net_chg net_chg, + a.f_chg_type chg_type, a.f_curr_price, a.f_init_price, a.f_high_price, a.f_low_price, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate + FROM n_kosdaq_overtime a, n_kosdaq_stock b + WHERE b.f_stop_gubun = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price != 0 + AND a.f_chg_type in('4', '5') + ORDER BY rate"; + + + #endregion + + public override Nxt_IDataRequest Nxt_buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.NXT_KOSPI: + Nxt_mRequestQuery.Add("", queryNXT_KOSPI); + break; + case 국내시장종류.NXT_KOSDAQ: + Nxt_mRequestQuery.Add("", queryNXT_KOSDAQ); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/Nxt_lower_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/Nxt_lower_5dan.cs new file mode 100644 index 0000000..8478f30 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/Nxt_lower_5dan.cs @@ -0,0 +1,79 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Nxt_lower_5dan : Nxt_ADataObject + { + + internal Nxt_lower_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + //코스피 상단 + string queryNXT_KOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME wanname, + a.f_net_chg net_chg, a.f_chg_type chg_type, a.f_curr_price, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate + FROM n_online a, n_stock b + WHERE b.f_stop_gubun = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price != 0 + AND a.f_chg_type in('4', '5') + ORDER BY rate"; + + + + string queryNXT_KOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME wanname, + a.f_net_chg net_chg, a.f_chg_type chg_type, a.f_curr_price, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate + FROM n_kosdaq_online a, n_kosdaq_stock b + WHERE b.f_stop_gubun = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price != 0 + AND a.f_chg_type in('4', '5') + ORDER BY rate"; + + + + + #endregion + + public override Nxt_IDataRequest Nxt_buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.NXT_KOSPI: + Nxt_mRequestQuery.Add("", queryNXT_KOSPI); + break; + case 국내시장종류.NXT_KOSDAQ: + Nxt_mRequestQuery.Add("", queryNXT_KOSDAQ); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/Nxt_upper_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/Nxt_upper_5dan.cs new file mode 100644 index 0000000..f97a9b2 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/Nxt_upper_5dan.cs @@ -0,0 +1,79 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Nxt_upper_5dan : Nxt_ADataObject + { + + internal Nxt_upper_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + //코스피 상단 + string queryNXT_KOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME wanname, + a.f_net_chg net_chg, a.f_chg_type chg_type, + a.f_curr_price, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate + FROM n_online a, n_stock b + WHERE b.f_stop_gubun = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price != 0 + AND a.f_chg_type in('1', '2') + ORDER BY rate DESC"; + + + + string queryNXT_KOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME wanname, + a.f_net_chg net_chg, a.f_chg_type chg_type, + a.f_curr_price, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate + FROM n_kosdaq_online a, n_kosdaq_stock b + WHERE b.f_stop_gubun = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price != 0 + AND a.f_chg_type in('1', '2') + ORDER BY rate DESC"; + + + #endregion + + public override Nxt_IDataRequest Nxt_buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.NXT_KOSPI: + Nxt_mRequestQuery.Add("", queryNXT_KOSPI); + break; + case 국내시장종류.NXT_KOSDAQ: + Nxt_mRequestQuery.Add("", queryNXT_KOSDAQ); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/Nxt_vol_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/Nxt_vol_5dan.cs new file mode 100644 index 0000000..cb2c9af --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/Nxt_vol_5dan.cs @@ -0,0 +1,77 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Nxt_vol_5dan : Nxt_ADataObject + { + + internal Nxt_vol_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + //코스피 상단 + string queryNXT_KOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME wanname, + a.f_net_chg net_chg, a.f_chg_type chg_type, + a.f_curr_price, a.f_net_vol, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate + FROM n_online a, n_stock b + WHERE b.f_stop_gubun = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price != 0 + ORDER BY a.F_NET_VOL desc "; + + + + string queryNXT_KOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME wanname, + a.f_net_chg net_chg, a.f_chg_type chg_type, + a.f_curr_price, a.f_net_vol, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate + FROM n_kosdaq_online a, n_kosdaq_stock b + WHERE b.f_stop_gubun = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price != 0 + ORDER BY a.F_NET_VOL desc"; + + + #endregion + + public override Nxt_IDataRequest Nxt_buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.NXT_KOSPI: + Nxt_mRequestQuery.Add("", queryNXT_KOSPI); + break; + case 국내시장종류.NXT_KOSDAQ: + Nxt_mRequestQuery.Add("", queryNXT_KOSDAQ); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/capital_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/capital_5dan.cs new file mode 100644 index 0000000..596d6f3 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/capital_5dan.cs @@ -0,0 +1,114 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class capital_5dan : ADataObject + { + + internal capital_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + // + } + + 국내시장종류 mDataType; + + #region 쿼리 + //코스피 상단 +// string queryKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME wanname, + // a.f_curr_price curr_price, + // a.f_net_chg net_chg, a.f_chg_type chg_type, + // b.f_list_num * a.f_curr_price sigachong, + // round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + // '2', (a.f_curr_price - a.f_net_chg), + // '3', (a.f_curr_price), + // '4', -1*(a.f_curr_price + a.f_net_chg), + // '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate + // FROM t_online1 a, t_stock b + // WHERE b.f_mkt_halt = 'N' + // AND b.f_stock_nickname is not null + // AND a.f_stock_code = b.f_stock_code + //AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + // AND a.f_curr_price < > 0 + // ORDER BY sigachong DESC"; + + string queryKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME wanname, + a.f_curr_price curr_price, + a.f_net_chg net_chg, a.f_chg_type chg_type, + b.f_list_num * a.f_curr_price sigachong, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_online1 a, t_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + AND a.f_curr_price < > 0 + ORDER BY sigachong DESC"; + + + + // string queryKOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME wanname, + // a.f_curr_price curr_price, + // a.f_net_chg net_chg, a.f_chg_type chg_type, + // b.f_list_num * a.f_curr_price sigachong, + // round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + // '2', (a.f_curr_price - a.f_net_chg), + // '3', (a.f_curr_price), + // '4', -1*(a.f_curr_price + a.f_net_chg), + // '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate + // FROM t_kosdaq_online1 a, t_kosdaq_stock b + // WHERE b.f_mkt_halt = 'N' + // AND b.f_stock_nickname is not null + // AND a.f_stock_code = b.f_stock_code + //AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + // AND a.f_curr_price < > 0 + // ORDER BY sigachong DESC"; + string queryKOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME wanname, + a.f_curr_price curr_price, + a.f_net_chg net_chg, a.f_chg_type chg_type, + b.f_list_num * a.f_curr_price sigachong, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_kosdaq_online1 a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + AND a.f_curr_price < > 0 + ORDER BY sigachong DESC"; + + + #endregion + + public override IDataRequest buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + mRequestQuery.Add("", queryKOSPI); + break; + case 국내시장종류.KOSDAQ: + mRequestQuery.Add("", queryKOSDAQ); + break; + } + + return this; + } + + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/capital_forecast_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/capital_forecast_5dan.cs new file mode 100644 index 0000000..96a55ed --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/capital_forecast_5dan.cs @@ -0,0 +1,116 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class capital_forecast_5dan : ADataObject + { + + internal capital_forecast_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + //코스피 상단 + string queryKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, + b.F_STOCK_WANNAME wanname, + a.f_fore_price curr_price, + ABS((a.f_fore_price - c.f_final_price)) net_chg, + CASE WHEN(a.f_fore_price - c.f_final_price) > 0 THEN '2' ELSE + CASE WHEN(a.f_fore_price - c.f_final_price) < 0 THEN '5' ELSE '3' END END CHG_TYPE, + b.F_LIST_NUM * a.f_fore_price sigachong, + round(((a.f_fore_price - c.f_final_price) / c.f_final_price)* 100, 2) rate + FROM t_online1_call a, t_stock b, t_batch_day c + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_fore_price <> 0 + AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + AND c.f_stock_code = a.f_stock_code AND c.f_final_price < > 0 + ORDER BY sigachong DESC"; + +//////// string queryKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, +//////// b.F_STOCK_WANNAME wanname, +//////// a.f_fore_price curr_price, +//////// ABS((a.f_fore_price - c.f_final_price)) net_chg, +//////// CASE WHEN(a.f_fore_price - c.f_final_price) > 0 THEN '2' ELSE +//////// CASE WHEN(a.f_fore_price - c.f_final_price) < 0 THEN '5' ELSE '3' END END CHG_TYPE, +//////// b.F_LIST_NUM * a.f_fore_price sigachong, +//////// ABS(round(((a.f_fore_price - c.f_final_price) / c.f_final_price)* 100, 2)) rate +//////// FROM t_online1 a, t_stock b, t_batch_day c +//////// WHERE b.f_mkt_halt = 'N' +//////// AND b.f_stock_nickname is not null +//////// AND a.f_stock_code = b.f_stock_code +//////// AND a.f_fore_price <> 0 +////////AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') +//////// AND c.f_stock_code = a.f_stock_code AND c.f_final_price < > 0 +//////// ORDER BY sigachong DESC"; + + + string queryKOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, + b.F_STOCK_WANNAME wanname, + a.f_fore_price curr_price, + ABS((a.f_fore_price - c.f_final_price)) net_chg, + CASE WHEN(a.f_fore_price - c.f_final_price) > 0 THEN '2' ELSE + CASE WHEN(a.f_fore_price - c.f_final_price) < 0 THEN '5' ELSE '3' END END CHG_TYPE, + b.F_LIST_NUM * a.f_fore_price sigachong, + round(((a.f_fore_price - c.f_final_price) / c.f_final_price)* 100, 2) rate + FROM t_kosdaq_online1_call a, t_kosdaq_stock b, t_kosdaq_batch_day c + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_fore_price < > 0 + AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + AND c.f_stock_code = a.f_stock_code AND c.f_final_price < > 0 + ORDER BY sigachong DESC"; + +//// string queryKOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, +//// b.F_STOCK_WANNAME wanname, +//// a.f_fore_price curr_price, +//// ABS((a.f_fore_price - c.f_final_price)) net_chg, +//// CASE WHEN(a.f_fore_price - c.f_final_price) > 0 THEN '2' ELSE +//// CASE WHEN(a.f_fore_price - c.f_final_price) < 0 THEN '5' ELSE '3' END END CHG_TYPE, +//// b.F_LIST_NUM * a.f_fore_price sigachong, +//// round(((a.f_fore_price - c.f_final_price) / c.f_final_price)* 100, 2) rate +//// FROM t_kosdaq_online1 a, t_kosdaq_stock b, t_kosdaq_batch_day c +//// WHERE b.f_mkt_halt = 'N' +//// AND b.f_stock_nickname is not null +//// AND a.f_stock_code = b.f_stock_code +//// AND a.f_fore_price < > 0 +////AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') +//// AND c.f_stock_code = a.f_stock_code AND c.f_final_price < > 0 +//// ORDER BY sigachong DESC"; + + + + + #endregion + + public override IDataRequest buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + mRequestQuery.Add("", queryKOSPI); + break; + case 국내시장종류.KOSDAQ: + mRequestQuery.Add("", queryKOSDAQ); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/high52_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/high52_5dan.cs new file mode 100644 index 0000000..bf08e5c --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/high52_5dan.cs @@ -0,0 +1,101 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class high52_5dan : ADataObject + { + + internal high52_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + //코스피 상단 + string queryKOSPI = @"select + b.f_stock_code, + b.f_stock_wanname, + d.f_curr_price, + d.f_chg_type, + d.f_net_chg, + round((d.f_net_chg / decode(d.f_chg_type, '1', d.f_curr_price - d.f_net_chg, + '2', d.f_curr_price - d.f_net_chg, + '3', d.f_curr_price, + '4', -1*(d.f_curr_price + d.f_net_chg), + '5', -1*(d.f_curr_price + d.f_net_chg))) * 100, 2) rate + from + (select f_stock_code, max(f_high_price) f_high_price + from t_candle_history + where f_data_date between '{0}' and '{1}' + group by f_stock_code) a, + t_stock b, t_online1 d + where a.f_stock_code = b.f_stock_code + and d.f_mkt_halt = 'N' + and d.f_curr_price > 0 + and a.f_stock_code = d.f_stock_code +AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + and a.f_high_price <= d.f_high_price order by rate desc"; + + + + string queryKOSDAQ = @"select + b.f_stock_code, + b.f_stock_wanname, + d.f_curr_price, + d.f_chg_type, + d.f_net_chg, + round((d.f_net_chg / decode(d.f_chg_type, '1', d.f_curr_price - d.f_net_chg, + '2', d.f_curr_price - d.f_net_chg, + '3', d.f_curr_price, + '4', -1*(d.f_curr_price + d.f_net_chg), + '5', -1*(d.f_curr_price + d.f_net_chg))) * 100, 2) rate + from ( + select f_stock_code, max(f_high_price) f_high_price + from t_kosdaq_candle_history + where f_data_date between '{0}' and '{1}' + group by f_stock_code) a, + t_kosdaq_stock b, t_kosdaq_online1 d + where a.f_stock_code = b.f_stock_code + and d.f_mkt_halt = 'N' + and d.f_curr_price > 0 + and a.f_stock_code = d.f_stock_code +AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + and a.f_high_price <= d.f_high_price order by rate desc"; + + + + + #endregion + + public override IDataRequest buildData() + { + + string bufStartDay = DateTime.Now.ToString("yyyyMMdd"); + string bufEndDay = (DateTime.Now - TimeSpan.FromDays(52*7)).ToString("yyyyMMdd"); + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + mRequestQuery.Add("", string.Format(queryKOSPI, bufEndDay, bufStartDay)); + break; + case 국내시장종류.KOSDAQ: + mRequestQuery.Add("", string.Format(queryKOSDAQ, bufEndDay, bufStartDay)); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/high_overtime_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/high_overtime_5dan.cs new file mode 100644 index 0000000..0308705 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/high_overtime_5dan.cs @@ -0,0 +1,119 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class high_overtime_5dan : ADataObject + { + + internal high_overtime_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + //코스피 상단 + //string queryKOSPI = @"SELECT DISTINCT + // b.f_stock_code stock_code, + // b.F_STOCK_WANNAME wanname, + // a.f_net_chg net_chg, + // a.f_chg_type chg_type, + // a.f_curr_price, + // round((a.f_net_chg / decode(a.f_chg_type, '1', a.f_curr_price - a.f_net_chg, '2', a.f_curr_price - a.f_net_chg)) * 100, 2) rate + // FROM t_overtime_sise a, t_stock b + // WHERE b.f_mkt_halt = 'N' + // AND b.f_stock_nickname is not null + // AND a.f_stock_code = b.f_stock_code + // AND a.f_curr_price < > 0 + // AND a.f_chg_type in('1', '2') + // AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + // ORDER BY rate DESC"; + + string queryKOSPI = @"SELECT DISTINCT + b.f_stock_code stock_code, + b.F_STOCK_WANNAME wanname, + a.f_net_chg net_chg, + a.f_chg_type chg_type, + a.f_curr_price, + round((a.f_net_chg / decode(a.f_chg_type, '1', a.f_curr_price - a.f_net_chg, '2', a.f_curr_price - a.f_net_chg)) * 100, 2) rate + FROM t_overtime_sise a, t_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price < > 0 + AND a.f_chg_type in('1', '2') + AND b.f_sect_code = 'ST' + ORDER BY rate DESC"; + + + + // string queryKOSDAQ = @"SELECT DISTINCT + // b.f_stock_code stock_code, + // b.F_STOCK_WANNAME wanname, + // a.f_net_chg net_chg, + // a.f_chg_type chg_type, + // a.f_curr_price, + // round( + // a.f_net_chg / decode(a.f_chg_type, '1', a.f_curr_price - a.f_net_chg, + // '2', a.f_curr_price - a.f_net_chg, '3', a.f_curr_price, '4', + // -1 * (a.f_curr_price + a.f_net_chg), '5', + // -1 * (a.f_curr_price + a.f_net_chg)) * 100, 2) rate + // FROM t_kosdaq_overtime_sise a, t_kosdaq_stock b + // WHERE b.f_mkt_halt = 'N' + // AND b.f_stock_nickname is not null + // AND a.f_stock_code = b.f_stock_code + // AND a.f_curr_price < > 0 + // AND a.f_chg_type in('1', '2') + //AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + // ORDER BY rate DESC"; + + + string queryKOSDAQ = @"SELECT DISTINCT + b.f_stock_code stock_code, + b.F_STOCK_WANNAME wanname, + a.f_net_chg net_chg, + a.f_chg_type chg_type, + a.f_curr_price, + round( + a.f_net_chg / decode(a.f_chg_type, '1', a.f_curr_price - a.f_net_chg, + '2', a.f_curr_price - a.f_net_chg, '3', a.f_curr_price, '4', + -1 * (a.f_curr_price + a.f_net_chg), '5', + -1 * (a.f_curr_price + a.f_net_chg)) * 100, 2) rate + FROM t_kosdaq_overtime_sise a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price < > 0 + AND a.f_chg_type in('1', '2') + AND b.f_sect_code = 'ST' + ORDER BY rate DESC"; + + #endregion + + public override IDataRequest buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + mRequestQuery.Add("", queryKOSPI); + break; + case 국내시장종류.KOSDAQ: + mRequestQuery.Add("", queryKOSDAQ); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/kospi200.cs b/MBN_STOCK_N/Data/Request/판5단/kospi200.cs new file mode 100644 index 0000000..f173eb3 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/kospi200.cs @@ -0,0 +1,113 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class kospi200 : ADataObject + { + + internal kospi200(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + //코스피 상단 + //string queryKOSPI = @"select + // b.f_stock_code, + // b.f_stock_wanname, + // d.f_curr_price, + // d.f_chg_type, + // d.f_net_chg, + // round((d.f_net_chg / decode(d.f_chg_type, '1', d.f_curr_price - d.f_net_chg, + // '2', d.f_curr_price - d.f_net_chg, + // '3', d.f_curr_price, + // '4', -1*(d.f_curr_price + d.f_net_chg), + // '5', -1*(d.f_curr_price + d.f_net_chg))) * 100, 2) rate + // from + // (select f_stock_code, max(f_low_price) f_low_price + // from t_candle_history + // where f_data_date between '{0}' and '{1}' + // group by f_stock_code) a, + // t_stock b, t_online1 d + // where a.f_stock_code = b.f_stock_code + // and d.f_mkt_halt = 'N' + // and d.f_curr_price > 0 + // and a.f_stock_code = d.f_stock_code + // and a.f_low_price <= d.f_low_price order by rate"; + + + + string queryKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME wanname, + a.f_curr_price curr_price, + a.f_net_chg net_chg, a.f_chg_type chg_type, + b.f_list_num* a.f_curr_price sigachong, + round((a.f_net_chg/decode(a.f_chg_type,'1', (a.f_curr_price-a.f_net_chg), + '2', (a.f_curr_price-a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price+a.f_net_chg), + '5', -1*(a.f_curr_price+a.f_net_chg)) ) * 100,2) rate + FROM t_online1 a, t_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price<> 0 + AND b.f_kospi200_gubun<> '0' + ORDER BY sigachong DESC"; + + string queryKOSDAQ = @"select + b.f_stock_code, + b.f_stock_wanname, + d.f_curr_price, + d.f_chg_type, + d.f_net_chg, + round((d.f_net_chg / decode(d.f_chg_type, '1', d.f_curr_price - d.f_net_chg, + '2', d.f_curr_price - d.f_net_chg, + '3', d.f_curr_price, + '4', -1*(d.f_curr_price + d.f_net_chg), + '5', -1*(d.f_curr_price + d.f_net_chg))) * 100, 2) rate + from ( + select f_stock_code, max(f_low_price) f_low_price + from t_kosdaq_candle_history + where f_data_date between '{0}' and '{1}' + group by f_stock_code) a, + t_kosdaq_stock b, t_kosdaq_online1 d + where a.f_stock_code = b.f_stock_code + and d.f_mkt_halt = 'N' + and d.f_curr_price > 0 + and a.f_stock_code = d.f_stock_code + and a.f_low_price <= d.f_low_price order by rate desc"; + + + + + #endregion + + public override IDataRequest buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + mRequestQuery.Add("", queryKOSPI); + break; + case 국내시장종류.KOSDAQ: + mRequestQuery.Add("", queryKOSDAQ); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/low52_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/low52_5dan.cs new file mode 100644 index 0000000..ddfbc4a --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/low52_5dan.cs @@ -0,0 +1,101 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class low52_5dan : ADataObject + { + + internal low52_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + //코스피 상단 + string queryKOSPI = @"select + b.f_stock_code, + b.f_stock_wanname, + d.f_curr_price, + d.f_chg_type, + d.f_net_chg, + round((d.f_net_chg / decode(d.f_chg_type, '1', d.f_curr_price - d.f_net_chg, + '2', d.f_curr_price - d.f_net_chg, + '3', d.f_curr_price, + '4', -1*(d.f_curr_price + d.f_net_chg), + '5', -1*(d.f_curr_price + d.f_net_chg))) * 100, 2) rate + from + (select f_stock_code, max(f_low_price) f_low_price + from t_candle_history + where f_data_date between '{0}' and '{1}' + group by f_stock_code) a, + t_stock b, t_online1 d + where a.f_stock_code = b.f_stock_code + and d.f_mkt_halt = 'N' + and d.f_curr_price > 0 + and a.f_stock_code = d.f_stock_code +AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + and a.f_low_price <= d.f_low_price order by rate"; + + + + string queryKOSDAQ = @"select + b.f_stock_code, + b.f_stock_wanname, + d.f_curr_price, + d.f_chg_type, + d.f_net_chg, + round((d.f_net_chg / decode(d.f_chg_type, '1', d.f_curr_price - d.f_net_chg, + '2', d.f_curr_price - d.f_net_chg, + '3', d.f_curr_price, + '4', -1*(d.f_curr_price + d.f_net_chg), + '5', -1*(d.f_curr_price + d.f_net_chg))) * 100, 2) rate + from ( + select f_stock_code, max(f_low_price) f_low_price + from t_kosdaq_candle_history + where f_data_date between '{0}' and '{1}' + group by f_stock_code) a, + t_kosdaq_stock b, t_kosdaq_online1 d + where a.f_stock_code = b.f_stock_code + and d.f_mkt_halt = 'N' + and d.f_curr_price > 0 + and a.f_stock_code = d.f_stock_code +AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + and a.f_low_price <= d.f_low_price order by rate desc"; + + + + + #endregion + + public override IDataRequest buildData() + { + + string bufStartDay = DateTime.Now.ToString("yyyyMMdd"); + string bufEndDay = (DateTime.Now - TimeSpan.FromDays(52 * 7)).ToString("yyyyMMdd"); + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + mRequestQuery.Add("", string.Format(queryKOSPI, bufEndDay, bufStartDay)); + break; + case 국내시장종류.KOSDAQ: + mRequestQuery.Add("", string.Format(queryKOSDAQ, bufEndDay, bufStartDay)); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/low_overtime_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/low_overtime_5dan.cs new file mode 100644 index 0000000..f1d6722 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/low_overtime_5dan.cs @@ -0,0 +1,125 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class low_overtime_5dan : ADataObject + { + + internal low_overtime_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + //코스피 상단 + // string queryKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, + // b.F_STOCK_WANNAME wanname, + // a.f_net_chg net_chg, + // a.f_chg_type chg_type, + // a.f_curr_price, + // a.f_init_price, + // a.f_high_price, + // a.f_low_price, + // round((a.f_net_chg / decode(a.f_chg_type, '4', -1 * (a.f_curr_price + a.f_net_chg), + // '5', -1 * (a.f_curr_price + a.f_net_chg))) * 100, 2) rate + // FROM t_overtime_sise a, t_stock b + // WHERE b.f_mkt_halt = 'N' + // AND b.f_stock_nickname is not null + // AND a.f_stock_code = b.f_stock_code + // AND a.f_curr_price < > 0 + //AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + // AND a.f_chg_type in('4', '5') + // ORDER BY rate"; + string queryKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, + b.F_STOCK_WANNAME wanname, + a.f_net_chg net_chg, + a.f_chg_type chg_type, + a.f_curr_price, + a.f_init_price, + a.f_high_price, + a.f_low_price, + round((a.f_net_chg / decode(a.f_chg_type, '4', -1 * (a.f_curr_price + a.f_net_chg), + '5', -1 * (a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_overtime_sise a, t_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price < > 0 + AND b.f_sect_code = 'ST' + AND a.f_chg_type in('4', '5') + ORDER BY rate"; + + + + // string queryKOSDAQ = @"SELECT DISTINCT + // b.f_stock_code stock_code, + // b.F_STOCK_WANNAME wanname, + // a.f_net_chg net_chg, + // a.f_chg_type chg_type, + // a.f_curr_price, + // a.f_init_price, + // a.f_high_price, + // a.f_low_price, + // round((a.f_net_chg / decode('4', a.f_curr_price + a.f_net_chg, + // '5', a.f_curr_price + a.f_net_chg) * -1) * 100, 2) rate + // FROM t_kosdaq_overtime_sise a, t_kosdaq_stock b + // WHERE b.f_mkt_halt = 'N' + // AND b.f_stock_nickname is not null + // AND a.f_stock_code = b.f_stock_code + // AND a.f_curr_price < > 0 + //AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + // AND a.f_chg_type in('4', '5') + // ORDER BY rate "; + + string queryKOSDAQ = @"SELECT DISTINCT + b.f_stock_code stock_code, + b.F_STOCK_WANNAME wanname, + a.f_net_chg net_chg, + a.f_chg_type chg_type, + a.f_curr_price, + a.f_init_price, + a.f_high_price, + a.f_low_price, + round((a.f_net_chg / decode('4', a.f_curr_price + a.f_net_chg, + '5', a.f_curr_price + a.f_net_chg) * -1) * 100, 2) rate + FROM t_kosdaq_overtime_sise a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price < > 0 + AND b.f_sect_code = 'ST' + AND a.f_chg_type in('4', '5') + ORDER BY rate "; + + + + #endregion + + public override IDataRequest buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + mRequestQuery.Add("", queryKOSPI); + break; + case 국내시장종류.KOSDAQ: + mRequestQuery.Add("", queryKOSDAQ); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/lower_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/lower_5dan.cs new file mode 100644 index 0000000..1c58967 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/lower_5dan.cs @@ -0,0 +1,87 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class lower_5dan : ADataObject + { + + internal lower_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + //코스피 상단 + string queryKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME wanname, + a.f_net_chg net_chg, a.f_chg_type chg_type, + a.f_curr_price, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_online1 a, t_stock b, t_batch_day c + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price < > 0 +AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + AND a.f_chg_type in('4', '5') + ORDER BY rate"; + + + + string queryKOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME wanname, + a.f_net_chg net_chg, a.f_net_vol net_vol, a.F_NET_TURNOVER, a.f_chg_type chg_type, + b.F_LIST_NUM * A.F_CURR_PRICE sigachong, + a.f_init_price, + a.f_high_price, + a.f_low_price, + a.f_curr_price, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1 * (a.f_curr_price + a.f_net_chg), + '5', -1 * (a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_kosdaq_online1 a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price < > 0 +AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + AND a.f_chg_type in('4', '5') + ORDER BY rate"; + + + + + #endregion + + public override IDataRequest buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + mRequestQuery.Add("", queryKOSPI); + break; + case 국내시장종류.KOSDAQ: + mRequestQuery.Add("", queryKOSDAQ); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/suggest_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/suggest_5dan.cs new file mode 100644 index 0000000..ea39a83 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/suggest_5dan.cs @@ -0,0 +1,77 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class suggest_5dan : ADataObject + { + + internal suggest_5dan(List recvStockList) + { + this.mStockCodeList = recvStockList; + } + + //국내시장종류 mDataType; + + List mStockCodeList = null; + + #region 쿼리 + //코스피 상단 + string query = @"SELECT 'KOSPI' gubun, b.f_stock_code STOCK_CODE, + b.f_stock_wanname STOCK_NAME, + a.f_curr_price CURR_PRICE, + a.f_net_chg NET_CHG, + a.f_chg_type CHG_TYPE, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1 * (a.f_curr_price + a.f_net_chg), + '5', -1 * (a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_online1 a, t_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + and b.f_stock_code = '{0}' + union + SELECT 'KOSDAQ' gubun, b.f_stock_code STOCK_CODE, + b.f_stock_wanname STOCK_NAME, + a.f_curr_price CURR_PRICE, + a.f_net_chg NET_CHG, + a.f_chg_type CHG_TYPE, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1 * (a.f_curr_price + a.f_net_chg), + '5', -1 * (a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_kosdaq_online1 a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + and b.f_stock_code = '{0}' "; + + + + + #endregion + + public override IDataRequest buildData() + { + + + mStockCodeList.ForEach(s => + { + mRequestQuery.Add(s, string.Format(query, s)); + }); + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/theme_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/theme_5dan.cs new file mode 100644 index 0000000..95a2c06 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/theme_5dan.cs @@ -0,0 +1,76 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class theme_5dan : ADataObject + { + + internal theme_5dan(List recvStockList) + { + this.mStockCodeList = recvStockList; + } + + + List mStockCodeList = null; + + #region 쿼리 + //코스피 상단 + string query = @"SELECT 'KOSPI' gubun, b.f_stock_code STOCK_CODE, + b.f_stock_wanname STOCK_NAME, + a.f_curr_price CURR_PRICE, + a.f_net_chg NET_CHG, + a.f_chg_type CHG_TYPE, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1 * (a.f_curr_price + a.f_net_chg), + '5', -1 * (a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_online1 a, t_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + and b.f_stock_wanname in('{0}') + union + SELECT 'KOSDAQ' gubun, b.f_stock_code STOCK_CODE, + b.f_stock_wanname STOCK_NAME, + a.f_curr_price CURR_PRICE, + a.f_net_chg NET_CHG, + a.f_chg_type CHG_TYPE, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1 * (a.f_curr_price + a.f_net_chg), + '5', -1 * (a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_kosdaq_online1 a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + and b.f_stock_wanname in('{0}')"; + + + + + #endregion + + public override IDataRequest buildData() + { + + + mStockCodeList.ForEach(s => + { + mRequestQuery.Add(s, string.Format(query, s)); + }); + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/theme_yesang_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/theme_yesang_5dan.cs new file mode 100644 index 0000000..7d71dfc --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/theme_yesang_5dan.cs @@ -0,0 +1,102 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class theme_yesang_5dan : ADataObject + { + + internal theme_yesang_5dan(List recvStockList) + { + this.mStockCodeList = recvStockList; + } + + + List mStockCodeList = null; + + #region 쿼리 + //코스피 상단 + string query = @"SELECT 'KOSPI' gubun, b.f_stock_code STOCK_CODE, + b.f_stock_wanname STOCK_NAME, + a.f_fore_price CURR_PRICE, + ABS((a.f_fore_price - c.f_final_price)) net_chg, + CASE WHEN(a.f_fore_price - c.f_final_price) > 0 THEN '2' ELSE + CASE WHEN(a.f_fore_price - c.f_final_price) < 0 THEN '5' ELSE '3' END END CHG_TYPE, + ABS(round(((a.f_fore_price - c.f_final_price) / c.f_final_price), 4) * 100) rate + FROM t_online1_call a, t_stock b, t_batch_day c + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_fore_price < > 0 + AND c.f_stock_code = a.f_stock_code AND c.f_final_price < > 0 + AND b.f_stock_code = '{0}' + union + SELECT 'KOSDAQ' gubun, b.f_stock_code STOCK_CODE, + b.f_stock_wanname STOCK_NAME, + a.f_fore_price CURR_PRICE, + ABS((a.f_fore_price - c.f_final_price)) net_chg, + CASE WHEN(a.f_fore_price - c.f_final_price) > 0 THEN '2' ELSE + CASE WHEN(a.f_fore_price - c.f_final_price) < 0 THEN '5' ELSE '3' END END CHG_TYPE, + ABS(round(((a.f_fore_price - c.f_final_price) / c.f_final_price), 4) * 100) rate + FROM t_kosdaq_online1_call a, t_kosdaq_stock b, t_kosdaq_batch_day c + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_fore_price < > 0 + AND c.f_stock_code = a.f_stock_code AND c.f_final_price < > 0 + AND b.f_stock_code = '{0}' "; + + + //////////// string query = @"SELECT 'KOSPI' gubun, b.f_stock_code STOCK_CODE, + ////////////b.f_stock_wanname STOCK_NAME, + ////////////a.f_fore_price CURR_PRICE, + ////////////ABS((a.f_fore_price - c.f_final_price)) net_chg, + //////////// CASE WHEN(a.f_fore_price - c.f_final_price) > 0 THEN '2' ELSE + ////////////CASE WHEN(a.f_fore_price - c.f_final_price) < 0 THEN '5' ELSE '3' END END CHG_TYPE, + ////////////ABS(round(((a.f_fore_price - c.f_final_price) / c.f_final_price), 4) * 100) rate + //////////// FROM t_online1 a, t_stock b, t_batch_day c + ////////////WHERE b.f_mkt_halt = 'N' + ////////////AND b.f_stock_nickname is not null + ////////////AND a.f_stock_code = b.f_stock_code + ////////////AND a.f_fore_price < > 0 + ////////////AND c.f_stock_code = a.f_stock_code AND c.f_final_price < > 0 + ////////////AND b.f_stock_code = '{0}' + ////////////union + ////////////SELECT 'KOSDAQ' gubun, b.f_stock_code STOCK_CODE, + ////////////b.f_stock_wanname STOCK_NAME, + ////////////a.f_fore_price CURR_PRICE, + ////////////ABS((a.f_fore_price - c.f_final_price)) net_chg, + //////////// CASE WHEN(a.f_fore_price - c.f_final_price) > 0 THEN '2' ELSE + ////////////CASE WHEN(a.f_fore_price - c.f_final_price) < 0 THEN '5' ELSE '3' END END CHG_TYPE, + //////////// ABS(round(((a.f_fore_price - c.f_final_price) / c.f_final_price), 4) * 100) rate + //////////// FROM t_kosdaq_online1 a, t_kosdaq_stock b, t_kosdaq_batch_day c + ////////////WHERE b.f_mkt_halt = 'N' + ////////////AND b.f_stock_nickname is not null + ////////////AND a.f_stock_code = b.f_stock_code + ////////////AND a.f_fore_price < > 0 + ////////////AND c.f_stock_code = a.f_stock_code AND c.f_final_price < > 0 + ////////////AND b.f_stock_code = '{0}' "; + + + + #endregion + + public override IDataRequest buildData() + { + + + mStockCodeList.ForEach(s => + { + mRequestQuery.Add(s, string.Format(query, s)); + }); + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/upjong_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/upjong_5dan.cs new file mode 100644 index 0000000..7b8cb9b --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/upjong_5dan.cs @@ -0,0 +1,71 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class upjong_5dan : ADataObject + { + + internal upjong_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + //코스피 상단 + string queryKOSPI = @"select + b.f_part_name, + a.F_PART_IDX/100 part_idx, + a.F_CHG_TYPE, + a.F_PART_CHG/100 part_chg, + round(a.f_part_chg / decode(a.f_chg_type, '+', (a.f_part_idx / 100) - (a.f_part_chg / 100), '-', (a.f_part_idx / 100) + (a.f_part_chg / 100)), 2) rate + from t_index a, t_part b + where a.f_part_code = b.f_part_code and a.f_part_code <> '001' + order by a.f_part_code"; + + + + string queryKOSDAQ = @"select + b.f_part_name, + a.F_PART_IDX/100 part_idx, + a.F_CHG_TYPE, + a.F_PART_CHG/100 part_chg, + round(a.f_part_chg / decode(a.f_chg_type, '+', (a.f_part_idx / 100) - (a.f_part_chg / 100), '-', (a.f_part_idx / 100) + (a.f_part_chg / 100)), 2) rate + from t_kosdaq_index a, t_kosdaq_part b + where a.f_part_code = b.f_part_code and a.f_part_code <> '001' + order by a.f_part_code"; + + + + + #endregion + + public override IDataRequest buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + mRequestQuery.Add("", queryKOSPI); + break; + case 국내시장종류.KOSDAQ: + mRequestQuery.Add("", queryKOSDAQ); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판5단/upper_5dan.cs b/MBN_STOCK_N/Data/Request/판5단/upper_5dan.cs new file mode 100644 index 0000000..536ea59 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판5단/upper_5dan.cs @@ -0,0 +1,87 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class upper_5dan : ADataObject + { + + internal upper_5dan(국내시장종류 recvDataType) + { + this.mDataType = recvDataType; + + } + + 국내시장종류 mDataType; + + #region 쿼리 + //코스피 상단 + string queryKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME wanname, + a.f_net_chg net_chg, a.f_chg_type chg_type, + a.f_curr_price, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_online1 a, t_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price < > 0 +AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + AND a.f_chg_type in('1', '2') + ORDER BY rate DESC"; + + + + string queryKOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME wanname, + a.f_net_chg net_chg, a.f_net_vol net_vol, a.F_NET_TURNOVER, a.f_chg_type chg_type, + b.F_LIST_NUM * A.F_CURR_PRICE sigachong, + a.f_init_price, + a.f_high_price, + a.f_low_price, + a.f_curr_price, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_kosdaq_online1 a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price < > 0 +AND b.f_sect_code in ( 'ST', 'FS','DR', 'RT', 'IF') + AND a.f_chg_type in('1', '2') + ORDER BY rate DESC"; + + + + + #endregion + + public override IDataRequest buildData() + { + + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + mRequestQuery.Add("", queryKOSPI); + break; + case 국내시장종류.KOSDAQ: + mRequestQuery.Add("", queryKOSDAQ); + break; + } + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판데이터기본/DataObject_3PAN.cs b/MBN_STOCK_N/Data/Request/판데이터기본/DataObject_3PAN.cs new file mode 100644 index 0000000..6d4ea3c --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판데이터기본/DataObject_3PAN.cs @@ -0,0 +1,471 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class DataObject_3PAN : ADataObject + { + + internal DataObject_3PAN(판3데이터분류 recvDataType) + { + this.mDataType = recvDataType; + } + + 판3데이터분류 mDataType; + + #region "쿼리" + + string query주요지수200 = @"SELECT 'KOSPI' name, f_part_idx / 100 part_idx, f_chg_type chg_type, ABS(f_part_chg / 100) part_chg, + round(f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, + '-', f_part_idx + f_part_chg, 1) * 100, 2) rate + FROM t_index + WHERE f_part_code = '001' + union + + SELECT '코스닥' name, f_part_idx / 100 part_idx, f_chg_type chg_type, ABS(f_part_chg / 100) part_chg, + round(f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, + '-', f_part_idx + f_part_chg, 1) * 100, 2) rate + FROM T_KOSDAQ_INDEX + WHERE f_part_code = '001' + union + + SELECT '코스피200' name, f_part_idx / 100 part_idx, f_chg_type chg_type, ABS(f_part_chg / 100) part_chg, + round(f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, + '-', f_part_idx + f_part_chg, 1) * 100, 2) rate + FROM T_200_INDEX + WHERE f_part_code = '029'"; + + string query주요지수선물 = @"SELECT 'KOSPI' name,f_part_idx/100 part_idx, f_chg_type chg_type, f_part_chg/100 part_chg, + round(f_part_chg / decode(f_chg_type, '+', (f_part_idx / 100) - (f_part_chg / 100), + '-', (f_part_idx / 100) + (f_part_chg / 100), 1), 2) rate + FROM t_index + WHERE f_part_code = '001' + union + SELECT 'KOSQ' name, f_part_idx / 100 part_idx, f_chg_type chg_type, f_part_chg / 100 part_chg, + round(f_part_chg / decode(f_chg_type, '+', (f_part_idx / 100) - (f_part_chg / 100), + '-', (f_part_idx / 100) + (f_part_chg / 100), 1), 2) rate + FROM T_KOSDAQ_INDEX + WHERE f_part_code = '001' + union + SELECT '선물' name, part_idx part_idx, chg_type, ABS(part_chg) part_chg, + ABS(round(part_chg / decode(chg_type, '+', (part_idx / 100) - (part_chg / 100), + '-', (part_idx / 100) + (part_chg / 100), 1), 2)) rate + FROM(SELECT decode(a.f_curr_price,0, b.F_JUN_LAST_PRICE/100, a.f_curr_price/100) part_idx, + decode(a.f_curr_price, 0, 0, (a.f_curr_price - b.F_JUN_LAST_PRICE*100)/100) part_chg, + decode(a.f_curr_price, 0, ' ', decode(sign(a.f_curr_price -b.F_JUN_LAST_PRICE*100),1,'+',-1,'-',0,' ')) chg_type + FROM t_sunmul_online a, t_sunmul_batch b + WHERE a.f_stock_code = b.f_stock_code + AND a.f_stock_seq = 1 + AND b.f_market_date = (select max(OPEN_DAY) from v_open_day) + AND b.F_MONTH_GUBUN = '1')"; + + + string query예상지수200 = @"SELECT 'KOSPI' name,f_part_idx/100 part_idx, f_chg_type chg_type, ABS(f_part_chg/100) part_chg, + round(f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, + '-', f_part_idx + f_part_chg, 1) * 100, 2) rate + FROM t_fo_index + WHERE f_part_code = '001' + UNION + SELECT '코스닥' name, f_part_idx / 100 part_idx, f_chg_type chg_type, ABS(f_part_chg / 100) part_chg, + round(f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, + '-', f_part_idx + f_part_chg, 1) * 100, 2) rate + FROM T_KOSDAQ_FO_INDEX + WHERE f_part_code = '001' + UNION + SELECT '코스피200' name, f_part_idx / 100 part_idx, f_chg_type chg_type, ABS(f_part_chg / 100) part_chg, + round(f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, + '-', f_part_idx + f_part_chg, 1) * 100, 2) rate + FROM T_200_FO_INDEX + WHERE f_part_code = '029'"; + + + string query예상지수선물 = @"SELECT 'KOSPI' name,f_part_idx/100 part_idx, f_chg_type chg_type, f_part_chg/100 part_chg, + round(f_part_chg / decode(f_chg_type, '+', (f_part_idx / 100) - (f_part_chg / 100), + '-', (f_part_idx / 100) + (f_part_chg / 100),1), 2) rate + FROM t_fo_index + WHERE f_part_code = '001' + UNION + SELECT 'KOSQ' name, f_part_idx / 100 part_idx, f_chg_type chg_type, f_part_chg / 100 part_chg, + round(f_part_chg / decode(f_chg_type, '+', (f_part_idx / 100) - (f_part_chg / 100), + '-', (f_part_idx / 100) + (f_part_chg / 100),1), 2) rate + FROM T_KOSDAQ_FO_INDEX + WHERE f_part_code = '001' + UNION + SELECT '선물' name, part_idx part_idx, chg_type, ABS(part_chg) part_chg, + ABS(round(part_chg / decode(chg_type, '+', (part_idx / 100) - (part_chg / 100), + '-', (part_idx / 100) + (part_chg / 100),1), 2)) rate + FROM(SELECT decode(a.f_fo_price,0, b.F_JUN_LAST_PRICE, a.f_fo_price) part_idx, + decode(a.f_fo_price, 0, 0, (a.f_fo_price - b.F_JUN_LAST_PRICE)/100) part_chg, + decode(a.f_fo_price, 0, ' ', decode(sign(a.f_fo_price -b.F_JUN_LAST_PRICE),1,'+',-1,'-',0,' ')) chg_type + FROM t_sunmul_online a, t_sunmul_batch b +WHERE a.f_stock_code = b.f_stock_code + AND a.f_stock_seq = 1 + AND b.f_market_date = (select max(OPEN_DAY) from v_open_day) + AND b.F_MONTH_GUBUN = '1')"; + + + + + string query미국 = @"select decode(a.f_symb, 'DJI@DJI', 1, + 'NAS@IXIC', 2, + 'SPI@SPX', 3) ss, + a.f_input_name name, round(b.f_last, 2) part_idx, b.f_sign chg_type, round(b.f_diff, 2) part_chg, round(b.f_rate, 2) rate + from t_world_ix_eq_master a, t_world_ix_eq_sise b + where a.f_symb = b.f_symb + and a.f_symb in('DJI@DJI', 'NAS@IXIC', 'SPI@SPX')"; + + + string query중화권 = @"select decode(a.f_symb, 'HSI@HSI', 1, + 'SHS@000001', 2, + 'TWS@TI01', 3) ss, + a.f_input_name name, round(b.f_last, 2) part_idx, b.f_sign chg_type, ABS(round(b.f_diff, 2)) part_chg, round(b.f_rate, 2) rate + from t_world_ix_eq_master a, t_world_ix_eq_sise b + where a.f_symb = b.f_symb + and a.f_symb in('SHS@000001', 'HSI@HSI', 'TWS@TI01') + order by ss"; + + + string query유럽 = @"select decode(a.f_symb, 'LNS@FTSE100', 1, + 'PAS@CAC40', 2, + 'XTR@DAX30', 3) ss, + a.f_input_name name, round(b.f_last, 2) part_idx, b.f_sign chg_type, ABS(round(b.f_diff, 2)) part_chg, round(b.f_rate, 2) rate + from t_world_ix_eq_master a, t_world_ix_eq_sise b + where a.f_symb = b.f_symb + and a.f_symb in('PAS@CAC40', 'XTR@DAX30', 'LNS@FTSE100') + order by ss"; + + + string query아시아 = @"select decode(a.f_symb, 'SHS@000001', 1, + 'TWS@TI01', 2, + 'NII@NI225', 3) ss, + a.f_input_name name, round(b.f_last, 2) part_idx, b.f_sign chg_type, ABS(round(b.f_diff, 2)) part_chg, round(b.f_rate, 2) rate + from t_world_ix_eq_master a, t_world_ix_eq_sise b + where a.f_symb = b.f_symb + and a.f_symb in('SHS@000001', 'TWS@TI01', 'NII@NI225') + order by ss"; + + + string query달러환율 = @"select decode(a.f_symb, 'USDJPYCOMP', 1, + 'EURUSDCOMP', 2, + 'USDCNYCOMP', 3) ss, + a.f_input_name name, ABS(b.f_last) part_idx, + ABS(b.f_diff) part_chg, + case when to_number(b.f_diff) > 0 then '+' when to_number(b.f_diff) < 0 then '-' else '' end sign, + round(b.f_rate, 2) rate + from t_world_forex_master a, t_world_forex_sise b + where a.f_symb = b.f_symb + and a.f_symb in('USDJPYCOMP', 'EURUSDCOMP', 'USDCNYCOMP') --USDJPYCOMP 엔, USDCNYCOMP 위안화, EURUSDCOMP유로 + order by ss"; + +// string query원환율 = @"select decode(a.f_input_code,'A09','원/달러','A10','원/엔','A91','원/유로') name, + // a.f_curr_price part_idx, a.f_chg_type chg_type, ABS(a.f_net_chg) part_chg, + // round(a.f_net_chg / decode(a.f_chg_type, '+', (a.f_curr_price / 100) - (ABS(a.f_net_chg) / 100), + // '-', (a.f_curr_price / 100) + ((a.f_net_chg) / 100)), 2) rate + // from t_input_index a, t_input_code b + //where a.f_input_code in('A09', 'A10', 'A91') + // and a.f_input_code = b.f_input_code + // order by a.f_input_code"; + string query원환율 = @"select decode(a.f_input_code,'A09','원/달러','A10','원/엔','A91','원/유로') name, + a.f_curr_price part_idx, a.f_chg_type chg_type, ABS(a.f_net_chg) part_chg, + round(a.f_net_chg / decode(a.f_chg_type, '+', (a.f_curr_price / 100) - (ABS(a.f_net_chg) / 100), + '-', (a.f_curr_price / 100) + ((a.f_net_chg) / 100), 1), 2) rate + from t_input_index a, t_input_code b + where a.f_input_code in('A09', 'A10', 'A91') + and a.f_input_code = b.f_input_code + order by a.f_input_code"; + + + string query미국국채 = @"select decode(a.f_symb, 'GVO@TR02Y', 1, + 'GVO@TR03Y', 2, + 'GVO@TR05Y', 3) ss, + a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, + b.f_sign chg_type, round(b.f_diff, 2) part_chg, round(b.f_rate, 2) rate + from t_world_ix_eq_master a, t_world_ix_eq_sise b + where a.f_symb = b.f_symb + and a.f_symb in('GVO@TR02Y', 'GVO@TR03Y', 'GVO@TR05Y') + order by ss"; + + + string query채권금리 = @"SELECT decode(a.f_symb, 'KIR@CMAA', 1, + 'KIR@NB03Y', 2, + 'KIR@CD91', 3) ss, + b.f_input_name part_name, ABS(round(a.f_last, 2)) part_idx, a.f_sign chg_type, + round(a.f_diff, 2) part_chg, round(a.f_rate, 2) rate + FROM t_world_ix_eq_sise a, t_world_ix_eq_master b + WHERE a.f_symb = b.f_symb + and b.f_symb in('KIR@CMAA', 'KIR@NB03Y', 'KIR@CD91') + order by ss"; + + + string query유가 = @"select decode(a.f_symb, 'SPT@DU', 1, + 'SPT@EB', 2, + 'SPT@CL', 3) ss, + a.f_input_name name, round(b.f_last, 2) part_idx, round(b.f_diff, 2) part_chg, + case when to_number(b.f_diff) > 0 then '+' when to_number(b.f_diff) < 0 then '-' else '' end sign, + round(b.f_rate, 2) rate + from t_world_future_master a, t_world_future_sise b + where a.f_symb = b.f_symb + and a.f_symb in('SPT@DU', 'SPT@EB', 'SPT@CL') --SPT@DU 두바이, SPT@CL' WTI, SPT@EB 브렌트 + order by ss"; + + + string query광물 = @"select decode(a.f_symb, 'COM@GC', 1, + 'COM@SI', 2, + 'LME@CDY', 3) ss, + a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, ABS(round(b.f_diff, 2)) part_chg, + case when to_number(b.f_diff) > 0 then '+' when to_number(b.f_diff) < 0 then '-' else '' end sign, + round(b.f_rate, 2) rate + from t_world_future_master a, t_world_future_sise b + where a.f_symb = b.f_symb + and a.f_symb in('COM@GC', 'COM@SI', 'LME@CDY') + order by ss"; + + + string query식자재 = @"select decode(a.f_symb, 'CBT$CORN', 1, + 'CBT@SOYBEAN', 2, + 'CBT@WHEAT', 3) ss, + a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, ABS(round(b.f_diff, 2)) part_chg, + case when to_number(b.f_diff) > 0 then '+' when to_number(b.f_diff) < 0 then '-' else '' end sign, + round(b.f_rate, 2) rate + from t_world_future_master a, t_world_future_sise b + where a.f_symb = b.f_symb + and a.f_symb in('CBT@SOYBEAN', 'CBT$CORN', 'CBT@WHEAT') + order by ss"; + + string query소맥_옥수수_밀 = @"select decode(a.f_symb, 'MK@WHEAT', 1, + 'CBT$CORN', 2, + 'CBT@WHEAT', 3) ss, + a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, + ABS(round(b.f_diff,2)) part_chg, + case when to_number(b.f_diff) > 0 then '+' + when to_number(b.f_diff) < 0 then '-' else '' end sign, + round(b.f_rate, 2) rate + from t_world_future_master a, t_world_future_sise b + where a.f_symb = b.f_symb + and a.f_symb in ('MK@WHEAT', 'CBT$CORN' , 'CBT@WHEAT') + order by ss"; + + string query대두_콩_현미 = @"select decode(a.f_symb, 'CBT@SOYBEAN', 1, + 'MK@BEAN', 2, + 'MK@RICE', 3) ss, + a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, + ABS(round(b.f_diff,2)) part_chg, + case when to_number(b.f_diff) > 0 then '+' + when to_number(b.f_diff) < 0 then '-' else '' end sign, + round(b.f_rate,2) rate + from t_world_future_master a, t_world_future_sise b + where a.f_symb = b.f_symb + and a.f_symb in ('CBT@SOYBEAN' , 'MK@BEAN' , 'MK@RICE') + order by ss"; + + string query커피_코코아_설탕 = @"select decode(a.f_symb, 'NYB@KC', 1, + 'MK@COCOA', 2, + 'NYB@SB', 3) ss, + a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, + ABS(round(b.f_diff,2)) part_chg, + case when to_number(b.f_diff) > 0 then '+' + when to_number(b.f_diff) < 0 then '-' else '' end sign, + round(b.f_rate,2) rate + from t_world_future_master a, t_world_future_sise b + where a.f_symb = b.f_symb + and a.f_symb in ('NYB@KC' , 'MK@COCOA', 'NYB@SB') + order by ss"; + + string query생우_비육우_돈육 = @"select decode(a.f_symb, 'MK@LC', 1, + 'MK@FC', 2, + 'MK@PORK', 3) ss, + a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, + ABS(round(b.f_diff,2)) part_chg, + case when to_number(b.f_diff) > 0 then '+' + when to_number(b.f_diff) < 0 then '-' else '' end sign, + round(b.f_rate,2) rate + from t_world_future_master a, t_world_future_sise b + where a.f_symb = b.f_symb + and a.f_symb in ('MK@LC', 'MK@FC', 'MK@PORK') + order by ss"; + + + string query구리_철광석_니켈 = @"select decode(a.f_symb, 'LME@CDY', 1, + 'MK@IRON', 2, + 'LME@NDY', 3) ss, + a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, + ABS(round(b.f_diff,2)) part_chg, + case when to_number(b.f_diff) > 0 then '+' + when to_number(b.f_diff) < 0 then '-' else '' end sign, + round(b.f_rate,2) rate + from t_world_future_master a, t_world_future_sise b + where a.f_symb = b.f_symb + and a.f_symb in ('LME@CDY', 'MK@IRON', 'LME@NDY') + order by ss"; + + string query천연가스_백금_팔라듐 = @"select decode(a.f_symb, 'NYM@NG', 1, + 'NYM@PL', 2, + 'NYM@PA', 3) ss, + a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, + ABS(round(b.f_diff,2)) part_chg, + case when to_number(b.f_diff) > 0 then '+' + when to_number(b.f_diff) < 0 then '-' else '' end sign, + round(b.f_rate,2) rate + from t_world_future_master a, t_world_future_sise b + where a.f_symb = b.f_symb + and a.f_symb in ('NYM@NG', 'NYM@PL', 'NYM@PA') + order by ss"; + + string query납_아연_주석 = @"select decode(a.f_symb, 'MK@PDA', 1, + 'MK@ZDA', 2, + 'LME@SDY', 3) ss, + a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, + round(b.f_diff,2) part_chg, + case when to_number(b.f_diff) > 0 then '+' + when to_number(b.f_diff) < 0 then '-' else '' end sign, + round(b.f_rate,2) rate + from t_world_future_master a, t_world_future_sise b + where a.f_symb = b.f_symb + and a.f_symb in ('MK@PDA', 'MK@ZDA', 'LME@SDY') + order by ss"; + + string query원면_목화 = @"select decode(a.f_symb, 'MK@COTTON', 1, + 'NYB@CT', 2) ss, + a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, + round(b.f_diff,2) part_chg, + case when to_number(b.f_diff) > 0 then '+' + when to_number(b.f_diff) < 0 then '-' else '' end sign, + round(b.f_rate,2) rate + from t_world_future_master a, t_world_future_sise b + where a.f_symb = b.f_symb + and a.f_symb in ('MK@COTTON', 'NYB@CT') + order by ss"; + + string query국제금 = @"select decode(a.f_symb, 'COM@GC', 1, + 'COM@SI', 2) ss, + a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, + round(b.f_diff,2) part_chg, + case when to_number(b.f_diff) > 0 then '+' + when to_number(b.f_diff) < 0 then '-' else '' end sign, + round(b.f_rate,2) rate + from t_world_future_master a, t_world_future_sise b + where a.f_symb = b.f_symb + and a.f_symb in ('COM@GC' , 'COM@SI') + order by ss"; + + string query국내금 = @"select decode(a.f_symb, 'MK@GC', 1, + 'MK@SI', 2) ss, + a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, + round(b.f_diff,2) part_chg, + case when to_number(b.f_diff) > 0 then '+' + when to_number(b.f_diff) < 0 then '-' else '' end sign, + round(b.f_rate,2) rate + from t_world_future_master a, t_world_future_sise b + where a.f_symb = b.f_symb + and a.f_symb in ('MK@GC', 'MK@SI') + order by ss"; + + #endregion + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + switch (mDataType) + { + case 판3데이터분류.주요지수_코스피_코스닥_코스피200: + bufQuery = query주요지수200; + break; + case 판3데이터분류.주요지수_코스피_코스닥_선물: + bufQuery = query주요지수선물; + break; + case 판3데이터분류.예상체결지수_코스피_코스닥_코스피200: + bufQuery = query예상지수200; + break; + case 판3데이터분류.예상체결지수_코스피_코스닥_선물: + bufQuery = query예상지수선물; + break; + case 판3데이터분류.미국지수: + bufQuery = query미국; + break; + case 판3데이터분류.중화권지수: + bufQuery = query중화권; + break; + case 판3데이터분류.유럽지수: + bufQuery = query유럽; + break; + case 판3데이터분류.아시아지수_상해_대만_일본: + bufQuery = query아시아; + break; + case 판3데이터분류.달러환율_엔_위안_유로: + bufQuery = query달러환율; + break; + case 판3데이터분류.원환율_달러_엔_유로: + bufQuery = query원환율; + break; + case 판3데이터분류.미국국채: + bufQuery = query미국국채; + break; + case 판3데이터분류.채권금리: + bufQuery = query채권금리; + break; + case 판3데이터분류.유가_두바이_WTI_브랜트: + bufQuery = query유가; + break; + case 판3데이터분류.광물: + bufQuery = query광물; + break; + case 판3데이터분류.식자재: + bufQuery = query식자재; + break; + + case 판3데이터분류.소맥_옥수수_밀: + bufQuery = query소맥_옥수수_밀; + break; + + case 판3데이터분류.대두_콩_현미: + bufQuery = query대두_콩_현미; + break; + + case 판3데이터분류.커피_코코아_설탕: + bufQuery = query커피_코코아_설탕; + break; + + case 판3데이터분류.생우_비육우_돈육: + bufQuery = query생우_비육우_돈육; + break; + + case 판3데이터분류.구리_철광석_니켈: + bufQuery = query구리_철광석_니켈; + break; + + case 판3데이터분류.천연가스_백금_팔라듐: + bufQuery = query천연가스_백금_팔라듐; + break; + + case 판3데이터분류.납_아연_주석: + bufQuery = query납_아연_주석; + break; + + case 판3데이터분류.원면_목화: + bufQuery = query원면_목화; + break; + + case 판3데이터분류.국제금: + bufQuery = query국제금; + break; + + case 판3데이터분류.국내금: + bufQuery = query국내금; + break; + } + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판데이터기본/EXCHANGE_PAN.cs b/MBN_STOCK_N/Data/Request/판데이터기본/EXCHANGE_PAN.cs new file mode 100644 index 0000000..54313e9 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판데이터기본/EXCHANGE_PAN.cs @@ -0,0 +1,81 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class EXCHANGE_PAN : ADataObject + { + + internal EXCHANGE_PAN(원환율 recvDataType) + { + this.mDataType = recvDataType; + } + + 원환율 mDataType; + + #region "쿼리" + + string queryDOLLOR = @"SELECT a.f_input_code stock_code, '원/달러' stock_name, + a.f_curr_price curr_price, a.f_net_chg net_chg, a.f_chg_type, + round((a.f_net_chg / decode(a.f_chg_type, '+', (a.f_curr_price - f_net_chg), '-', (a.f_curr_price + f_net_chg), 1)) * 100, 2) rate + FROM t_input_index a, t_input_code b + WHERE a.f_input_code = b.f_input_code + AND a.f_input_code = 'A09'"; + + string queryJPY = @"SELECT a.f_input_code stock_code, '원/엔' stock_name, + a.f_curr_price curr_price, a.f_net_chg net_chg, a.f_chg_type, + round((a.f_net_chg / decode(a.f_chg_type, '+', (a.f_curr_price - f_net_chg), '-', (a.f_curr_price + f_net_chg), 1)) * 100, 2) rate + FROM t_input_index a, t_input_code b + WHERE a.f_input_code = b.f_input_code + AND a.f_input_code = 'A10'"; + + string queryYUAN = @"SELECT a.f_input_code stock_code, '원/위엔' stock_name, + a.f_curr_price curr_price, abs(a.f_net_chg) net_chg, a.f_chg_type, + round((a.f_net_chg / decode(a.f_chg_type, '+', (a.f_curr_price - f_net_chg), '-', (a.f_curr_price + f_net_chg), 1)) * 100, 2) rate + FROM t_input_index a, t_input_code b + WHERE a.f_input_code = b.f_input_code + AND a.f_input_code = 'A90'"; + + string queryEURO = @"SELECT a.f_input_code stock_code, '원/유로' stock_name, + a.f_curr_price curr_price, a.f_net_chg net_chg, a.f_chg_type, + round((a.f_net_chg / decode(a.f_chg_type, '+', (a.f_curr_price - f_net_chg), '-', (a.f_curr_price + f_net_chg), 1)) * 100, 2) rate + FROM t_input_index a, t_input_code b + WHERE a.f_input_code = b.f_input_code + AND a.f_input_code = 'A91'"; + + #endregion + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + switch (mDataType) + { + case 원환율.원위엔: + bufQuery = queryYUAN; + break; + case 원환율.원달러: + bufQuery = queryDOLLOR; + break; + case 원환율.원엔: + bufQuery = queryJPY; + break; + case 원환율.원유로: + bufQuery = queryEURO; + break; + } + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판데이터기본/NXT_SANGSE_PAN.cs b/MBN_STOCK_N/Data/Request/판데이터기본/NXT_SANGSE_PAN.cs new file mode 100644 index 0000000..fa1ea06 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판데이터기본/NXT_SANGSE_PAN.cs @@ -0,0 +1,370 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Nxt_SANGSE_PAN : Nxt_ADataObject + { + + internal Nxt_SANGSE_PAN(국내시장종류 recvDataType, 상세판데이터분류 recvDataType2, string recvStockCode) + { + this.mDataType = recvDataType; + this.mDataType2 = recvDataType2; + this.mStockCode = recvStockCode; + } + + 국내시장종류 mDataType; + + 상세판데이터분류 mDataType2; + + string mStockCode = ""; + + #region 쿼리 + + // 시가 + string queryKOSPI1 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.init_price, decode(a.final_price, 0, round(((a.init_price - a.base_price) / a.base_price) * 100,2), + round(((a.init_price - a.final_price) / a.final_price) * 100,2)) init_rate, + a.high_price, decode(a.final_price, 0, round(((a.high_price - a.base_price) / a.base_price) * 100,2), + round(((a.high_price - a.final_price) / a.final_price) * 100,2)) high_rate, + a.low_price, decode(a.final_price, 0, round(((a.low_price - a.base_price) / a.base_price) * 100,2), + round(((a.low_price - a.final_price) / a.final_price) * 100,2)) low_rate + FROM V_2 a + WHERE a.stock_code = '{0}'"; + + // 시가_코스닥 + string queryKOSDAQ1 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.init_price, decode(a.final_price, 0, round(((a.init_price - a.base_price) / a.base_price) * 100,2), + round(((a.init_price - a.final_price) / a.final_price) * 100,2)) init_rate, + a.high_price, decode(a.final_price, 0, round(((a.high_price - a.base_price) / a.base_price) * 100,2), + round(((a.high_price - a.final_price) / a.final_price) * 100,2)) high_rate, + a.low_price, decode(a.final_price, 0, round(((a.low_price - a.base_price) / a.base_price) * 100,2), + round(((a.low_price - a.final_price) / a.final_price) * 100,2)) low_rate + FROM V_2_kosdaq a + WHERE a.stock_code = '{0}'"; + + // 시가_NXT + string queryNXT_KOSPI1 = @"SELECT a.f_stock_code stock_code, b.f_stock_name stock_name, a.f_curr_price curr_price, + case when a.f_chg_type = '1' then '상한' when a.f_chg_type = '2' then '상승' when a.f_chg_type = '3' then '보합' + when a.f_chg_type = '4' then '하한' when a.f_chg_type = '5' then '하락' end chg_type, a.f_net_chg net_chg, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate , + a.f_init_price, if (c.f_final_price = 0, round(((a.f_init_price - c.f_base_price) / c.f_base_price) * 100,2), + round(((a.f_init_price - c.f_final_price) / c.f_final_price) * 100,2)) init_rate, + a.f_high_price, if (c.f_final_price = 0, round(((a.f_high_price - c.f_base_price) / c.f_base_price) * 100,2), + round(((a.f_high_price - c.f_final_price) / c.f_final_price) * 100,2)) high_rate, + a.f_low_price, if (c.f_final_price = 0, round(((a.f_low_price - c.f_base_price) / c.f_base_price) * 100,2), + round(((a.f_low_price - c.f_final_price) / c.f_final_price) * 100,2)) low_rate + FROM n_online a, n_stock b, n_batch_his c + WHERE a.f_stock_code = b.f_stock_code + and a.f_stock_code = c.f_stock_code + and a.f_curr_price != 0 + and a.f_stock_code = b.F_STOCK_CODE + and c.f_data_day = (select max(f_data_day) from n_batch_his where f_stock_code = a.f_stock_code) + and a.f_stock_code = '{0}'"; + + // 시가_코스닥_NXT + string queryNXT_KOSDAQ1 = @"SELECT a.f_stock_code stock_code, b.f_stock_name stock_name, a.f_curr_price curr_price, + case when a.f_chg_type = '1' then '상한' when a.f_chg_type = '2' then '상승' when a.f_chg_type = '3' then '보합' + when a.f_chg_type = '4' then '하한' when a.f_chg_type = '5' then '하락' end chg_type, a.f_net_chg net_chg, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate , + a.f_init_price, if (c.f_final_price = 0, round(((a.f_init_price - c.f_base_price) / c.f_base_price) * 100,2), + round(((a.f_init_price - c.f_final_price) / c.f_final_price) * 100,2)) init_rate, + a.f_high_price, if (c.f_final_price = 0, round(((a.f_high_price - c.f_base_price) / c.f_base_price) * 100,2), + round(((a.f_high_price - c.f_final_price) / c.f_final_price) * 100,2)) high_rate, + a.f_low_price, if (c.f_final_price = 0, round(((a.f_low_price - c.f_base_price) / c.f_base_price) * 100,2), + round(((a.f_low_price - c.f_final_price) / c.f_final_price) * 100,2)) low_rate + FROM n_kosdaq_online a, n_kosdaq_stock b, n_kosdaq_batch_his c + WHERE a.f_stock_code = b.f_stock_code + and a.f_stock_code = c.f_stock_code + and a.f_curr_price != 0 + and a.f_stock_code = b.F_STOCK_CODE + and c.f_data_day = (select max(f_data_day) from n_kosdaq_batch_his where f_stock_code = a.f_stock_code) + and a.f_stock_code = '{0}'"; + + // 액면가 + string queryKOSPI2 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.list_price, a.capital_price, a.siga_price, b.rank_num + FROM V_2 A, + (select z.f_stock_code stock_code, + rank() over(order by(z.f_list_num * y.f_curr_price) desc) rank_num + from t_online1 y, t_stock z + where y.f_stock_code = z.f_stock_code + and z.f_mkt_halt = 'N') B + WHERE a.stock_code = b.stock_code + and a.stock_code = '{0}'"; + + // 액면가_코스닥 + string queryKOSDAQ2 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.list_price, a.capital_price, a.siga_price, b.rank_num + FROM V_2_kosdaq A, + (select z.f_stock_code stock_code, + rank() over(order by(z.f_list_num * y.f_curr_price) desc) rank_num + from t_kosdaq_online1 y, t_kosdaq_stock z + where y.f_stock_code = z.f_stock_code + and z.f_mkt_halt = 'N') B + WHERE a.stock_code = b.stock_code + and a.stock_code = '{0}'"; + + // 액면가_NXT + string queryNXT_KOSPI2 = + @"SELECT a.f_stock_code stock_code, b.f_stock_name stock_name, a.f_curr_price curr_price, + case when a.f_chg_type = '1' then '상한' when a.f_chg_type = '2' then '상승' when a.f_chg_type = '3' then '보합' + when a.f_chg_type = '4' then '하한' when a.f_chg_type = '5' then '하락' end chg_type, a.f_net_chg chg_type, a.f_net_chg net_chg, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate , + b.f_list_price list_price, b.f_capital_price capital_price, b.f_list_num * a.f_curr_price siga_price, b.rank_num + FROM n_online a, + (select z.f_stock_code f_stock_code, z.f_stock_name, z.f_list_price, z.f_capital_price, z.f_list_num, + rank() over(order by(z.f_list_num * y.f_curr_price) desc) rank_num + from n_online y, n_stock z + where y.f_stock_code = z.f_stock_code + and z.f_stop_gubun = 'N') b + WHERE a.f_stock_code = b.f_stock_code + AND a.f_stock_code = '{0}'"; + + // 액면가_코스닥_NXT + string queryNXT_KOSDAQ2 = + @"SELECT a.f_stock_code stock_code, b.f_stock_name stock_name, a.f_curr_price curr_price, + case when a.f_chg_type = '1' then '상한' when a.f_chg_type = '2' then '상승' when a.f_chg_type = '3' then '보합' + when a.f_chg_type = '4' then '하한' when a.f_chg_type = '5' then '하락' end chg_type, a.f_net_chg chg_type, a.f_net_chg net_chg, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate , + b.f_list_price list_price, b.f_capital_price capital_price, b.f_list_num * a.f_curr_price siga_price, b.rank_num + FROM n_kosdaq_online a, + (select z.f_stock_code f_stock_code, z.f_stock_name, z.f_list_price, z.f_capital_price, z.f_list_num, + rank() over(order by(z.f_list_num * y.f_curr_price) desc) rank_num + from n_kosdaq_online y, n_kosdaq_stock z + where y.f_stock_code = z.f_stock_code + and z.f_stop_gubun = 'N') b + WHERE a.f_stock_code = b.f_stock_code + AND a.f_stock_code = '{0}'"; + + // PBR + string queryKOSPI3 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.pbr, a.per, a.bps, a.eps + FROM V_2 A + WHERE a.stock_code = '{0}'"; + + // PBR_코스닥 + string queryKOSDAQ3 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.pbr, a.per, a.bps, a.eps + FROM V_2_kosdaq A + WHERE a.stock_code = '{0}'"; + + // PBR_NXT + string queryNXT_KOSPI3 = + @"SELECT a.f_stock_code stock_code, b.f_stock_name stock_name, a.f_curr_price curr_price, + case when a.f_chg_type = '1' then '상한' when a.f_chg_type = '2' then '상승' when a.f_chg_type = '3' then '보합' + when a.f_chg_type = '4' then '하한' when a.f_chg_type = '5' then '하락' end chg_type, a.f_net_chg chg_type, a.f_net_chg net_chg, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate , + 0 pbr, 0 per, 0 bps, 0 eps + FROM n_online a, n_stock b + WHERE a.f_stock_code = b.f_stock_code + AND a.f_stock_code = '{0}'"; + + // PBR_코스닥 + string queryNXT_KOSDAQ3 = + @"SELECT a.f_stock_code stock_code, b.f_stock_name stock_name, a.f_curr_price curr_price, + case when a.f_chg_type = '1' then '상한' when a.f_chg_type = '2' then '상승' when a.f_chg_type = '3' then '보합' + when a.f_chg_type = '4' then '하한' when a.f_chg_type = '5' then '하락' end chg_type, a.f_net_chg chg_type, a.f_net_chg net_chg, + round((a.f_net_chg / case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate , + 0 pbr, 0 per, 0 bps, 0 eps + FROM n_kosdaq_online a, n_kosdaq_stock b + WHERE a.f_stock_code = b.f_stock_code + AND a.f_stock_code = '{0}'"; + + // 거래량 + string queryKOSPI4 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.net_vol, a.net_turnover, nvl(c.avg_5,0) avg_5, nvl(d.avg_20,0) avg_20 + FROM V_2 a, + (SELECT b.f_stock_code, round((SUM(a.F_CURR_PRICE) + b.f_curr_price) / 5) avg_5 + FROM (SELECT f_stock_code, f_curr_price + FROM T_CANDLE_HISTORY + WHERE F_DATA_DATE < (select max(open_day) from v_open_day) + AND f_stock_code = '{0}' + AND ROWNUM < 5 + ORDER BY F_DATA_DATE DESC) a, t_online1 b + WHERE a.f_stock_code = b.f_stock_code + GROUP by b.f_stock_code, b.f_curr_price) c, + (SELECT b.f_stock_code, round((SUM(a.F_CURR_PRICE) + b.f_curr_price) / 20) avg_20 + FROM (SELECT f_stock_code, b1.f_curr_price + FROM T_CANDLE_HISTORY b1 + WHERE F_DATA_DATE < (select max(open_day) from v_open_day) + AND f_stock_code = '{1}' + AND ROWNUM < 20 + ORDER BY F_DATA_DATE DESC) a, t_online1 b + WHERE a.f_stock_code = b.f_stock_code + GROUP by b.f_stock_code, b.f_curr_price) d + WHERE a.stock_code = c.f_stock_code (+) + AND a.stock_code = d.f_stock_code (+) + AND a.stock_code = '{1}' "; + + // 거래량_코스닥 + string queryKOSDAQ4 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.net_vol, a.net_turnover, nvl(c.avg_5,0) avg_5, nvl(d.avg_20,0) avg_20 + FROM V_2_kosdaq a, + (SELECT b.f_stock_code, round((SUM(a.F_CURR_PRICE) + b.f_curr_price) / 5) avg_5 + FROM (SELECT f_stock_code, f_curr_price + FROM T_kosdaq_CANDLE_HISTORY + WHERE F_DATA_DATE < (select max(open_day) from v_open_day) + AND f_stock_code = '{0}' + AND ROWNUM < 5 + ORDER BY F_DATA_DATE DESC) a, t_kosdaq_online1 b + WHERE a.f_stock_code = b.f_stock_code + GROUP by b.f_stock_code, b.f_curr_price) c, + (SELECT b.f_stock_code, round((SUM(a.F_CURR_PRICE) + b.f_curr_price) / 20) avg_20 + FROM (SELECT f_stock_code, b1.f_curr_price + FROM T_kosdaq_CANDLE_HISTORY b1 + WHERE F_DATA_DATE < (select max(open_day) from v_open_day) + AND f_stock_code = '{1}' + AND ROWNUM < 20 + ORDER BY F_DATA_DATE DESC) a, t_kosdaq_online1 b + WHERE a.f_stock_code = b.f_stock_code + GROUP by b.f_stock_code, b.f_curr_price) d + WHERE a.stock_code = c.f_stock_code (+) + AND a.stock_code = d.f_stock_code (+) + AND a.stock_code = '{1}' "; + + // 거래량_NXT + string queryNXT_KOSPI4 = @"SELECT a.f_stock_code stock_code, z.f_stock_name stock_name, a.f_curr_price curr_price, + case when a.f_chg_type = '1' then '상한' when a.f_chg_type = '2' then '상승' when a.f_chg_type = '3' then '보합' when a.f_chg_type = '4' then '하한' when a.f_chg_type = '5' then '하락' end chg_type, a.f_net_chg net_chg, + round((a.f_net_chg / + case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate , + a.f_net_vol net_vol, a.f_net_turnover net_turnover, 0 avg_5, 0 avg_20 + FROM n_online a, n_stock z + WHERE a.f_stock_code = z.f_stock_code + AND a.f_stock_code = '{1}' "; + + // 거래량_코스닥 + string queryNXT_KOSDAQ4 = @"SELECT a.f_stock_code stock_code, z.f_stock_name stock_name, a.f_curr_price curr_price, + case when a.f_chg_type = '1' then '상한' when a.f_chg_type = '2' then '상승' when a.f_chg_type = '3' then '보합' when a.f_chg_type = '4' then '하한' when a.f_chg_type = '5' then '하락' end chg_type, a.f_net_chg net_chg, + round((a.f_net_chg / + case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate , + a.f_net_vol net_vol, a.f_net_turnover net_turnover, 0 avg_5, 0 avg_20 + FROM n_kosdaq_online a, n_kosdaq_stock z + WHERE a.f_stock_code = z.f_stock_code + AND a.f_stock_code = '{1}' "; + + #endregion + + public override Nxt_IDataRequest Nxt_buildData() + { + string bufQuery = ""; + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + switch (this.mDataType2) + { + case 상세판데이터분류.시가: + bufQuery = String.Format(queryKOSPI1, mStockCode); + break; + case 상세판데이터분류.액면가: + bufQuery = String.Format(queryKOSPI2, mStockCode); + break; + case 상세판데이터분류.PBR: + bufQuery = String.Format(queryKOSPI3, mStockCode); + break; + case 상세판데이터분류.거래량: + bufQuery = String.Format(queryKOSPI4, mStockCode, mStockCode); + break; + } + break; + case 국내시장종류.KOSDAQ: + + switch (this.mDataType2) + { + case 상세판데이터분류.시가: + bufQuery = String.Format(queryKOSDAQ1, mStockCode); + break; + case 상세판데이터분류.액면가: + bufQuery = String.Format(queryKOSDAQ2, mStockCode); + break; + case 상세판데이터분류.PBR: + bufQuery = String.Format(queryKOSDAQ3, mStockCode); + break; + case 상세판데이터분류.거래량: + bufQuery = String.Format(queryKOSDAQ4, mStockCode, mStockCode); + break; + } + break; + case 국내시장종류.NXT_KOSPI: + switch (this.mDataType2) + { + case 상세판데이터분류.시가: + bufQuery = String.Format(queryNXT_KOSPI1, mStockCode); + break; + case 상세판데이터분류.액면가: + bufQuery = String.Format(queryNXT_KOSPI2, mStockCode); + break; + case 상세판데이터분류.PBR: + bufQuery = String.Format(queryNXT_KOSPI3, mStockCode); + break; + case 상세판데이터분류.거래량: + bufQuery = String.Format(queryNXT_KOSPI4, mStockCode, mStockCode); + break; + } + break; + case 국내시장종류.NXT_KOSDAQ: + + switch (this.mDataType2) + { + case 상세판데이터분류.시가: + bufQuery = String.Format(queryNXT_KOSDAQ1, mStockCode); + break; + case 상세판데이터분류.액면가: + bufQuery = String.Format(queryNXT_KOSDAQ2, mStockCode); + break; + case 상세판데이터분류.PBR: + bufQuery = String.Format(queryNXT_KOSDAQ3, mStockCode); + break; + case 상세판데이터분류.거래량: + bufQuery = String.Format(queryNXT_KOSDAQ4, mStockCode, mStockCode); + break; + } + break; + } + + Nxt_mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판데이터기본/SANGSE_PAN.cs b/MBN_STOCK_N/Data/Request/판데이터기본/SANGSE_PAN.cs new file mode 100644 index 0000000..63bf630 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판데이터기본/SANGSE_PAN.cs @@ -0,0 +1,199 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class SANGSE_PAN : ADataObject + { + + internal SANGSE_PAN(국내시장종류 recvDataType, 상세판데이터분류 recvDataType2, string recvStockCode) + { + this.mDataType = recvDataType; + this.mDataType2 = recvDataType2; + this.mStockCode = recvStockCode; + } + + 국내시장종류 mDataType; + + 상세판데이터분류 mDataType2; + + string mStockCode = ""; + + #region 쿼리 + // string queryKOSPI1 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + //a.init_price, round(((a.init_price - a.final_price) / a.final_price) * 100, 2) init_rate, + //a.high_price, round(((a.high_price - a.final_price) / a.final_price) * 100, 2) high_rate, + //a.low_price, round(((a.low_price - a.final_price) / a.final_price) * 100, 2) low_rate + //FROM V_2 a + //WHERE a.stock_code = '{0}'"; + + string queryKOSPI1 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.init_price, decode(a.final_price, 0, round(((a.init_price - a.base_price) / a.base_price) * 100,2), + round(((a.init_price - a.final_price) / a.final_price) * 100,2)) init_rate, + a.high_price, decode(a.final_price, 0, round(((a.high_price - a.base_price) / a.base_price) * 100,2), + round(((a.high_price - a.final_price) / a.final_price) * 100,2)) high_rate, + a.low_price, decode(a.final_price, 0, round(((a.low_price - a.base_price) / a.base_price) * 100,2), + round(((a.low_price - a.final_price) / a.final_price) * 100,2)) low_rate + FROM V_2 a + WHERE a.stock_code = '{0}'"; + + + // string queryKOSDAQ1 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + //a.init_price, round(((a.init_price - a.final_price) / a.final_price) * 100, 2) init_rate, + //a.high_price, round(((a.high_price - a.final_price) / a.final_price) * 100, 2) high_rate, + //a.low_price, round(((a.low_price - a.final_price) / a.final_price) * 100, 2) low_rate + //FROM V_2_kosdaq a + //WHERE a.stock_code = '{0}'"; + + string queryKOSDAQ1 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.init_price, decode(a.final_price, 0, round(((a.init_price - a.base_price) / a.base_price) * 100,2), + round(((a.init_price - a.final_price) / a.final_price) * 100,2)) init_rate, + a.high_price, decode(a.final_price, 0, round(((a.high_price - a.base_price) / a.base_price) * 100,2), + round(((a.high_price - a.final_price) / a.final_price) * 100,2)) high_rate, + a.low_price, decode(a.final_price, 0, round(((a.low_price - a.base_price) / a.base_price) * 100,2), + round(((a.low_price - a.final_price) / a.final_price) * 100,2)) low_rate + FROM V_2_kosdaq a + WHERE a.stock_code = '{0}'"; + + + string queryKOSPI2 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.list_price, a.capital_price, a.siga_price, b.rank_num + FROM V_2 A, + (select z.f_stock_code stock_code, + rank() over(order by(z.f_list_num * y.f_curr_price) desc) rank_num + from t_online1 y, t_stock z + where y.f_stock_code = z.f_stock_code and z.f_mkt_halt = 'N') B + WHERE a.stock_code = b.stock_code + and a.stock_code = '{0}'"; + + string queryKOSDAQ2 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.list_price, a.capital_price, a.siga_price, b.rank_num + FROM V_2_kosdaq A, + (select z.f_stock_code stock_code, + rank() over(order by(z.f_list_num * y.f_curr_price) desc) rank_num + from t_kosdaq_online1 y, t_kosdaq_stock z + where y.f_stock_code = z.f_stock_code and z.f_mkt_halt = 'N') B + WHERE a.stock_code = b.stock_code + and a.stock_code = '{0}'"; + + string queryKOSPI3 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.pbr, a.per, a.bps, a.eps + FROM V_2 A + WHERE a.stock_code = '{0}'"; + + string queryKOSDAQ3 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.pbr, a.per, a.bps, a.eps + FROM V_2_kosdaq A + WHERE a.stock_code = '{0}'"; + + string queryKOSPI4 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.net_vol, a.net_turnover, nvl(c.avg_5,0) avg_5, nvl(d.avg_20,0) avg_20 + FROM V_2 a, + (SELECT b.f_stock_code, round((SUM(a.F_CURR_PRICE) + b.f_curr_price) / 5) avg_5 + FROM (SELECT f_stock_code, f_curr_price + FROM T_CANDLE_HISTORY + WHERE F_DATA_DATE < (select max(open_day) from v_open_day) + AND f_stock_code = '{0}' + AND ROWNUM < 5 + ORDER BY F_DATA_DATE DESC) a, t_online1 b + WHERE a.f_stock_code = b.f_stock_code + GROUP by b.f_stock_code, b.f_curr_price) c, + (SELECT b.f_stock_code, round((SUM(a.F_CURR_PRICE) + b.f_curr_price) / 20) avg_20 + FROM (SELECT f_stock_code, b1.f_curr_price + FROM T_CANDLE_HISTORY b1 + WHERE F_DATA_DATE < (select max(open_day) from v_open_day) + AND f_stock_code = '{1}' + AND ROWNUM < 20 + ORDER BY F_DATA_DATE DESC) a, t_online1 b + WHERE a.f_stock_code = b.f_stock_code + GROUP by b.f_stock_code, b.f_curr_price) d + WHERE a.stock_code = c.f_stock_code (+) + AND a.stock_code = d.f_stock_code (+) + AND a.stock_code = '{1}' "; + + string queryKOSDAQ4 = @"SELECT a.stock_code, a.stock_name, a.curr_price, a.chg_type, a.net_chg, a.rate, + a.net_vol, a.net_turnover, nvl(c.avg_5,0) avg_5, nvl(d.avg_20,0) avg_20 + FROM V_2_kosdaq a, + (SELECT b.f_stock_code, round((SUM(a.F_CURR_PRICE) + b.f_curr_price) / 5) avg_5 + FROM (SELECT f_stock_code, f_curr_price + FROM T_kosdaq_CANDLE_HISTORY + WHERE F_DATA_DATE < (select max(open_day) from v_open_day) + AND f_stock_code = '{0}' + AND ROWNUM < 5 + ORDER BY F_DATA_DATE DESC) a, t_kosdaq_online1 b + WHERE a.f_stock_code = b.f_stock_code + GROUP by b.f_stock_code, b.f_curr_price) c, + (SELECT b.f_stock_code, round((SUM(a.F_CURR_PRICE) + b.f_curr_price) / 20) avg_20 + FROM (SELECT f_stock_code, b1.f_curr_price + FROM T_kosdaq_CANDLE_HISTORY b1 + WHERE F_DATA_DATE < (select max(open_day) from v_open_day) + AND f_stock_code = '{1}' + AND ROWNUM < 20 + ORDER BY F_DATA_DATE DESC) a, t_kosdaq_online1 b + WHERE a.f_stock_code = b.f_stock_code + GROUP by b.f_stock_code, b.f_curr_price) d + WHERE a.stock_code = c.f_stock_code (+) + AND a.stock_code = d.f_stock_code (+) + AND a.stock_code = '{1}' "; + + + + #endregion + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + switch (this.mDataType2) + { + case 상세판데이터분류.시가: + bufQuery = String.Format(queryKOSPI1, mStockCode); + break; + case 상세판데이터분류.액면가: + bufQuery = String.Format(queryKOSPI2, mStockCode); + break; + case 상세판데이터분류.PBR: + bufQuery = String.Format(queryKOSPI3, mStockCode); + break; + case 상세판데이터분류.거래량: + bufQuery = String.Format(queryKOSPI4, mStockCode, mStockCode); + break; + } + break; + case 국내시장종류.KOSDAQ: + + switch (this.mDataType2) + { + case 상세판데이터분류.시가: + bufQuery = String.Format(queryKOSDAQ1, mStockCode); + break; + case 상세판데이터분류.액면가: + bufQuery = String.Format(queryKOSDAQ2, mStockCode); + break; + case 상세판데이터분류.PBR: + bufQuery = String.Format(queryKOSDAQ3, mStockCode); + break; + case 상세판데이터분류.거래량: + bufQuery = String.Format(queryKOSDAQ4, mStockCode, mStockCode); + break; + } + break; + } + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판데이터기본/업종/INDUSTRY_FORGIEN_PAN.cs b/MBN_STOCK_N/Data/Request/판데이터기본/업종/INDUSTRY_FORGIEN_PAN.cs new file mode 100644 index 0000000..9165766 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판데이터기본/업종/INDUSTRY_FORGIEN_PAN.cs @@ -0,0 +1,47 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class INDUSTRY_FORGIEN_PAN : ADataObject + { + + public INDUSTRY_FORGIEN_PAN(string recvCode) + { + this.mDataCode = recvCode; + } + + string mDataCode = ""; + + /// + /// 금일 데이터 쿼리 + /// + string queryToday = @"SELECT b.f_knam part_name, + a.f_last part_idx, + a.f_sign chg_type, + ABS(round(a.f_diff, 2)) part_chg, + round(a.f_rate, 2) rate + FROM t_world_ix_eq_sise a, t_world_ix_eq_master b + WHERE a.f_symb = b.f_symb + and b.f_knam = '{0}'"; + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + bufQuery += String.Format(queryToday, mDataCode); + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판데이터기본/업종/INDUSTRY_PAN.cs b/MBN_STOCK_N/Data/Request/판데이터기본/업종/INDUSTRY_PAN.cs new file mode 100644 index 0000000..f797ae7 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판데이터기본/업종/INDUSTRY_PAN.cs @@ -0,0 +1,66 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class INDUSTRY_PAN : ADataObject + { + + + internal INDUSTRY_PAN(국내시장종류 recvDataType, string recvStockCode) + { + this.mDataType = recvDataType; + this.mDataCode = recvStockCode; + } + + 국내시장종류 mDataType; + + string mDataCode = String.Empty; + + #region "쿼리" + + string queryKOSPI = @"SELECT b.f_part_name, + round(a.f_part_idx / 100, 2) part_idx, a.f_chg_type chg_type, round(a.f_part_chg / 100, 2) part_chg, + round((a.f_part_chg / decode(a.f_chg_type, '+', a.f_part_idx - a.f_part_chg, '-', a.f_part_idx + a.f_part_chg)) * 100, 2) rate + FROM t_index a, t_part b + WHERE a.f_part_code = b.f_part_code + and b.f_part_name = '{0}'"; + + string queryKOSDAQ = @"SELECT b.f_part_name, + round(a.f_part_idx / 100, 2) part_idx, a.f_chg_type chg_type, round(a.f_part_chg / 100, 2) part_chg, + round((a.f_part_chg / decode(a.f_chg_type, '+', a.f_part_idx - a.f_part_chg, '-', a.f_part_idx + a.f_part_chg)) * 100, 2) rate + FROM t_kosdaq_index a, t_kosdaq_part b + WHERE a.f_part_code = b.f_part_code + and b.f_part_name = '{0}'"; + + #endregion + + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + switch (mDataType) + { + case 국내시장종류.KOSPI: + bufQuery = string.Format(queryKOSPI, mDataCode); + break; + case 국내시장종류.KOSDAQ: + bufQuery = string.Format(queryKOSDAQ, mDataCode); + break; + } + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판데이터기본/종목/Nxt_STOCK_PAN.cs b/MBN_STOCK_N/Data/Request/판데이터기본/종목/Nxt_STOCK_PAN.cs new file mode 100644 index 0000000..9327662 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판데이터기본/종목/Nxt_STOCK_PAN.cs @@ -0,0 +1,122 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Nxt_STOCK_PAN : Nxt_ADataObject + { + + internal Nxt_STOCK_PAN(국내시장종류 recvDataType, string recvStockCode) + { + this.mDataType = recvDataType; + this.mDataCode = recvStockCode; + } + + 국내시장종류 mDataType; + + string mDataCode = String.Empty; + + #region "쿼리" + + string queryNXT_KOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME stock_name , a.f_curr_price curr_price, + ABS(a.f_net_chg) net_chg, + case when a.f_chg_type = '1' then '상한' when a.f_chg_type = '2' then '상승' when a.f_chg_type = '3' then '보합' + when a.f_chg_type = '4' then '하한' when a.f_chg_type = '5' then '하락' end chg_type, a.f_net_vol net_vol, + round((a.f_net_chg / + case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate , 'NXT_KOSPI' market + FROM n_online a, n_stock b + WHERE b.f_stop_gubun = 'N' + AND a.f_curr_price != 0 + AND a.f_stock_code = b.f_stock_code + and b.f_STOCK_name = '{0}'"; + + string queryNXT_KOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME stock_name , a.f_curr_price curr_price, a.f_net_chg net_chg, + case when a.f_chg_type = '1' then '상한' when a.f_chg_type = '2' then '상승' when a.f_chg_type = '3' then '보합' + when a.f_chg_type = '4' then '하한' when a.f_chg_type = '5' then '하락' end chg_type, a.f_net_vol net_vol, + round((a.f_net_chg / + case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate , 'NXT_KOSDAQ' market + FROM n_kosdaq_online a, n_kosdaq_stock b + WHERE b.f_stop_gubun = 'N' + AND a.f_curr_price != 0 + AND a.f_stock_code = b.f_stock_code + and b.f_STOCK_name = '{0}'"; + + // string queryNXT_Dis = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME stock_name , a.f_curr_price curr_price, + //ABS(a.f_net_chg) net_chg, + //case when a.f_chg_type = '1' then '상한' when a.f_chg_type = '2' then '상승' when a.f_chg_type = '3' then '보합' + // when a.f_chg_type = '4' then '하한' when a.f_chg_type = '5' then '하락' end chg_type, a.f_net_vol net_vol, + //round((a.f_net_chg / + // case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + // when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + // when a.f_chg_type = '3' then (a.f_curr_price) + // when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + // when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate , , 'NXT_KOSPI' market + //FROM n_stop_online a, n_stock b + //WHERE b.f_stop_gubun = 'Y' + //AND a.f_curr_price != 0 + //AND a.f_stock_code = b.f_stock_code + //and b.f_STOCK_name = '{0}'"; + + // string queryNXT_Disk = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME stock_name , a.f_curr_price curr_price, + //ABS(a.f_net_chg) net_chg, + //case when a.f_chg_type = '1' then '상한' when a.f_chg_type = '2' then '상승' when a.f_chg_type = '3' then '보합' + // when a.f_chg_type = '4' then '하한' when a.f_chg_type = '5' then '하락' end chg_type, a.f_net_vol net_vol, + //round((a.f_net_chg / + // case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + // when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + // when a.f_chg_type = '3' then (a.f_curr_price) + // when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + // when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate , 'NXT_KOSDAQ' market + //FROM n_stop_kosdaq_online a, t_kosdaq_stock b + //WHERE b.f_stop_gubun = 'Y' + //AND a.f_curr_price != 0 + //AND a.f_stock_code = b.f_stock_code + //and b.f_STOCK_name = '{0}'"; + + + #endregion + + + public override Nxt_IDataRequest Nxt_buildData() + { + + string bufQuery = ""; + + switch (mDataType) + { + case 국내시장종류.NXT_KOSPI: + bufQuery = string.Format(queryNXT_KOSPI, mDataCode); + break; + case 국내시장종류.NXT_KOSDAQ: + bufQuery = string.Format(queryNXT_KOSDAQ, mDataCode); + break; + //case 국내시장종류.거래정지: + // bufQuery = string.Format(queryNXT_Dis, mDataCode); + // break; + //case 국내시장종류.거래정지K: + // bufQuery = string.Format(queryNXT_Disk, mDataCode); + // break; + } + + Nxt_mRequestQuery.Add("", bufQuery); + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판데이터기본/종목/STOCK_FORECAST_PAN.cs b/MBN_STOCK_N/Data/Request/판데이터기본/종목/STOCK_FORECAST_PAN.cs new file mode 100644 index 0000000..abc7353 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판데이터기본/종목/STOCK_FORECAST_PAN.cs @@ -0,0 +1,108 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class STOCK_FORECAST_PAN : ADataObject + { + + + internal STOCK_FORECAST_PAN(국내시장종류 recvDataType, string recvStockCode) + { + this.mDataType = recvDataType; + this.mDataCode = recvStockCode; + } + + 국내시장종류 mDataType; + + string mDataCode = String.Empty; + + #region "쿼리" + + string queryKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.f_stock_nickname nickname, b.F_STOCK_WANNAME wanname, a.f_fore_price curr_price, + a.f_fore_vol net_vol, c.f_final_price final_price, + ABS(a.f_fore_price - c.f_final_price) net_chg, '' f_net_chg, + case when(a.f_fore_price - c.f_final_price) > 0 then '+' + when(a.f_fore_price - c.f_final_price) = 0 then '' + when(a.f_fore_price - c.f_final_price) < 0 then '-' end chg_type, + round(((a.f_fore_price - c.f_final_price) / c.f_final_price) * 100, 2) rate + FROM t_online1_call a, t_stock b, t_batch_day c + WHERE b.f_stock_code = a.f_stock_code + AND c.f_stock_code = a.f_stock_code + AND b.f_mkt_halt = 'N' + and b.f_STOCK_wanname = '{0}' + and a.f_fore_price <> 0"; + ////////// string queryKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.f_stock_nickname nickname, b.F_STOCK_WANNAME wanname, a.f_fore_price curr_price, + //////////a.f_fore_vol net_vol, c.f_final_price final_price, + //////////a.f_fore_price - c.f_final_price net_chg, a.f_net_chg, + //////////case when(a.f_fore_price - c.f_final_price) > 0 then '+' + //////////when(a.f_fore_price - c.f_final_price) = 0 then '' + //////////when(a.f_fore_price - c.f_final_price) < 0 then '-' end chg_type, + //////////round(((a.f_fore_price - c.f_final_price) / c.f_final_price) * 100, 2) rate + //////////FROM t_online1 a, t_stock b, t_batch_day c + //////////WHERE b.f_stock_code = a.f_stock_code + //////////AND c.f_stock_code = a.f_stock_code + //////////AND b.f_mkt_halt = 'N' + //////////and b.f_STOCK_wanname = '{0}' + ////////// and a.f_fore_price <> 0"; +// and a.f_fore_price < > 0"; + + string queryKOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.f_stock_nickname nickname, b.F_STOCK_WANNAME wanname, a.f_fore_price curr_price, + a.f_fore_vol net_vol, c.f_final_price final_price, + ABS(a.f_fore_price - c.f_final_price) net_chg, '' f_net_chg, + case when(a.f_fore_price - c.f_final_price) > 0 then '+' + when(a.f_fore_price - c.f_final_price) = 0 then '' + when(a.f_fore_price - c.f_final_price) < 0 then '-' end chg_type, + round(((a.f_fore_price - c.f_final_price) / c.f_final_price) * 100, 2) rate + FROM t_kosdaq_online1_call a, t_kosdaq_stock b, t_kosdaq_batch_day c + WHERE a.f_stock_code = b.f_stock_code + AND b.f_mkt_halt = 'N' + AND c.f_stock_code = b.f_stock_code + and b.f_stock_wanname = '{0}' + and a.f_fore_price <> 0"; + //////////////// string queryKOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.f_stock_nickname nickname, b.F_STOCK_WANNAME wanname, a.f_fore_price curr_price, + ////////////////a.f_fore_vol net_vol, c.f_final_price final_price, + ////////////////a.f_fore_price - c.f_final_price net_chg, a.f_net_chg, + ////////////////case when(a.f_fore_price - c.f_final_price) > 0 then '+' + ////////////////when(a.f_fore_price - c.f_final_price) = 0 then '' + ////////////////when(a.f_fore_price - c.f_final_price) < 0 then '-' end chg_type, + ////////////////round(((a.f_fore_price - c.f_final_price) / c.f_final_price) * 100, 2) rate + ////////////////FROM t_kosdaq_online1 a, t_kosdaq_stock b, t_kosdaq_batch_day c + ////////////////WHERE a.f_stock_code = b.f_stock_code + ////////////////AND b.f_mkt_halt = 'N' + ////////////////AND c.f_stock_code = b.f_stock_code + ////////////////and b.f_stock_wanname = '{0}' + //////////////// and a.f_fore_price <> 0"; + //////////////// // and a.f_fore_price < > 0"; + + #endregion + + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + switch (mDataType) + { + case 국내시장종류.KOSPI: + bufQuery = string.Format(queryKOSPI, mDataCode); + break; + case 국내시장종류.KOSDAQ: + bufQuery = string.Format(queryKOSDAQ, mDataCode); + break; + } + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판데이터기본/종목/STOCK_FORGIEN_PAN.cs b/MBN_STOCK_N/Data/Request/판데이터기본/종목/STOCK_FORGIEN_PAN.cs new file mode 100644 index 0000000..2c711d1 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판데이터기본/종목/STOCK_FORGIEN_PAN.cs @@ -0,0 +1,47 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class STOCK_FORGIEN_PAN : ADataObject + { + + public STOCK_FORGIEN_PAN(string recvCode) + { + this.mDataCode = recvCode; + } + + string mDataCode = ""; + + /// + /// 금일 데이터 쿼리 + /// + string queryToday = @"SELECT b.f_input_name part_name, + a.f_last part_idx, + a.f_sign chg_type, + ABS(round(a.f_diff, 2)) part_chg, + round(a.f_rate, 2) rate + FROM t_world_ix_eq_sise a, t_world_ix_eq_master b + WHERE a.f_symb = b.f_symb + and b.f_input_name = '{0}'"; + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + bufQuery += String.Format(queryToday, mDataCode); + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판데이터기본/종목/STOCK_OVERTIME_PAN.cs b/MBN_STOCK_N/Data/Request/판데이터기본/종목/STOCK_OVERTIME_PAN.cs new file mode 100644 index 0000000..f156e21 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판데이터기본/종목/STOCK_OVERTIME_PAN.cs @@ -0,0 +1,116 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class STOCK_OVERTIME_PAN : ADataObject + { + + + internal STOCK_OVERTIME_PAN(국내시장종류 recvDataType, string recvStockCode) + { + this.mDataType = recvDataType; + this.mDataCode = recvStockCode; + } + + 국내시장종류 mDataType; + + string mDataCode = String.Empty; + + #region "쿼리" + + // string queryKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.f_stock_nickname nickname, b.F_STOCK_WANNAME wanname, a.f_fore_price curr_price, + //a.f_fore_vol net_vol, c.f_final_price final_price, + //ABS(a.f_fore_price - c.f_final_price) net_chg, '' f_net_chg, + //case when(a.f_fore_price - c.f_final_price) > 0 then '+' + //when(a.f_fore_price - c.f_final_price) = 0 then '' + //when(a.f_fore_price - c.f_final_price) < 0 then '-' end chg_type, + //round(((a.f_fore_price - c.f_final_price) / c.f_final_price) * 100, 2) rate + //FROM t_online1_call a, t_stock b, t_batch_day c + //WHERE b.f_stock_code = a.f_stock_code + //AND c.f_stock_code = a.f_stock_code + //AND b.f_mkt_halt = 'N' + //and b.f_STOCK_wanname = '{0}' + // and a.f_fore_price <> 0"; + string queryKOSPI = @"SELECT DISTINCT + b.f_stock_code stock_code, + b.F_STOCK_WANNAME wanname, + a.f_net_chg net_chg, + decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') chg_type, + a.f_curr_price, + round( + a.f_net_chg / decode(a.f_chg_type, '1', a.f_curr_price - a.f_net_chg, + '2', a.f_curr_price - a.f_net_chg, '3', a.f_curr_price, + '4', -1 * (a.f_curr_price + a.f_net_chg), + '5', -1 * (a.f_curr_price + a.f_net_chg)) * 100, 2) rate + FROM t_overtime_sise a, t_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price < > 0 + AND b.f_sect_code = 'ST' + AND b.f_STOCK_wanname = '{0}' + ORDER BY rate DESC"; + + // string queryKOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.f_stock_nickname nickname, b.F_STOCK_WANNAME wanname, a.f_fore_price curr_price, + //a.f_fore_vol net_vol, c.f_final_price final_price, + //ABS(a.f_fore_price - c.f_final_price) net_chg, '' f_net_chg, + //case when(a.f_fore_price - c.f_final_price) > 0 then '+' + //when(a.f_fore_price - c.f_final_price) = 0 then '' + //when(a.f_fore_price - c.f_final_price) < 0 then '-' end chg_type, + //round(((a.f_fore_price - c.f_final_price) / c.f_final_price) * 100, 2) rate + //FROM t_kosdaq_online1_call a, t_kosdaq_stock b, t_kosdaq_batch_day c + //WHERE a.f_stock_code = b.f_stock_code + //AND b.f_mkt_halt = 'N' + //AND c.f_stock_code = b.f_stock_code + //and b.f_stock_wanname = '{0}' + // and a.f_fore_price <> 0"; + string queryKOSDAQ = @"SELECT DISTINCT + b.f_stock_code stock_code, + b.F_STOCK_WANNAME wanname, + a.f_net_chg net_chg, + decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') chg_type, + a.f_curr_price, + round( + a.f_net_chg / decode(a.f_chg_type, '1', a.f_curr_price - a.f_net_chg, + '2', a.f_curr_price - a.f_net_chg, '3', a.f_curr_price, + '4', -1 * (a.f_curr_price + a.f_net_chg), + '5', -1 * (a.f_curr_price + a.f_net_chg)) * 100, 2) rate + FROM t_kosdaq_overtime_sise a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_stock_code = b.f_stock_code + AND a.f_curr_price < > 0 + AND b.f_sect_code = 'ST' + AND b.f_STOCK_wanname = '{0}' + ORDER BY rate DESC"; + + #endregion + + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + switch (mDataType) + { + case 국내시장종류.KOSPI: + bufQuery = string.Format(queryKOSPI, mDataCode); + break; + case 국내시장종류.KOSDAQ: + bufQuery = string.Format(queryKOSDAQ, mDataCode); + break; + } + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판데이터기본/종목/STOCK_PAN.cs b/MBN_STOCK_N/Data/Request/판데이터기본/종목/STOCK_PAN.cs new file mode 100644 index 0000000..b4b7bd9 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판데이터기본/종목/STOCK_PAN.cs @@ -0,0 +1,162 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class STOCK_PAN : ADataObject + { + + internal STOCK_PAN(국내시장종류 recvDataType, string recvStockCode) + { + this.mDataType = recvDataType; + this.mDataCode = recvStockCode; + } + + 국내시장종류 mDataType; + + string mDataCode = String.Empty; + + #region "쿼리" + + string queryKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME stock_name , a.f_curr_price curr_price, + ABS(a.f_net_chg) net_chg, + decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') chg_type, a.f_net_vol net_vol, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate , 'KOSPI' market + FROM t_online1 a, t_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + and b.f_STOCK_wanname = '{0}'"; + + string queryKOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME stock_name , a.f_curr_price curr_price, a.f_net_chg net_chg, + decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') chg_type, a.f_net_vol net_vol, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate , 'KOSDAQ' market + FROM t_kosdaq_online1 a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + and b.f_STOCK_wanname = '{0}'"; + + string queryNXTKOSPI = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME stock_name , a.f_curr_price curr_price, + ABS(a.f_net_chg) net_chg, + case when a.f_chg_type = '1' then '상한' when a.f_chg_type = '2' then '상승' when a.f_chg_type = '3' then '보합' + when a.f_chg_type = '4' then '하한' when a.f_chg_type = '5' then '하락' end chg_type, a.f_net_vol net_vol, + round((a.f_net_chg / + case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate , 'KOSPI' market + FROM n_online a, n_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price != 0 + AND a.f_stock_code = b.f_stock_code + and b.f_STOCK_name = '{0}'"; + + string queryNXTKOSDAQ = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_NAME stock_name , a.f_curr_price curr_price, a.f_net_chg net_chg, + case when a.f_chg_type = '1' then '상한' when a.f_chg_type = '2' then '상승' when a.f_chg_type = '3' then '보합' + when a.f_chg_type = '4' then '하한' when a.f_chg_type = '5' then '하락' end chg_type, a.f_net_vol net_vol, + round((a.f_net_chg / + case when a.f_chg_type = '1' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '2' then (a.f_curr_price - a.f_net_chg) + when a.f_chg_type = '3' then (a.f_curr_price) + when a.f_chg_type = '4' then -1*(a.f_curr_price + a.f_net_chg) + when a.f_chg_type = '5' then -1*(a.f_curr_price + a.f_net_chg) end) * 100, 2) rate , 'KOSDAQ' market + FROM n_kosdaq_online a, n_kosdaq_stock b + WHERE b.f_mkt_halt = 'N' + AND a.f_curr_price != 0 + AND a.f_stock_code = b.f_stock_code + and b.f_STOCK_name = '{0}'"; + + string queryDis = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME stock_name , a.f_curr_price curr_price, + ABS(a.f_net_chg) net_chg, + decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') chg_type, a.f_net_vol net_vol, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1 * (a.f_curr_price + a.f_net_chg), + '5', -1 * (a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_stop_online1 a, t_stock b + WHERE b.f_mkt_halt = 'Y' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + and b.f_STOCK_wanname = '{0}'"; + + string queryDisk = @"SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME stock_name , a.f_curr_price curr_price, + ABS(a.f_net_chg) net_chg, + decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') chg_type, a.f_net_vol net_vol, + round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), + '2', (a.f_curr_price - a.f_net_chg), + '3', (a.f_curr_price), + '4', -1 * (a.f_curr_price + a.f_net_chg), + '5', -1 * (a.f_curr_price + a.f_net_chg))) * 100, 2) rate + FROM t_stop_kosdaq_online1 a, t_kosdaq_stock b + WHERE b.f_mkt_halt = 'Y' + AND a.f_curr_price < > 0 + AND a.f_stock_code = b.f_stock_code + and b.f_STOCK_wanname = '{0}'"; + + + // SELECT DISTINCT b.f_stock_code stock_code, b.F_STOCK_WANNAME stock_name, a.f_curr_price curr_price, \ + + // ABS(a.f_net_chg) net_chg, \ + //decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') chg_type, \ + //round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), \ + // '2', (a.f_curr_price - a.f_net_chg), \ + // '3', (a.f_curr_price), \ + // '4', -1 * (a.f_curr_price + a.f_net_chg), \ + // '5', -1 * (a.f_curr_price + a.f_net_chg))) * 100, 2) rate \ + //FROM t_stop_kosdaq_online1 a, t_kosdaq_stock b \ + + // WHERE b.f_mkt_halt = 'Y' \ + //AND a.f_curr_price<> 0 \ + + // AND a.f_stock_code = b.f_stock_code \ + + // AND b.f_stock_wanname = '%s'" + #endregion + + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + switch (mDataType) + { + case 국내시장종류.KOSPI: + bufQuery = string.Format(queryKOSPI, mDataCode); + break; + case 국내시장종류.KOSDAQ: + bufQuery = string.Format(queryKOSDAQ, mDataCode); + break; + case 국내시장종류.거래정지: + bufQuery = string.Format(queryDis, mDataCode); + break; + case 국내시장종류.거래정지K: + bufQuery = string.Format(queryDisk, mDataCode); + break; + } + + mRequestQuery.Add("", bufQuery); + + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판데이터기본/지수/INDEX_FORECAST_PAN.cs b/MBN_STOCK_N/Data/Request/판데이터기본/지수/INDEX_FORECAST_PAN.cs new file mode 100644 index 0000000..cc75d5b --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판데이터기본/지수/INDEX_FORECAST_PAN.cs @@ -0,0 +1,92 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class INDEX_FORECAST_PAN : ADataObject + { + + internal INDEX_FORECAST_PAN(국내지수종류 recvDataType) + { + this.mDataType = recvDataType; + } + + 국내지수종류 mDataType; + + #region 쿼리 + string queryKOSPI = @"SELECT '코스피 예상체결지수' NAME, + round(f_part_idx / 100, 2) part_idx, f_chg_type chg_type, ABS(round(f_part_chg / 100, 2)) part_chg, + round((f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg, 1)) * 100, 2) rate + FROM t_fo_index + WHERE f_part_code = '001'"; + + string queryKOSDAQ = @"SELECT '코스닥 예상체결지수' NAME, + round(f_part_idx / 100, 2) part_idx, f_chg_type chg_type, ABS(round(f_part_chg / 100, 2)) part_chg, + round((f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg, 1)) * 100, 2) rate + FROM t_kosdaq_fo_index + WHERE f_part_code = '001'"; + + string queryKOSPI200 = @"SELECT '코스피200 예상체결지수' name,f_part_idx/100 part_idx, f_chg_type chg_type, + ABS(round(f_part_chg / 100, 2)) part_chg, + round(f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, + '-', f_part_idx + f_part_chg, 1) * 100, 2) rate + FROM T_200_FO_INDEX + WHERE f_part_code = '029'"; + + string queryKRX100 = @"SELECT 'KRX100 예상체결지수' name,f_part_idx/100 part_idx, f_chg_type chg_type, f_part_chg/100 part_chg, + round(f_part_chg / decode(f_chg_type, '+', (f_part_idx / 100) - (f_part_chg / 100), '-', (f_part_idx / 100) + (f_part_chg / 100), 1), 2) rate + FROM t_krx100_FO_index WHERE f_part_code = '043'"; + + + string queryFUTURE = @"SELECT '선물 예상체결지수' name, part_idx part_idx, chg_type, ABS(part_chg) part_chg, + round(part_chg / decode(chg_type, '+', (part_idx / 100) - (part_chg / 100), + '-', (part_idx / 100) + (part_chg / 100), 1), 2) rate + FROM(SELECT f_fo_price / 100 part_idx, + round((f_fo_price - f_base_price) / 100, 2) part_chg, + decode(sign(f_fo_price - f_base_price), 1, '+', -1, '-', 0, ' ') chg_type + FROM t_sunmul_online + WHERE f_stock_code = (select f_stock_code from t_sunmul_batch + where f_market_date = (select max(f_market_date) + from t_sunmul_batch) + and substr(f_stock_code, 4, 1) = '1' + and F_MONTH_GUBUN = '1'))"; + + #endregion + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + switch (this.mDataType) + { + case 국내지수종류.KOSPI: + bufQuery = queryKOSPI; + break; + case 국내지수종류.KOSDAQ: + bufQuery = queryKOSDAQ; + break; + case 국내지수종류.KOSPI200: + bufQuery = queryKOSPI200; + break; + case 국내지수종류.KRX100: + bufQuery = queryKRX100; + break; + case 국내지수종류.선물: + bufQuery = queryFUTURE; + break; + } + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판데이터기본/지수/INDEX_FORGIEN_PAN.cs b/MBN_STOCK_N/Data/Request/판데이터기본/지수/INDEX_FORGIEN_PAN.cs new file mode 100644 index 0000000..62dcb44 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판데이터기본/지수/INDEX_FORGIEN_PAN.cs @@ -0,0 +1,45 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class INDEX_FORGIEN_PAN : ADataObject + { + + internal INDEX_FORGIEN_PAN(해외지수종류 recvDataType, string recvStockCode) + { + this.mDataType = recvDataType; + this.mDataCode = recvStockCode; + } + + 해외지수종류 mDataType; + + string mDataCode = String.Empty; + /// + /// 금일 데이터 쿼리 + /// + string queryBASIC = @"select a.f_input_name stock_name, round(b.f_last,2) curr_price, b.f_sign chg_type, round(b.f_diff,2) net_chg, round(b.f_rate,2) rate + from t_world_ix_eq_master a, t_world_ix_eq_sise b + where a.f_symb = b.f_symb + and a.f_symb = '{0}'"; + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + bufQuery += String.Format(queryBASIC, mDataCode); + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/판데이터기본/지수/INDEX_PAN.cs b/MBN_STOCK_N/Data/Request/판데이터기본/지수/INDEX_PAN.cs new file mode 100644 index 0000000..ae82cb5 --- /dev/null +++ b/MBN_STOCK_N/Data/Request/판데이터기본/지수/INDEX_PAN.cs @@ -0,0 +1,105 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class INDEX_PAN : ADataObject + { + + internal INDEX_PAN(국내지수종류 recvDataType) + { + this.mDataType = recvDataType; + } + + 국내지수종류 mDataType; + + #region 쿼리 + string queryKOSPI = @"SELECT '코스피' name, round(f_part_idx/100,2) part_idx, f_chg_type chg_type, round(f_part_chg/100,2) part_chg, + round((f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg, 1)) * 100, 2) rate + FROM t_index + WHERE f_part_code = '001'"; + + string queryKOSDAQ = @"SELECT '코스닥' name, round(f_part_idx/100,2) part_idx, f_chg_type chg_type, round(f_part_chg/100,2) part_chg, + round((f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg, 1)) * 100, 2) rate + FROM t_kosdaq_index + WHERE f_part_code = '001'"; + + string queryKOSPI200 = @"SELECT '코스피200' name,f_part_idx/100 part_idx, f_chg_type chg_type, f_part_chg/100 part_chg, + round(f_part_chg / decode(f_chg_type, '+', f_part_idx - f_part_chg, '-', f_part_idx + f_part_chg, 1) * 100, 2) rate + FROM T_200_INDEX + WHERE f_part_code = '029'"; + + //string queryKRX100 = @"SELECT 'KRX100' name, f_part_idx/100 part_idx, f_chg_type chg_type, f_part_chg/100 part_chg, 1 + //round(f_part_chg / decode(f_chg_type, '+', (f_part_idx / 100) - (f_part_chg / 100), '-', (f_part_idx / 100) + (f_part_chg / 100)), 2) rate + //FROM t_krx100_index WHERE f_part_code = '043'"; + string queryKRX100 = @"SELECT 'KRX100' name, f_part_idx/100 part_idx, f_chg_type chg_type, f_part_chg/100 part_chg, + round(f_part_chg / decode(f_chg_type, '+', (f_part_idx / 100) - (f_part_chg / 100), '-', (f_part_idx / 100) + (f_part_chg / 100)), 2) rate + FROM t_krx100_index WHERE f_part_code = '043'"; + + + //string queryFUTURE = @"SELECT '선물' name, part_idx part_idx, chg_type, ABS(part_chg) part_chg,F_NET_VOL,f_out_vol, F_NET_TURNOVER, + // ABS(round(part_chg / decode(chg_type, '+', (part_idx / 100) - (part_chg / 100), + // '-', (part_idx / 100) + (part_chg / 100), 1), 2)) rate + // FROM(SELECT f_curr_price / 100 part_idx, F_NET_VOL, f_out_vol, F_NET_TURNOVER, + // (f_curr_price - f_base_price) / 100 part_chg, + // decode(sign(f_curr_price - f_base_price), 1, '+', -1, '-', 0, ' ') chg_type + // FROM t_sunmul_online + // WHERE f_stock_code = (select f_stock_code from t_sunmul_batch + //where f_market_date = (select max(f_market_date) + // from t_sunmul_batch) + // and substr(f_stock_code, 4, 1) = '1' + // and F_MONTH_GUBUN = '1'))"; + + + string queryFUTURE = @"SELECT '선물' name, part_idx part_idx, chg_type, ABS(part_chg) part_chg,F_NET_VOL,f_out_vol, F_NET_TURNOVER, + ABS(round(part_chg / decode(chg_type, '+', (part_idx / 100) - (part_chg / 100), + '-', (part_idx / 100) + (part_chg / 100), 1), 2)) rate + FROM(SELECT decode(a.f_curr_price,0, b.F_JUN_LAST_PRICE/100, a.f_curr_price/100) part_idx, a.F_NET_VOL, a.f_out_vol, a.F_NET_TURNOVER, + decode(a.f_curr_price, 0, 0, (a.f_curr_price - b.F_JUN_LAST_PRICE*100)/100) part_chg, + decode(a.f_curr_price, 0, ' ', decode(sign(a.f_curr_price -b.F_JUN_LAST_PRICE*100),1,'+',-1,'-',0,' ')) chg_type + FROM t_sunmul_online a, t_sunmul_batch b + WHERE a.f_stock_code = b.f_stock_code + AND a.f_stock_seq = 1 + AND b.f_market_date = (select max(OPEN_DAY) from v_open_day) + AND b.F_MONTH_GUBUN = '1') "; + + + #endregion + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + switch (this.mDataType) + { + case 국내지수종류.KOSPI: + bufQuery = queryKOSPI; + break; + case 국내지수종류.KOSDAQ: + bufQuery = queryKOSDAQ; + break; + case 국내지수종류.KOSPI200: + bufQuery = queryKOSPI200; + break; + case 국내지수종류.KRX100: + bufQuery = queryKRX100; + break; + case 국내지수종류.선물: + bufQuery = queryFUTURE; + break; + } + + mRequestQuery.Add("", bufQuery); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Data/Request/호가/Quote_Stocks.cs b/MBN_STOCK_N/Data/Request/호가/Quote_Stocks.cs new file mode 100644 index 0000000..b70e5ec --- /dev/null +++ b/MBN_STOCK_N/Data/Request/호가/Quote_Stocks.cs @@ -0,0 +1,109 @@ +using MMoneyCoderSharp.Data.Request; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static MMoneyCoderSharp.DBDefine; + +namespace MMoneyCoderSharp.DB +{ + /// + /// + internal class Quote_Stocks : ADataObject + { + + internal Quote_Stocks(국내시장종류 recvDataType, string recvStockCode) + { + this.mDataType = recvDataType; + + this.mStockCode = recvStockCode; + } + + 국내시장종류 mDataType; + + string mStockCode = ""; + + #region 쿼리 + string queryKOSPI = @"select a.f_stock_code , b.f_stock_wanname, a.f_curr_price, + a.f_net_chg NET_CHG, + decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') CHG_TYPE, + round((a.f_net_chg / decode(a.f_chg_type, '1', a.f_curr_price - a.f_net_chg, + '2', a.f_curr_price - a.f_net_chg, + '3', a.f_curr_price, + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate, + c.f_call_sell_1, + c.f_call_sell_2, + c.f_call_sell_3, + c.f_call_sell_jan_1, + c.f_call_sell_jan_2, + c.f_call_sell_jan_3, + c.f_call_buy_1, + c.f_call_buy_2, + c.f_call_buy_3, + c.f_call_buy_jan_1, + c.f_call_buy_jan_2, + c.f_call_buy_jan_3, + c.f_t_call_sell_jan, + c.f_t_call_buy_jan + from t_online1 a, t_stock b , t_online1_CALL c + where a.f_stock_code = b.f_stock_code + and a.f_stock_code = c.f_stock_code + and a.f_mkt_halt = 'N' + and a.f_curr_price > 0 + and a.f_stock_code = '{0}'"; + + string queryKOSDAQ = @"select a.f_stock_code , b.f_stock_wanname, a.f_curr_price, + a.f_net_chg NET_CHG, + decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') CHG_TYPE, + round((a.f_net_chg / decode(a.f_chg_type, '1', a.f_curr_price - a.f_net_chg, + '2', a.f_curr_price - a.f_net_chg, + '3', a.f_curr_price, + '4', -1*(a.f_curr_price + a.f_net_chg), + '5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate, + c.f_call_sell_1, + c.f_call_sell_2, + c.f_call_sell_3, + c.f_call_sell_jan_1, + c.f_call_sell_jan_2, + c.f_call_sell_jan_3, + c.f_call_buy_1, + c.f_call_buy_2, + c.f_call_buy_3, + c.f_call_buy_jan_1, + c.f_call_buy_jan_2, + c.f_call_buy_jan_3, + c.f_t_call_sell_jan, + c.f_t_call_buy_jan + FROM t_kosdaq_online1 a, t_kosdaq_stock b , t_kosdaq_online1_CALL c + where a.f_stock_code = b.f_stock_code + and a.f_stock_code = c.f_stock_code + and a.f_mkt_halt = 'N' + and a.f_curr_price > 0 + and a.f_stock_code = '{0}'"; + + + #endregion + + public override IDataRequest buildData() + { + + string bufQuery = ""; + + switch (this.mDataType) + { + case 국내시장종류.KOSPI: + bufQuery = queryKOSPI; + break; + case 국내시장종류.KOSDAQ: + bufQuery = queryKOSDAQ; + break; + } + + mRequestQuery.Add("", String.Format(bufQuery, this.mStockCode)); + + return this; + } + } +} diff --git a/MBN_STOCK_N/Form/AList.Designer.cs b/MBN_STOCK_N/Form/AList.Designer.cs new file mode 100644 index 0000000..9c06dde --- /dev/null +++ b/MBN_STOCK_N/Form/AList.Designer.cs @@ -0,0 +1,139 @@ + +namespace MBN_STOCK_N +{ + partial class AList + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label5 = new System.Windows.Forms.Label(); + this.btnok = new System.Windows.Forms.Button(); + this.txtname = new System.Windows.Forms.TextBox(); + this.btncn = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.txtCode = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label5.Location = new System.Drawing.Point(18, 49); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(67, 15); + this.label5.TabIndex = 591; + this.label5.Text = "프로그램명"; + // + // btnok + // + this.btnok.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnok.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btnok.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnok.ForeColor = System.Drawing.Color.Black; + this.btnok.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnok.Location = new System.Drawing.Point(204, 80); + this.btnok.Name = "btnok"; + this.btnok.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnok.Size = new System.Drawing.Size(71, 25); + this.btnok.TabIndex = 590; + this.btnok.Text = "확인"; + this.btnok.UseVisualStyleBackColor = true; + this.btnok.Click += new System.EventHandler(this.btnok_Click); + // + // txtname + // + this.txtname.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txtname.Location = new System.Drawing.Point(93, 44); + this.txtname.Name = "txtname"; + this.txtname.Size = new System.Drawing.Size(261, 25); + this.txtname.TabIndex = 589; + // + // btncn + // + this.btncn.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btncn.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btncn.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btncn.ForeColor = System.Drawing.Color.Black; + this.btncn.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btncn.Location = new System.Drawing.Point(283, 80); + this.btncn.Name = "btncn"; + this.btncn.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btncn.Size = new System.Drawing.Size(71, 25); + this.btncn.TabIndex = 592; + this.btncn.Text = "취소"; + this.btncn.UseVisualStyleBackColor = true; + this.btncn.Click += new System.EventHandler(this.btncn_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(18, 18); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(67, 15); + this.label1.TabIndex = 593; + this.label1.Text = "프로그램명"; + // + // txtCode + // + this.txtCode.Enabled = false; + this.txtCode.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txtCode.Location = new System.Drawing.Point(93, 12); + this.txtCode.Name = "txtCode"; + this.txtCode.Size = new System.Drawing.Size(115, 25); + this.txtCode.TabIndex = 594; + // + // AList + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(366, 113); + this.Controls.Add(this.txtCode); + this.Controls.Add(this.label1); + this.Controls.Add(this.btncn); + this.Controls.Add(this.label5); + this.Controls.Add(this.btnok); + this.Controls.Add(this.txtname); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "AList"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "프로그램 추가"; + this.Load += new System.EventHandler(this.AList_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Button btnok; + private System.Windows.Forms.TextBox txtname; + private System.Windows.Forms.Button btncn; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtCode; + } +} \ No newline at end of file diff --git a/MBN_STOCK_N/Form/AList.cs b/MBN_STOCK_N/Form/AList.cs new file mode 100644 index 0000000..0f6205c --- /dev/null +++ b/MBN_STOCK_N/Form/AList.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MBN_STOCK_N +{ + public partial class AList : Form + { + PList pl = null; + MainForm mf = null; + + public AList(Form frm, Form fm) + { + pl = (PList)frm; + mf = (MainForm)fm; + InitializeComponent(); + } + + + private void btnok_Click(object sender, EventArgs e) + { + //pl.m_FileName = txtname.Text; + if (txtname.Text == "") + { + MessageBox.Show("프로그램명을 입력하세요"); + } + else + { + //DB 저장 + mf.m_db.ExecuteQuery("INSERT INTO DC_LIST(DC_CODE, DC_TITLE) VALUES ('" + txtCode.Text + "', '" + txtname.Text + "')"); + Close(); + } + Close(); + } + private void btncn_Click(object sender, EventArgs e) + { + pl.m_FileName = ""; + Close(); + } + + public string GetNextCode(string query) + { + string code = string.Empty; + + mf.m_db.ViewQuery(mf.dataGridView1, query); + + if (mf.dataGridView1.RowCount > 0) + { + int lastcode = Convert.ToInt32(mf.dataGridView1.Rows[0].Cells[0].Value.ToString()) + 1; + code = string.Format("{0:D8}", lastcode); + } + + return code; + } + + private void AList_Load(object sender, EventArgs e) + { + txtCode.Text = GetNextCode("SELECT to_number(max(DC_CODE)) FROM DC_LIST"); + } + } +} diff --git a/MBN_STOCK_N/Form/AList.resx b/MBN_STOCK_N/Form/AList.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/MBN_STOCK_N/Form/AList.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MBN_STOCK_N/Form/EList.Designer.cs b/MBN_STOCK_N/Form/EList.Designer.cs new file mode 100644 index 0000000..efd00f0 --- /dev/null +++ b/MBN_STOCK_N/Form/EList.Designer.cs @@ -0,0 +1,154 @@ + +namespace MBN_STOCK_N +{ + partial class EList + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.btncn = new System.Windows.Forms.Button(); + this.label5 = new System.Windows.Forms.Label(); + this.btnok = new System.Windows.Forms.Button(); + this.txtname = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.txtCode = new System.Windows.Forms.TextBox(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.SuspendLayout(); + // + // btncn + // + this.btncn.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btncn.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btncn.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btncn.ForeColor = System.Drawing.Color.Black; + this.btncn.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btncn.Location = new System.Drawing.Point(286, 80); + this.btncn.Name = "btncn"; + this.btncn.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btncn.Size = new System.Drawing.Size(71, 25); + this.btncn.TabIndex = 596; + this.btncn.Text = "취소"; + this.btncn.UseVisualStyleBackColor = true; + this.btncn.Click += new System.EventHandler(this.btncn_Click); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label5.Location = new System.Drawing.Point(21, 49); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(39, 15); + this.label5.TabIndex = 595; + this.label5.Text = "이 름"; + // + // btnok + // + this.btnok.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnok.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btnok.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnok.ForeColor = System.Drawing.Color.Black; + this.btnok.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnok.Location = new System.Drawing.Point(207, 80); + this.btnok.Name = "btnok"; + this.btnok.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnok.Size = new System.Drawing.Size(71, 25); + this.btnok.TabIndex = 594; + this.btnok.Text = "확인"; + this.btnok.UseVisualStyleBackColor = true; + this.btnok.Click += new System.EventHandler(this.btnok_Click); + // + // txtname + // + this.txtname.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txtname.Location = new System.Drawing.Point(96, 44); + this.txtname.Name = "txtname"; + this.txtname.Size = new System.Drawing.Size(261, 25); + this.txtname.TabIndex = 0; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(21, 19); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(39, 15); + this.label1.TabIndex = 597; + this.label1.Text = "코 드"; + // + // txtCode + // + this.txtCode.Enabled = false; + this.txtCode.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txtCode.Location = new System.Drawing.Point(96, 12); + this.txtCode.Name = "txtCode"; + this.txtCode.Size = new System.Drawing.Size(109, 25); + this.txtCode.TabIndex = 598; + // + // dataGridView1 + // + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Location = new System.Drawing.Point(38, 75); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowTemplate.Height = 23; + this.dataGridView1.Size = new System.Drawing.Size(79, 30); + this.dataGridView1.TabIndex = 617; + this.dataGridView1.Visible = false; + // + // EList + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(370, 113); + this.Controls.Add(this.dataGridView1); + this.Controls.Add(this.txtCode); + this.Controls.Add(this.label1); + this.Controls.Add(this.btncn); + this.Controls.Add(this.label5); + this.Controls.Add(this.btnok); + this.Controls.Add(this.txtname); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "EList"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "전문가 추가"; + this.Load += new System.EventHandler(this.EList_Load); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button btncn; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Button btnok; + private System.Windows.Forms.TextBox txtname; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtCode; + private System.Windows.Forms.DataGridView dataGridView1; + } +} \ No newline at end of file diff --git a/MBN_STOCK_N/Form/EList.cs b/MBN_STOCK_N/Form/EList.cs new file mode 100644 index 0000000..277c566 --- /dev/null +++ b/MBN_STOCK_N/Form/EList.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MBN_STOCK_N +{ + public partial class EList : Form + { + //DBCon m_db = new DBCon(); + MainForm mf = null; + + public EList(Form frm) + { + mf = (MainForm)frm; + InitializeComponent(); + } + + + + private void btnok_Click(object sender, EventArgs e) + { + if (txtname.Text == "") + { + MessageBox.Show("이름을 입력하세요"); + } + else + { + //DB 저장 + mf.m_db.ExecuteQuery("INSERT INTO EXPERT_LIST(EP_CODE, EP_NAME) VALUES('" + txtCode.Text + "', '" + txtname.Text + "')"); + Close(); + } + + } + + private void btncn_Click(object sender, EventArgs e) + { + Close(); + } + + + public string GetNextCode(string query) + { + string code = string.Empty; + + mf.m_db.ViewQuery(dataGridView1, query); + + if (dataGridView1.RowCount > 0) + { + int lastcode = Convert.ToInt32(dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[0].Value.ToString()) + 1; + code = string.Format("{0:D4}", lastcode); + } + + return code; + } + + private void EList_Load(object sender, EventArgs e) + { + txtCode.Text = GetNextCode("Select * From EXPERT_LIST Order by EP_CODE"); + } + } +} diff --git a/MBN_STOCK_N/Form/EList.resx b/MBN_STOCK_N/Form/EList.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/MBN_STOCK_N/Form/EList.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MBN_STOCK_N/Form/FSell.Designer.cs b/MBN_STOCK_N/Form/FSell.Designer.cs new file mode 100644 index 0000000..2296440 --- /dev/null +++ b/MBN_STOCK_N/Form/FSell.Designer.cs @@ -0,0 +1,374 @@ + +namespace MBN_STOCK_N +{ + partial class FSell + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.btncn = new System.Windows.Forms.Button(); + this.btnok = new System.Windows.Forms.Button(); + this.tj1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.ts1 = new System.Windows.Forms.TextBox(); + this.ts3 = new System.Windows.Forms.TextBox(); + this.tj3 = new System.Windows.Forms.TextBox(); + this.ts5 = new System.Windows.Forms.TextBox(); + this.tj5 = new System.Windows.Forms.TextBox(); + this.ts9 = new System.Windows.Forms.TextBox(); + this.tj9 = new System.Windows.Forms.TextBox(); + this.ts7 = new System.Windows.Forms.TextBox(); + this.tj7 = new System.Windows.Forms.TextBox(); + this.ts10 = new System.Windows.Forms.TextBox(); + this.tj10 = new System.Windows.Forms.TextBox(); + this.ts8 = new System.Windows.Forms.TextBox(); + this.tj8 = new System.Windows.Forms.TextBox(); + this.ts6 = new System.Windows.Forms.TextBox(); + this.tj6 = new System.Windows.Forms.TextBox(); + this.ts4 = new System.Windows.Forms.TextBox(); + this.tj4 = new System.Windows.Forms.TextBox(); + this.ts2 = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.tj2 = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.ts10); + this.panel1.Controls.Add(this.tj10); + this.panel1.Controls.Add(this.ts8); + this.panel1.Controls.Add(this.tj8); + this.panel1.Controls.Add(this.ts6); + this.panel1.Controls.Add(this.tj6); + this.panel1.Controls.Add(this.ts4); + this.panel1.Controls.Add(this.tj4); + this.panel1.Controls.Add(this.ts2); + this.panel1.Controls.Add(this.label3); + this.panel1.Controls.Add(this.tj2); + this.panel1.Controls.Add(this.label4); + this.panel1.Controls.Add(this.ts9); + this.panel1.Controls.Add(this.tj9); + this.panel1.Controls.Add(this.ts7); + this.panel1.Controls.Add(this.tj7); + this.panel1.Controls.Add(this.ts5); + this.panel1.Controls.Add(this.tj5); + this.panel1.Controls.Add(this.ts3); + this.panel1.Controls.Add(this.tj3); + this.panel1.Controls.Add(this.ts1); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.tj1); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.btncn); + this.panel1.Controls.Add(this.btnok); + this.panel1.Location = new System.Drawing.Point(3, 2); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(574, 273); + this.panel1.TabIndex = 594; + // + // btncn + // + this.btncn.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btncn.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btncn.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btncn.ForeColor = System.Drawing.Color.Black; + this.btncn.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btncn.Location = new System.Drawing.Point(458, 224); + this.btncn.Name = "btncn"; + this.btncn.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btncn.Size = new System.Drawing.Size(93, 30); + this.btncn.TabIndex = 21; + this.btncn.Text = "취소"; + this.btncn.UseVisualStyleBackColor = true; + this.btncn.Click += new System.EventHandler(this.btncn_Click); + // + // btnok + // + this.btnok.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnok.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btnok.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnok.ForeColor = System.Drawing.Color.Black; + this.btnok.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnok.Location = new System.Drawing.Point(342, 224); + this.btnok.Name = "btnok"; + this.btnok.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnok.Size = new System.Drawing.Size(93, 30); + this.btnok.TabIndex = 20; + this.btnok.Text = "확인"; + this.btnok.UseVisualStyleBackColor = true; + this.btnok.Click += new System.EventHandler(this.btnok_Click); + // + // tj1 + // + this.tj1.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tj1.Location = new System.Drawing.Point(21, 36); + this.tj1.Name = "tj1"; + this.tj1.Size = new System.Drawing.Size(120, 25); + this.tj1.TabIndex = 0; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(62, 14); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(31, 15); + this.label1.TabIndex = 599; + this.label1.Text = "종목"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label2.Location = new System.Drawing.Point(194, 14); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(31, 15); + this.label2.TabIndex = 601; + this.label2.Text = "금액"; + // + // ts1 + // + this.ts1.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts1.Location = new System.Drawing.Point(154, 36); + this.ts1.Name = "ts1"; + this.ts1.Size = new System.Drawing.Size(120, 25); + this.ts1.TabIndex = 1; + // + // ts3 + // + this.ts3.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts3.Location = new System.Drawing.Point(154, 70); + this.ts3.Name = "ts3"; + this.ts3.Size = new System.Drawing.Size(120, 25); + this.ts3.TabIndex = 5; + // + // tj3 + // + this.tj3.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tj3.Location = new System.Drawing.Point(21, 70); + this.tj3.Name = "tj3"; + this.tj3.Size = new System.Drawing.Size(120, 25); + this.tj3.TabIndex = 4; + // + // ts5 + // + this.ts5.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts5.Location = new System.Drawing.Point(154, 103); + this.ts5.Name = "ts5"; + this.ts5.Size = new System.Drawing.Size(120, 25); + this.ts5.TabIndex = 9; + // + // tj5 + // + this.tj5.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tj5.Location = new System.Drawing.Point(21, 103); + this.tj5.Name = "tj5"; + this.tj5.Size = new System.Drawing.Size(120, 25); + this.tj5.TabIndex = 8; + // + // ts9 + // + this.ts9.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts9.Location = new System.Drawing.Point(154, 171); + this.ts9.Name = "ts9"; + this.ts9.Size = new System.Drawing.Size(120, 25); + this.ts9.TabIndex = 17; + // + // tj9 + // + this.tj9.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tj9.Location = new System.Drawing.Point(21, 171); + this.tj9.Name = "tj9"; + this.tj9.Size = new System.Drawing.Size(120, 25); + this.tj9.TabIndex = 16; + // + // ts7 + // + this.ts7.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts7.Location = new System.Drawing.Point(154, 138); + this.ts7.Name = "ts7"; + this.ts7.Size = new System.Drawing.Size(120, 25); + this.ts7.TabIndex = 13; + // + // tj7 + // + this.tj7.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tj7.Location = new System.Drawing.Point(21, 138); + this.tj7.Name = "tj7"; + this.tj7.Size = new System.Drawing.Size(120, 25); + this.tj7.TabIndex = 12; + // + // ts10 + // + this.ts10.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts10.Location = new System.Drawing.Point(431, 171); + this.ts10.Name = "ts10"; + this.ts10.Size = new System.Drawing.Size(120, 25); + this.ts10.TabIndex = 19; + // + // tj10 + // + this.tj10.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tj10.Location = new System.Drawing.Point(298, 171); + this.tj10.Name = "tj10"; + this.tj10.Size = new System.Drawing.Size(120, 25); + this.tj10.TabIndex = 18; + // + // ts8 + // + this.ts8.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts8.Location = new System.Drawing.Point(431, 138); + this.ts8.Name = "ts8"; + this.ts8.Size = new System.Drawing.Size(120, 25); + this.ts8.TabIndex = 15; + // + // tj8 + // + this.tj8.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tj8.Location = new System.Drawing.Point(298, 138); + this.tj8.Name = "tj8"; + this.tj8.Size = new System.Drawing.Size(120, 25); + this.tj8.TabIndex = 14; + // + // ts6 + // + this.ts6.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts6.Location = new System.Drawing.Point(431, 103); + this.ts6.Name = "ts6"; + this.ts6.Size = new System.Drawing.Size(120, 25); + this.ts6.TabIndex = 11; + // + // tj6 + // + this.tj6.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tj6.Location = new System.Drawing.Point(298, 103); + this.tj6.Name = "tj6"; + this.tj6.Size = new System.Drawing.Size(120, 25); + this.tj6.TabIndex = 10; + // + // ts4 + // + this.ts4.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts4.Location = new System.Drawing.Point(431, 70); + this.ts4.Name = "ts4"; + this.ts4.Size = new System.Drawing.Size(120, 25); + this.ts4.TabIndex = 7; + // + // tj4 + // + this.tj4.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tj4.Location = new System.Drawing.Point(298, 70); + this.tj4.Name = "tj4"; + this.tj4.Size = new System.Drawing.Size(120, 25); + this.tj4.TabIndex = 6; + // + // ts2 + // + this.ts2.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts2.Location = new System.Drawing.Point(431, 36); + this.ts2.Name = "ts2"; + this.ts2.Size = new System.Drawing.Size(120, 25); + this.ts2.TabIndex = 3; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label3.Location = new System.Drawing.Point(471, 14); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(31, 15); + this.label3.TabIndex = 613; + this.label3.Text = "금액"; + // + // tj2 + // + this.tj2.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tj2.Location = new System.Drawing.Point(298, 36); + this.tj2.Name = "tj2"; + this.tj2.Size = new System.Drawing.Size(120, 25); + this.tj2.TabIndex = 2; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label4.Location = new System.Drawing.Point(339, 14); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(31, 15); + this.label4.TabIndex = 611; + this.label4.Text = "종목"; + // + // FSell + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(579, 277); + this.Controls.Add(this.panel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "FSell"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "순매도 상위 10"; + this.Load += new System.EventHandler(this.FSell_Load); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button btncn; + private System.Windows.Forms.Button btnok; + private System.Windows.Forms.TextBox ts10; + private System.Windows.Forms.TextBox tj10; + private System.Windows.Forms.TextBox ts8; + private System.Windows.Forms.TextBox tj8; + private System.Windows.Forms.TextBox ts6; + private System.Windows.Forms.TextBox tj6; + private System.Windows.Forms.TextBox ts4; + private System.Windows.Forms.TextBox tj4; + private System.Windows.Forms.TextBox ts2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox tj2; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox ts9; + private System.Windows.Forms.TextBox tj9; + private System.Windows.Forms.TextBox ts7; + private System.Windows.Forms.TextBox tj7; + private System.Windows.Forms.TextBox ts5; + private System.Windows.Forms.TextBox tj5; + private System.Windows.Forms.TextBox ts3; + private System.Windows.Forms.TextBox tj3; + private System.Windows.Forms.TextBox ts1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox tj1; + private System.Windows.Forms.Label label1; + } +} \ No newline at end of file diff --git a/MBN_STOCK_N/Form/FSell.cs b/MBN_STOCK_N/Form/FSell.cs new file mode 100644 index 0000000..f127016 --- /dev/null +++ b/MBN_STOCK_N/Form/FSell.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.IO; + +namespace MBN_STOCK_N +{ + public partial class FSell : Form + { + MainForm mf = null; + string m_File = string.Empty; + + public FSell(Form frm, string file) + { + mf = (MainForm)frm; + m_File = file; + InitializeComponent(); + } + + private void FSell_Load(object sender, EventArgs e) + { + data_load(); + } + + public void data_load() + { + ReadListFile(mf.m_DataPath + m_File + ".dat"); + } + + private void btnok_Click(object sender, EventArgs e) + { + WriteListFile(mf.m_DataPath + m_File + ".dat"); + mf.m_st = 1; + Close(); + } + + public void WriteListFile(string path) + { + try + { + string strdata = string.Empty; + + FileInfo fileInfoM = new FileInfo(path); + fileInfoM.Delete(); + + + StreamWriter sw = new StreamWriter(path, true, Encoding.Default); + + strdata = tj1.Text + "^" + ts1.Text + "^" + tj2.Text + "^" + ts2.Text + Environment.NewLine; + strdata += tj3.Text + "^" + ts3.Text + "^" + tj4.Text + "^" + ts4.Text + Environment.NewLine; + strdata += tj5.Text + "^" + ts5.Text + "^" + tj6.Text + "^" + ts6.Text + Environment.NewLine; + strdata += tj7.Text + "^" + ts7.Text + "^" + tj8.Text + "^" + ts8.Text + Environment.NewLine; + strdata += tj9.Text + "^" + ts9.Text + "^" + tj10.Text + "^" + ts10.Text + Environment.NewLine; + + sw.WriteLine(strdata); + sw.Close(); + + } + catch (Exception) + { + + } + } + + + public void ReadListFile(string path) + { + try + { + string str = string.Empty; + int row = 0; + string[,] buf = new string[500, 50]; + + StreamReader sr = new StreamReader(path, Encoding.Default); + if (sr != null) + { + while (sr.Peek() > -1) + { + str = sr.ReadLine(); str = str.Trim(); + string[] rs = str.Split('^'); + + for (int i = 0; i < rs.Length; i++) + { + if (row == 0) + { tj1.Text = rs[0]; ts1.Text = rs[1]; tj2.Text = rs[2]; ts2.Text = rs[3]; } + else if (row == 1) + { tj3.Text = rs[0]; ts3.Text = rs[1]; tj4.Text = rs[2]; ts4.Text = rs[3]; } + else if (row == 2) + { tj5.Text = rs[0]; ts5.Text = rs[1]; tj6.Text = rs[2]; ts6.Text = rs[3]; } + else if (row == 3) + { tj7.Text = rs[0]; ts7.Text = rs[1]; tj8.Text = rs[2]; ts8.Text = rs[3]; } + else if (row == 4) + { tj9.Text = rs[0]; ts9.Text = rs[1]; tj10.Text = rs[2]; ts10.Text = rs[3]; } + + + } + row += 1; + } + sr.Close(); + } + } + catch (Exception) + { + + } + } + + private void btncn_Click(object sender, EventArgs e) + { + mf.m_st = 0; + Close(); + } + } +} diff --git a/MBN_STOCK_N/Form/FSell.resx b/MBN_STOCK_N/Form/FSell.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/MBN_STOCK_N/Form/FSell.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MBN_STOCK_N/Form/GraphE.Designer.cs b/MBN_STOCK_N/Form/GraphE.Designer.cs new file mode 100644 index 0000000..65478b0 --- /dev/null +++ b/MBN_STOCK_N/Form/GraphE.Designer.cs @@ -0,0 +1,1439 @@ + +namespace MBN_STOCK_N +{ + partial class GraphE + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer2 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer2 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer1 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer1 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer3 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer3 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer4 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer4 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer5 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer5 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GraphE)); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer1 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle1 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType1 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.NamedStyle namedStyle2 = new FarPoint.Win.Spread.NamedStyle("CornerDefault"); + FarPoint.Win.Spread.CellType.CornerRenderer cornerRenderer1 = new FarPoint.Win.Spread.CellType.CornerRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle3 = new FarPoint.Win.Spread.NamedStyle("ColumnHeaderEnhanced"); + FarPoint.Win.Spread.NamedStyle namedStyle4 = new FarPoint.Win.Spread.NamedStyle("RowHeaderDefault"); + FarPoint.Win.Spread.SpreadSkin spreadSkin1 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer2 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer3 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.EmptyBorder emptyBorder1 = new FarPoint.Win.EmptyBorder(); + this.pictureBox = new System.Windows.Forms.PictureBox(); + this.upSearch = new System.Windows.Forms.Button(); + this.txt1 = new System.Windows.Forms.TextBox(); + this.downSearch = new System.Windows.Forms.Button(); + this.FpSpread1 = new FarPoint.Win.Spread.FpSpread(); + this.FpSpread1_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread1_Sheet2 = new FarPoint.Win.Spread.SheetView(); + this.btndel = new System.Windows.Forms.Button(); + this.btnall = new System.Windows.Forms.Button(); + this.btnAdd = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.txtSearch = new System.Windows.Forms.TextBox(); + this.listBox = new System.Windows.Forms.ListBox(); + this.btnsearch = new System.Windows.Forms.Button(); + this.gb = new System.Windows.Forms.GroupBox(); + this.t1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.btadd = new System.Windows.Forms.Button(); + this.panel3 = new System.Windows.Forms.Panel(); + this.label20 = new System.Windows.Forms.Label(); + this.td6_2 = new System.Windows.Forms.TextBox(); + this.label21 = new System.Windows.Forms.Label(); + this.td1_2 = new System.Windows.Forms.TextBox(); + this.label23 = new System.Windows.Forms.Label(); + this.td2_2 = new System.Windows.Forms.TextBox(); + this.label24 = new System.Windows.Forms.Label(); + this.td3_2 = new System.Windows.Forms.TextBox(); + this.label26 = new System.Windows.Forms.Label(); + this.td4_2 = new System.Windows.Forms.TextBox(); + this.label27 = new System.Windows.Forms.Label(); + this.td5_2 = new System.Windows.Forms.TextBox(); + this.label19 = new System.Windows.Forms.Label(); + this.td6_1 = new System.Windows.Forms.TextBox(); + this.label22 = new System.Windows.Forms.Label(); + this.td1_1 = new System.Windows.Forms.TextBox(); + this.label25 = new System.Windows.Forms.Label(); + this.td2_1 = new System.Windows.Forms.TextBox(); + this.label28 = new System.Windows.Forms.Label(); + this.td3_1 = new System.Windows.Forms.TextBox(); + this.label29 = new System.Windows.Forms.Label(); + this.td4_1 = new System.Windows.Forms.TextBox(); + this.label30 = new System.Windows.Forms.Label(); + this.td5_1 = new System.Windows.Forms.TextBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label4 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.t3 = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.t2 = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.t4 = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.t7_1 = new System.Windows.Forms.TextBox(); + this.t5 = new System.Windows.Forms.TextBox(); + this.t6_1 = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.t5_1 = new System.Windows.Forms.TextBox(); + this.t6 = new System.Windows.Forms.TextBox(); + this.t4_1 = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.t3_1 = new System.Windows.Forms.TextBox(); + this.t7 = new System.Windows.Forms.TextBox(); + this.panel2 = new System.Windows.Forms.Panel(); + this.ts5_4 = new System.Windows.Forms.TextBox(); + this.ts5_3 = new System.Windows.Forms.TextBox(); + this.ts5_2 = new System.Windows.Forms.TextBox(); + this.ts5_1 = new System.Windows.Forms.TextBox(); + this.label18 = new System.Windows.Forms.Label(); + this.ts4_4 = new System.Windows.Forms.TextBox(); + this.ts4_3 = new System.Windows.Forms.TextBox(); + this.ts4_2 = new System.Windows.Forms.TextBox(); + this.label16 = new System.Windows.Forms.Label(); + this.ts4_1 = new System.Windows.Forms.TextBox(); + this.ts3_4 = new System.Windows.Forms.TextBox(); + this.ts3_3 = new System.Windows.Forms.TextBox(); + this.ts3_2 = new System.Windows.Forms.TextBox(); + this.label15 = new System.Windows.Forms.Label(); + this.ts3_1 = new System.Windows.Forms.TextBox(); + this.ts2_4 = new System.Windows.Forms.TextBox(); + this.ts2_3 = new System.Windows.Forms.TextBox(); + this.ts2_2 = new System.Windows.Forms.TextBox(); + this.label14 = new System.Windows.Forms.Label(); + this.ts2_1 = new System.Windows.Forms.TextBox(); + this.ts1_4 = new System.Windows.Forms.TextBox(); + this.ts1_3 = new System.Windows.Forms.TextBox(); + this.ts1_2 = new System.Windows.Forms.TextBox(); + this.label17 = new System.Windows.Forms.Label(); + this.ts1_1 = new System.Windows.Forms.TextBox(); + this.btnok = new System.Windows.Forms.Button(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.panel10 = new System.Windows.Forms.Panel(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet2)).BeginInit(); + this.groupBox1.SuspendLayout(); + this.gb.SuspendLayout(); + this.panel3.SuspendLayout(); + this.panel1.SuspendLayout(); + this.panel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.SuspendLayout(); + enhancedColumnHeaderRenderer2.Name = "enhancedColumnHeaderRenderer2"; + enhancedColumnHeaderRenderer2.TextRotationAngle = 0D; + rowHeaderRenderer2.Name = "rowHeaderRenderer2"; + rowHeaderRenderer2.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer1.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer1.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer1.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer1.Name = "enhancedColumnHeaderRenderer1"; + enhancedColumnHeaderRenderer1.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer1.TextRotationAngle = 0D; + rowHeaderRenderer1.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer1.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer1.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer1.Name = "rowHeaderRenderer1"; + rowHeaderRenderer1.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer1.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer3.Name = "enhancedColumnHeaderRenderer3"; + enhancedColumnHeaderRenderer3.TextRotationAngle = 0D; + rowHeaderRenderer3.Name = "rowHeaderRenderer3"; + rowHeaderRenderer3.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer4.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer4.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer4.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer4.Name = "enhancedColumnHeaderRenderer4"; + enhancedColumnHeaderRenderer4.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer4.TextRotationAngle = 0D; + rowHeaderRenderer4.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer4.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer4.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer4.Name = "rowHeaderRenderer4"; + rowHeaderRenderer4.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer4.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer5.Name = "enhancedColumnHeaderRenderer5"; + enhancedColumnHeaderRenderer5.TextRotationAngle = 0D; + rowHeaderRenderer5.Name = "rowHeaderRenderer5"; + rowHeaderRenderer5.TextRotationAngle = 0D; + // + // pictureBox + // + this.pictureBox.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox.Image"))); + this.pictureBox.Location = new System.Drawing.Point(63, 5); + this.pictureBox.Name = "pictureBox"; + this.pictureBox.Size = new System.Drawing.Size(482, 270); + this.pictureBox.TabIndex = 0; + this.pictureBox.TabStop = false; + // + // upSearch + // + this.upSearch.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.upSearch.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.upSearch.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.upSearch.ForeColor = System.Drawing.Color.Black; + this.upSearch.Location = new System.Drawing.Point(339, 284); + this.upSearch.Name = "upSearch"; + this.upSearch.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.upSearch.Size = new System.Drawing.Size(93, 27); + this.upSearch.TabIndex = 606; + this.upSearch.Text = "위로 찾기"; + this.upSearch.UseVisualStyleBackColor = true; + this.upSearch.Click += new System.EventHandler(this.upSearch_Click); + // + // txt1 + // + this.txt1.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txt1.Location = new System.Drawing.Point(63, 286); + this.txt1.Name = "txt1"; + this.txt1.Size = new System.Drawing.Size(256, 25); + this.txt1.TabIndex = 605; + this.txt1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txt1_KeyPress); + // + // downSearch + // + this.downSearch.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.downSearch.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.downSearch.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.downSearch.ForeColor = System.Drawing.Color.Black; + this.downSearch.Location = new System.Drawing.Point(452, 284); + this.downSearch.Name = "downSearch"; + this.downSearch.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.downSearch.Size = new System.Drawing.Size(93, 27); + this.downSearch.TabIndex = 607; + this.downSearch.Text = "아래로 찾기"; + this.downSearch.UseVisualStyleBackColor = true; + this.downSearch.Click += new System.EventHandler(this.downSearch_Click); + // + // FpSpread1 + // + this.FpSpread1.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, "; + this.FpSpread1.AutoClipboard = false; + this.FpSpread1.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.FpSpread1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FpSpread1.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders; + this.FpSpread1.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + this.FpSpread1.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread1.HorizontalScrollBar.Name = ""; + this.FpSpread1.HorizontalScrollBar.Renderer = defaultScrollBarRenderer1; + this.FpSpread1.HorizontalScrollBar.TabIndex = 351; + this.FpSpread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; + this.FpSpread1.Location = new System.Drawing.Point(12, 325); + this.FpSpread1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.FpSpread1.MoveActiveOnFocus = false; + this.FpSpread1.Name = "FpSpread1"; + namedStyle1.BackColor = System.Drawing.SystemColors.Window; + namedStyle1.CellType = generalCellType1; + namedStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle1.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle1.Renderer = generalCellType1; + namedStyle2.BackColor = System.Drawing.SystemColors.Control; + namedStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle2.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle2.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle2.Renderer = cornerRenderer1; + namedStyle2.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(211)))), ((int)(((byte)(220)))), ((int)(((byte)(233))))); + namedStyle3.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle3.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle3.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle3.Renderer = enhancedColumnHeaderRenderer5; + namedStyle3.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle4.BackColor = System.Drawing.SystemColors.Control; + namedStyle4.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle4.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle4.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle4.Renderer = rowHeaderRenderer5; + namedStyle4.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.FpSpread1.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle1, + namedStyle2, + namedStyle3, + namedStyle4}); + this.FpSpread1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.FpSpread1.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.FpSpread1_Sheet1, + this.FpSpread1_Sheet2}); + this.FpSpread1.Size = new System.Drawing.Size(475, 320); + spreadSkin1.ColumnHeaderDefaultStyle = namedStyle3; + spreadSkin1.DefaultStyle = namedStyle4; + spreadSkin1.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + spreadSkin1.Name = "CustomSkin1"; + spreadSkin1.RowHeaderDefaultStyle = namedStyle3; + spreadSkin1.ScrollBarRenderer = defaultScrollBarRenderer2; + spreadSkin1.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(60)))), ((int)(((byte)(97))))), System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(110)))), ((int)(((byte)(170))))), System.Drawing.Drawing2D.LinearGradientMode.Vertical, 30); + this.FpSpread1.Skin = spreadSkin1; + this.FpSpread1.TabIndex = 1; + this.FpSpread1.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.Never; + this.FpSpread1.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Never; + this.FpSpread1.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread1.VerticalScrollBar.Name = ""; + this.FpSpread1.VerticalScrollBar.Renderer = defaultScrollBarRenderer3; + this.FpSpread1.VerticalScrollBar.TabIndex = 352; + this.FpSpread1.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; + this.FpSpread1.CellClick += new FarPoint.Win.Spread.CellClickEventHandler(this.FpSpread1_CellClick); + this.FpSpread1.CellDoubleClick += new FarPoint.Win.Spread.CellClickEventHandler(this.FpSpread1_CellDoubleClick); + // + // FpSpread1_Sheet1 + // + this.FpSpread1_Sheet1.Reset(); + this.FpSpread1_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread1_Sheet1.ColumnCount = 7; + this.FpSpread1_Sheet1.RowCount = 0; + this.FpSpread1_Sheet1.RowHeader.ColumnCount = 0; + this.FpSpread1_Sheet1.ActiveRowIndex = -1; + this.FpSpread1_Sheet1.ActiveSkin = FarPoint.Win.Spread.DefaultSkins.Classic; + this.FpSpread1_Sheet1.ColumnHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 0).BackColor = System.Drawing.SystemColors.ActiveCaption; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 0).Border = emptyBorder1; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 0).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "종목"; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "날짜"; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 2).Font = new System.Drawing.Font("나눔고딕", 9.75F); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 2).Value = "구성1"; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 3).Font = new System.Drawing.Font("나눔고딕", 9.75F); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 3).Value = "구성2"; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 4).Font = new System.Drawing.Font("나눔고딕", 9.75F); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 4).Value = "구성3"; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 5).Font = new System.Drawing.Font("나눔고딕", 9.75F); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 5).Value = "구성4"; + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 6).Font = new System.Drawing.Font("나눔고딕", 9.75F); + this.FpSpread1_Sheet1.ColumnHeader.Cells.Get(0, 6).Value = "구성5"; + this.FpSpread1_Sheet1.ColumnHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.ColumnHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.FpSpread1_Sheet1.Columns.Get(0).Label = "종목"; + this.FpSpread1_Sheet1.Columns.Get(0).Width = 118F; + this.FpSpread1_Sheet1.Columns.Get(1).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread1_Sheet1.Columns.Get(1).Label = "날짜"; + this.FpSpread1_Sheet1.Columns.Get(1).Width = 85F; + this.FpSpread1_Sheet1.Columns.Get(2).Label = "구성1"; + this.FpSpread1_Sheet1.Columns.Get(2).Width = 98F; + this.FpSpread1_Sheet1.Columns.Get(3).Label = "구성2"; + this.FpSpread1_Sheet1.Columns.Get(3).Locked = true; + this.FpSpread1_Sheet1.Columns.Get(3).Width = 98F; + this.FpSpread1_Sheet1.Columns.Get(4).Label = "구성3"; + this.FpSpread1_Sheet1.Columns.Get(4).Width = 98F; + this.FpSpread1_Sheet1.Columns.Get(5).Label = "구성4"; + this.FpSpread1_Sheet1.Columns.Get(5).Width = 98F; + this.FpSpread1_Sheet1.Columns.Get(6).Label = "구성5"; + this.FpSpread1_Sheet1.Columns.Get(6).Width = 98F; + this.FpSpread1_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.RowMode; + this.FpSpread1_Sheet1.RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; + this.FpSpread1_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.FpSpread1_Sheet1.RowHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.RowHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.RowHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread1_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet1.SheetCornerStyle.Parent = "HeaderDefault"; + this.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.FpSpread1.SetActiveViewport(0, -1, 0); + // + // FpSpread1_Sheet2 + // + this.FpSpread1_Sheet2.Reset(); + this.FpSpread1_Sheet2.SheetName = "Sheet2"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread1_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread1_Sheet2.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet2.DefaultStyle.Parent = "RowHeaderDefault"; + this.FpSpread1_Sheet2.RowHeader.Columns.Default.Resizable = false; + this.FpSpread1_Sheet2.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread1_Sheet2.RowHeader.DefaultStyle.Parent = "ColumnHeaderEnhanced"; + this.FpSpread1_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + // + // btndel + // + this.btndel.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btndel.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btndel.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btndel.ForeColor = System.Drawing.Color.Black; + this.btndel.Location = new System.Drawing.Point(515, 337); + this.btndel.Name = "btndel"; + this.btndel.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btndel.Size = new System.Drawing.Size(93, 42); + this.btndel.TabIndex = 609; + this.btndel.Text = "DEL"; + this.btndel.UseVisualStyleBackColor = true; + this.btndel.Click += new System.EventHandler(this.btndel_Click); + // + // btnall + // + this.btnall.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnall.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btnall.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnall.ForeColor = System.Drawing.Color.Black; + this.btnall.Location = new System.Drawing.Point(515, 387); + this.btnall.Name = "btnall"; + this.btnall.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnall.Size = new System.Drawing.Size(93, 42); + this.btnall.TabIndex = 610; + this.btnall.Text = "DEL ALL"; + this.btnall.UseVisualStyleBackColor = true; + this.btnall.Click += new System.EventHandler(this.btnall_Click); + // + // btnAdd + // + this.btnAdd.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnAdd.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btnAdd.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnAdd.ForeColor = System.Drawing.Color.Black; + this.btnAdd.Location = new System.Drawing.Point(516, 592); + this.btnAdd.Name = "btnAdd"; + this.btnAdd.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnAdd.Size = new System.Drawing.Size(93, 56); + this.btnAdd.TabIndex = 611; + this.btnAdd.Text = "ADD & PLAYLIST"; + this.btnAdd.UseVisualStyleBackColor = true; + this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.txtSearch); + this.groupBox1.Controls.Add(this.listBox); + this.groupBox1.Controls.Add(this.btnsearch); + this.groupBox1.Location = new System.Drawing.Point(12, 653); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(227, 273); + this.groupBox1.TabIndex = 612; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "종목"; + // + // txtSearch + // + this.txtSearch.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txtSearch.Location = new System.Drawing.Point(6, 17); + this.txtSearch.Name = "txtSearch"; + this.txtSearch.Size = new System.Drawing.Size(138, 25); + this.txtSearch.TabIndex = 591; + this.txtSearch.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtSearch_KeyPress); + // + // listBox + // + this.listBox.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.listBox.FormattingEnabled = true; + this.listBox.ItemHeight = 15; + this.listBox.Location = new System.Drawing.Point(5, 49); + this.listBox.Name = "listBox"; + this.listBox.Size = new System.Drawing.Size(216, 214); + this.listBox.TabIndex = 594; + this.listBox.DoubleClick += new System.EventHandler(this.listBox_DoubleClick); + // + // btnsearch + // + this.btnsearch.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnsearch.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnsearch.ForeColor = System.Drawing.Color.Black; + this.btnsearch.Image = ((System.Drawing.Image)(resources.GetObject("btnsearch.Image"))); + this.btnsearch.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnsearch.Location = new System.Drawing.Point(152, 18); + this.btnsearch.Name = "btnsearch"; + this.btnsearch.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnsearch.Size = new System.Drawing.Size(65, 24); + this.btnsearch.TabIndex = 592; + this.btnsearch.Text = " 검색"; + this.btnsearch.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnsearch.UseVisualStyleBackColor = true; + this.btnsearch.Click += new System.EventHandler(this.btnsearch_Click); + // + // gb + // + this.gb.Controls.Add(this.t1); + this.gb.Controls.Add(this.label1); + this.gb.Controls.Add(this.btadd); + this.gb.Controls.Add(this.panel2); + this.gb.Controls.Add(this.panel3); + this.gb.Controls.Add(this.panel1); + this.gb.Location = new System.Drawing.Point(245, 653); + this.gb.Name = "gb"; + this.gb.Size = new System.Drawing.Size(364, 273); + this.gb.TabIndex = 613; + this.gb.TabStop = false; + // + // t1 + // + this.t1.Enabled = false; + this.t1.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.t1.Location = new System.Drawing.Point(76, 14); + this.t1.Name = "t1"; + this.t1.ReadOnly = true; + this.t1.Size = new System.Drawing.Size(136, 25); + this.t1.TabIndex = 601; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(34, 19); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(31, 15); + this.label1.TabIndex = 600; + this.label1.Text = "종목"; + // + // btadd + // + this.btadd.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btadd.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btadd.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btadd.ForeColor = System.Drawing.Color.Black; + this.btadd.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btadd.Location = new System.Drawing.Point(259, 11); + this.btadd.Name = "btadd"; + this.btadd.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btadd.Size = new System.Drawing.Size(77, 28); + this.btadd.TabIndex = 599; + this.btadd.Text = "추가"; + this.btadd.UseVisualStyleBackColor = true; + this.btadd.Click += new System.EventHandler(this.btadd_Click); + // + // panel3 + // + this.panel3.Controls.Add(this.label20); + this.panel3.Controls.Add(this.td6_2); + this.panel3.Controls.Add(this.label21); + this.panel3.Controls.Add(this.td1_2); + this.panel3.Controls.Add(this.label23); + this.panel3.Controls.Add(this.td2_2); + this.panel3.Controls.Add(this.label24); + this.panel3.Controls.Add(this.td3_2); + this.panel3.Controls.Add(this.label26); + this.panel3.Controls.Add(this.td4_2); + this.panel3.Controls.Add(this.label27); + this.panel3.Controls.Add(this.td5_2); + this.panel3.Controls.Add(this.label19); + this.panel3.Controls.Add(this.td6_1); + this.panel3.Controls.Add(this.label22); + this.panel3.Controls.Add(this.td1_1); + this.panel3.Controls.Add(this.label25); + this.panel3.Controls.Add(this.td2_1); + this.panel3.Controls.Add(this.label28); + this.panel3.Controls.Add(this.td3_1); + this.panel3.Controls.Add(this.label29); + this.panel3.Controls.Add(this.td4_1); + this.panel3.Controls.Add(this.label30); + this.panel3.Controls.Add(this.td5_1); + this.panel3.Location = new System.Drawing.Point(29, 45); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(311, 215); + this.panel3.TabIndex = 625; + // + // label20 + // + this.label20.AutoSize = true; + this.label20.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label20.Location = new System.Drawing.Point(166, 179); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(39, 15); + this.label20.TabIndex = 636; + this.label20.Text = "금액6"; + // + // td6_2 + // + this.td6_2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.td6_2.Location = new System.Drawing.Point(211, 176); + this.td6_2.Name = "td6_2"; + this.td6_2.Size = new System.Drawing.Size(90, 22); + this.td6_2.TabIndex = 12; + // + // label21 + // + this.label21.AutoSize = true; + this.label21.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label21.Location = new System.Drawing.Point(166, 7); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(39, 15); + this.label21.TabIndex = 626; + this.label21.Text = "금액1"; + // + // td1_2 + // + this.td1_2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.td1_2.Location = new System.Drawing.Point(211, 4); + this.td1_2.Name = "td1_2"; + this.td1_2.Size = new System.Drawing.Size(90, 22); + this.td1_2.TabIndex = 2; + // + // label23 + // + this.label23.AutoSize = true; + this.label23.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label23.Location = new System.Drawing.Point(166, 42); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(39, 15); + this.label23.TabIndex = 628; + this.label23.Text = "금액2"; + // + // td2_2 + // + this.td2_2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.td2_2.Location = new System.Drawing.Point(211, 39); + this.td2_2.Name = "td2_2"; + this.td2_2.Size = new System.Drawing.Size(90, 22); + this.td2_2.TabIndex = 4; + // + // label24 + // + this.label24.AutoSize = true; + this.label24.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label24.Location = new System.Drawing.Point(166, 77); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(39, 15); + this.label24.TabIndex = 630; + this.label24.Text = "금액3"; + // + // td3_2 + // + this.td3_2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.td3_2.Location = new System.Drawing.Point(211, 74); + this.td3_2.Name = "td3_2"; + this.td3_2.Size = new System.Drawing.Size(90, 22); + this.td3_2.TabIndex = 6; + // + // label26 + // + this.label26.AutoSize = true; + this.label26.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label26.Location = new System.Drawing.Point(166, 113); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(39, 15); + this.label26.TabIndex = 632; + this.label26.Text = "금액4"; + // + // td4_2 + // + this.td4_2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.td4_2.Location = new System.Drawing.Point(211, 110); + this.td4_2.Name = "td4_2"; + this.td4_2.Size = new System.Drawing.Size(90, 22); + this.td4_2.TabIndex = 8; + // + // label27 + // + this.label27.AutoSize = true; + this.label27.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label27.Location = new System.Drawing.Point(166, 148); + this.label27.Name = "label27"; + this.label27.Size = new System.Drawing.Size(39, 15); + this.label27.TabIndex = 634; + this.label27.Text = "금액5"; + // + // td5_2 + // + this.td5_2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.td5_2.Location = new System.Drawing.Point(211, 145); + this.td5_2.Name = "td5_2"; + this.td5_2.Size = new System.Drawing.Size(90, 22); + this.td5_2.TabIndex = 10; + // + // label19 + // + this.label19.AutoSize = true; + this.label19.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label19.Location = new System.Drawing.Point(3, 179); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(39, 15); + this.label19.TabIndex = 624; + this.label19.Text = "분기6"; + // + // td6_1 + // + this.td6_1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.td6_1.Location = new System.Drawing.Point(48, 176); + this.td6_1.Name = "td6_1"; + this.td6_1.Size = new System.Drawing.Size(106, 22); + this.td6_1.TabIndex = 11; + // + // label22 + // + this.label22.AutoSize = true; + this.label22.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label22.Location = new System.Drawing.Point(3, 7); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(39, 15); + this.label22.TabIndex = 602; + this.label22.Text = "분기1"; + // + // td1_1 + // + this.td1_1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.td1_1.Location = new System.Drawing.Point(48, 4); + this.td1_1.Name = "td1_1"; + this.td1_1.Size = new System.Drawing.Size(106, 22); + this.td1_1.TabIndex = 1; + // + // label25 + // + this.label25.AutoSize = true; + this.label25.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label25.Location = new System.Drawing.Point(3, 42); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(39, 15); + this.label25.TabIndex = 606; + this.label25.Text = "분기2"; + // + // td2_1 + // + this.td2_1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.td2_1.Location = new System.Drawing.Point(48, 39); + this.td2_1.Name = "td2_1"; + this.td2_1.Size = new System.Drawing.Size(106, 22); + this.td2_1.TabIndex = 3; + // + // label28 + // + this.label28.AutoSize = true; + this.label28.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label28.Location = new System.Drawing.Point(3, 77); + this.label28.Name = "label28"; + this.label28.Size = new System.Drawing.Size(39, 15); + this.label28.TabIndex = 608; + this.label28.Text = "분기3"; + // + // td3_1 + // + this.td3_1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.td3_1.Location = new System.Drawing.Point(48, 74); + this.td3_1.Name = "td3_1"; + this.td3_1.Size = new System.Drawing.Size(106, 22); + this.td3_1.TabIndex = 5; + // + // label29 + // + this.label29.AutoSize = true; + this.label29.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label29.Location = new System.Drawing.Point(3, 113); + this.label29.Name = "label29"; + this.label29.Size = new System.Drawing.Size(39, 15); + this.label29.TabIndex = 610; + this.label29.Text = "분기4"; + // + // td4_1 + // + this.td4_1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.td4_1.Location = new System.Drawing.Point(48, 110); + this.td4_1.Name = "td4_1"; + this.td4_1.Size = new System.Drawing.Size(106, 22); + this.td4_1.TabIndex = 7; + // + // label30 + // + this.label30.AutoSize = true; + this.label30.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label30.Location = new System.Drawing.Point(3, 148); + this.label30.Name = "label30"; + this.label30.Size = new System.Drawing.Size(39, 15); + this.label30.TabIndex = 612; + this.label30.Text = "분기5"; + // + // td5_1 + // + this.td5_1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.td5_1.Location = new System.Drawing.Point(48, 145); + this.td5_1.Name = "td5_1"; + this.td5_1.Size = new System.Drawing.Size(106, 22); + this.td5_1.TabIndex = 9; + // + // panel1 + // + this.panel1.Controls.Add(this.label4); + this.panel1.Controls.Add(this.label13); + this.panel1.Controls.Add(this.label3); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.label12); + this.panel1.Controls.Add(this.t3); + this.panel1.Controls.Add(this.label11); + this.panel1.Controls.Add(this.t2); + this.panel1.Controls.Add(this.label5); + this.panel1.Controls.Add(this.label10); + this.panel1.Controls.Add(this.t4); + this.panel1.Controls.Add(this.label9); + this.panel1.Controls.Add(this.label6); + this.panel1.Controls.Add(this.t7_1); + this.panel1.Controls.Add(this.t5); + this.panel1.Controls.Add(this.t6_1); + this.panel1.Controls.Add(this.label7); + this.panel1.Controls.Add(this.t5_1); + this.panel1.Controls.Add(this.t6); + this.panel1.Controls.Add(this.t4_1); + this.panel1.Controls.Add(this.label8); + this.panel1.Controls.Add(this.t3_1); + this.panel1.Controls.Add(this.t7); + this.panel1.Location = new System.Drawing.Point(29, 45); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(311, 215); + this.panel1.TabIndex = 624; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label4.Location = new System.Drawing.Point(271, 185); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(31, 15); + this.label4.TabIndex = 604; + this.label4.Text = "기준"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label13.Location = new System.Drawing.Point(284, 147); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(21, 15); + this.label13.TabIndex = 623; + this.label13.Text = "%"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label3.Location = new System.Drawing.Point(147, 186); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(31, 15); + this.label3.TabIndex = 603; + this.label3.Text = "날짜"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label2.Location = new System.Drawing.Point(3, 7); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(39, 15); + this.label2.TabIndex = 602; + this.label2.Text = "구성1"; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label12.Location = new System.Drawing.Point(284, 112); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(21, 15); + this.label12.TabIndex = 622; + this.label12.Text = "%"; + // + // t3 + // + this.t3.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.t3.Location = new System.Drawing.Point(48, 4); + this.t3.Name = "t3"; + this.t3.Size = new System.Drawing.Size(150, 22); + this.t3.TabIndex = 605; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label11.Location = new System.Drawing.Point(284, 77); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(21, 15); + this.label11.TabIndex = 621; + this.label11.Text = "%"; + // + // t2 + // + this.t2.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.t2.Location = new System.Drawing.Point(182, 182); + this.t2.Name = "t2"; + this.t2.Size = new System.Drawing.Size(86, 22); + this.t2.TabIndex = 592; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label5.Location = new System.Drawing.Point(3, 42); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(39, 15); + this.label5.TabIndex = 606; + this.label5.Text = "구성2"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label10.Location = new System.Drawing.Point(284, 42); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(21, 15); + this.label10.TabIndex = 620; + this.label10.Text = "%"; + // + // t4 + // + this.t4.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.t4.Location = new System.Drawing.Point(48, 39); + this.t4.Name = "t4"; + this.t4.Size = new System.Drawing.Size(150, 22); + this.t4.TabIndex = 607; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label9.Location = new System.Drawing.Point(284, 6); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(21, 15); + this.label9.TabIndex = 619; + this.label9.Text = "%"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label6.Location = new System.Drawing.Point(3, 77); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(39, 15); + this.label6.TabIndex = 608; + this.label6.Text = "구성3"; + // + // t7_1 + // + this.t7_1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.t7_1.Location = new System.Drawing.Point(221, 145); + this.t7_1.Name = "t7_1"; + this.t7_1.Size = new System.Drawing.Size(57, 22); + this.t7_1.TabIndex = 618; + // + // t5 + // + this.t5.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.t5.Location = new System.Drawing.Point(48, 74); + this.t5.Name = "t5"; + this.t5.Size = new System.Drawing.Size(150, 22); + this.t5.TabIndex = 609; + // + // t6_1 + // + this.t6_1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.t6_1.Location = new System.Drawing.Point(221, 110); + this.t6_1.Name = "t6_1"; + this.t6_1.Size = new System.Drawing.Size(57, 22); + this.t6_1.TabIndex = 617; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label7.Location = new System.Drawing.Point(3, 113); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(39, 15); + this.label7.TabIndex = 610; + this.label7.Text = "구성4"; + // + // t5_1 + // + this.t5_1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.t5_1.Location = new System.Drawing.Point(221, 74); + this.t5_1.Name = "t5_1"; + this.t5_1.Size = new System.Drawing.Size(57, 22); + this.t5_1.TabIndex = 616; + // + // t6 + // + this.t6.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.t6.Location = new System.Drawing.Point(48, 110); + this.t6.Name = "t6"; + this.t6.Size = new System.Drawing.Size(150, 22); + this.t6.TabIndex = 611; + // + // t4_1 + // + this.t4_1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.t4_1.Location = new System.Drawing.Point(221, 39); + this.t4_1.Name = "t4_1"; + this.t4_1.Size = new System.Drawing.Size(57, 22); + this.t4_1.TabIndex = 615; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label8.Location = new System.Drawing.Point(3, 148); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(39, 15); + this.label8.TabIndex = 612; + this.label8.Text = "구성5"; + // + // t3_1 + // + this.t3_1.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.t3_1.Location = new System.Drawing.Point(221, 4); + this.t3_1.Name = "t3_1"; + this.t3_1.Size = new System.Drawing.Size(57, 22); + this.t3_1.TabIndex = 614; + // + // t7 + // + this.t7.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.t7.Location = new System.Drawing.Point(48, 145); + this.t7.Name = "t7"; + this.t7.Size = new System.Drawing.Size(150, 22); + this.t7.TabIndex = 613; + // + // panel2 + // + this.panel2.Controls.Add(this.ts5_4); + this.panel2.Controls.Add(this.ts5_3); + this.panel2.Controls.Add(this.ts5_2); + this.panel2.Controls.Add(this.ts5_1); + this.panel2.Controls.Add(this.label18); + this.panel2.Controls.Add(this.ts4_4); + this.panel2.Controls.Add(this.ts4_3); + this.panel2.Controls.Add(this.ts4_2); + this.panel2.Controls.Add(this.label16); + this.panel2.Controls.Add(this.ts4_1); + this.panel2.Controls.Add(this.ts3_4); + this.panel2.Controls.Add(this.ts3_3); + this.panel2.Controls.Add(this.ts3_2); + this.panel2.Controls.Add(this.label15); + this.panel2.Controls.Add(this.ts3_1); + this.panel2.Controls.Add(this.ts2_4); + this.panel2.Controls.Add(this.ts2_3); + this.panel2.Controls.Add(this.ts2_2); + this.panel2.Controls.Add(this.label14); + this.panel2.Controls.Add(this.ts2_1); + this.panel2.Controls.Add(this.ts1_4); + this.panel2.Controls.Add(this.ts1_3); + this.panel2.Controls.Add(this.ts1_2); + this.panel2.Controls.Add(this.label17); + this.panel2.Controls.Add(this.ts1_1); + this.panel2.Location = new System.Drawing.Point(29, 45); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(311, 223); + this.panel2.TabIndex = 625; + // + // ts5_4 + // + this.ts5_4.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts5_4.Location = new System.Drawing.Point(237, 196); + this.ts5_4.Name = "ts5_4"; + this.ts5_4.Size = new System.Drawing.Size(69, 21); + this.ts5_4.TabIndex = 20; + // + // ts5_3 + // + this.ts5_3.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts5_3.Location = new System.Drawing.Point(162, 196); + this.ts5_3.Name = "ts5_3"; + this.ts5_3.Size = new System.Drawing.Size(69, 21); + this.ts5_3.TabIndex = 19; + // + // ts5_2 + // + this.ts5_2.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts5_2.Location = new System.Drawing.Point(83, 196); + this.ts5_2.Name = "ts5_2"; + this.ts5_2.Size = new System.Drawing.Size(69, 21); + this.ts5_2.TabIndex = 18; + // + // ts5_1 + // + this.ts5_1.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts5_1.Location = new System.Drawing.Point(8, 196); + this.ts5_1.Name = "ts5_1"; + this.ts5_1.Size = new System.Drawing.Size(69, 21); + this.ts5_1.TabIndex = 17; + // + // label18 + // + this.label18.AutoSize = true; + this.label18.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label18.Location = new System.Drawing.Point(7, 180); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(29, 14); + this.label18.TabIndex = 624; + this.label18.Text = "분기"; + // + // ts4_4 + // + this.ts4_4.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts4_4.Location = new System.Drawing.Point(236, 155); + this.ts4_4.Name = "ts4_4"; + this.ts4_4.Size = new System.Drawing.Size(69, 21); + this.ts4_4.TabIndex = 16; + // + // ts4_3 + // + this.ts4_3.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts4_3.Location = new System.Drawing.Point(161, 156); + this.ts4_3.Name = "ts4_3"; + this.ts4_3.Size = new System.Drawing.Size(69, 21); + this.ts4_3.TabIndex = 15; + // + // ts4_2 + // + this.ts4_2.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts4_2.Location = new System.Drawing.Point(83, 156); + this.ts4_2.Name = "ts4_2"; + this.ts4_2.Size = new System.Drawing.Size(69, 21); + this.ts4_2.TabIndex = 14; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label16.Location = new System.Drawing.Point(6, 137); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(76, 14); + this.label16.TabIndex = 619; + this.label16.Text = "순이익 증가율"; + // + // ts4_1 + // + this.ts4_1.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts4_1.Location = new System.Drawing.Point(7, 156); + this.ts4_1.Name = "ts4_1"; + this.ts4_1.Size = new System.Drawing.Size(69, 21); + this.ts4_1.TabIndex = 13; + // + // ts3_4 + // + this.ts3_4.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts3_4.Location = new System.Drawing.Point(237, 111); + this.ts3_4.Name = "ts3_4"; + this.ts3_4.Size = new System.Drawing.Size(69, 21); + this.ts3_4.TabIndex = 12; + // + // ts3_3 + // + this.ts3_3.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts3_3.Location = new System.Drawing.Point(160, 111); + this.ts3_3.Name = "ts3_3"; + this.ts3_3.Size = new System.Drawing.Size(69, 21); + this.ts3_3.TabIndex = 11; + // + // ts3_2 + // + this.ts3_2.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts3_2.Location = new System.Drawing.Point(83, 111); + this.ts3_2.Name = "ts3_2"; + this.ts3_2.Size = new System.Drawing.Size(69, 21); + this.ts3_2.TabIndex = 10; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label15.Location = new System.Drawing.Point(5, 94); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(76, 14); + this.label15.TabIndex = 614; + this.label15.Text = "순자산 증가율"; + // + // ts3_1 + // + this.ts3_1.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts3_1.Location = new System.Drawing.Point(7, 111); + this.ts3_1.Name = "ts3_1"; + this.ts3_1.Size = new System.Drawing.Size(69, 21); + this.ts3_1.TabIndex = 9; + // + // ts2_4 + // + this.ts2_4.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts2_4.Location = new System.Drawing.Point(237, 67); + this.ts2_4.Name = "ts2_4"; + this.ts2_4.Size = new System.Drawing.Size(69, 21); + this.ts2_4.TabIndex = 8; + // + // ts2_3 + // + this.ts2_3.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts2_3.Location = new System.Drawing.Point(160, 67); + this.ts2_3.Name = "ts2_3"; + this.ts2_3.Size = new System.Drawing.Size(69, 21); + this.ts2_3.TabIndex = 7; + // + // ts2_2 + // + this.ts2_2.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts2_2.Location = new System.Drawing.Point(84, 67); + this.ts2_2.Name = "ts2_2"; + this.ts2_2.Size = new System.Drawing.Size(69, 21); + this.ts2_2.TabIndex = 6; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label14.Location = new System.Drawing.Point(3, 49); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(87, 14); + this.label14.TabIndex = 609; + this.label14.Text = "영업이익 증가율"; + // + // ts2_1 + // + this.ts2_1.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts2_1.Location = new System.Drawing.Point(7, 67); + this.ts2_1.Name = "ts2_1"; + this.ts2_1.Size = new System.Drawing.Size(69, 21); + this.ts2_1.TabIndex = 5; + // + // ts1_4 + // + this.ts1_4.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts1_4.Location = new System.Drawing.Point(236, 24); + this.ts1_4.Name = "ts1_4"; + this.ts1_4.Size = new System.Drawing.Size(69, 21); + this.ts1_4.TabIndex = 4; + // + // ts1_3 + // + this.ts1_3.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts1_3.Location = new System.Drawing.Point(160, 24); + this.ts1_3.Name = "ts1_3"; + this.ts1_3.Size = new System.Drawing.Size(69, 21); + this.ts1_3.TabIndex = 3; + // + // ts1_2 + // + this.ts1_2.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts1_2.Location = new System.Drawing.Point(84, 24); + this.ts1_2.Name = "ts1_2"; + this.ts1_2.Size = new System.Drawing.Size(69, 21); + this.ts1_2.TabIndex = 2; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label17.Location = new System.Drawing.Point(6, 7); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(76, 14); + this.label17.TabIndex = 602; + this.label17.Text = "매출액 증가율"; + // + // ts1_1 + // + this.ts1_1.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ts1_1.Location = new System.Drawing.Point(8, 24); + this.ts1_1.Name = "ts1_1"; + this.ts1_1.Size = new System.Drawing.Size(69, 21); + this.ts1_1.TabIndex = 1; + // + // btnok + // + this.btnok.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnok.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btnok.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnok.ForeColor = System.Drawing.Color.Black; + this.btnok.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnok.Location = new System.Drawing.Point(504, 932); + this.btnok.Name = "btnok"; + this.btnok.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnok.Size = new System.Drawing.Size(77, 27); + this.btnok.TabIndex = 614; + this.btnok.Text = "나가기"; + this.btnok.UseVisualStyleBackColor = true; + this.btnok.Click += new System.EventHandler(this.btnok_Click); + // + // dataGridView1 + // + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Location = new System.Drawing.Point(504, 205); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowTemplate.Height = 23; + this.dataGridView1.Size = new System.Drawing.Size(89, 53); + this.dataGridView1.TabIndex = 616; + this.dataGridView1.Visible = false; + // + // panel10 + // + this.panel10.BackColor = System.Drawing.Color.White; + this.panel10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel10.ForeColor = System.Drawing.SystemColors.ButtonShadow; + this.panel10.Location = new System.Drawing.Point(12, 350); + this.panel10.Name = "panel10"; + this.panel10.Size = new System.Drawing.Size(470, 1); + this.panel10.TabIndex = 617; + // + // GraphE + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(623, 966); + this.Controls.Add(this.panel10); + this.Controls.Add(this.dataGridView1); + this.Controls.Add(this.btnok); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.btnAdd); + this.Controls.Add(this.btnall); + this.Controls.Add(this.btndel); + this.Controls.Add(this.FpSpread1); + this.Controls.Add(this.downSearch); + this.Controls.Add(this.upSearch); + this.Controls.Add(this.txt1); + this.Controls.Add(this.pictureBox); + this.Controls.Add(this.gb); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "GraphE"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "주요매출 구성 원그래프"; + this.Load += new System.EventHandler(this.GraphE_Load); + this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.GraphE_KeyPress); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread1_Sheet2)).EndInit(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.gb.ResumeLayout(false); + this.gb.PerformLayout(); + this.panel3.ResumeLayout(false); + this.panel3.PerformLayout(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.PictureBox pictureBox; + private System.Windows.Forms.Button upSearch; + private System.Windows.Forms.TextBox txt1; + private System.Windows.Forms.Button downSearch; + public FarPoint.Win.Spread.FpSpread FpSpread1; + public FarPoint.Win.Spread.SheetView FpSpread1_Sheet1; + public FarPoint.Win.Spread.SheetView FpSpread1_Sheet2; + private System.Windows.Forms.Button btndel; + private System.Windows.Forms.Button btnall; + private System.Windows.Forms.Button btnAdd; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.TextBox txtSearch; + private System.Windows.Forms.ListBox listBox; + private System.Windows.Forms.Button btnsearch; + private System.Windows.Forms.GroupBox gb; + private System.Windows.Forms.TextBox t2; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox t7_1; + private System.Windows.Forms.TextBox t6_1; + private System.Windows.Forms.TextBox t5_1; + private System.Windows.Forms.TextBox t4_1; + private System.Windows.Forms.TextBox t3_1; + private System.Windows.Forms.TextBox t7; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.TextBox t6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox t5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox t4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox t3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox t1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button btadd; + private System.Windows.Forms.Button btnok; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.Panel panel10; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.TextBox ts5_4; + private System.Windows.Forms.TextBox ts5_3; + private System.Windows.Forms.TextBox ts5_2; + private System.Windows.Forms.TextBox ts5_1; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.TextBox ts4_4; + private System.Windows.Forms.TextBox ts4_3; + private System.Windows.Forms.TextBox ts4_2; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.TextBox ts4_1; + private System.Windows.Forms.TextBox ts3_4; + private System.Windows.Forms.TextBox ts3_3; + private System.Windows.Forms.TextBox ts3_2; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.TextBox ts3_1; + private System.Windows.Forms.TextBox ts2_4; + private System.Windows.Forms.TextBox ts2_3; + private System.Windows.Forms.TextBox ts2_2; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.TextBox ts2_1; + private System.Windows.Forms.TextBox ts1_4; + private System.Windows.Forms.TextBox ts1_3; + private System.Windows.Forms.TextBox ts1_2; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.TextBox ts1_1; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.TextBox td6_2; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.TextBox td1_2; + private System.Windows.Forms.Label label23; + private System.Windows.Forms.TextBox td2_2; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.TextBox td3_2; + private System.Windows.Forms.Label label26; + private System.Windows.Forms.TextBox td4_2; + private System.Windows.Forms.Label label27; + private System.Windows.Forms.TextBox td5_2; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.TextBox td6_1; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.TextBox td1_1; + private System.Windows.Forms.Label label25; + private System.Windows.Forms.TextBox td2_1; + private System.Windows.Forms.Label label28; + private System.Windows.Forms.TextBox td3_1; + private System.Windows.Forms.Label label29; + private System.Windows.Forms.TextBox td4_1; + private System.Windows.Forms.Label label30; + private System.Windows.Forms.TextBox td5_1; + } +} \ No newline at end of file diff --git a/MBN_STOCK_N/Form/GraphE.cs b/MBN_STOCK_N/Form/GraphE.cs new file mode 100644 index 0000000..608fe1d --- /dev/null +++ b/MBN_STOCK_N/Form/GraphE.cs @@ -0,0 +1,615 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +//using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MBN_STOCK_N +{ + public partial class GraphE : Form + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + int m_row = -1; + int m_idx = 0; + string m_table = string.Empty; + string m_query = string.Empty; + + bool[] sortAscending = new bool[6]; + public GraphE() + { + InitializeComponent(); + } + + + public GraphE(Form frm, int idx) + { + mf = (MainForm)frm; + m_idx = idx; + InitializeComponent(); + } + + private void GraphE_Load(object sender, EventArgs e) + { + FpSpread1.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + + FpSpread1.Height = 320; + FpSpread1.Width = 490; + FarPoint.Win.Spread.SortInfo[] si = new FarPoint.Win.Spread.SortInfo[2]; + + int col = 0; + //int sindex = (e.Column == 1 ? 0 : (e.Column == 1 ? 0 : (e.Column == 1 ? 0 : 0))); + int sindex = (col == 0 ? 1 : (col == 3 ? 1 : (col == 5 ? 2 : 3))); + si[0] = new FarPoint.Win.Spread.SortInfo(col, sortAscending[sindex], System.Collections.Comparer.Default); + + sortAscending[sindex] = (sortAscending[sindex] == false ? true : false); + FpSpread1.Sheets[0].SortRange(0, 0, FpSpread1.Sheets[0].GetLastNonEmptyRow(FarPoint.Win.Spread.NonEmptyItemFlag.Data), FpSpread1.Sheets[0].ColumnCount, true, si); + + sindex = (col == 0 ? 1 : (col == 3 ? 1 : (col == 5 ? 2 : 3))); + si[0] = new FarPoint.Win.Spread.SortInfo(col, sortAscending[sindex], System.Collections.Comparer.Default); + + sortAscending[sindex] = (sortAscending[sindex] == false ? true : false); + FpSpread1.Sheets[0].SortRange(0, 0, FpSpread1.Sheets[0].GetLastNonEmptyRow(FarPoint.Win.Spread.NonEmptyItemFlag.Data), FpSpread1.Sheets[0].ColumnCount, true, si); + + if (m_idx == 0) + { + FpSpread1.Sheets[0].ColumnCount = 7; + m_query = "SELECT * FROM INPUT_PIE"; + m_table = "INPUT_PIE"; + + pictureBox.Image = Image.FromFile(mf.RES_FOLDER_PATH + "pie.bmp"); + + panel1.Visible = true; + panel2.Visible = false; + panel3.Visible = false; + panel3.Location = new Point(28, 46); + + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 0].Text = "종목"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 1].Text = "날짜"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 2].Text = "구성1"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 3].Text = "구성2"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 4].Text = "구성3"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 5].Text = "구성4"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 6].Text = "구성5"; + + this.Text = "주요매출 구성"; + } + else if (m_idx == 1) + { + FpSpread1.Sheets[0].ColumnCount = 6; + m_query = "SELECT * FROM INPUT_GROW"; + m_table = "INPUT_GROW"; + pictureBox.Image = Image.FromFile(mf.RES_FOLDER_PATH + "Grow.bmp"); + + panel1.Visible = false; + panel2.Visible = true; + panel3.Visible = false; + panel2.Location = new Point(28, 46); + + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 0].Text = "종목"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 1].Text = "구성1"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 2].Text = "구성2"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 3].Text = "구성3"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 4].Text = "구성4"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 5].Text = "분기"; + this.Text = "성장성 지표"; + } + else if (m_idx == 2) + { + FpSpread1.Sheets[0].ColumnCount = 7; + m_query = "SELECT * FROM INPUT_SELL"; + m_table = "INPUT_SELL"; + pictureBox.Image = Image.FromFile(mf.RES_FOLDER_PATH + "sell.bmp"); + panel1.Visible = false; + panel2.Visible = false; + panel3.Visible = true; + panel3.Location = new Point(28, 46); + + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 0].Text = "종목"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 1].Text = "구성1"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 2].Text = "구성2"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 3].Text = "구성3"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 4].Text = "구성4"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 5].Text = "구성5"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 6].Text = "구성6"; + this.Text = "매출액"; + } + else if (m_idx == 3) + { + FpSpread1.Sheets[0].ColumnCount = 7; + m_query = "SELECT* FROM INPUT_PROFIT"; + m_table = "INPUT_PROFIT"; + pictureBox.Image = Image.FromFile(mf.RES_FOLDER_PATH + "profit.bmp"); + panel1.Visible = false; + panel2.Visible = false; + panel3.Visible = true; + panel3.Location = new Point(28, 46); + + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 0].Text = "종목"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 1].Text = "구성1"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 2].Text = "구성2"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 3].Text = "구성3"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 4].Text = "구성4"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 5].Text = "구성5"; + FpSpread1.Sheets[0].ColumnHeader.Cells[0, 6].Text = "구성6"; + this.Text = "영업이익"; + } + + Data_Init(); + FpSpread1.Focus(); + + + } + + private void Data_Init() + { + FpSpread1.ActiveSheet.ClearRange(0, 0, FpSpread1.ActiveSheet.RowCount, FpSpread1.ActiveSheet.ColumnCount, true); + + if (FpSpread1.ActiveSheet.RowCount != 0) + FpSpread1.ActiveSheet.RemoveRows(0, FpSpread1.ActiveSheet.RowCount); + + mf.m_db.ViewQuery(dataGridView1, "SELECT* FROM " + m_table + ""); + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + mf.InsertRow(FpSpread1, FpSpread1.ActiveSheet, FpSpread1.ActiveSheet.RowCount + 1, 1, 2); + + for (int j = 0; j < FpSpread1.ActiveSheet.ColumnCount; j++) + { + FpSpread1.ActiveSheet.SetText(i, j, dataGridView1.Rows[i].Cells[j].Value.ToString()); + + } + } + + ///--------- + } + private void Data_Load(int row) + { + TextBox Tb_1 = null; + TextBox Tb_2 = null; + TextBox Tb_3 = null; + TextBox Tb_4 = null; + m_row = row; + + t1.Text = FpSpread1.ActiveSheet.GetText(row, 0); + if (m_idx == 0) + { + + t2.Text = FpSpread1.ActiveSheet.GetText(row, 1); + + for (int i = 2; i <= 6; i++) + { + string[] rs = FpSpread1.ActiveSheet.GetText(row, i).Split('_'); + + if (i == 2) + { Tb_1 = t3; Tb_2 = t3_1; } + else if (i == 3) + { Tb_1 = t4; Tb_2 = t4_1; } + else if (i == 4) + { Tb_1 = t5; Tb_2 = t5_1; } + else if (i == 5) + { Tb_1 = t6; Tb_2 = t6_1; } + else if (i == 6) + { Tb_1 = t7; Tb_2 = t7_1; } + + + Tb_1.Text = rs[0]; + Tb_2.Text = rs[1]; + } + } + else if (m_idx == 1) + { + for (int i = 1; i <= 5; i++) + { + string[] rs = FpSpread1.ActiveSheet.GetText(row, i).Split('_'); + + if (i == 1) + { Tb_1 = ts1_1; Tb_2 = ts1_2; Tb_3 = ts1_3; Tb_4 = ts1_4; } + else if (i == 2) + { Tb_1 = ts2_1; Tb_2 = ts2_2; Tb_3 = ts2_3; Tb_4 = ts2_4; } + else if (i == 3) + { Tb_1 = ts3_1; Tb_2 = ts3_2; Tb_3 = ts3_3; Tb_4 = ts3_4; } + else if (i == 4) + { Tb_1 = ts4_1; Tb_2 = ts4_2; Tb_3 = ts4_3; Tb_4 = ts4_4; } + else if (i == 5) + { Tb_1 = ts5_1; Tb_2 = ts5_2; Tb_3 = ts5_3; Tb_4 = ts5_4; } + + + Tb_1.Text = rs[0]; + Tb_2.Text = rs[1]; + Tb_3.Text = rs[2]; + Tb_4.Text = rs[3]; + } + } + else + { + for (int i = 1; i <= 6; i++) + { + string[] rs = FpSpread1.ActiveSheet.GetText(row, i).Split('_'); + + if (i == 1) + { Tb_1 = td1_1; Tb_2 = td1_2; } + else if (i == 2) + { Tb_1 = td2_1; Tb_2 = td2_2; } + else if (i == 3) + { Tb_1 = td3_1; Tb_2 = td3_2; } + else if (i == 4) + { Tb_1 = td4_1; Tb_2 = td4_2; } + else if (i == 5) + { Tb_1 = td5_1; Tb_2 = td5_2; } + else if (i == 6) + { Tb_1 = td6_1; Tb_2 = td6_2; } + + + Tb_1.Text = rs[0]; + Tb_2.Text = rs[1]; + + } + } + + } + + + private void FpSpread1_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e) + { + try + { + if (e.ColumnHeader) + { + //if (e.Column == 0) + //{ + FarPoint.Win.Spread.SortInfo[] si = new FarPoint.Win.Spread.SortInfo[2]; + + //int sindex = (e.Column == 1 ? 0 : (e.Column == 1 ? 0 : (e.Column == 1 ? 0 : 0))); + int sindex = (e.Column == 1 ? 0 : (e.Column == 3 ? 1 : (e.Column == 5 ? 2 : 3))); + si[0] = new FarPoint.Win.Spread.SortInfo(0, sortAscending[3], System.Collections.Comparer.Default); + + sortAscending[3] = (sortAscending[3] == false ? true : false); + FpSpread1.Sheets[0].SortRange(0, 0, FpSpread1.Sheets[0].GetLastNonEmptyRow(FarPoint.Win.Spread.NonEmptyItemFlag.Data)+1, FpSpread1.Sheets[0].ColumnCount, true, si); + //} + + } + else + { + Data_Load(e.Row); + } + } + catch(Exception) + { + + } + + } + + private void txtSearch_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == (char)Keys.Enter) + { + e.Handled = true; + if (txtSearch.Text == "") return; + mf.searchStock(listBox, txtSearch); + } + } + + private void btnsearch_Click(object sender, EventArgs e) + { + if (txtSearch.Text == "") return; + mf.searchStock(listBox, txtSearch); + } + + private void listBox_DoubleClick(object sender, EventArgs e) + { + t1.Text = (string)listBox.SelectedItem; + + if (m_idx == 0) + { + t2.Text = ""; t3.Text = ""; t3_1.Text = ""; + t4.Text = ""; t4_1.Text = ""; t5.Text = ""; t5_1.Text = ""; + t6.Text = ""; t6_1.Text = ""; t7.Text = ""; t7_1.Text = ""; + } + else if (m_idx == 1) + { + ts1_1.Text = ""; ts1_2.Text = ""; ts1_3.Text = ""; ts1_4.Text = ""; + ts2_1.Text = ""; ts2_2.Text = ""; ts2_3.Text = ""; ts2_4.Text = ""; + ts3_1.Text = ""; ts3_2.Text = ""; ts3_3.Text = ""; ts3_4.Text = ""; + ts4_1.Text = ""; ts4_2.Text = ""; ts4_3.Text = ""; ts4_4.Text = ""; + ts5_1.Text = ""; ts5_2.Text = ""; ts5_3.Text = ""; ts5_4.Text = ""; + + } + else + { + td1_1.Text = ""; td1_2.Text = ""; + td2_1.Text = ""; td2_2.Text = ""; + td3_1.Text = ""; td3_2.Text = ""; + td4_1.Text = ""; td4_2.Text = ""; + td5_1.Text = ""; td5_2.Text = ""; + td6_1.Text = ""; td6_2.Text = ""; + + } + } + + + //위로찾기 + private void upSearch_Click(object sender, EventArgs e) + { + if (txt1.Text == "") return; + + for (int i = m_row - 1; i > 0; i--) + { + if (FpSpread1.ActiveSheet.GetText(i, 0).Contains(txt1.Text.Trim().ToUpper())) + { + m_row = i; + + FpSpread1.ActiveSheet.SetActiveCell(m_row, 0); + FpSpread1.ShowActiveCell(FarPoint.Win.Spread.VerticalPosition.Center, FarPoint.Win.Spread.HorizontalPosition.Center); + + Cell_ColorA(m_row); + Data_Load(m_row); + + break; + } + } + + } + + + //아래로 찾기 + private void downSearch_Click(object sender, EventArgs e) + { + if (txt1.Text == "") return; + + for (int i = m_row+1; i< FpSpread1.ActiveSheet.RowCount; i++) + { + if (FpSpread1.ActiveSheet.GetText(i, 0).Contains(txt1.Text.Trim().ToUpper())) + { + m_row = i; + + + FpSpread1.ActiveSheet.SetActiveCell(m_row, 0); + FpSpread1.ShowActiveCell(FarPoint.Win.Spread.VerticalPosition.Bottom, FarPoint.Win.Spread.HorizontalPosition.Center); + + Cell_ColorA(m_row); + Data_Load(m_row); + break; + } + } + } + + private void Cell_ColorA(int row) + { + FpSpread1.ActiveSheet.SelectionStyle = FarPoint.Win.Spread.SelectionStyles.SelectionColors; + FpSpread1.ActiveSheet.SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.Range; + FpSpread1.ActiveSheet.SelectionUnit = FarPoint.Win.Spread.Model.SelectionUnit.Cell; + + for (int i = 1; i <= 6; i++) + { + FpSpread1.ActiveSheet.AddSelection(row, 0, 1, i); + } + FpSpread1.ActiveSheet.SelectionBackColor = Color.FromArgb(233, 235, 240); + FpSpread1.ActiveSheet.SelectionForeColor = Color.Black; + + } + + private void btndel_Click(object sender, EventArgs e) + { + if (m_row == -1) return; + + if (MessageBox.Show("선택한 종목을 삭제하겠습니까?", "MmoneyCoder", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + mf.m_db.ExecuteQuery("DELETE FROM " + m_table + " WHERE STOCK_NAME = '" + FpSpread1.ActiveSheet.GetText(m_row, 0) + "'"); + FpSpread1.ActiveSheet.RemoveRows(FpSpread1.ActiveSheet.ActiveRowIndex, 1); + + } + + } + + private void btnall_Click(object sender, EventArgs e) + { + if (MessageBox.Show("모든 종목을 삭제하겠습니까?", "MmoneyCoder", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + FpSpread1.ActiveSheet.ClearRange(0, 0, FpSpread1.ActiveSheet.RowCount, FpSpread1.ActiveSheet.ColumnCount, true); + + mf.m_db.ExecuteQuery("DELETE FROM " + m_table + ""); + + if (FpSpread1.ActiveSheet.RowCount != 0) + FpSpread1.ActiveSheet.RemoveRows(0, FpSpread1.ActiveSheet.RowCount); + + } + } + + + //추가 + private void btadd_Click(object sender, EventArgs e) + { + string query = string.Empty; + bool bStockExist = false; + int row = 0; + + + try + { + if (t1.Text == "") + { + MessageBox.Show("종목을 선택하세요"); + return; + } + + for (int i = 0; i < FpSpread1.ActiveSheet.RowCount; i++) + { + if (FpSpread1.ActiveSheet.GetText(i, 0).Trim() == t1.Text.Trim()) + { + bStockExist = true; + row = i; + break; + + } + } + + if (bStockExist) //update + { + if (m_idx == 0) + { + query = "UPDATE INPUT_PIE SET BASE_DATE ='" + t2.Text + "',"; + query = query + " GUSUNG_1 = '" + t3.Text + "_" + t3_1.Text + "',"; + query = query + " GUSUNG_2 = '" + t4.Text + "_" + t4_1.Text + "',"; + query = query + " GUSUNG_3 = '" + t5.Text + "_" + t5_1.Text + "',"; + query = query + " GUSUNG_4 = '" + t6.Text + "_" + t6_1.Text + "',"; + query = query + " GUSUNG_5 = '" + t7.Text + "_" + t7_1.Text + "'"; + query = query + " WHERE STOCK_NAME = '" + t1.Text + "'"; + } + else if (m_idx == 1) + { + query = "UPDATE INPUT_GROW SET BASE_DATE = '" + ts5_1.Text + "_" + ts5_2.Text + "_" + ts5_3.Text + "_" + ts5_4.Text + "',"; + query = query + " GUSUNG_1 = '" + ts1_1.Text + "_" + ts1_2.Text + "_" + ts1_3.Text + "_" + ts1_4.Text + "',"; + query = query + " GUSUNG_2 = '" + ts2_1.Text + "_" + ts2_2.Text + "_" + ts2_3.Text + "_" + ts2_4.Text + "',"; + query = query + " GUSUNG_3 = '" + ts3_1.Text + "_" + ts3_2.Text + "_" + ts3_3.Text + "_" + ts3_4.Text + "',"; + query = query + " GUSUNG_4 = '" + ts4_1.Text + "_" + ts4_2.Text + "_" + ts4_3.Text + "_" + ts4_4.Text + "'"; + query = query + " WHERE STOCK_NAME = '" + t1.Text + "'"; + } + else + { + query = "UPDATE " + m_table + " SET GUSUNG_1 ='" + td1_1.Text + "_" + td1_2.Text + "',"; + query = query + " GUSUNG_2 = '" + td2_1.Text + "_" + td2_2.Text + "',"; + query = query + " GUSUNG_3 = '" + td3_1.Text + "_" + td3_2.Text + "',"; + query = query + " GUSUNG_4 = '" + td4_1.Text + "_" + td4_2.Text + "',"; + query = query + " GUSUNG_5 = '" + td5_1.Text + "_" + td5_2.Text + "',"; + query = query + " GUSUNG_6 = '" + td6_1.Text + "_" + td6_2.Text + "'"; + query = query + " WHERE STOCK_NAME = '" + t1.Text + "'"; + } + + } + else //insert + { + if (m_idx == 0) + { + query = "INSERT INTO INPUT_PIE VALUES('" + t1.Text + "', '" + t2.Text + "',"; + query = query + "'" + t3.Text + "_" + t3_1.Text + "',"; + query = query + "'" + t4.Text + "_" + t4_1.Text + "',"; + query = query + "'" + t5.Text + "_" + t5_1.Text + "',"; + query = query + "'" + t6.Text + "_" + t6_1.Text + "',"; + query = query + "'" + t7.Text + "_" + t7_1.Text + "')"; + } + else if (m_idx == 1) + { + query = "INSERT INTO " + m_table + " VALUES('" + t1.Text + "',"; + query = query + "'" + ts1_1.Text + "_" + ts1_2.Text + "_" + ts1_3.Text + "_" + ts1_4.Text + "',"; + query = query + "'" + ts2_1.Text + "_" + ts2_2.Text + "_" + ts2_3.Text + "_" + ts2_4.Text + "',"; + query = query + "'" + ts3_1.Text + "_" + ts3_2.Text + "_" + ts3_3.Text + "_" + ts3_4.Text + "',"; + query = query + "'" + ts4_1.Text + "_" + ts4_2.Text + "_" + ts4_3.Text + "_" + ts4_4.Text + "',"; + query = query + "'" + ts5_1.Text + "_" + ts5_2.Text + "_" + ts5_3.Text + "_" + ts5_4.Text + "')"; + } + else + { + query = "INSERT INTO " + m_table + " VALUES('" + t1.Text + "',"; + query = query + "'" + td1_1.Text + "_" + td1_2.Text + "',"; + query = query + "'" + td2_1.Text + "_" + td2_2.Text + "',"; + query = query + "'" + td3_1.Text + "_" + td3_2.Text + "',"; + query = query + "'" + td4_1.Text + "_" + td4_2.Text + "',"; + query = query + "'" + td5_1.Text + "_" + td5_2.Text + "',"; + query = query + "'" + td6_1.Text + "_" + td6_2.Text + "')"; + } + + } + + mf.m_db.ExecuteQuery(query); + Data_Init(); + + FpSpread1.ActiveSheet.SetActiveCell(m_row, 0); + FpSpread1.ShowActiveCell(FarPoint.Win.Spread.VerticalPosition.Center, FarPoint.Win.Spread.HorizontalPosition.Center); + + Cell_ColorA(m_row); + Data_Load(m_row); + + if (mf.m_db.m_su) + { + MessageBox.Show("저장되었습니다"); + } + else + { + MessageBox.Show("저장 Error - DB연결을 확인하세요"); + } + } + catch(Exception) + { + + } + + } + + + // + private void btnok_Click(object sender, EventArgs e) + { + Close(); + } + + public void Select_Item(int nrow) + { + string str = string.Empty; + + if (nrow != -1) + { + int row = mf.PlayList.ActiveSheet.RowCount + 1; + + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + + + str = mf.jongmokCode(FpSpread1.ActiveSheet.GetText(nrow, 0)); + string data4 = str.Substring(str.IndexOf('/') + 1, str.Length - str.IndexOf('/') - 1); + + mf.PlayList.ActiveSheet.SetText(row - 1, 1, data4); //코스피, 코스닥 체크 + + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + mf.PlayList.ActiveSheet.SetText(row - 1, 2, FpSpread1.ActiveSheet.GetText(nrow, 0)); + + if (m_idx == 0) + str = "주요매출 구성"; + else if (m_idx == 1) + str = "성장성 지표"; + else if (m_idx == 2) + str = "매출액"; + else if (m_idx == 3) + str = "영업이익"; + + mf.PlayList.ActiveSheet.SetText(row - 1, 3, str); + mf.PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + + FpSpread1.Focus(); + } + } + + private void FpSpread1_CellDoubleClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e) + { + if (!e.ColumnHeader) + { + Select_Item(e.Row); + Close(); + } + } + + private void btnAdd_Click(object sender, EventArgs e) + { + Select_Item(m_row); + } + + private void GraphE_KeyPress(object sender, KeyPressEventArgs e) + { + + } + + private void txt1_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == (char)Keys.Enter) + { + e.Handled = true; + downSearch_Click(null, null); + } + } + + } +} diff --git a/MBN_STOCK_N/Form/GraphE.resx b/MBN_STOCK_N/Form/GraphE.resx new file mode 100644 index 0000000..035dc8e --- /dev/null +++ b/MBN_STOCK_N/Form/GraphE.resx @@ -0,0 +1,6622 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + Qk327gUAAAAAADYAAAAoAAAA4AEAAA4BAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4t7X497Y + 497X497Y497Y49/Y5N7Y5N7Y5N7Y5N/Y5d/Z5N/Z5N/Y5eDZ5eDZ5ODZ5eDZ5eDZ5eDZ5eDZ5eDZ5eDZ + 5eDa5eDZ5eDa5eDa5eDa5eDa5eDa5eDa5ODZ5ODa5ODa5ODa5eDa5eHa5eDa5eDa5eHa5eHa5eHa5ODa + 5eHa5eHa5eHa5eHa5eDa5eDa5uHa5uHb5uDb5uDb5uHb5uHb5uHb5uDb5uHb5uHb5uHb5uHb5+Lc5uHc + 5uHc5uHc5+Lc5+Lc5+Lc5+Lb6OLc5+Lb5+Lc6OLc5+Lb5+Lb6OLc6OLc6OLc6OLc5+Lc5+Lc5+Lc5+Lc + 6OLd5+Lc5+Lc5+Lc6OLc6OLd5+Lc6OLd6OLd6OLd6OPd6OPe6OPd6OPe6OPd6ePe6OTe6eTe6ePe6eTe + 6OTe6eTe6eTe6eTe6ePe6ePe6OPe6eTe6eTe6eTe6OTe6OPd6OTd6eTe6OTe6eTe6OTd6OTd6eTe6eXe + 6eTe6eXe6eXe6eTe6eTe6uXf6uXe6uTe6uXf6uXf6uXf6uXf6uXf6ubf6uXf6ubf6ubf6uXf6ubf6ubf + 6uXf6uXf6uXf6ubf6ubf6ubg6ubg6ubg6+bg6+bg6+bg6ubf6+bg6+bg6+bg6+bg6ubg6+fg6+fg6+bg + 6+fg6+bg6+fg6+fg6+fg6+fg6+fg6+fg7Ofh6+fg6+fg6+fg7Ofh7Ofh7Ofh7Ofg7Ofh6+fg7Ofh7Ojh + 7Ofh7Oji7Ofh7efi7Ofh7Ofi7Ojh7Oji7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh + 7Ofh7Ofh7Ofh7Ofi7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Obh7Obh7Obh7Obh7Obh7Obh7Obg + 7Obh7Obh7Obh7Obh7Obh7Obh7Obh7Obh7Obh7Ofh7Ofh7Obh7Ofh7Ofh7Ofh7Obi7Ofh7efi7Ofh7Ofi + 7Ofh7efi7efi7eji7eji7efi7eji7eji7uji7uni7uni7+nj8Ork8Ovk8evl8uzm8uzm8+3n9O/o9O/p + 9fDq9vHr9/Ls+PLs+PTt+PPt+PPt+PPt+PPt+PPt+PPt+PPt9/Ls9vHr9fDq9O/p8+/o8u7n8u3m8ezl + 8Ovk8Ork7+rj7+nj7uji7uji7uji7uji7uji7efh7efh7Ofg7efh7Ofg7Ofg7Obg7Obg7Obg7Obg7Obg + 7Obg6+bf6+bf7Obg7Obg7Obg7Obg7Obg7Ofg7Obg7Ofg7Obg7Obg7Obg7Obg7Obg7Obg7Ofg7Ofg7Obg + 7Ofh7Ofh7Obg7Ofh7Ofh6+bg6+bg6+bg6+bg6+bg6ubg6+bg6ubf6ubf6ubf6ubf6ubf6+bg6ubf6ubg + 6+Xg6+bg6uXf6+bg6+bg6uXg6+Xg6+Xg6uTf6uXf6uXf6eTe6uXf6eTe6uTf6eTe6uTe6uTe6uXe6uXe + 6uXe6uXe6uXe6uXe6uXe6uXe6uXe6uTe6uXe6uXe6uTe6eTd6eTd6eTd6eTd6eTd6eTd6eTd6eTd6OPc + 6eTd6eTd6ePd6eTd6eTd6ePd6eTd6eTd6ePd6eTd6eTd6eTd6eTd6ePd6ePd6ePd6ePd6eTd6ePd6ePd + 6ePd6eTd6ePd6eTd6OPc6ePd6OPc6eTd6ePd6OPc6OPc6ePd6ePd6ePd6ePd6OPc6OPc6OPc6OLc6OLc + 6OLc5+Lb5+Lb5+Lb5+Lb5+Lb5+Lb5+Hb5uHa5+Lb5+Lb5+Lb5+Lb5+Lb5+Lb5+Hb5+Lb5+Lb5+Hb5+Lb + 5+Lb5+Hb5+Lb5+Lb5uHa5+Lb5+Lb5+Lb5+Lb5+Lb5+Lb5+Lb5uLa5uLa5+Lb5+Hb5uHa5uHa5+Hb5uHa + 5uHa5uHa5uHa5uHa5uHa5uHa5uHa5uDa5uDa5uHa5eDZ5eDZ5uDa5eDZ5uDa5eDZ5eDZ5eDZ4t/Y497Y + 49/Y5N/Z5ODY5N/Z5N/Z5N/Z5N/Z5d/Z5d/Z5eDZ5eDZ5d/Z5eDZ5d/Z5d/Z5eDZ5eDZ5eDa5eDa5eDa + 5eDa5eDa5eDa5eDa5uHa5eHa5uHa5uHb5eHa5uHa5eHa5eHa5eHa5eHa5eHa5uLb5uHb5eHa5eHa5eHa + 5uLb5eHa5uHb5uHb5uHb5uLc5uHb5uHb5uHc5uHb5uHb5uHb5uHb5uHb5uHb5+Hc5+Lc5+Lc5+Lc5+Hc + 5+Lc5+Lc6OLc6OLc6OPd6OPc6OPd5+Pc6OPc6OLc6OPc6OLc6OPc6OPc6OPc6OPd6OPc6OPc6OPd6OLd + 6OLd6OPd6OPd6OLd6OLd6OPd6OLd6ePe6OLd6ePe6ePe6ePe6eTe6eTe6ePe6eTe6uTf6uTe6uTf6eTe + 6uTf6uTf6uTf6uTf6uTf6uTf6uTf6uTe6eTe6uTe6eTe6uTf6eTe6eTe6eTe6eTe6uXf6eXe6uTe6uXf + 6eXe6eXe6uXf6eXe6uXf6uXf6eXe6uXe6uXe6ubf6ubf6ubf6ubf6ubf6+bg6+bg6ubf6+bg6ubg6+bg + 6+bg6+fg6+bg6+bg6+fg7Ofh6+fg7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ojh6+fg7Ofh7Ojh7Ofh7Ofg + 7Ofh7Ofh7Ofh7Ofh7Ojh7Ojh7Ojh7Ofh7Ojh7Ofh7Ojh7Ojh7Ofh7Ojh7Ojh7Ofh7eji7eji7eji7eji + 7eji7eji7eji7eji7eji7eji7eji7eji7eji7eji7eji7uji7ujj7ujj7ujj7uji7eji7eji7eji7eji + 7eji7eji7eji7efi7eji7Ofh7eji7Oji7eji7eji7efi7efi7Ofh7Ofh7efi7Ofh7Ofh7Ofh7Obh7Obh + 7Ofi7efi7efi7efi7ebi7Ofi7efi7efi7eji7eji7eji7eji7ufj7eji7eji7eji7eji7eji7efi7eji + 7efi7eji7eji7uji7eji7eji7eji7uji7ujj7uni7uni7+nj7+rj8Ork8evl8uzm8uzm8+3n9O7o9PDp + 9fDq9vLs9/Ls+PPt+PPt+PTt+PPt+PPt+PPt+PPt+PPt9/Ps9/Ls9vLr9PHq9PDp8+/o8+7n8u3m8ezl + 8evl8Ovk8Ork7+rj7+nj7+nj7+nj7uji7uji7uni7uji7ejh7uji7ejh7ejh7ejh7ejh7Ofg7efh7efh + 7Ofg7ebh7efh7efh7efh7efh7efh7efh7efh7Ofg7efh7efh7Ofg7efh7Obg7Ofg7Ofg7Ofg7Ofh7Ofh + 7Ofh7ejh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh6+fg6+fg6+bg6+fg6+fg6+fg6+bg6+bg6+bg7Obg + 6+bg6+bg6+bg6+bg6+bg7Obh6+bg6+bg6+bg6+Xg6+Xg6+bg6uTf6uXf6uXf6uXf6uXf6+Xf6uXf6+bf + 6+Xf6+Xf6+bf6+bf6+bf6+bf6uXe6+bf6uXe6+Xf6ube6uXe6uXe6uXe6uXe6uXe6uTe6eXd6uXe6eTd + 6uXe6uTe6eXd6uXe6uTe6uTe6uTe6uTe6uTe6uTe6uXe6uXe6uTe6uTe6uTe6uTe6uTe6uTe6uTe6uXe + 6uTe6uXe6uXe6uTe6uTe6uXe6uTe6uTe6eTd6ePd6ePd6ePd6eTd6eTd6eTd6OTc6ePd6OPc6OPc6OPc + 6OPc5+Lb6OLc5+Lb5+Lb5+Hb5+Lb5+Hb5+Lb5+Lb6OLc6OLc5+Lb5+Lb5+Lb6OLc6OLc6OLc6OLc5+Lb + 6OLc6OLc6OLc6OLc5+Lb6OLc6OLc5+Lb5+Lb6OLc5+Lb5+Lb5+Lb5+Lb5+Lb5+Hb5+Lb5+Hb5uHa5uHa + 5+Hb5+Hb5uHa5+Lb5uHa5+Hb5uHa5uDa5uHa5uHa5+Hb5uHa5+Hb5uDa5uHa5uDa5uDa5uHa4t/Y5N/Z + 49/Y5ODZ5ODZ5eDZ5N/Z5eDZ5eDZ5eDZ5uDa5eDZ5eDZ5d/Z5d/Z5uDa5eDZ5uDa5eDZ5eDa5uDa5uDa + 5eHa5eHa5eHa5uDa5uHb5uHb5eHa5eHa5eHa5uHb5uHb5uLb5uLb5uHb5uHb5uLb5uLb5uLb5uLb5uLb + 5uHb5uLb5uLb5uLb5uHc5uLc5+Hc5uHc5+Lc5+Lc5+Hc5+Lc5+Lc5+Hc5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc + 6OLd5+Lc6OLc5+Lc6OLd6OLd5+Lc6OLd6OLc6OLc6OPc5+Lc6OLc6OPc6OPc6OPd6OPd6OPd6OPd6OPd + 6OPe6OPd6OPd6OPd6OPe6OPd6OPd6OPd6OPd6ePe6eTe6eTe6eTe6eTe6ePe6eTe6ePe6eTe6uTf6uTf + 6eTe6eTe6eTe6uTf6eTe6uTe6uTf6eTe6uTf6eTe6uTf6uTf6uTf6uXf6eTe6eXe6uXf6uXf6uXf6+bg + 6uXf6eXe6uXf6ubf6ubf6ubf6ubf6ubf6ubf6ubf6ubf6ubf6+bg6+fg6+bg6+fg6+bg6+bg7Ofh6+fg + 6+fg6+fg6+fg6+fg6+fg7Ofh6+fg7Ojh7Ojh7Ofh7Ojh7Ofh7eji7Ojh7Ojh7eji7eji7Oji7eji7efi + 7Oji7Oji7Ofh7eji7eji7eji7Ofh7Oji7efi7eji7Ojh7Ojh7Ojh7Ojh7eji7eji7Ojh7Ojh7eji7eji + 7Oji7eji7eji7eji7eji7eji7ujj7ujj7uji7ujj7uji7eji7ujj7eji7ujj7ujj7eji7ujj7eji7ujj + 7ujj7ujj7efi7efi7efi7eji7efi7ujj7eji7efi7ujj7efi7eji7efi7eji7efi7eji7efi7efi7eji + 7efi7ujj7eji7uji7eji7eji7unj7ujj7ujj7unj7unj7unj7unj7unj7ujj7unj7ujj7eji7ujj7eji + 7ujj7eji7eji7ujj7ujj7ujj7eji7unj7ujj7unj7uni7+nj8Orj8Ovk8Ovl8uzm8u3m9O7o9O/o9fDq + 9fHq9vHr9/Ls+PPt+PPt+PTt+PPt+PPt+PTt+PPt+PPt9/Ps9vLr9vLr9fHq9PDp8+/o8+7o8u3n8ezl + 8ezl8ezl8Ork8Ork7+rj7+rj7+nj7+nj7+nj7uni7uni7uni7uni7uji7uji7ejh7uji7uji7ejh7ejh + 7ejh7ejh7ejh7efh7ejh7ejh7ejh7efh7uji7ejh7ejh7efh7efh7ejh7ejh7efh7efh7Ofh7efh7eji + 7Ofh7Ofi7Ofh7Ofh7Ofh7Ofh7eji6+fg7Ojh6+fg6+fg7Ofh6+fg6+fg6+fg6+fg7Ofg7Obh6+fg7Obh + 7Obh7Obh7Ofh7Obh7Ofh6+bg7Ofh7Obh7Obh6+bg6+bg6+Xg6+bf6+Xg6+Xf6+Xg6+bg6+Xg6+bg7Obg + 6+bf6+Xf7Obg7Obg6+bf7Obg6+bf6+bf6+bf6+bf6+Xf6+bf6uXe6+bf6ube6+Xf6uXe6+Xf6uTe6uXe + 6uXe6uTe6uTe6uXe6uTe6uTe6uTe6uTe6uXe6uTe6uTe6uXe6uXe6uXe6uXe6+bf6+Xf6+Xf6uXe6ube + 6uXe6uXe6+Xf6uXe6uXe6uTe6uXe6eTd6uTe6eTd6eTd6uTe6eTd6eTd6eTd6ePd6ePd6ePd6eTd6OPc + 6OPc6OPc6OPc5+Lb5+Lb5+Lb6OLc5+Lb5+Lb5+Lb5+Lb6OLc6OPc6OPc6OPc6OPc6OLc6OPc6OLc6OLc + 6OLc6OLc6OPc6OPc6OPc6OPc6OLc6OLc5+Lb5+Lb5+Lb5+Lb6OLc5+Lb5+Lb5+Lb5uHa5+Lb5+Lb5uLa + 5uHa5uHa5uHa5+Hb5+Hb5+Hb5uHa5uHa5+Hb5+Db5uHa5uHa5uHa5uHa5uDa5uHa5uDa5uHa49/Y5N/Z + 5N/Z5ODZ5eDZ5N/Z5d/Z5eDa5d/Z5eDZ5eDZ5eDZ5eDZ5eDZ5uDa5eDZ5uDa5uDa5uHa5uDa5uHa5uHa + 5uHa5uHa5uHa5uHa5uLb5uHb5uHb5uLa5uLb5uLb5uLb5uLb5uLb5uLb5uLb5uLb5uLb5uLc5uLb5uLb + 5+Lc5uLc5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc6OLd6OLc + 5+Lc6OLc6OLd6OLd6OLd6OLd6OLd6OLd6OLd6OLd6OLd6OLd6OPd6OPd6OPd6OPd6OPd6OPd6eTd6eTd + 6eTe6OTd6eTe6ePe6eTe6eTe6OPd6eTe6eTe6eTe6eTe6eTe6eTe6eTe6eTe6eTe6eTe6eTe6eTe6eTe + 6eTe6uTf6uTf6uTf6uXf6uTf6uXf6+Xg6uXf6uXf6uXf6uXf6uXf6uXf6uXf6uXg6+bg6uXf6ubg6+bg + 6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg7Ofg6+fg6+fg6+fg6+fg7Ofh6+fg7Ofh6+fg7Ofh7Ofh + 7Ofh7Ofh7Ofg7Ofh6+fg7Ofg7Ofh7Ofh7Ofh7Ofh7Ojh7Ojh7Ojh7eji7eji7eji7eji7eji7eji7eji + 7eji7eji7eji7eji7eji7eji7eji7eji7eji7eji7eji7eji7eji7eji7eji7eji7Ojh7eji7eji7eji + 7eji7eji7eji7ujj7ujj7eji7uji7ujj7ujj7ujj7ujj7uji7ujj7ujj7ujj7ujj7ujj7eji7ujj7ujj + 7eji7eji7ujj7efi7ujj7eji7ujj7eji7ujj7ujj7ujj7ujj7ujj7ujj7ujj7ujj7unj7ujj7ujj7ujj + 7ujj7ujj7unj7ujj7unj7unj7unj7unj7ujj7unj7ujj7unj7ujj7unj7unj7ujj7unj7unk7ujj7ujj + 7ujj7ujj7unj7ujj7+nj7unj7unj7+nj7+nj7+nj7+nj7+rj8Ork8evk8uzm8uzm8+3m9O7n9O/o9O/p + 9fHq9vLr9/Ps+PPt+PTt+PTt+PTt+PTt+PTt+PTt+PPt+PPt9/Ps9vLr9vHr9fDq9O/p8+/o8+7n8u3m + 8uzm8evl8evl8evk8Ork8Ork7+rj7+rj7+rj7+rj7+nj7+nj7+nj7+nj7uni7uni7+nj7uni7uni7uni + 7uji7uji7uji7uji7uji7uni7uji7uni7uni7ujh7ujh7ujh7uji7eji7eji7eji7eji7eji7eji7eji + 7eji7eji7eji7eji7ejh7Ojh7Ojh7Ojh7Ojh7Ojh7Ojh7Ojh7Ofh7Ojh7Ojh7Ofh7Ofh7Ofh7Ofh7Ofh + 7Ofh7efi7Ofh7Ofi7Ofh7Ofh7Ofh7Ofh7Ofg7Obh7Obh7Obh7Ofg7Obg7Obg6+bg7Obg6+bg7Obg7Ofg + 7Obg7Obg7Obg7Obg7Obg7Obg7Obg6+bf7Obg7Obg6+bf6+Xf6+bf6+bf6+bf6+Xf6+bf6+Xf6+bf6+Xf + 6+Xf6+Xf6+bf6+Xf6+Xf6uXe6+Xf6uXe6uXe6uXe6+Xf6uXe6uXe6uXe6uXe6ube6+bf6+Xf6+bf6+Xf + 6uXe6+Xf6uXe6uXe6uXe6uTe6uTe6uTe6uXe6uTe6eTd6uTe6uTe6uXe6uTe6eTd6uTe6uTe6eTd6eTd + 6eTd6eTd6eTd6eTd6ePd6ePd6OPc6OPc6OPc6OPc6OPc6OPc6OPc6OPc6OPc6OPc6OLc6OLc6OLc6OLc + 6OLc6OLc6OPc6OLc6OLc6OLc5+Pb6OLc6OLc6OLc6OLc6OPc5+Lb5+Lb5+Lb6OLc5+Lb5+Lb5+Lb5uHa + 5+Lb5uHa5uHa5uHa5uHa5uHa5uHa5uHa5uHa5uHa5uHa5uHa5uHa5uHa5uDa5uHa5uHa5uDa49/Y5N/Z + 5ODZ5ODZ5d/Z5d/Z5eDZ5ODY5d/Z5d/Z5d/Z5eDZ5eDZ5d/Z5uDa5eDZ5eDZ5uHa5uHa5uHa5uHb5uHa + 5uHb5uHa5uHa5uHa5uLb5uLb5uLb5uLb5uHb5uLb5uLb5uLb5uLc5+Lc5uLc5+Lc5uLb5+Lc5uLb5+Lc + 5+Lc5+Lc5+Lc5uLc5+Lc5+Lc5+Lc5+Lc6OLd6OLd5+Lc6OLc5+Lc5+Lc5+Lc6OPd6OPd6OPd6OPd6OPd + 6OLd6OPd6OPd6OPd6OPd6ePd6OPd6OLd6ePd6OPd6OPd6ePd6OPd6OPd6ePd6eTd6ePd6eTe6eTd6eTe + 6eTe6eTe6eTe6eTe6eTe6eTe6eTe6eTe6uTe6uTf6uTf6uXf6uTf6uXe6uTf6uXf6uXg6+Xg6uXf6+Xg + 6uXf6uXf6+Xg6+Xg6+bg6+bg6+Xg6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg7Obh6+fg + 6+bg6+bg6+bg6+bg6+bg7Ofg6+bg6+bg7Ofh6+fg7Obh7Ofh7Ofh7Ofh7Ofh6+fg7Ofh7Ofh7Ofh7Ojh + 7Ofh7Ojh7eji7Ofh7Ojh7Ofh7Ojh7Ofh7Ojh7eji7eji7eji7eji7uji7ujj7eji7eji7eji7uji7uji + 7ujj7ujj7uji7ujj7uni7unj7eni7uji7ejj7eji7enj7ujj7unj7uji7unj7eni7ujj7unj7ujj7uni + 7eji7eji7ujj7ujj7ujj7unj7ujj7ujj7ujj7unj7unj7uji7ujj7ujj7eji7ujj7ujj7ujj7ujj7eji + 7ujj7ujj7uji7ujj7uji7ujj7ujj7ujj7unj7unj7unj7unj7ujj7ujk7unj7+nk7ujj7+nj7+jk7unj + 7+nk7+nk7unj7unj7+nk7unj7unk7unj7+nk7+nk7+nk7+nk7+nk7+nk7+nk8Ork8Ork8Orl8Ork8Ork + 7+nk8Onk8Onk7+nj7+nj7+nj7+nj7+nj8Orj8Ork8Ork8Ovk8evl8evl8ezl8uzm8+3n9O7o9O/o9O/p + 9fHq9vHr9/Ls+PPt+PTt+PTt+PTt+fTu+PTt+PPt+PTt+PTt+PPs9/Ls9vLr9fHr9PDp9O/o8+7o8+7n + 8uzm8uzm8ezl8evl8Ork8Ork8Ork8Ork8Ork7+rj7+nj7+rj7+rj7+rj7+nj7+nj7+ni7+ni7+rj7+ri + 7+ni7+nj7+nj7+nj7+nj7+rj7+nj7uni7unj7unj7uni7unj7unj7unj7unj7uji7eji7eji7eji7uni + 7eji7eji7eji7eji7eni7eji7eni7eji7eni7eji7eji7eji7eji7eji7Ojh7Ofi7Ofh7Ofh7efi7Ofh + 7Ofi7Ofi7Ofh7Ofh7Ofi7efi7Ofh7Ofh7eji7eji7efi7eji7Ofh7efi7ejh7efh7ejh7Ofg7Ofg7efh + 7Ofg7Obg7Obg7efh7efh7Obg7Obg7Obg7Ofg7Obg7Obg7Obg6+bf6+bf6+bf6+bf6+bf6+bf7Obg6+bf + 7OXg7Obg6+bf7Obg6+Xf6+bf6+Xf6+bf6+bf6+bf6+bf6+bf6+bf6+bf6+bf6+bf6+bf7Obg6+bf6+Xf + 6+bf6+Xf6+Xf6+Xf6+Xf6uXe6uXe6uXe6uTe6uXe6uTe6uTe6+Tf6uTe6uXe6+Xf6uTe6uXe6uXe6uXe + 6uXe6uXe6uTe6uTe6eTd6eTd6uTe6uXe6eTd6eTd6eTd6eTd6ePd6OTc6eTd6ePd6OPc6OPc6OPc6OPc + 6OLc6OPc6ePd6ePd6OLc6OLc6OPc6OPc6OPc6OLc6OPc6OPc6OPc6OLc6OLc6OPc5+Lb5+Lb5+Lb5+Lb + 5+Lb5uLa5+Hb5uHa5uHa5uHa5uHa5uHa5uHa5uHa5uHa5uHa5uHa5+Hb5+Hb5+Lb5+Hb5uHa49/Z5ODZ + 5ODZ5ODZ5ODZ5eDZ5eDZ5eDZ5eDZ5eDZ5eDZ5eDZ5eDZ5eDZ5uHa5uDa5uHa5uHb5+Hb5+Hb5+Hb5+Hb + 5uHb5+Lb5+Lb5+Lb5uLb5uLb5uLb5uLb5uLb5uLb5uLb5uLb5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc5+Lc + 5+Lc5+Lc5+Lc5+Lc5+Lc6OPd6OLd6OPd6OLd6OPd6OPd6OPd6OPd6ePe6ePe6ePe6ePe6ePe6ePe6ePe + 6ePe6eTe6ePe6eTd6ePe6eTd6eTd6ePd6eTd6eTd6eTd6ePd6eTd6eTd6eTe6eTe6eTe6eTe6uTe6uTf + 6uTe6uTf6uTf6uTf6uTf6uTf6uTf6uXf6uXf6uXf6uXf6uXf6uXf6uXf6uXf6+Xg6+bg6uXf6+bg6+bg + 7Obh6+bg6+bg7OXh6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg7Obg7Ofh7Obg + 7Obh7Obh7Obh7Ofh7Obh7Ofh7Ofh7Ofh7Ofh7Ofi7Ofh7efi7Ofh7Ofh7Ofh7efi7Ofh7Ofh7Ojh7Ojh + 7Ojh7Ojh7Oji7Oji7eji7eji7eji7eji7eji7eji7eji7uji7ujj7ujj7ujj7ujj7ujj7ujj7unj7unj + 7ujj7unj7unj7unj7unj7unj7unj7unj7unj7unj7unj7unj7unj7unj7unj7unj7+nj7unj7unk7unj + 7unj7unj7+nk7+nk7+nj7+nk7+nj7+nk7+nk7+nk7+nk7+nk7+nk7+nk7+nk7+nk7unj7unj7unk7unj + 7ujj7+nk7ujj7unj7ujj7ujk7unk7unj7+nk7+nk7+nk7+rk7+nk7+nk7+nk7+nk7+rk7+nk8Ork7+nk + 7+nk7+nk7+rk8Orl7+rk7+rk7+rk7+rk7+rk7+rk7+rk7+rk7+rk8Orl8Orl8Orl8Ork8Orl8Orl8Orl + 8Ork8Ork8Ork8Ork7+nk7+rk8Ork8Ork8Ork8Ork8Ork8evl8ezl8uzm8+3n8+3m9O7n9O7o9e/p9fDq + 9fHq9vHr9/Ls+PTt+PTt+PTt+PTt+PTu+PTt+PTt+PTt+PPt9/Ps9/Ls9vHq9fHq9PDp8+/o8+7o8+7n + 8u3m8u3m8ezl8evl8evl8Ork8Ovk8Ork8Ork7+rj7+rj8Ork8Ork8Ork8Ork8Ork8Orj8Orj8Orj8Ork + 8Ork8Orj8Orj8Orj8Ork7+rk7+rk7+rk7+rj7+rk7+rk7+rj7unj7unj7unj7unj7uni7unj7unj7unj + 7unj7urj7unj7unj7unj7unj7unj7unj7uni7eni7eji7eji7eji7eji7eji7eji7eji7eji7eji7eji + 7efi7eji7eji7ujj7ujj7ujj7ujj7ujj7uji7uji7uji7unj7uji7eji7uji7ujh7eji7ejh7efh7ejh + 7efh7efg7efh7efh7efg7efh7efh7Ofg7Obg7Obg7Obg7Obg7Obg6+bf7Obg6+bf6+bf6+bf7Obg7Ofg + 7Obg7Obg7Obg7Ofg7Obg6+bf6+bf6+bf6+bf6+bf6+bf6+bf7Obg6+bf7Obg6+bf7Obg6+bf7Obg7Obg + 6+bf7Obg6+bf6+Xf6+bf6+Xf6+Xf6+Xf6+Xf6+Xf6+Xf6+Xf6uXe6+Xf6+Xf6uXe6uXe6uXe6uXe6uXe + 6uTe6uXe6uXe6uXe6uXe6uTe6uTe6uXe6uXe6uXe6eTd6uXe6eTd6eTd6eTd6eTd6ePd6eTd6eTd6eTd + 6eTd6eTd6ePd6ePd6ePd6eTd6eTd6ePd6ePd6ePd6ePd6ePd6ePd6OTc6OPc6OPc6OPc6OPc6OPc6OLc + 6OPc5+Lb5+Lb5+Lb5+Lb5+Lb5+Lb5+Lb5+Lb5+Lb5+Lb6OLc6OLc5+Lb6OLc5+Lb6OLc5+Lb5ODa5eHa + 5eHa5eDa5eDa5eDa5eDa5eHa5eDZ5uHa5eHa5uHa5eDZ5uHa5uHa5uLa5+Hb5+Lb5+Lb5+Lb5+Lb6OLc + 5+Lc6OLc5+Lc5+Lc5+Lc5+Lc5uLb5+Lc5+Lc5+Lc5+Lc5uLc5+Lc5+Lc5+Lc5+Lc5+Pc5+Pc6OTd5+Pc + 6OPd5+Tc5+Pc6OPd6OPd6OPd6OPd6OPd6ePe6OPd6OPd6OPe6ePe6ePe6eTe6eTe6eTe6uTf6uTf6uTf + 6uXf6uTf6uTf6uXf6uXe6eTe6uXe6uTe6eTe6uXe6uXe6uTe6uTe6uXe6uTe6uTe6uXe6uTe6uXe6uTf + 6uXf6+Xf6ubf6uXf6+Xg6uXf6ubg6+bg6uXf6+bg6+bg6+bg6+bg6+bg6+bg6+bg7Obg6+bg6+bg6+Xg + 6+Xg7Obh7Obh7Obh7Obh7Obg7Obh7Ofh7Ofh7Ofh7Ofh6+bg7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7eji7Ofi + 7Ofi7efi7eji7Ojh7Oji7Ofi7eji7eji7efi7eji7eji7uji7ujj7ufj7ujj7eji7eji7eji7eji7eji + 7eji7eji7eji7ujj7eji7ujj7unj7ujj7ujj7ujj7ujj7ujj7ujj7unj7unj7unj7unj7unj7unj7unj + 7unj7unj7unj7unj7unj7unj7unj7unj7unj7unj7+nk7+nk7+nj7+nk7+rk7+rk7+nk7+nk7+rk7+rk + 7+nk7unj7unj7unj7+nk7+nk7+rk8Ork8Orl8Orl8Orl8Orl8Orl8Orl8Ork8Orl8Orl8Ork8Orl8Onk + 8Ork7+rk7+rk7+rk7+rk7+rk8Ork7+rk7+rk8Ork8Orl8Orl8Orl8Orl8Orl8Orl8evl8evl8evl8evl + 8evl8evl8evl8Ovl8Orl8Orm8Orl8Orl8Ovl8Ovl8Ovl8Ovl8Ovl8Ovl8Orl8Ovl8Orl8Orl8Ovl8Orl + 8Ovl8Ovl8Orl8Ork8Ovk8Ovl8Ovk8evl8Ovk8evl8uzl8uzm8uzl8+3m8u3m9O7n9O/o9e/p9fDq9fDq + 9vHq9/Ls+PPs+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PPs9/Ls9vHr9fHq9fDq9PDp8+7o8+7o + 8+3n8+3m8uzm8ezl8ezl8ezl8ezl8Ovk8Ovk8evl8Ovk8Ork8Ovk8Ovk8Ovk8Ovj8Ork8Ovk8Ovk8Ork + 8Ork8Ovk8Ork8Ork8Ovk7+vl8Ovl8Ork7+rk7+rk7+rk7+rk7+rk7+rk7+rj7+rj7+rj7unj7+rk7urj + 7urk7urk7+rk7+rk7unj7urj7+rk7unk7+nk7+nk7+nk7urj7unj7unj7unj7unj7unj7ujj7ujj7ujj + 7+nj7ujj7+jj7+nj7unj7+nk7+nj7+nk7+nj7ujj7unj7uji7+ni7uni7uni7eji7eni7ujh7uji7uji + 7ujh7efh7ujh7uji7efi7ujh7eji7efh7uji7ujh7efh7efh7efh7efh7Ofg7Obg7efh7efh7efh7Ofg + 7Ofg7Ofg7Ofg7efh7Ofg7Ofg7Ofg7Ofg7Ofg7Ofg7Obg7Obg7Ofg7Ofg7efh7ebh7efh7efh7Ofg7Obg + 7Obg7Obg7Obg7Ofg7Obg7Obg7Ofg7Obg6+bf7Obg6+bf6+bf6+bf6+bf6+bf6ube6ube6+Xf6+Xf6+Xf + 6+Xf6uXe6uXe6ube6ube6+bf6uXe6ube6+Xf6+Xf6uXe6uXe6uXe6uTe6uXe6uXe6uXe6eXd6eTd6uXe + 6uXe6uXe6uXe6uXe6uXe6uTe6uTe6uTe6eTd6uTe6uTe6eTd6eTd6eTd6eTd6eTd6eTd6ePd6eTd6ePd + 6ePd6OPc6OPc6OPc6OPc6OPc6OLc6OPc6OPc6ePd6ePd6ePd6ePd6OLc6OLc6OLc6OLc6OLc5OHa5eHa + 5eHa5eDa5uHb5eHa5uHb5uHa5uHa5uHa5uHa5uHa5+Lb5+Lb5uHa5+Lb5+Lb5+Lb6OLc6OPc6OPc6OLc + 6OLc6OPc6OPd6OPc6OPd5+Pc5+Lc5+Lc6OPc5+Lc5+Lb5+Pc5+Lc5+Lc5+Pc5+Pc5+Pc6OTd6OTd6OTd + 6OTd6OTd6OTd6OTd6eTe6OTd6eTe6OTd6OTd6ePe6eTe6eTe6eTe6eTe6eTe6uTf6uTf6uXf6uXf6uTf + 6+Xg6uXf6uXf6uXf6uXf6uXf6uXf6uXf6uXe6+Te6uXf6uXe6uTf6uXe6uXe6uXe6uXe6uXe6uXf6+Xf + 6+Xf6+Xg6uXf6uXf6+bg6+Xg6+bg6+bg6+bg7Obh6+Xg6+bg7Obh6+bg6+bg7Obh7Obh7Obh7Obh7Ofh + 7Obh7Ofh7efi7Ofh7Ofi7efi7efi7Ofh7efi7Ofh7efi7eji7efi7eji7efi7efi7efi7eji7eji7eji + 7eji7eji7eji7ujj7eji7enj7eji7uji7ujj7unj7ujj7ujj7+jj7unj7ujj7+nk7ujj7ujj7ujj7ujj + 7unj7ujj7unj7ujj7ujj7unj7ujj7ujj7unj7+nk7unj7unj7unj7unj7+nj7unj7unj7+nk7unj7+nk + 7+nk7+nk7+nk7unj7unj7unj7unj7+nk7+nj7+nj7+rk7+rk7+rk7+rk7+rk8Ork7+rk7+nk7+rk7+rk + 7+rk7+rk7+nk7+nk8Orl7+nk8Orl8Orl8Orl8evl8Orl8evm8evm8evl8Orl8evm8evl8Orl8Orl8Ovl + 8evl8Ovl8Ork8Ovl8Ovl8evl8Ovl8erl8Ovl8evl8evl8evl8evm8evl8evm8evm8evm8evm8evm8evm + 8evm8evl8evm8evm8evm8evm8evm8evm8Ovm8Ovl8Orl8Ovl8Ovl8Ovl8Ovl8Orl8evl8Ovl8evl8evl + 8Ovl8Ovl8evl8ezl8evl8ezl8uzl8uzl8uzm8uzl8uzl8u3m8+3m8+3m9O7n9O7n9O/o9e/p9fDq9fHq + 9vHr9/Ls+PPt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PPt9/Ls9vLr9vHq9vHq9fDp9O/o8+7o + 8+7n8+3n8+3n8uzm8uzm8ezl8evl8ezl8ezl8evk8evl8evl8evk8evk8Ovk8Ovk8Ork8Ovk8Ovk8Ovk + 8Ork8Ovk8Ork8Ork8Ovl8Ovl8Ovl8Ovl8Ovk8Ovk8Ovk8Ovk8Ork7+rk7+rk7+rk7+rk8Ovk7+rk7+vk + 7+rk7+rk7+rk7+rk8Ovk7+rk7+rk8Ovk8Ork7+rk7+rk7+rk7+rk7+nk7+nj7unj7+nk7+nk7+nj7+nj + 7+nk7ujj7+nk7+nk7+nk7+nj7+nk7+nj7+nk7+nj7+nj7ujj7+nk7uji7uni7uji7uji7uji7uji7uji + 7ejh7ejh7uji7uji7uni7uji7uni7+ni7uji7uji7+ni7+ni7+nj7uji7uji7uji7uji7ejh7ejh7ejh + 7ejh7ejh7ejh7ejh7ejh7efh7efh7efh7efh7efh7efh7efh7ejh7efh7efh7efh7efh7ejh7efh7efh + 7ejh7Ofg7Ofg7Ofg7Ofg7Ofg7Ofg7Ofg7Obg7Obg7Ofg7Obg7Obg6+bf6+bf6+bf6+bf6+bf6+Xf6+Xf + 6+bf6+bf7Obg6+bf6+bf6+bf6+bf6+bf6+bf6+bf6+Xf6+bf6+bf6+bf6+Xf6+bf6+bf6+Xf6+bf6+Xf + 6+Xf6+Xf6+Xf6+Xf6+Xf6+Xf6+Tf6+Xf6uXe6uXe6uTe6uXe6uTe6uTe6eTd6uTe6uTe6uTe6uTe6uTe + 6uTe6eTd6ePd6eTd6ePd6eTd6ePd6eTd6ePd6ePd6ePd6eTd6OPc6OPc6OPc6OPc6OPc6OPc5OHa5eHa + 5eHa5eHa5uLb5uLb5uHb5uLb5+Lb5+Lb5+Lc5+Lb5+Lb6OLc5+Lb5+Lb5+Lb5+Lb6OPc6OLc6OPc6OPc + 6OPc6OPc6OPd6OPd6OPd6OPd6OPd6OPd6OPd6OPd5+Pc6OTd6OTd6OPd6OPc6OPd6OTc6OTd6OTd6OTd + 6OTd6eXe6eXe6eXe6eTe6eTe6eXe6eXe6eTe6eXe6eXe6uXe6eTe6eTe6uTf6uTf6uXf6uTf6uTf6uXf + 6uXf6uTf6uXf6uXf6uXf6uXf6+Xg6uXf6+Xf6uXf6+Xg6+bf6uXe6uXf6uXe6+Xf6+Xf6+Xf6+Xf6+Xf + 6+bg7Obg6+bg6+bg6+bg7Obh7Obh7Obh7Obh7Obh7Obh7Obh7Obh7Ofi7Ofh7Ofi7efi7Ofh7Ofh7efi + 7eji7efi7eji7eji7efi7eji7eji7ujj7eji7uji7eji7eji7ujj7uji7eji7uji7ujj7ujj7ujj7uji + 7ujj7ujj7unj7ujj7ujj7ujj7+jj7+nk7ujj7unk7unj7+nj7unk7+nk7ujj7unk7+nk7+nj7+nk7+nk + 7+nk7+rk7+nk7+nk7+nk7+nk7+nk7+nk7+nk8Ork7+nk7+nk7+nk7+nk7+nk7+nk7+nk7+nk7+nk7+nk + 7+nk7+nk7+nk7+nk7+nk7+nj7+nk7+nk7+nk7+nk7+rk8Ork8Ork7+rk8Orl8Orl8Orl8Orl7+rk7+rk + 7+rk7+rk8Orl7+rk7+rl8Orl8Orl8Ovl8evl8Orl8evl8Orl8Orm8evl8evm8evm8Orl8evl8evl8evm + 8Orl8Ovl8evl8ezm8ezm8ezm8ezm8ezm8ezm8uzm8evm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8evm + 8uzm8evm8uzm8ezm8ezm8ezm8evm8Ovl8evm8ezm8evm8evm8evm8evm8evm8ezm8ezl8uzl8ezl8ezl + 8ezl8uzl8uzl8u3m8uzl8uzm8uzm8uzm8u3m8uzm8uzm8+3m8+3n9O7n9O7o9O7o9e/o9e/p9fDq9vLr + 9vLr9/Ps+PPt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PPt+PPs9/Lr9vLr9fHq9fDq9O/p8+7o + 8+7o8+7n8u3m8u3m8uzm8uzm8ezl8uzl8ezl8uzl8uzl8ezl8ezl8uzl8ezl8ezl8ezl8evk8Ovl8Ovl + 8Ovl8Ovk8Ovl8Ovl8Ovl8Ovl8Ovl8Ovl8ezl8Ovl8Ovl8ezl8Ovl8Ovl8Ovl8Ovl8Ovl8Ovl8Ovk8Ovl + 8Ovl8Ovk8Ovk8Ovk8Ovl8Ovl8Ovl8Ovk8Ovl8Ovl8Ovl8Ovl8Ork8Orl8Ork8Orl8Ork8Onk8Ork8Ork + 7+nk8Ork7+nk7+rk7+rk7+nk7+nk7+nk7+nk7+nk7+nj7+nj7+nj7uji7+ni7uni7uji7uji7uji7uji + 7uji7uji7uni7uni7uni7uni7+nj7+nj7+rj7+nj7+nj7+nj7+ni7+nj7+nj7uni7uji7uji7uji7uji + 7ejh7ejh7uji7uji7ejh7uji7ejh7uji7uji7uji7ujh7ujh7uni7uji7ujh7ujh7uji7ujh7ejh7ejh + 7ejh7ejh7ejh7ejh7ejh7ejh7efh7efh7efh7Ofg7efg7Ofg7efg7efg7Ofg7Obg7Obg7Obg7Obg7Obg + 7Ofg7Ofg7Ofg7Obg7Ofg7Ofg7Obg7Obg7Obg7Obg7Obg7Obg7Obg7Obg7Obg7Obg7Obg7Obg7Obg7Obg + 7Obg6+bf7Obg6+Xf6+Xf6+Xf6uXe6+Xf6uXe6uXe6uTe6uXe6uXe6eTd6uTe6uXe6uTe6uTe6uTe6uTe + 6eTd6eTd6uTe6uTe6uTe6eTd6ePd6eTd6eTd6eTd6uTe6eTd6eTd6ePd6eTd6eTd6OTc6OPc5OHa5uHa + 5eHa5uHa5uLb5uHb5uHa5+Lb5+Lb5+Lb5+Lb5+Lb6OLc5+Lb5+Lb5+Lb6OLc6OPc6OPc6OPc6OPc6OPc + 6OPc6OPd6OTd6OPd6OTd6OTd6OTd6OTd6eTe6OTd6OTd6OTd6OTe6OTd6OTd6OTd6OTe6eTe6OTe6eTe + 6eTe6eXe6eXe6eXe6eXe6eXe6eXe6eXe6uXf6uXe6uXf6uXf6uTf6uXf6uXf6uTf6uXf6uTf6uTf6uTf + 6+Xg6uXf6uXf6uXf6+Xg6+Xg6ubf6+bg6+bg6+bf6+bg7Obg6+bf6+bg6+bg7Obg6+bf6+bf7Obg6+bg + 7Obg7Obg7Obg7Obh7Ofh7efh7efh7efh7efi7Obh7efi7efi7efi7efi7efi7efi7eji7eji7eji7eji + 7eji7eji7eji7efi7efi7eji7eji7eji7ujj7uji7eji7ejj7ujj7eji7ujj7ujj7uji7ujj7ujj7ujj + 7ujk7+nj7+nj7+nj7+nk7ujk7+nk7+nk7+nj7+nk7+nj7+nk7+nk7+nk7+nj7+nk7+nk7+nk7+nj7+nk + 7+nk7+nk7+rk8Ork7+nk7+rk8Ork8Orl8Orl8Orl8Orl8Orl8Ork8Ork8Orl8Orl8Orl8Ork8Ork8Ork + 8Ork8Ork7+rk8Ork8Ork7+rk7+rk8Ork8Orl8Ork8Ork8Orl8Orl8Orl8Orl8Orl8Orl8evl8Ovl8Ovl + 8Ovl8Ovl8Ovl8Ovl8evl8Ovl8Ovl8Ovl8evl8evm8evm8Ovl8evm8evm8evm8evl8evm8evm8evl8evm + 8evm8evm8evm8evm8evm8ezm8uzm8evm8uzm8uzn8uzn8uzn8uzm8uzn8uzm8uzm8uzm8uzm8uzm8uzm + 8uzm8uzm8uzm8uzm8uzm8uzn8uzm8uzm8uzn8uzn8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm + 8u3m8uzl8uzl8uzm8uzl8+3m8u3m8+3m8u3m8+3m8+3n8+7n8+7n9O7n9e/o9O/o9fDp9fDp9fHq9vHq + 9vLr9/Ps+PPs+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PPs9vLr9vHr9fHq9PDp9O/p8+7o + 8+7n8+7n8+3m8uzm8uzm8uzm8uzl8uzl8uzm8uzm8uzl8uzl8uzl8uzl8uzm8ezm8ezl8ezm8ezm8ezm + 8ezm8ezm8ezm8e3m8ezm8ezl8ezm8ezl8ezl8ezl8Ozl8Ozl8Ovl8ezl8Ovl8Ovl8Ozl8Ovl8Ovl8Ozl + 8Ovl8Ozl8Ovk8Ozl8Ozk8Ovl8Ozl8Ovl8Ovl8Ovl8evl8Ovl8evm8Ovl8Orl8Ovl8Orl8Orl8Orl8Orl + 8Orl8Orl8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Orj7+nj7+nj7+nj7+nj7+nj7+nj7+ni7+ni + 7+ni7+ni7+nj7+rj7+rj7+ni8Orj8Orj7+nj7+rj7+rj7+nj7+rj7+rj7+ni7+ni7+nj7uni7uni7+nj + 7uji7uji7uni7uni7uni7uni7+ni7uni7uni7+ni7+nj7+nj7+ni7uni7uni7uji7uni7uji7uji7ujh + 7uji7ejh7ejh7ejh7ejh7ejh7ejh7ejh7ejh7ejh7efh7efh7efg7efg7efh7efg7efg7efg7efg7Ofg + 7efh7efg7efh7Ofg7efh7ebh7Obg7Obg7efh7Obg7Obg7Ofg7Ofg7Ofg7Ofg7Ofg7Obg7Ofg7Obg7Obg + 7Obg7Obg7Obg7Obg6+bf6+Xf6+bf6+Xf6+Xf6uXe6uXe6+Xf6uXe6uXe6uTe6uXe6uTe6uTe6eTd6eTd + 6eTd6eTd6uTe6uTe6eTd6eTd6uTe6uTe6uTe6uTe6uTe6uTe6eTd6uTe6eTd6uTe6eTd6eTd5ODa5eDa + 5eHa5eHa5uHa5uHa5uHa5uHb5+Lb5+Lb5+Lb5+Lb5+Lc6OLc6OPc6OLc6OPc6OPc6OPc6OPc6OPc6OPd + 6ePd6OPd6OPd6eTd6OTd6OTd6OTd6eTe6OTd6eTe6eTe6eXe6eXe6eXe6eXe6eXe6eXe6eXe6ubf6uXf + 6eXe6uXf6uXf6uXf6uXf6uXf6uXf6uXf6uXf6uXf6uXf6uXf6+Xg6uXg6uXf6+Xg6+Xg6+Xg6+Xg6+Xg + 6+bg6+Xg6+Xg6+bg6+bg7Obg7Obg7Obg7Obg7Obg7Obg7Obg7Ofg7Ofg7Ofg7Ofg7efh7efh7Ofg7Ofg + 7efh7efh7efh7Ofh7efh7efi7efi7uji7uji7efi7efi7uji7eji7uji7eji7ujj7ujj7eji7ujj7ujj + 7ujj7uji7uji7ujj7ujj7uji7ujj7ujj7unj7uji7unj7uji7uji7uji7ujj7uji7unj7unj7unj7ujj + 7+nk7+nk7+nk7+nk7+nj7+nk7+nk7+nk7+nk8Ork7+rk7+rk7+nk8Ork7+rk7+nk7+rk8Ork7+rk8Orl + 8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ovl8Orl8Ovl8Ovl8evl8evl8evl8evm8evl8evl8evl8evl8evl + 8evl8Orl8Orl8Orl8Orl8Orl8Orl8Ovl8Ovl8Orl8evl8evm8evm8evm8evm8ezm8evm8ezm8ezm8uzm + 8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm + 8uzm8uzm8uzm8uzm8uzm8uzm8uzn8uzn8uzn8uzn8uzn8+3n8+3n8+3n8+3o8+3o8+3o8+3o8+3o8+3n + 8+3n8+3n8+3n8+3n8+3n8+3n8+3n8+3n8+3n8+3n8uzn8+3n8uzn8+3n8+3n8+3n8+3m8u3m8+3m8+3m + 8u3m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8+3m9O7n8+7n9O7n9O7n9O/o9O7o9e/o9fDp9fDp9fHq9vHq + 9vLr9/Ps+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt9/Ps9/Ps9vLr9vHq9fHq9fDp9O/o8+7o + 8+7n8+7n8+7n8+3m8u3m8uzm8uzm8uzm8uzl8uzm8uzl8uzl8uzm8uzl8uzm8uzm8uzm8u3m8u3m8u3m + 8u3m8u3m8u7n8u3m8u3n8u3m8e3m8u3m8e3m8ezm8ezl8ezm8ezm8ezl8ezl8ezl8ezl8ezm8Ozl8Ozl + 8ezl8Ovl8Ozl8Ozl8Ozl8Ozl8ezm8ezm8evm8evm8ezm8evm8evm8evm8evm8evm8Ovl8Ovl8Ovl8evl + 8Ovl8Orl8Ovl8evm8Ovl8Orl8Ovl8Ovl8Ovl8Ovk8Ovk8Ork8Ork8Ork8Ovk8Ork8Ork8Ork8Ork8Ork + 8Ork8Ork8Orj8Orj8Orj8Orj8Orj8Orj8Orj8Orj7+rk8Orj8Orj8Orj8Orj7+rj8Ork7+rj7+rj7+rj + 7+nj7+rj7+rj7+nj7+ri7+rj7+rj7+rj7+rj7+rj7+nj7+nj7+nj7+rj7+nj7+nj7+nj7+nj7+ni7uji + 7uji7uji7uji7uji7uji7uji7uji7uji7ujh7uji7ejh7ujh7ejh7ejh7ejh7ujh7ejh7efh7efh7efh + 7efh7efh7efh7efh7efh7efh7efh7efh7efh7efh7efh7efh7efh7Ofg7Ofg7Ofg7Ofg7Ofg7Ofg7Ofg + 7Ofg7Ofg7Obg7Obg7Obg7Obg7Obg7Obg7Obg6+bf7Obg6+bf6+bf6+Xf6uXe6uXe6uXe6uXe6uXe6uTe + 6uXe6uTe6uTe6uTe6uTe6uTe6uXe6+Xf6uXe6uTe6uTe6uTe6uTe6uTe6uTe6uTe6uTe6eTe5OHa5eDa + 5eDa5eHa5uDa5uDa5uHa5uHb5+Hb5+Hb5+Hb5+Lb6OLc6OLc6OLc6OLc6OLc6OPc6OPc6ePd6ePd6eTd + 6eTd6eTd6eTe6eTe6eTe6eTe6eTe6eTe6eXe6eXe6eXe6eXe6eXe6eXe6uXf6uXe6uXf6uXf6eXe6uXf + 6ubf6ubf6ubf6ubf6uXg6ubf6ubf6ubg6+Xg6uXf6+Xg6+bg6+bg6+bg6+bg6+bg6+bg7Obg7Obh7Obh + 7Obh7Obg7Obg7Obh7Obg7Obg7Obg7Obg7efh7Obg7Obg7efh7efg7efh7efh7efh7efh7efh7efh7efh + 7efh7efh7efi7efh7efh7efi7efi7uji7uji7efi7uji7ujj7ujj7ujj7ujj7ujj7ujj7ujj7ujj7ujj + 7unj7+nj7+nj7unj7+nj7ujj7+nj7+nj7+nj7unj7unj7+nj7unj7+nj7ujj7+nk7+nj7unk7+nk7+nk + 7+nk7+nk7+rk7+rk8Ork8Ork7+rk7+rk8Orl8Ork8Orl8Orl8Orl8Orl8Orl8Orl8Ovl8evl8evl8evl + 8evm8evm8evl8evl8Ovl8evl8Ovl8evl8evm8evl8evm8ezm8ezm8evm8evm8evm8evm8evm8evm8evm + 8evm8evm8evm8evm8evm8evm8evm8evl8ezm8ezm8uzm8ezm8uzm8uzm8uzm8uzm8uzm8uzn8uzn8uzm + 8uzn8+3n8uzn8uzn8+3n8+3n8+3n8uzm8u3n8uzn8uzn8+3n8uzn8uzn8uzn8+3n8+3n8+3n8uzn8+3n + 8+3n8uzn8uzn8uzn8uzn8+3n8+3n8+3n8+3o8+3o8+3o8+3o8+3o8+7o9O7o9O7o8+3o9O7o9O7o9O7o + 8+7o8+3n8+7o8+3o8u3n8u3n8+3n8u3n8u3n8u3n8+3n8+3n8+7n8+3n9O7n8+3n8+3n8+7n8+7n8+3n + 8+3m8+7n8+3m9O7n8+7n8+3m8+3m9O7n9O7n9O7m9O7n9O7n9O7n9e/o9e/o9e/o9fDp9fDp9vHq9vHq + 9vLr9/Lr+PPs+PPs+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt9/Ps9/Ls9/Lr9vHr9fHq9fDp9PDp9O/o + 8+/o8+7n8+7n8+7n8+3m8+3m8+3m8u3m8u3m8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8u3m8u3m + 8u3m8u3m8u3n8u3m8u3m8u3m8u3m8u3m8ezm8u3m8e3m8ezm8e3m8ezm8ezl8e3l8e3m8e3m8ezm8ezm + 8e3m8u3m8e3m8ezm8ezm8ezm8uzm8uzm8uzm8uzm8uzm8ezm8ezm8ezm8evl8ezm8evl8Ovl8evl8evl + 8evl8evl8evm8ezm8evl8evm8evm8evl8evl8evl8evl8ezl8ezl8ezl8ezl8ezl8ezl8ezl8ezl8evk + 8Ovk8evk8evk8Ovk8Ovk8Ork8Ork8Ovj8Ork8Ork8Ovk8Ovk8Ovk8Ovk8Ork8Ork8Ork8Ork8Orj8Orj + 8Orj8Orj7+rj7+rj8Orj7+rj7+rj8Orj7+nj8Orj8Orj8Orj7+nj7+nj8Ork8Orj8Orj7+nj7+nj7+nj + 7+nj7+nj7uji7uni7uni7uji7uji7uji7uni7uni7uni7uni7uni7uji7uni7uji7uji7uji7uji7uji + 7uji7uji7ujh7ujh7ujh7ejh7uji7ejh7efh7ejh7efh7ejh7ejh7ejh7efh7efh7Ofg7Ofg7efh7Ofg + 7efh7Ofg7efh7efh7efh7efh7Obg7efh7Obg7Obg7Obg7Obg6+bf6+Xf6+bf6+bf6+bf6+Xf6+Xf6+Xf + 6uXf6+Xf6uXe6uTe6+Xf6+Xf6uXe6+Xf6uTe6uXe6uTe6uTe6+Xf6uXe6+Xf6uTe6uTe6uTe5OHa5eHa + 5uHb5uLb5uHa5uHb5uHa5+Hb5+Lc5+Hb6OLc6OLc6OLc6OLc6OPc6OLc6OPc6OPc6OPc6ePd6eTd6eTd + 6eTe6ePd6eTd6eTd6eTe6eTe6uXe6eTe6eXe6uXe6eXe6ubf6uXf6ubf6ubf6uXf6uXf6uXf6uXf6uXf + 6+Xg6+bg6uXf6ubf6+bg6ubf6+bg6ubf6+bg6+bg6+bg7Obg6+bg6+bg7Obh6+bg7Obh7Obh7Obh7Obh + 7Obh7Obh7Obh7Obh7Obh7Obg7Obh7Obh7Obg7Obg7efh7efh7efh7Obh7efh7efh7efi7efh7uji7uji + 7uji7uji7efh7uji7uji7uji7ujj7ujj7ujj7ujj7ujj7ujj7ujj7ujj7ujj7ujj7+nk7+nj7+nk7ujk + 7ujj7+nk7+nk7+nj7+nk7+nk7+nk8Ork7+nk7+nk8Ork8Ork8Ork8Ork8Ork8Ork8Ork7+nk8Ork8Ork + 8Orl8Ork8Orl8Orl8Ork8erl8Ovl8Orl8Ovl8Ovl8evm8evl8evm8evl8evl8evl8evm8evm8uzm8evl + 8uzm8evm8evl8evm8evm8uzm8uzm8uzm8uzm8evm8evm8evm8uzm8uzn8uzn8uzn8uzn8uzm8uzm8uzn + 8uzm8uzn8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzn8+3n8uzn8uzm8u3n8u3n8u3n8u3n8+3n8+3n8+3n + 8u3n8uzn8+3n8uzn8+3n8uzn8+3n8u3n8+3n8+3n8+3n8+3n8+3n8+3n8+7o8+3n8+3n8+3n8+3n8+3n + 8+3n8+3n8+3n8+3n8+3o8+3n8+3n8+3n9O7o8+3o8+7o8+3o9O7o9O7o8+3p9O7o9O7o9O7o9O3o8+3o + 9O7o9O7o9O7o8+7n8+3n8+7o8+3n8+3n8+3n8+3n8+3n9O7n9O7n8+3n9O7n8+3n9O7n9O7n9O7n9O7n + 8+7n8+3m8+7n8+7m9O7m8+7m8+7n9O7n8+7m8+7n9O7n9O7n9e/o9O/o9fDp9fDp9fDp9vHq9vHq9vHq + 9/Lr9/Lr9/Lr+PPs9/Ps+PPt+PPt+PTt+PTt+PPt+PPt+PPt+PPt9/Ls9/Lr9vHr9vHq9fDq9fDp9O/o + 9O7o9O/o8+/o8+7n8+7o8+7n8+3n8+7n8+7n8+7n8u7n8u3n8u3n8+7n8u7n8+7n8u3n8+7n8+7n8u3n + 8+7n8+7n8u3m8u3m8u3m8u3m8u3m8u3m8e3m8e3m8e3m8u3m8u3m8e3m8u3m8u3m8u3n8u3n8u3n8u3m + 8u3n8u3m8u3m8u3m8u3m8+3n8+3n8uzm8uzm8uzm8u3n8uzm8uzm8uzm8uzm8ezm8ezm8ezm8uzm8ezm + 8ezm8uzm8ezm8ezm8uzm8uzm8evm8ezm8uzl8uzl8ezl8evl8ezl8ezl8uzl8ezl8uzm8uzl8ezm8uzl + 8uzl8evl8ezl8evl8evk8evk8evk8evk8evk8evl8evk8evk8uzl8evk8evk8evk8Ork8Ovk8Orj8Ovk + 8Ovk8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Orj8Orj8Orj8Orj8Ork8Ork7+rj + 7+nj7+ni7+nj7+ni7+nj7+nj7+nj7+rj7+nj7+nj7+nj7+nj7+nj7+nj7+nj8Orj8Orj7+ni7+nj7+nj + 7uji7uji7uji7uni7uji7uji7ejh7ejh7ejh7uji7uji7ejh7uji7ejh7ejh7efh7ejh7efh7efh7ejh + 7ejh7ejh7uji7efh7ejh7ejh7efh7efh7Ofg7efh7Ofg7Ofg7Obg7Ofg7Obg6+bf7Obg6+bf7Obg7Obg + 6+Xf6+bf7Obg6+Xf6+Xf6+bf6+Xf6+Xf6+Xf6+Xf6+Xf6+Xf6+Xf6+Xf6+Xf6+Xf6+Xf6+Xf5eHb5uLb + 5uLb5uLb5+Lc5+Lb5+Lb5+Lc5+Lb5+Lc6OLc6OLc6OLc6ePd6ePd6ePd6ePd6ePd6ePd6eTd6ePd6eTe + 6eTd6eTd6uTe6eXe6eTe6eXe6eXe6uXf6uXf6uXe6uXf6uXf6uXf6+bg6ubg6ubf6ubf6ubf6ubf6ubf + 6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg6+bg7Ofh7Ofh7Ofh7Ofi7Ofh7efi7Ofh7efi7Ofh7efi + 7Ofh7efh7ebh7Ofh7efh7efh7efh7efi7efi7efh7efh7efi7ejh7ejh7ejh7ujh7ujh7uji7eji7uni + 7uji7uji7uji7uni7uji7+nj7unj7+jj7ujj7unj7+nj7unj7unj7+nj7+nj7ujj7+nj7+nj7+nk7+nk + 7+nk8Ork7+nk7+nk7+nk8Ork8Orl8Orl8Orl8Orl8evl8Orl8evl8Orl8evl8Orl8evl8Orl8Orl8Orl + 8evl8Orl8Orl8evl8evl8evl8ezm8ezm8ezm8uzm8ezm8uzm8ezm8uzm8uzm8uzm8uzm8uzm8uzm8uzm + 8evm8uzm8uzm8uzm8uzm8ezm8ezm8uzm8uzm8uzm8uzn8uzn8uzn8uzn8uzn8+3n8+3n8+3o8+3n8+3n + 8+3n8+3n8uzn8uzn8uzn8uzn8uzn8uzn8uzn8+3n8+3n8u3n8+3n8u3n8u3n8u3n8+3n8+3n8u3n8+3n + 8+3n8+3n8+3n8+3n8+7o8+3n8+3o8+7o8+3n9O3o8+7o9O3n8+3o9O7o8+7o8+7o9O7o9O7o9O7o9O7o + 8+7o9O7o9O7o8+3o9O7o9O7o8+3o8+3o8+3o8+3o8+3o9O7o8+3o9O7o8+3o8+7o9O7o9O7o8+3o9O7o + 9O7o8+3o9O7o8+3o9O7o9O7o9O7o9O7o9O7o9O7o9O7n8+3n9O7o9O7n9O7n8+3n9O7n8+7n9O7n8+7n + 8+7n9O7n8+3m9O3n8+7n8+7n8+7n9O7n9O7n9O7n9O/o9O7o9fDo9e/o9fDp9fDp9vDp9fDq9vHq9vHq + 9vHq9/Lr9/Lr+PPs+PPs+PPs+PPs+PPt+PTt+PPt+PPs+PPs9/Ls9/Lr9/Lr9vHr9vHq9fDp9fDp9O/p + 9O/o8+/o8+7o8+7o8+7o8+7n8+7o8+7o8+7n8+7n8+7n8+7n8+7n8+7n9O/o8+7o8+7n8+7n8+7o8+7n + 8+7o8+7n8+7n8+7n8u7n8+7n8u3m8u3n8u3n8u3m8u7n8u3m8u3n8u3m8u3m8u3n8u3n8+7n8u7m8+7n + 8u7n8+7n8+3n8+3n8+3n8u3n8+3n8+3n8+3n8uzm8u3n8uzm8uzm8u3n8uzm8uzm8uzm8uzm8uzm8uzm + 8uzm8uzn8uzm8uzm8ezm8uzm8uzm8ezm8ezm8ezl8evl8uzm8ezl8uzl8ezl8uzl8uzl8uzm8uzm8uzm + 8uzl8uzl8uzm8uzl8uzl8evl8uzl8evk8evl8evk8uzl8evk8evk8evk8evk8evk8evk8ezl8evl8evl + 8evk8evl8evk8ezl8Ovk8evk8Ovk8Ovk8evl8evk8Ork8Ork8evk8Ork8Ork8Ork8Ork8Orj8Orj8Ork + 8Orj8Orj8Ork8Ork8Orj8Orj7+rj7+nj8Ork7+nj8Ork8Orj7+nk7+nj8Ork8Ork7+nj7+nj7+nj7+nj + 7uni7+ni7+ni7uji7uni7uni7uji7uji7uji7uji7uji7uji7ejh7uji7uji7ujh7uji7uji7ejh7uji + 7ejh7ujh7uji7ujh7ujh7efh7ejh7uji7efh7efh7Ofg7efh7efh7Ofg7efh7Obg7Ofg7Obg7Ofg7Obg + 7Ofg7Obg7Obg7Obg6+bf7OXf6+Xf7Obg6+bf6+Xf6+bf6+bf6+Xf6uXf6uXe6+Xf6uXf6+Tf5uLc5uLb + 5+Lc5+Lb5+Lc5+Lb5+Pc5+Pc5+Lc5+Lc6OPc6OPc6OPc6ePd6OPc6ePd6ePd6ePd6eTd6ePd6eTd6eTd + 6eTe6eTd6uTe6eTe6eTe6eTe6eTe6eXe6eXe6uXe6eXe6uXe6ubf6ubf6ubf6ubf6ubf6ubg6+bg6ubf + 6ubf6ubf6ubf6+bg6+bg6+bg6+bg6+bg7Obh7Ofh7Obh7Ofh7Ofh7efi7eji7efi7eji7eji7eji7eji + 7eji7efi7efi7eji7uji7eji7eji7uji7uji7uji7uji7uji7uni7uni7uni7uji7uni7uni7+ni7+ni + 7uni7+nj7+nj7+nj7+rj7+rj7+rj7+rj7+rj7+rj8Orj7+rj7+rk7+rk7+rk7+rk8Onk7+rk8Ork7+rk + 8Ork7+rk7+rk7+nk7+rk8Orl8Orl8Orl8evl8Orl8evl8evl8evl8evm8evm8evl8evm8evl8evl8evm + 8evl8evm8evm8evl8evm8evm8ezm8ezm8uzm8uzm8ezm8ezm8uzm8uzm8uzm8uzn8uzn8uzm8uzm8uzn + 8uzm8uzm8uzn8ezm8ezm8uzm8uzm8uzn8uzm8uzn8uzn8uzn8+3n8+3n8+3o8+3o8+3o8+3o9O7o8+3o + 8+3n8+3o8+3o8+3n8+3n8+3n8+3n8+3n8+3n8+3n8+3o8+3o8+3n8+3o8+3n8+7o8+7o8+3n9O7o8+7o + 9O7o9O7o9O7o9O7o9O/p9O7o9O7o9O7p9O7o9O7o9O7p9O7p9O7p9O/p9e7o9O/p9e/p9O/o9O/p9e/p + 9O7p9O7p9O7o9O7p9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o + 9O7o9O7o9O7o9O7p9e/o9O7o9O7o9e/o9O7o9O7o9e/o9O7o9e/o9e/o9e/o9e/o9O7o9O7o9O7o9O/o + 9O7n9O7n9O7n9O7n9O7o9O/o9O7o9O/o9O7n9O/o9O/o9e/o9e/o9fDp9vDp9vDp9vDp9vHq9vHq9vHq + 9vHq9/Lr9/Ls+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs9/Ls9/Lr9vHq9vHq9vHq9fDq9fDp9fDp + 9O/p9O/o9O/o9O/o8+/o9O/o8+7o8+/o8+/o9O/o8+/o9O/o9O/o9O/o9O/o8+7o9O/o9O/o9O/o8+7o + 8+7o8+7o8+7n8+7o8+7o8+7n8+7n8+7n8+7n8+7n8+7o8+7n8+7o8+7n8+7n8+7o8+7o9O/o8+7n8+7o + 8+7o8+7n8+7n8+3n8+7o8+3n8+3n8+3o8+3o8+3n8u3n8+3n8+3n8+3n8+3n8u3n8+3n8uzn8+3n8+3n + 8uzm8uzn8uzn8uzm8uzm8uzm8uzm8uzm8ezl8uzm8uzm8uzm8uzl8uzm8uzm8uzm8uzm8uzm8uzl8uzl + 8uzm8uzm8uzl8uzm8uzl8uzm8uzl8uzl8uzl8uzl8uzl8uzl8evl8evl8uzl8uzl8uzl8evl8uzl8evl + 8uzl8evl8ezl8uzl8uzl8ezl8evl8ezl8evl8evl8evk8evl8evk8evk8evk8evk8evk8evk8evk8Ork + 8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Orj7+nj7+nj + 7+nj7+nj7+nj7+ni7+ni7uni7uni7uni7uni7uni7uni7uni7uni7uni7uni7uni7uni7uni7uji7uni + 7uji7uni7uji7uji7uji7uji7uji7uji7ujh7ujh7uji7efh7efh7efh7efh7efh7efh7efh7efh7Ofg + 7Ofg7Ofg7Obg7Ofg7Off7Obg7Obf7Obg6+bf6+bf6+bf6+Xf6+bf6+bf6uXf6uXe6uXe6+Xf5eLc5uLb + 5+Lc5+Lc5+Lc5+Lc5+Lc6OLc6OPc6OPc6OPc6OPc6ePd6eTd6ePd6OPc6ePd6eTd6uTe6eTd6eTd6eTe + 6uTe6eTd6uTe6uTe6uTe6uTe6eTe6eTe6eTe6uXe6uXe6eXe6uXf6uXf6uXf6ubf6ubf6ubf6ubf6ubf + 6ubf6ubf6ubf6ubf6+bg6+bg6+bg6+bg7Obg7Obh7Obh7Obh7Obh7efi7efi7eji7eji7uji7ujj7uji + 7uji7uji7uni7uni7uji7+jj7+ni7uji7+ni7uji7uji7+ni7+nj7+nj7+nj7+rj7+nj7+rj7+rj7+rj + 8Ork8Orj8Orj8Ork8Orj7+rj8Ork8Ork8Ovk8Ovk8Ovk8Ovk8Ovk8Ovk8Ork8Ovk8Ork8Ork8Orl8Ork + 8Ork8Orl8Orl8Ork8Orl8Orl8Ovl8Ovl8evl8evl8evm8evm8evl8evm8uzm8evm8uzm8uzm8ezm8evm + 8uzm8uzm8evm8evm8uzm8uzm8uzm8uzm8uzm8uzn8uzm8uzn8uzn8uzn8uzm8uzn8+3n8uzn8uzn8uzn + 8+3n8+3n8+3n8u3n8u3n8uzm8uzn8uzn8u3n8+3n8u3n8+3n8+3n8+3n8+3o9O7o9O7o9O7o9O7o9O7o + 8+3o8+3o9O7o9O7o9O7o9O7o9O7o9O7o9O7o8+3o9O7o8+3o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o + 9O7o9O7o9O7o9O7o9O7o9O7o9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9fDq9e/p9e/p9e/p9O/p9O7p + 9O7o9O7o8+7o9O7o8+7o8+3o9O7o8+3o9O7o9O7o9O7o9O7o9O/p9O7o9O/p9O7p9O7p9O7p9e/p9e/p + 9e/p9O7p9O7p9O7p9e/p9e/o9e/o9O7o9e/o9e/o9e/o9e/o9vDp9vDp9e/p9vDp9e/o9vDp9vDp9e/o + 9e/o9e/o9e/o9e/o9e/o9O/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9vDp9vDp9vDp9vDp9vDq9vHq9vLq + 9/Lr9/Lr9/Ls9/Ls+PPs+PPs+PPs+PPs9/Ps+PPs9/Ps9/Ls9/Lr9/Lr9vHq9/Lr9vHq9vHq9vHq9fDp + 9fDp9PDp9PDp9O/o9O/o9O/p9O/o9O/o9O/o9O/o9O/o9O/o9O/o9O/o9O/o9O/o9O/o9O/p9O/o9O/o + 9O/o9O/o9O7o9O/o9O/o9O/o9O/o8+7o9O/o9O/o9O/o9O/o9O/o8+7n9O/o8+7o9O7o9O/o9O/o9O7o + 9O7o9O7o8+7o8+7o8+7o9O7o9O7o9O7o9O7o8+3o9O7o8+3o9O7o9O7o9O7o8+3o8+3o8+3o8+3n8+7o + 8+3o8+3n8+3n8+3n8+3m8+3n8+3m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8uzm8uzm8+3m8uzl + 8uzm8+3m8uzm8uzm8+3m8uzl8uzm8+3m8+3m8uzm8uzl8uzm8uzm8uzl8uzl8uzl8uzl8uzl8uzl8uzl + 8uzl8uzl8uzl8evl8uzl8uzl8ezl8uzl8ezl8evl8ezl8ezl8evk8evl8evk8evk8evk8evk8evk8evk + 8evl8evk8evl8evk8evl8evl8evl8evl8evk8evl8evk8evk8evk8Ork8Ork8Ork8Ork8Ork8Ork8Ork + 8Ork8Ork8Ork8Ork8Ork8Ovk8Orj8Orj8Ork8Orj7+rj7+rj7+rj7+rj7+rj7+rj7+nj7+rj7+ri7+rj + 7+nj7+rj7+ni7uni7uni7uji7uni7uji7uji7uji7uni7uji7ujh7ujh7uji7ejh7ejh7ejh7ejh7efh + 7efg7efh7efh7Ofg7Obg7Obg7Obg7Obg7Obg7Obg6+bf7Obg6+bf6+bf6+Xf6+Xf6+bf6+bf5eLb5uLb + 5+Lc5+Lc5+Lb5+Lc6OLc6OPc6OLc6OPc6OPc6ePd6ePd6ePd6eTd6eTd6eTd6uTe6uTe6uTe6uXe6uXe + 6uXe6uXe6uXe6uXe6uXe6uXe6uXe6uXe6uXe6uXe6uXe6ubf6uXf6uXf6ubf6ubf6ubf6ubf6ubf6+bg + 6+bg6+bg6ubg6+bg6+bg6+bg6+fg7Ofh7Ofh7Obh7Ofh7Ofh7efi7efi7eji7eji7eji7ujj7uji7ujj + 7ujj7ujj7ujj7ujj7unj7ujj7+nj7uji7ujj7+ni7+ni7+nj7+ni7+nj7+nj7+rj7+nj8Orj7+nj8Orj + 8Ork8Orj8Orj8Ork8Ork7+rj8Orj7+rk8Ovk8Ovk8Ovk8Ovk8Ork8Ovl8Ovk8evl8Ovl8Ovl8Ovl8Orl + 8evl8evl8Ovl8evl8evl8evm8evm8uzm8evm8evm8evm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm + 8uzn8uzm8uzn8uzm8uzm8uzn8uzn8uzn8uzm8uzn8uzn8uzn8+3n8uzn8uzn8+3n8+3n8+3n8+3o8+3o + 8+3n8+3n8+3o8+3o8+3o8+3o8+3o8+3n8+3n8+3n8+3o8+3n8+3o8+3o8+3o8+7o9O7o9O7o9O7o9O7o + 9O7o9O7p9O7o9O7o9O7o9O7p9O7o9O7o9O7p9O7p9O7p9O7p9e/p9O7p9O7p9O7p9O7p9O7p9O7p9O7p + 9O7p9e/p9O7o9e/p9O7p9O7p9e/p9e/p9e/p9e/q9e/p9e/q9e/p9fDq9e/p9e/p9e/p9O/p9O7p9O/p + 9O7o9O7o9O7o9O7p8+7o8+7o9O7o9O7o9O7o9O7p9O7p9e/p9O7p9O/p9e/p9e/p9e/p9e/p9e/p9e/p + 9e/p9e/p9e/p9vDp9e/p9vDp9e/p9vDp9vDp9vDp9vDp9e/o9vDp9e/o9vDp9vDp9e/o9fDp9e/o9e/o + 9e/o9e/p9e/o9O/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9vDo9vDp9vDp9vHq9vHq9vHq9vHq9/Lr + 9/Lr9/Lr9/Lr9/Ls9/Ls+PLs+PPs+PPs+PPs9/Lr9/Lr9/Lr9/Lr9/Lr9vLr9vHr9vHr9vHq9vHq9fDq + 9fDp9fDp9fDp9PDp9PDp9fDp9O/o9O/o9O/p9O/p9fDp9O/p9PDp9fDp9O/o9O/p9O/o9PDo9O/o9O/o + 9O/o9O/o9O/o9O/o9O/o9O/o9O/o9O/p9O/o9O/o9O/o9O/o9O/o9O/o9O/o9O/o9O/o9O/o8+7o9O7o + 9O7o9O7o8+7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o8+3o9O7o9O7o8+7o8+7o8+7o + 8+7o8+7o8+3n8+3n8+3n8+7n8+3n8+3m8+3n8+3m8+3m8u3m8+3n8+3m8+3m8+3m8+3m8+3m8+3m8+3n + 8+3m8u3m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8u3m8uzl8uzl8uzl8uzm8uzl8uzl8uzm8uzl8uzl8uzm + 8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8evl8ezk8evl8evl8evk8evk8ezl8evl + 8evl8ezl8evl8evl8uzl8evl8evl8evl8evk8evl8evk8evk8evk8evk8evk8evl8evl8evk8evk8evk + 8evk8evk8evl8evk8evk8evk8evk8evk8Ovk8Ork8Ork8Ork8Ork8Orj8Orj8Orj7+nj7+rj8Orj7+nj + 7+ni7+nj7+nj7+ni7+ni7uni7uji7uji7uji7uni7uji7uni7uji7uni7uni7uni7uji7ejh7ujh7ujh + 7efh7efh7ejh7Ofg7efh7Ofg7Ofg7Ofg7Obg7Obg7Obg7Obg7Obg6+bf7Obg7Obg7Obg7Obg5eHc5+Hb + 5+Lb5+Lc5+Lb5+Lc6OPc6OPc5+Pc6OPc6ePd6ePd6ePd6eTd6eTd6uTe6eTd6uTe6uTe6uTe6uXe6uXe + 6+Xf6uXe6+Xf6+Xf6+Xf6uXf6+bf6+bf6+bf6+Xf6+bf6+bf6+bf6+bg6ubf6ubf6ubf6+bg6+bg6+bg + 6+fg6+fg7Ofh7Ofh7Ofh7Ofh7Ofh7Ojh7Ojh7Ofh7eji7efi7eji7ujj7ujj7uji7uji7ujj7ujj7ujj + 7ujj7+nk7+jj7+nj7+nj7+nj7+nj7+nj7+nj8Orj7+nj7+nj8Orj8Orj8Ork8Orj8Ork8Ork8Ork8Ork + 8Ork8Ork8Ork8Ork8Ovk8evk8Ork8Ork8Ovk8Ovk8Ovk8Ovk8Ovl8evl8evl8evl8uzl8evl8ezm8evl + 8uvl8uzm8uzm8uzm8uzm8uzm8uzm8uzn8u3n8u3n8uzn8uzm8uzm8uzn8uzn8uzm8uzm8uzn8uzm8uzm + 8+3n8uzn8uzm8uzn8uzn8uzm8+zn8+3n8uzn8+3n8uzm8+3n8+3n8+3n8+3n8+3n9O7o8+3n9O7o8+3n + 9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9e/p9O/o9O7o + 9O/o9e/p9e7o9O7o9O7o9e/p9O/p9e/p9e/p9e/p9e/p9e/p9e/p9e/q9e/q9e/q9e/q9e/p9e/p9e/p + 9e/p9e/p9e/q9e/q9e/p9e/p9e/q9vDq9fDq9fDq9e/p9vDq9vDq9e/q9vDq9e/p9e/q9e/p9e/p9e/p + 9O/p9O7o9e/p9O/p9e7o9O/p9O/p9O/p9e/p9e/p9e/p9e/p9fDq9vDq9fDq9vDp9vDq9vDq9vDq9vDq + 9vDp9vDq9vDp9/Hp9vDp9vDp9/Hq9vDp9vDp9vDp9vDq9vDp9vDo9vDp9vDp9e/o9e/o9e/p9e/o9e/p + 9e/o9e/o9e/p9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9vDp9vDp9vDp9vDp9vDp9vDp9vHq9vHq9vHq + 9vLq9vHr9/Lr9/Lr9/Lr9/Ls+PPs+PPs9/Lr9/Ls+PPs9/Lr9/Lr9/Lr9/Lr9vHq9/Lr9vHq9vHq9vHq + 9vHq9fDq9vHq9fDp9fDp9fDq9fDp9fDp9fDp9fDp9fDp9fDp9fDp9fDp9fDp9fDp9O/p9fDp9PDp9fDp + 9fDo9fDp9O/o9fDp9PDp9O/p9O/p9O/o9O/o9O/o9O/o8+/o9O/o8+/o9O/o8+/o9O/o9O/o8+7n8+/n + 9O7o8+7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o + 8+3n9O7o8+7o9O7o9O7o9O7n9O7n8+7n8+7n8+7n9O3m8+3m8+3m8+3m9O7n8+7m9O7n8+3m8+7n8+7n + 9O7n8+7n8+7n8+3m8+3m8+3m8u3m8+3m8+7m8+3m8+3m8+3m8+3m8+3m8+3m8+7n8+7m8+3m8+3m8+3m + 8+7m8+3m8+3m8+3m8+3m8+3m8+3m8uzm8uzl8+3m8uzl8uzm8uzm8uzm8uzm8uzm8uzl8uzm8uzm8uzm + 8uzl8uzm8uzm8uzl8uzm8uzm8uzm8uzm8uzl8uzm8evm8uzl8evl8evl8evl8uzl8evl8evl8uzl8uzm + 8uzl8uzl8uzm8uzl8evl8evl8ezk8evk8evk8evk8evk8Ork8evk8Ork8Ork8Ork8Ork7+nj7+nj8Orj + 7+nj7+nj7+nj7+ni7+nj7+nj7+ni7ujj7+nj7uji7ujj7uji7uni7uji7uji7uni7ujh7ejh7ujh7ujh + 7ujh7eji7ujh7ejh7ejh7ejh7ujh7ejh7efh7Ofg7efh7efh7Ofg7ebg7Ofg7Obg7Ofh7Obg5eLc5+Lb + 5+Lb5+Lc5+Pc6OLc6OPc6OPc6ePc6ePd6OPc6ePd6eTd6uTe6eTd6eTd6uTe6uTe6uTe6uXe6uXe6uXe + 6uXe6uXe6+Xf6+Xf6+Xf6+bf6+bf6+bf6+bf6+bg6+bg6+bg6+bg6+bg6+bg6+bg7Obh6+bg6+bg6+bg + 7Ofg7Ofh7Ofh7Ojh7Ofh7Ojh7Oji7eji7eji7eji7eji7eji7eji7uji7ujj7ujj7ujj7unj7ujj7ujj + 7+jj7+nj7+nk7+nj7+nj7+nk7+nk8Ork8Orj8Orj8Ork8Ork8Ork8Ork8Ork8Ork8evk8Orj8Ork8evk + 8Ork8Ork8Ork8evk8evk8Ork8evk8evk8Ovk8evk8evl8evl8evk8ezl8ezl8ezl8uzl8evl8uzl8uzl + 8uzl8uzm8uzm8uzm8+3m8u3m8u3n8u3n8+3n8+3n8uzn8uzn8+3n8uzn8+3m8uzn8+3n8uzn8uzn8+3m + 8+3n8uzn8uzm8uzn8uzm8uzm8u3n8uzm8u3n8+3n8+3n8+3n8+3n8+3n8+3n8+3n9O7o8+3n8+3n8+3n + 9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7p9O7o9O7o9O7p9O7p9O7o9O7o9O7p9O7p9e/p9O7p9e/p + 9e/p9O/p9O/p9O/p9e/p9e/p9O/p9e/p9O/p9e/p9e/q9e/q9e/p9e/q9e/q9e/q9e/p9vDq9e/p9e/p + 9e/p9e/p9e/p9e/p9e/p9e/p9e/p9vDq9vDq9vDq9vDq9vDq9vDq9fDp9vDq9vDq9vDq9e/p9e/p9e/p + 9e/p9e/p9e/p9e/p9e/p9O7o9O/p9O/p9e/p9e/p9e/p9fDq9fDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq + 9vDp9/Hq9vDp9/Hq9/Hq9vDq9/Hq9vDp9vDp9vDp9vDp9vDp9vDp9fDp9vDp9fDo9e/o9e/p9e/o9e/p + 9e/o9e/o9e/p9e/o9e/o9e/o9vDp9e/o9vDo9e/o9vDp9vDp9vDp9vDp9vDp9vDq9vDq9vHq9vHq9vHq + 9/Lr9vHq9/Lr9/Lr9/Lr+PPs+PLs+PPs+PPr+PPs9/Ls+PPs9/Lr9/Lr9/Lr9/Lr9vHq9vHq9vHq9vHq + 9vHq9fDq9vDq9fDp9fDp9fDp9fDp9fDp9fDp9fDp9fDp9fDp9fDp9fDp9fDp9fDp9PDp9fDp9fDp9fDp + 9fDp9PDo9fDp9fDp9fDp9fDp9fDp9PDo9O/o9fDp9fDo9PDo9O/o9O/o9O/o9O/o9O/o9O/o9e/p9O/o + 9O/o9O/o9e7o9O7o9O7o9O7o9O7o9O7o9O7o9e/p9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o + 9e/o9O7o9O7o9O7o9O7o9O7o9O7o9O7n9O7o9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n8+7n + 8+7n8+3m9O7n8+3m8+3m9O7n8+3m8+3m9O7n9O7n8+3m9O7n9O7n8+3n8+3m9O7n9O7n9O7n9O7n9O7n + 9O7n9O7n9O7n9O7n9O7n9O7n8+3m8+3m8+7m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8uzm8uzm8+3m8+3m + 8uzm8uzm8+3m8uzm8+3m8+3m8+3m8uzm8uzm8uzm8uzm8uzl8uzl8uzl8uzm8uzm8uzl8uzl8uzl8uzm + 8uzl8uzm8uzm8uzl8evl8evl8uzk8evl8evk8evk8evk8evk8evk8Ork8evk8Ork8Ork8Ork8Orj8Ork + 8Orj8Orj7+nj7+ni7+ni7+ni7+ni7+nj7+nj7+nj7+ni7+ni7+ni7uji7uni7uji7uji7uji7uni7uji + 7uji7uji7uji7uji7uni7uji7uji7uji7efh7efh7efh7efh7Ofh7Obh7Ofg7efh7Obh7Ofh5uLb5+Lc + 5+Pc5+Pc6OPc6OPc6OPc6OPc6ePd6OPc6eTd6eTd6eTd6uTe6uTe6uTe6uXe6uTe6uTe6+Xf6uTe6uXe + 6uXe6+Xf6uXe6+Xf6+Xf6+Xf6+bg6+bg6+bg6+bg6+bg6+bg6+fg6+bg6+fg7Ofh7Ofh7Ofh7Ofh7Ofh + 7Ofh7eji7Ojh7Oji7eji7eji7eji7eji7eji7uji7ujj7uji7ujj7ujj7ujj7ujj7ujj7ujj7ujj7unj + 7+nk7unj7+nj7+nk7+rk8Ork7+nk7+rk7+rk8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Orj8Ork8Ork + 8Ovk8Ork8evk8Ork8Ovk8Ovk8evk8Ovk8evk8evl8ezl8ezl8evl8ezl8uzl8uzl8ezl8uzm8uzm8uzm + 8uzm8u3m8uzm8u3n8+3n8+3n8+3n8u3n8+3n8+3n8+3n8+3n8+3n8+3n8+3n8+3o8+3n8+3n8+3n8+3n + 8+3o8+3n8+3n8+3n8+3n8+3n8+3n9O7o9O7o8+3n8+7o8+3o8+3o8+3o8+3o9O7o8+3o9O7o9O7o9O7o + 9O7o9O7o9O7o8+7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7p9O7p9O7p9O7p9O7p9e/p9e/p9e/p + 9O7p9O7p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9O/p9e/p9O7p9O7p9e/p9e/p9O7p9e/p9e/p9e/p9e/p + 9e/p9e/p9e/p9e/p9e/p9vDq9e/p9e/p9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9e/p9e/q9e/p + 9vDq9e/p9e/p9e/p9e/p9O/p9e/p9e/p9e/p9e/p9fDp9fDq9fDp9vDq9vDq9vHq9vDq9vDq9vDq9/Hq + 9vDq9/Hq9/Hq9/Hp9/Hq9vDq9vDp9vDp9vDp9vDp9vDp9vDp9vDp9fDp9vDp9vDo9vDp9e/o9vDp9vDp + 9vDp9fDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vLq9/Lr + 9/Lr9/Lr9/Lr+PPs9/Lr+PPs+PPs+PPs9/Lr+PPs+PPs9/Lr9/Lr9/Lr9/Lr9vHq9vHq9vHq9vHq9vDq + 9fDp9fDp9fDq9fDp9fDp9fDq9fDp9fDp9fDp9fDq9fDp9vDq9fDp9fDp9fDp9fDp9fDq9fDq9fDp9fDp + 9fDq9fDp9fDp9fHq9vHq9vHq9fDp9fDp9fDp9fDp9fDp9vDq9fDp9fDp9e/p9e/p9e/p9e/p9e/p9e/p + 9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9O7o9O7o9e/p9e/p9e/p9e/p9e/p9e/p + 9e/p9e/p9O7o9e/p9O7o9e/o9e/o9e/o9e/o9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7m + 9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7o9O7o9O7n9e/o + 9O7n9e/o9O7n9e/o9O7n9O7n9O7n9O7n9O7n9O7n8+7n8+7n8+7n8+7n9O7n8+7n8+3m9O7n8+3m8+3m + 8+3m8+3m8+3m8+3m8+3m8+3m8+3m8uzm8uzm8uzm8uzm8+3m8+3m8uzm8+3m8uzl8uzm8uzm8uzm8uzl + 8uzl8uzl8uzl8uzl8uzl8ezl8evk8evl8evk8evk8evk8Ork8evk8evk8evk8Ork8Ork8Ork8Orj8Orj + 8Ork8Ork8Orj8Orj8Ork8Orj7+nj7+nj7+nj7+nj7+nj7+nj7+nj7+nj7+ni7+ni7+ni7+ni7uji7+ni + 7uni7uni7uji7+ni7uji7uni7uji7uji7ujh7uji7efh7efh7efh7efh7Ofg7Ofh7Ofg7efg5eLc5+Pc + 5+Lb5+Pc6OPc5+Lc6OPc6OPc6eTd6ePd6ePd6eTd6uTe6eTd6uTe6uTe6uTe6uXe6uTe6uXe6+Xf6+Xf + 6+Xf6+Xf6+Xf6+Xf6+bg6+bf7Obg7Obg7Obg7Obg6+bg6+bg7Ofh7Obh7Ofg7Ofh7Ojh7Ofh7Ofi7Ofh + 7Oji7Oji7eji7eji7eji7eji7eji7eji7ujj7ujj7uji7ujj7ujj7ujj7ujj7ujj7ujj7ujj7unj7+nk + 7+nk7+nj7+nk7+nk7+nk8Ork8Ork8Ork8Ork8evk8Ork8Ork8evk8Ovk8evk8Ovk8Ork8Ovk8Ovk8Ork + 8evk8Ovk8Ovk8Ovk8Ovk8Ovk8evk8Ovk8ezl8evl8ezl8ezl8uzl8uzl8u3m8uzm8uzm8uzm8uzm8uzm + 8+3m8uzm8+3n8+3n8+3n8+3n8+3n8+3n8+7n8+3n8+3n8+3n8+3n8+3n9O7o8+3o9O7o9O7o9O7o9O7o + 9O7o9O7p9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7p9O7o9O7o9O7p9O7o9O7o9O7o9O7o9O7o9O7o9e/p + 9O7o9O7o9O7o9O7o9O7o9O7o9O7p9O7o9O7o9O7p9e/p9O7p9O7o9O7p9e/p9O7p9e/p9O7p9e/p9e/p + 9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9O7p9e/p9e/p9e/p9e/q9e/p + 9e/p9vDq9fDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq + 9vDq9e/p9vDq9vDq9e/p9e/p9vDq9vDq9vDq9e/p9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9/Hq9/Hq + 9vDq9/Hq9/Hq9vDq9/Hq9vDq9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp + 9vDp9vDp9vDp9/Hq9vDp9/Hq9/Hq9/Hq9/Hq9/Hq9vHq9vHq9/Lr9vLq9vHq9/Lr9/Lr9vHq9vLq9/Lr + 9/Lr9/Lr9/Lr9/Lr9/Lr+PLs9/Lr+PLs9/Lr+PLs9/Lr9/Lr9/Lr9/Lr9/Lr9vHq9vHq9vHq9vHq9vHq + 9vHq9vHq9vHq9fHq9fDp9fDp9fDp9fDp9fDp9vHq9vHq9fDp9vHq9vHq9vHq9vHq9vDq9fDp9fDp9fHq + 9fDp9fDp9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9e/p9vDq + 9vDq9e/p9vDq9e/p9vDq9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9O7o9O7o9e/p9O7o9O7o9O7o9e/p + 9O7o9e/p9e/p9e/o9e/o9O7o9e/o9O7o9e/o9O7o9O7n9O7n9O7n9O7n9O7n9O7n9O7n8+3m9O7n9O7n + 9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7m9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n + 9O7n9O7n9O7n9O7m9O7m9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n8+3m9O7m + 8+3m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8uzm8+3m8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzl8uzl + 8uzl8uzl8ezl8uzl8uzl8evl8evk8evl8evk8evk8evk8Ork8Ork8Ork8Ork8Orj8Ork8Ork8Ork8Ork + 8Ork8Ork8Ork8Ork8Orj8Orj8Ork8Orj8Orj8Orj8Orj7+nj8Orj8Orj8Orj8Orj8Orj8Orj7+nj7+ni + 7+nj7+ni7+ni7uni7uni7+ni7uji7uji7uji7ejh7ujh7eji7ejh7eji7efh7efi7Ofh7Ofg5uLb5+Lb + 5+Lb5+Pc5+Pc6OLc6OPc6OLc6OPc6OPc6OPd6ePd6ePd6ePd6uTe6uTe6uTe6uTe6uTe6uTe6uXf6uXe + 6+Xf6+bf6+bf6+bf7Obg7Obg7Obg7Obg7Ofh7Ofh7Ofg7Ofh7Ofh7Ojh7Ofh7Ojh7Ojh7Ojh7Ojh7eji + 7eji7ejh7eji7eji7eji7eji7unj7ujj7unj7unj7ujj7ujj7ujj7ujj7+nj7ujj7+nk7+nj7+nk7+nk + 7+nk7+nk8Ork8Ork8Ork8Ork8Ork8evk8Ork8evl8evl8evl8uzl8evl8evl8evl8ezl8ezl8ezl8evk + 8evk8evk8evk8evk8evl8evl8ezl8uzl8ezl8uzl8u3m8u3l8u3m8u3m8+3m8u3m8+7m8+3m8+3m8u3n + 8+3n8+3n8+3n8+3n8+3n8+7n8+7o9O3o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9e/p9O7o9e/o + 9O7o9O7p9O7p9e/p9O7p9O7o9O7p9O7o9O7o9e/p9O7o9O7p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p + 9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/q9e/p9e/p9e/p9e/p + 9e/q9e/q9vDq9e/p9vDq9e/p9e/p9e/p9vDq9e/p9vDq9vDq9vDq9e/p9vDq9fDq9vDq9vDq9vDq9vDq + 9vDq9vHq9vHr9/Hr9vHq9vHq9/Hr9/Hr9/Hr9vDq9/Hr9/Hr9/Hr9vDr9vDq9/Hr9vDq9vDq9vDq9vDq + 9/Hr9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq + 9vDq9vDq9vDq9vDq9vDq9/Hq9/Hq9vDp9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9vDp9/Hq9/Hq9/Hq + 9vDp9/Hq9/Hq9vHq9/Hq9/Hq9/Lq9/Hq9/Hq9/Lq9/Lr9/Lr9/Lr9/Hq9/Lr9/Lr9vHq9vHq9vHq9/Lr + 9vLq9/Lr9/Lr9/Lr9/Lr9/Lr+PPs9/Pr9/Lr9/Pr9/Lr9/Lr9/Lr9/Lr9vLq9vHq9vLq9vLq9vLq9vHq + 9vHq9vHq9vHq9vHq9vHq9vHq9fDp9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq + 9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9fDp9fDp9fDp9fDp9fDp9fDp9vDq9e/p9vDq + 9e/p9e/p9vDq9e/p9vDq9e/p9vDq9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9O7p9O7p9e/p9e/p9e/p + 9e/p9e/p9e/o9e/p9e/o9e/p9e/o9e/o9O/o9e/o9e/o9O7o9e/o9O7o9O7o9O7o9e/o9O7o9O7o9e/o + 9e/o9O7o9e/o9O7o9O7o9e/o9O7n9O7o9O7n9O7n9O7n9O7n9O7n9O7o9O7n9O7n9O7n9O7o9O7n9O7o + 9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n8+7n9O7n + 9O7n9O7n9O3n9O7n8+7n8+7n8+3n8+3m8+3m8+3m8+3m8+3m8uzm8+3m8uzl8+3m8+3m8uzl8uzl8uzl + 8uzl8uzl8uzl8evl8uzk8evk8evl8evl8evk8Ork8Ork8evk8evk8evk8evk8Ork8Ork8Ork8Ork8evk + 8Ork8Ork8Ovk8Ork8evk8Ork8Ork8Ork8Ork8Ork8Orj8Ork8Ork8Ork8Orj8Orj7+nj8Orj8Orj7+ni + 7+ni7+ni7uni7+nj7uji7uni7+ni7uji7uji7uji7uji7uji7eji7uji7ejh7efh7ejh7efh5uHb5+Lb + 5+Lc5+Lc5+Lb6OLc5+Lc6OLc6OPc6OPc6OPd6ePd6eTe6ePd6eTd6eTd6uTe6uTe6uXe6+Xe6uXe6+Xf + 6ubf6+bf6+Xf6+bf7Obg7Obg7Obg7Obh7Ofh7Ofh7Ofh7Ofh7Ofh7Ojh7Ojh7Ojh7Ojh7Ojh7Ojh7eji + 7ejh7eji7eni7eni7eni7eni7eni7uni7unj7unj7unj7+nj7ujj7ujj7+nj7+nj7+nk7+nk7+nk7+nk + 7+nk8Ork8Ork8Orl8Orl8Ork8Ork8evl8evl8evk8evl8evl8evl8uzl8uzl8uzl8uzl8uzl8uzl8uzl + 8uzm8uzl8uzm8uzl8uzl8uzl8uzl8uzl8uzl8u3m8u3m8+3m8u3m8u3m8+3m8+3m8+3m8+3n8+3n8+3n + 8+3n8+7n8+3n8+7n9O7o9O7n9O7o9e/o9O7o9O7o9O7o9O7o9e/o9e/p9e/o9O7p9e/p9e/p9e/p9e/p + 9O7p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9O7p9e/p9e/p9e/p9e/p9vDq9e/q9e/q9e/q9vDq9vDq9vDq + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9e/p9e/p9vDq9e/p9vDq9e/p9e/p9e/p9vDq9e/p9vDq9vDq9vDq + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDr9vDq9/Hr9vHq9vHq + 9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr + 9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9vDq9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hq9/Hr9/Hq9/Hq + 9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq+PLr+PLr+PLr+PLr+PLr9/Lr+PLr9/Lr9/Lr9/Lq9/Hq9/Hq9/Lr9/Hq + 9/Hq9/Hq9/Hq9/Lq9/Lq9/Lr9/Lr9/Lr9/Lq9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr+PPs + 9/Lr+PPs9/Lr+PPs9/Lr9/Lr9/Lr9/Lr+PPs9/Lr+PLs9/Pr9/Pr9/Lr9/Lr9vLq9/Lr9/Lr9/Lr9/Lr + 9vLq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vLq9vHq9/Lr9vHq9vHq9/Lr9vLq9vLq9vLq + 9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vHq9vDq9vDq9vDq9vDq9vDq9vDq9e/p9e/p + 9e/p9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDp + 9vDp9vDq9vDp9e/p9e/p9vDp9e/p9e/p9e/p9e/p9vDp9vDp9e/p9e/p9e/o9vDo9vDp9e/o9e/o9vDp + 9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9O/o9e/o9e/o9O/n9e/o9e/o9O7n9e/o9e/o9O7n9O7o + 9O7o9e/o9O7n9e/o9O7n9O7o9e/o9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n8+7n9O7n9O7n9O7n + 9O7n8+3m8+7n9O7n8+7n8+3m8+3m8+3m8+3m8+3m8+3n8+3m8+3m8+3m8+3m8+3m8+3m8uzl8uzm8uzm + 8uzl8ezl8uzl8uzl8uzl8uzl8evk8ezl8ezk8evk8evk8evk8evl8evk8evk8evk8evk8evk8evk8ezl + 8evk8evk8evl8evk8Ork8evk8evk8evk8evk8evk8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Orj7+nj7+nj + 7+nj7+nj7+ni7uji7uji7uji7uji7uji7uji7ujh7uji7uji7uji7efi7eji7efi7efh7efh5eHb5uLb + 5+Hb6OLc6OLc5+Lc6OPc6OLd6OLc6OPc6OPd6ePd6ePd6eTd6eTd6uTd6eTe6uXe6uXf6uXe6uXf6uXe + 6ube6+bf6+bf7Obg7Obg7Obg7Obg7Obg7ebh7Obh7Ofh6+fg7Ofh7Ojh7Ojh7Ojg7Ofh7Ojh7Ojh7Ojh + 7eji7Ojh7eji7eji7uni7eni7uni7unj7unj7unj7unj7unj7+nj7+nk7+nk7+rk7+nj7+nk8Onk8Ork + 7+nk8Ork8Ork8Ork8Ork8Orl8Orl8Orl8Orl8evl8evl8uzk8uzl8evl8uzl8uzm8uzl8uzl8uzm8+3m + 8+3m8uzl8+3m8+3m8+3m8+3m8+3m8uzm8+3m8uzl8+3m8+3m8+3m8uzm8uzm8+3m8+3n8+3n8+7n8+3n + 8+3n8+7n9O7n9O7o9O7o9O7o9O/o9O7o9e/o9e/o9O7o9e/p9e/p9e/p9vDp9e/p9e/p9e/p9vDp9e/p + 9e/p9e/p9e/p9e/p9e/q9e/p9e/p9e/p9e/q9e/p9e/p9vDp9vDp9e/p9vDq9vDq9vDq9e/q9vDq9vDq + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9e/p9vDq9vDq9vDq9e/p + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9/Hr9vDq9vDq9/Hr9vDq9/Hr9/Hr9/Hr9/Hr + 9/Hr9/Hr9/Hs9/Hs9/Hr9/Hr9/Ls9/Hr9/Hs9/Hs9/Hr+PLr+PLr+PLs9/Hr9/Hr+PLs9/Hr9/Hr9/Hr + 9/Hr9/Hr9/Hr9vDq9/Hr9vDq9/Hr9/Hr+PLr+PLr+PLr9/Hr9/Hr9/Hr9/Hr9/Hr+PLr+PLr9/Hr9/Hr + +PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr9/Hq9/Lr9/Lr9/Lq9/Hq + 9/Lr9/Hq9/Lr9/Lr9/Hq9/Hq9/Lq9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr+PPs9/Lr9/Lr+PLs+PPs+PPs+PPs + +PPs9/Lr+PPs9/Lr+PPs9/Lr9/Lr+PLs9/Lr9/Lr9/Lr+PPs9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr + 9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9vHq9vLr9/Lq9/Lr9/Lr9vHr9vHr9vLr9vLq9vLq9/Lr + 9vHq9vLq9vHq9/Lr9/Lr9/Lr9/Hr9vHq9vHq9vHq9vHq9vHq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9vDp + 9vDp9vDq9vDp9vDp9vDp9e/o9vDp9vDp9vDp9vDp9e/p9vDo9vDp9fDp9vDp9e/o9vDp9vDp9vDp9e/o + 9e/o9vDo9e/o9vDp9vDp9e/o9e/o9e/o9e/o9e/o9e/o9e/o9vDp9e/o9e/o9e/o9e/o9O7n9e/o9e/o + 9e/o9O7n9e/o9O7o9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n8+7n9O7n9O7n8+7n8+7n8+7n + 8+7n8+7n8+7n8+3m8+3m8+3m8+3m8+3m9O7n8+3m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8uzl + 8uzm8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8evk8evk8ezl8evk8evk8evk8evk8Ovk8evk8ezl + 8ezk8evk8Ovk8evk8Ovk8evk8evk8Ork8Ovk8Ovk8Ork8Ork8Orj8Ovk8Ork8Orj7+nk7+nj8Ork7+nk + 7+nj7+nj7uji7uji7uji7uji7uji7uji7efi7uji7uji7ujh7eji7uji7efi7uji7efi7efh5uHb5+Hb + 5+Lc6OLc6OLc6OLd6OPc6ePd6OPd6OPd6ePd6eTe6ePd6uPe6eTe6uTe6uTe6uTe6uTe6uTe6+Xf6+Xf + 6uXe6+Xf6+Xf6+bf7Obg7Obg7Obg7Obg7Obg7Ofg7Ofg7Ofh7Ofh7Ofg7Ofh7Ojh7eji7eji7eji7eji + 7eji7uji7uni7uni7uni7unj7unj7unj7unj7unj7+nj7unj7unj7+nj7+nj7+nj7+nj7+nj7+rk7+rk + 7+rk8Ork8Orl8Orl8Orl8Orl8Orl8evl8Orl8evl8evl8evk8evl8evl8evl8uzl8uzm8uzm8u3m8uzl + 8uzl8+3m8+3m8+3m8+3m8uzm8+3m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8+3n8+3n9O7n8+3n9O7n + 9O7n9O7n9O7o9O7o9O7o9e7o9O7o9e/o9e/o9O7o9e/o9e/o9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/q + 9vDq9vDq9e/p9vDq9e/p9vDq9vDq9vDq9e/q9vDq9vDq9vDq9vDq9vDq9vDq9vDq9e/q9vDq9vDq9vDq + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9/Hr9/Hr9/Hr9/Hr+PLs9/Hr9/Hr9/Hr + 9/Hr9/Hs+PLs9/Hs+PLs+PLs+PLs+PLs+PLs+PLs+PLs9/Hr9/Hr+PLs+PLs9/Hr9/Hr9/Hr9/Hr9/Hr + 9/Hr9/Hr9/Hr9/Hr9/Hr+PLs9/Hr+PLs+PLs9/Hr9/Hr+PLs+PLr+PLr+PLr+PLr9/Hr+PLr+PLr+PLr + +PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLs+PLr+PLr+PLq+PLr9/Lr9/Lr9/Lq + 9/Lr9/Lr9/Lr+PLr9/Lr9/Lr9/Lr+PPs+PPs+PLs9/Lr+PPs9/Lr9/Lr+PPs+PPs+PLs+PPs+PPs+PLs + +PPs+PPs+PPs9/Lr+PPs+PPs+PPs+PPs+PPs+PPs+PPs9/Lr+PLs+PPs+PLs+PLs+PLs+PPs+PPs+PLs + +PLs+PLs+PPs+PPs9/Lr9/Lr+PLs9/Lr9/Lr9/Lr9vHq9vHq9vHq9vHq9vHq9vHq9/Lr9vLq9/Lr9/Lr + 9/Lr9vLq9/Lr9/Lr9/Lr9/Lr9/Lr9/Hr9vHq9vHq9/Hr9vHq9vHq9vHq9vDq9vDq9vDq9vDq9vDq9vDq + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9/Hr9vDq9/Hr9/Hr9vDq9vDq9vDq9vDq + 9vDq9vDp9vDq9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9e/o9vDp9e/o9vDo9vDp9e/o9e/o9e/o + 9e/o9e/o9vDp9e/o9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDo9vDo9e/o9e/o9e/o9e/o9e/o + 9e/o9e/o9O7n9e/o9e/o9O7n9O7n9O7n9O7n9O7o9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n + 9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7m9O7m9O7n9O7m8+3m9O7n8+3m8+3m8+3m8+3m8+3m8+3m + 8+3m8+3m8+3m8+3m8+3m8+3m8uzm8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8ezk8ezl8ezk8ezl + 8evk8evk8ezl8evk8ezk8evl8evk8evk8Ovk8evk8Ork8Ork8Ork8Orj8Orj8Ork8Ork8Ork8Orj7+nj + 7+nj7uji7+ni7+nj7uji7uji7uji7uji7uji7uji7uji7uji7uji7uji7uji7uji7uji7efi5eDb5+Lc + 6OLc6OLc6OLc6OLd6OPd6OPd6ePd6ePd6ePe6eTe6eTe6eTe6uTe6uTe6uTe6uTf6uXf6uXf6+Te6+Xf + 6+Xf6+Xg6+Xf6+bf6+Xf6+bg7Obg7Obg7Obg7Obg7Obg7Ofh7Ofh7Ofg7Ofh7ejh7ejh7eji7ejh7eji + 7eji7uni7unj7uni7uni7unj7unj7+nj7+nj7+nj7+rj7+nj7+nj7+nj7+nj7+nj7+nj7+nj7+rk7+rk + 7+rk7+rk8Ork8Orl8evl8evm8Orm8evm8evl8evm8uzl8evl8evl8evl8evl8uzl8uzl8uzl8u3m8uzl + 8uzm8+3m8uzm8uzm8+3m8+3m8uzl8uzm8+3m8+3m8+3m8+3m8+3m8+3m8+3n8+3n8+3n9O7n8+3n8+3n + 9O7n9O7n9O7o9O7o9O7o9O7o9e/o9O7o9e/o9e/o9e/o9O7o9e/p9e/p9e/p9e/p9e/p9e/p9e/p9vDp + 9vDq9vDq9e/q9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq + 9vDq9vHq9vHr9vHq9vDq9vDq9vDq9vHq9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr+PLs+PLs+PLs + +PLs9/Hr+PLs9/Hr+PLs+PLs+PLs+PLs+PLs+PLs+PLs9/Hr9/Hr+PLs9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr + +PLs+PLs9/Hr+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLr+PLr+PLr+PLr+PLr+PLr+PLr + +PLr+PLr+PLr+PLr+PLr+PPs+PLr+PLr+PPs+PLs+PPs+PPs+PPs+PLs+PPs+PPs+PLr+PLs+PLr9/Lr + +PLr9/Ls9/Lr+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs9/Lr+PPs9/Lr9/Lr+PPs+PPs9/Lr+PLs + 9/Lr+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PTt+PTs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs + +PPs+PPs+PPs+PPs9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr + 9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Lr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9vDq9/Hr9vDq9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr + 9/Hr9/Hq9/Hq9/Hq9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9e/o9vDp9e/o9e/o9e/o + 9vDo9e/o9e/o9e/o9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDo9e/o9e/o9e/o + 9e/o9e/o9O7o9e/o9e/o9e/o9e/o9O7n9O7n9O7o9O7n9O7n9e/o9O7o9O7n9O7n9e/o9O7n9O7n9O7n + 9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n8+3n8+3m9O7m9O7m8+3m8+3m8+3m9O7n8+3m + 8+3n8+3n8+3m8+3m8+3m8+3m8+3m8+3m8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8ezk + 8ezl8ezl8ezl8ezk8evk8Ovl8evk8evk8Ovk8Ovk8evk8Ork8evk8Ork8Ork8Ork8Ork8Ork7+nj7+nj + 7+nj7+nj7+nj7ujj7uji7uji7uji7ujj7uji7uji7uji7uji7uji7uji7uji7uji7uji7efh5eDb5uDb + 5+Hc5+Hc5+Lc5+Lc5+Lc6OLd6OPd6OPd6ePd6OPd6eTe6eTe6eTe6uXf6uTe6uXf6uXf6uXf6+Xf6+Xf + 6+Xf6+Xf6+Xf7Obg7Obg7Obg7Obg7Obg7Obg7Obg7Obg7Ofh7Ofh7efh7Ofh7Ofh7Ofh7Ojh7Ojh7Ojh + 7ejh7eni7eni7uni7uni7uni7urj7urj7+rj7+rj7+rj7+rj7+nk7+rk7+nj7+nj7+nk7+rk7+rk7+rk + 8Ork8Ork8Orl8Ovl8evl8evl8evm8evl8uzm8evl8uzm8uzl8uzm8uzl8uzl8uzl8uzm8uzl8u3m8uzl + 8uzm8+3m8+3m8+3m8+3m8+3m8+3m8u3m8+3m8+3m8+3m8+3m8+3m8+3n8+3n8+3n8+3n9O7n9O7n9O7n + 9O7n9O7o9O7n9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9e/p9e/p9e/p9e/p9e/p9e/p9e/p + 9e/p9vDq9e/q9vDq9vDq9vDq9vDq9vDq9vDq9vDq9e/p9e/p9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq + 9/Hr9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr+PLs9/Hr+PLs+PLs + 9/Hr+PLs+PLs9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs + +PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs + +PPs+PPs+PPs+PLs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PLs+PLs+PLs + +PLr+PPs+PPs+PPs+PLr+PPs+PLr+PPs+PLs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs + +PPs+PPt+PTt+PTt+PPs+PTs+PPs+PPs+PTs+PTt+PTs+PPs+PTs+PPs+PPs+PPs9/Lr+PPs+PPs+PTs + +PPs+PPs+PPs+PTs+PTt+PTt+PTs+PTt+PTt+PTt+PTt+PTt+PTt+PPs+PPs+PPs+PPs+PPs+PPs+PPs + +PPs+PPs+PPs+PPs+PPs+PLs+PLs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs + +PPs+PLs+PPs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PHs9/Hr+PLs+PLs+PLs+PLs + +PLs+PLs+PLs9/Ls+PLs9/Ls9/Hr9/Hr+PLs9/Hr+PLs9/Hr+PLs9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr + 9/Hr9/Hr9/Hr9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9vDp9/Hq9vDp9/Hq9vHp9vDp9/Dq9vDp9vDp9vDp + 9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDo9vDp9vDp + 9e/o9vDo9e/o9vDp9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o + 9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n9O7n8+3n8+3m8+3n8+3n8+3n8+3n8+3n8+3m8+3m8+3m8+3m + 8+3m8+3m8+3m8+3m8+3m8uzm8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8evk8ezl + 8evk8evk8evk8evl8Ovk8Ovk8Ork8evk8evk8Ork8Ork8Ork8Ork8Ork8Ork8Ork7+nk7+nj7+nj7+nj + 7+nj7uji7ujj7uji7ujj7uji7uji7uji7uji7ujj7eji7uji7efi7uji7efi7eji7efi7efi5ODa5uDb + 5uHb5uHb5+Hc5+Lc5+Hc5+Lc6OPd6OPd6OPd6OPd6eTe6eTe6eTd6eTe6uTe6uXe6uXf6uXf6uXf6+Xf + 6+Xf6+Xg6+Xg7Obg7Obg7Obg7Obg7Obg7efh7efh7efh7efh7efh7efi7efh7Ofh7efh7Oji7Oji7Oji + 7eji7eni7eni7uni7uni7eni7urj7urj7urj7urj7+rj7+rj7+rk7+rk7+rk7+nk7+nk7+rk8Ork8Ork + 8Orl8Ork8Orl8Orl8evl8Orl8evl8evl8uzm8uzm8uzl8uzl8uzl8uzl8uzl8uzl8+3m8uzm8uzm8+3m + 8uzm8uzm8+3m8u3m8+3m8uzm8u3m8+3m8+3m8+3m8+3m8+3m8+3m8+3n8+3n8+3n8+3n9O7n9O7n8+3n + 9O7o9O7o8+3n9O7o8+3n9O7o9O7o9O7o9O7o9O7o9O7o9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9vDq + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9e/p9e/p9vDq9vDq9vDq9e/p9vDq9vDq9vDq9vDq + 9vDq9/Hr9vDq9vDq9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr+PLs+PLs+PLs+PLs+PLs+PLs + +PLs+PLs+PLs9/Lr9/Hr9/Hr+PLs+PLs9/Hr9/Hr9/Hr+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs + +PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+fPt+fPs+PLs+PLs+fPt+PLs+PLs+fPs+fPs+fPs+fPs + +PPs+fPs+fPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs + +PPs+PPs+PPs+PPs+PPs+PPs+PLr+PPs+PPs+PPs+PPs+PPs+PTs+PPs+PPs+PTt+PTt+PTt+PTt+PTt + +PTt+PTt+PTt+PTt+PTs+PTt+PTs+PTt+PTt+PTt+PTt+PTs+PTs+PTs+PPs+PPs+PPs+PTs+PTs+PPs + +PTs+PPs+PTt+PTs+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PPt + +PPs+PPt+PPt+PTt+PTt+PTs+PTt+PTs+PTt+PTt+PTs+PTt+PTt+PPt+PPs+PPt+PPt+PPt+PPs+PPs + +PPs+PPs+PPt+PPs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PPs+PLs+PLs + +PPs+PPt+PPs+PPt+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs9/Hr9/Hr9/Hr+PLs9/Hr9/Hr + 9/Hr9/Hr9/Hr9/Hr9/Hq9vDq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9vDp9vDp9vDp9vDp9vDp + 9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDo9vDp + 9e/o9vDp9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9e/o9fDo9e/o9e/o9e/o9e/o9e/o9e/o9e/o + 9e/o9O7n9O7n9O7o9O7n9O7n9O7n9O7n9O7n9O7n9O7n8+3n8+7m8+3m8+3m8+3m8+3m8+3m8+3m8+3m + 8+3m8+3m8uzm8uzl8uzm8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8ezl8ezl8evl8evk8evk + 8evk8evk8evk8evk8Ork8Ovk8Ork8Ovk8Ork8Ork8Ork8Ork8Ork7+nk7+rk7+nj7unj7+nj7+ni7uni + 7unj7+nj7ujj7ujj7ujj7ujj7unj7uji7uji7uji7eji7uji7eji7eji7efi7efi7efi7efh5ODa5uHb + 5uHb5uHb5+Hc5+Hb5+Hc6OLd6OLc6OLd6OLc6OPd6OTd6OPd6OPd6eTd6eTe6eTe6eTe6uTe6eTf6uTf + 6uTf6uXf6uXf6+Xf6+Xg7Obg7Ofg7Obg7efh7efh7efh7efi7ejh7eji7ejh7eji7eji7eji7eji7eji + 7eni7eni7eji7eji7eni7uni7unj7unj7urj7urj7urj7+rj7urk7+rk7urk7+nk7+nk8Ork8Orl8Ork + 8evl8Orl8Orl8evl8Orl8Orl8evl8evm8evm8evm8evm8uzm8uzm8uzm8uzm8uzl8uzm8+3m8uzm8+3m + 8uzl8+3m8u3m8uzm8+3m8uzm8uzm8uzm8+3m8+3m8uzn8+3n8+3n8+3n8+3n8+3n8+3n9O7o9O7o8+3n + 9O7o9O7o9O7o8+3n8+3n9O7o9O7o8+3n9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9e/p9e/p9e/p9vDq + 9vDq9e/p9vDq9vDq9vDq9vDq9vDq9vDq9vDq9e/p9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq + 9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr+PLs+PLs9/Hr9/Hr9/Hr9/Hr9/Hr+PLs+PLs+PLs+PLs+PLs+PLs + +PLs+PLs+PLs+PLs+PLs+PLs+PLs9/Hr+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs9/Hr+PLs+PLs+PLs + +PLs+PLs+PLs+PLs+PLs+PLs+fPt+fPt+fPt+fPt+fPt+fPt+PLs+PLs+fPt+fPt+fPs+fLs+fPs+PPs + +fPt+fPs+fTs+fPs+fPs+fTs+fPs+PPs+PPs+PTt+PPt+PPs+PPs+PTt+PPt+PTt+PPt+PTt+PTt+PTt + +PTt+PTt+PTt+PTt+PTt+PTt+PTs+PTt+PTt+PTt+PTs+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt + +PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PPs+PTt+PTs+PTt+PTt + +PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt + +PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PPt+PPt+PPt+PPt+PPt+PPt+PPt + +PPs+PPt+PLs+PPt+PLs+PPt+PPt+PPs+PPs+PPs+PPt+PPs+PPt+PPt+PPt+PPt+PPt+PPs+PPt+PPs + +PPs+PPt+PLs+PLs+PLs+PLs+PPt+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs9/Hr+PLs9/Hr+PLr9/Hr + 9/Hr9/Hr9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq+PLq9/Hq+PLq9/Hq+PLr9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq + 9/Hq9vDp9/Hq9/Hq9/Hq9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp + 9vDp9e/o9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9fDp9e/o9e/o9e/o9e/o9O7o + 9e/o9O7o9O7o9O7o9O7n9O7n8+3n8+3n9O7n8+3n8+3m9O7n8+3n8+7n8+7n8+7n8+3m8+3m8+3m8+3m + 8+3m8+3m8+3m8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzl8uzm8uzl8evk8evk8uzk8evl8ezl8evk8evl + 8evk8evl8evl8Ork8erk8Ovk8Ork8Ork7+rk8Ork8Ork7+rk7+rk7+nj7+nj7+nj7unj7+nj7unj7+nj + 7ujj7+nj7+jj7+nj7ujj7+nj7ujj7uji7uji7eji7uji7uji7efi7efi7efh7eji7eji7Obh5ODa5uHb + 5uHb5uHb5uHb5+Lc5+Lc5+Lc5+Lc6OLd6OLd6OPd6OPd6ePe6OPd6ePe6eTe6ePe6ePe6eTe6eTe6eTe + 6uTf6uTe6uXe6uXf6uXf6+Xg7Obg7Obg7Obh7ebh7efh7efg7efi7efh7efh7efh7efh7efh7Ofi7eji + 7Ojh7ejh7eji7eji7ejj7enj7unj7urj7unj7uni7urk7unk7+nk7urj7urj7+rk7+rk7+nk8Orl8Orl + 8Ork8Orl8evl8evl8evm8Orm8evl8evm8evl8evl8evm8evm8uzm8uzm8uzm8uzl8uzm8uzm8+3m8uzm + 8uzm8+3m8+3m8+3m8uzm8+3m8+3m8uzm8uzm8+3m8uzm8+3m8+3n8+3n8+3n8+3n8+3n8+3n8+3n8+3n + 9O7o9O7o8+3n8+3n9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9e/p9e/p9e/p9e/p9e/p9e/p9e/p + 9e/p9vDq9e/p9e/p9vDq9e/p9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9vDq9/Hr9/Hr + 9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr+PLs+PLs+PLs9/Hr+PLs+PLs+PLs+PLs+PLs+PLs9/Hr+PLs+PLs+PLs + +PLs+PLs9/Hr+PLs+PLs+PLs+PLs9/Hr+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+fPt+PLs + +PLs+fPt+fPt+fPt+fPt+PLs+PLs+fPt+fPt+fPt+fPt+fPt+fPt+fPt+fPt+fPt+fPt+fPt+fPt+fPt + +fTt+fTt+fTt+fTs+fTt+fTs+fTt+fPs+fPs+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt + +PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt + +PTt+PTt+PTt+PXt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt + +PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt + +PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PPt+PPt+PPt+PPt+PPt+PPt + +PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPs + +PPt+PPs+PPs+PLs+PLs+PLs+PLs+PLs+PLt+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs + +PLr+PLr+PLr9/Hr+PLq9/Hq+PLq+PLq+PLr9/Hr9/Hq+PLs+PLr+PLr+PLr+PLr9/Hq+PLr9/Hq9/Hq + +PLr9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9vDp9vDp9vDp9vDq9vDp9vDp9/Hq9/Hq9vDq9/Hq9vDp9vHp9/Hq + 9/Hq9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9fDo9e/o9e/o9e/o9e/o9e/o9O7o9O7o + 9O7o9O7n9O7n9O7m9O7n9O7m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8+3m8+7m8+3m8+3n8+7m8+3m8+3m + 8+3m8+3m8uzl8uzl8uzm8uzm8uzm8uzm8uzl8uzl8uzl8uzl8evl8evl8uzl8evk8evk8evk8evk8evk + 8evl8evl8evl8Orl8evk8Orl8evk8Orl8Ork8Ork8Ork7+nk7+nk8Onj7+nj7+nj7+nj7+nk7ujj7ujj + 7ujj7+nj7ujj7+nj7ujj7uji7uji7uji7uji7efh7eji7efi7efh7efi7efh7Ofi7efi7efh5ODa5ODa + 5eDa5eHa5uHb5uHb5+Hc5+Lc5+Lc5+Lc5+Lc5+Lc6OLd6OLd6OPd6OPd6OPd6OPd6eTe6eTe6eTe6eTe + 6uTf6uXf6uXe6uXf6+Xg6+bg6+bg7Obg7Obh7Ofh7efh7Ofh7efh7Obh7efh7efh7efh7efh7eji7efh + 7eji7ejh7eji7eji7ejj7eni7ejj7uni7unj7unj7unj7unj7urj7+rj7urk7+rj7urk7+rk7+nk7+rk + 7+rk8Orl8Ork8Ork8Orl8Orl8evl8Orl8evl8evl8evm8evm8evm8uzm8uzm8uzm8uzm8uzm8uzm8uzm + 8uzl8uzl8uzl8uzl8uzl8+3m8+3m8uzm8uzm8uzn8uzm8+3n8+3n8+3n8+3n8+3n8+3n9O7o9O7n9O7o + 9O7o9O7o9O7o9O7o9e/p9O7o9O7o9e/p9e/p9e/p9O7o9e/p9e/p9e/p9e/p9e/p9vDq9vDq9e/p9vDq + 9vDq9vDq9vDq9e/p9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9vDq9vDq + 9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr+PLs9/Hr+PLs9/Hr+PLs9/Hr+PLs9/Hr9/Hr+PLs+PLs + +PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+fPt+fPt+fPt + +fPt+fPt+fPt+fPt+fPt+fPt+fPt+fPt+fPt+fPt+fPt+fPt+fTt+fTt+fTt+fTt+fTt+fPt+fTt+fTt + +fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt + +PTt+PTt+PTt+PTt+PXt+PTt+PTt+PTt+PTt+PTt+PTt+PXt+PTt+PTt+PTt+PXt+PXt+PTt+PXt+fXu + +PXt+PXt+fXu+PTt+PXt+PTt+PXt+PXt+PXt+PXt+PTt+PTt+PTt+PTt+PTu+PTt+PTt+PTt+PTt+PTt + +PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PXt+PXt + +fXu+PXu+fXu+PXt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PTt+PPt+PPt+PPt+PPt+PPt + +PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPs + +PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPs+PPs+PLs+PPs + +PPs+PPr+PLr+PLr+PLr+PLr+PLs+PLr+PLs+PLs+PLr+PLr+PLr+PPs+PLr+PLr+PLr+PLr+PLr+PLr + +PLr+PLr+PLr+PLr+PLr+PLr9/Hq+PLr+PLq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9vDp9/Hq + 9vDp9vHp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9e/o9e/o9e/o9e/o9e/o9e/o9e/o9O7o9O7n + 9O7n9O7n9O7n8+7m9O7m8+3m8+3m9O7n9O7n8+3m8+3m8+7m8+3m9O3n8+3m8+3m8+3n8+7n8+3m8+3m + 8+zm8uzm8+3m8uzm8uzm8uzm8uzl8uzm8uzl8uzl8uzl8uzl8uzl8uzl8evk8evl8evk8evk8evl8evk + 8evl8Ovl8evl8Orl8evl8Orl8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Orj7+nk7+nj7+nj7+nj7+nj7+ni + 7+nj7uji7uji7uji7uji7uji7uji7uji7uji7ujh7efi7Ofh7efh7Ofh7efh7efh7Ofh7Ofh4t/Y5ODZ + 5ODa5ODZ5eDa5eDa5uHb5uHb5uHb5uHb5+Hc5+Lc5+Lc6OLc6OLc6OPd6OPd6OPd6ePd6ePe6ePe6eTe + 6eTe6eTe6uXf6uTf6uXf6uXf6+Xg6+Xg6+Xg7Obh7Obh7Obi7Obh7Obh7efh7efh7efi7efi7eji7efi + 7efi7efi7eji7eji7eji7eji7ejj7unj7unj7enj7unj7unj7unj7unj7unj7unj7unj7unk7urk7+nk + 7+nk7+nk7+rk7+nk8Ork8Ork7+rk7+rk8Ork8Orl8Orl8Ovl8evm8evl8uzm8ezm8uzl8uzm8uzm8uzm + 8uzm8uzm8+3m8uzm8uzm8uzm8+3m8uzm8+3n8+3n8+3n8+3n8+3n8+3n8+3n8+3n8+3n8+3n8+3o8+3o + 8+3n9O7o9O7o9O7p9O7o9O7o9O7o9O7o9e/p9O7o9O7o9e/p9e/p9e/p9e/p9e/p9e/p9vDq9e/p9vDq + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9vDq9/Hr9vDq9/Hr9vDq9vDq9vDq9vDq9/Hr9/Hr + 9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr+PLs+PLs+PLs+PLs+PLs+PLs + +PLs+PLs+PLs+PLs+PLs+PLs+fPt+fPt+PLs+PLs+fPt+fPt+fPt+PLs+PLs+fPt+fPt+fTt+fTt+fPt + +fTt+fPt+fPt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt + +fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fXt+fTt+PTt+PTt+PTt+PTt+PTt + +PTt+PTt+PXt+PTt+PTt+PXt+PXt+fXu+PXt+fXu+PXt+PXt+fXu+PXt+PXt+fXu+PXt+PTt+PXt+PTt + +fXu+fXu+fXu+fXu+PXt+fXu+fXu+fXu+fbu+fbu+fbu+fXu+fbu+fXu+PXt+PXt+PXt+PXt+fXu+fXu + +fXu+PXt+PXt+PXu+PXt+PXt+fXu+PXt+PXt+PXt+PXt+fXu+PXt+fXu+fXu+fXu+fXu+fXu+fXu+fXu + +fXu+fXu+fXu+fXu+fXu+fXu+fXu+PXt+PXt+PTt+PTt+PTt+PTt+PTt+PTt+fTu+PPt+fTu+PPt+PTu + +PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt + +PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPs+PPs+PPs + +PPs+PPs+PPs+PPs+PPs+PLs+PPs+PLs+PLs+PPs+PLs+PLr+PLs+PPs+PLr+PLs+PLr+PLs+PLr+PLr + +PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr+PLr9/Hq9/Hq9/Hq9/Hq9vDp9/Hq9vDp9vDp + 9vDp9vDp9vDo9vDp9e/o9vDp9e/p9vDp9vDp9vDp9vDp9vDp9e/o9e/o9vDp9e/o9e/o9e/o9e/o9e/o + 9e/o9e/o9e/o9e/o9e/o9O7o9O7o9O7o9O7n9O7n9O7n9O7n8+3n8+3n9O7n8+3m8+3m8+3n8+7n8+3m + 8u3m8u3m8uzm8uzm8uzm8uzm8uzm8uzm8uzl8uzm8uzm8evl8uzl8evl8evl8evl8evl8evl8Ovl8evl + 8Ovl8Ovl8evl8evl8Ork8Orl8Orl8Ork8Ork8Ork8Ork8Ork8Ork7+rk7+nj7+nj7+nj7+nj7ujj7uji + 7uji7uji7uji7uji7uji7uji7ejh7eji7ejh7ejh7efh7efh7Ofh7Ofh7Obh7Ofh7Obg7Ofg497Y5N/Z + 5N/Z5N/Z5N/Z5eDa5eDa5eDa5uHb5uHb5uHb5+Lc5+Lc6OLd6OLd6OLd6OPd6OPd6OLd6OPd6ePe6ePe + 6eTe6eTe6eTe6eTe6uTf6uTf6uTf6+Tf6+Xg6+Xg6+Xg7Obh7Obh7Obh7Obh7Obh7Obh7Ofh7Ofh7efi + 7efi7efi7efi7eji7eji7eji7ejj7ejj7ujj7unj7unj7unj7unk7unj7unj7unj7unj7unj7unk7unk + 7+rj7+nk7+nk7+nk7+rk7+rk7+nk8Ork8Ork8Ork8Orl8Ork8Orl8Orl8evl8evm8ezm8ezm8uzm8uzm + 8uzm8uzm8u3m8u3m8u3m8+3m8uzm8uzn8+3n8+3n8+3n8+3n8+3n8+3n8+3n8+3n8+3n8+3o8+3o9O7o + 8+3n9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9e/p9O7o9O7o9e/p9e/p9e/p9e/p9e/p9e/p9e/p + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9/Hr9/Hr9vDq9vDq9/Hr9/Hr9/Hr9/Hr + 9/Hr9/Hr9/Hr9/Hr+PLs+PLs9/Hr9/Hr9/Hr+PLs9/Hr9/Hr9/Hr9/Hr+PLs+PLs+PLs+PLs+PLs+PLs + +PLs+fPt+fPt+PLs+PLs+PLs+PPs+fPt+fPt+fPt+fPt+fPt+fPt+fPt+fPt+fTt+fTt+fTt+fTt+fTt + +fTt+fTt+fTu+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt + +fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fTt+fXt+fTt+fXt+fXt+fXt+fTt+fXt+PTt+fXu+PXt+fXu + +PXt+fXu+fXu+PTt+fXu+fXu+PXt+PXt+PXt+PXt+fXu+fXu+fbu+fXu+fbu+fbu+fXu+fXu+fXu+fXu + +fbu+fbu+fbu+fbu+fbu+fbu+fbv+fbu+fbu+fbv+fbu+fbu+fbu+fbu+fbu+fXu+fbu+fbu+fbu+fXu + +fbu+fXu+fbu+fXu+fXu+fXu+fbu+fXu+fXu+fbu+fbu+fXu+fbu+fbu+fbu+fbv+fbu+fXv+fXu+fXu + +fXv+fXv+fXv+fXv+fXv+fXv+fXu+fXu+fXu+fXu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu + +fTu+PTt+fTu+PTt+PPt+PTt+PTt+PPt+PPt+PPt+PPt+PTt+PTt+PTu+PTt+PTt+PTt+PTt+PPt+PPu + +PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPs+PPs+PPs + +PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PLs+PPs+PPs+PPs+PLr+PLs+PLr+PLr+PLs+PLr+PLr + +PLr+PLs+PLs+PLs+PLs+PLr+PLr+PLr+PLq+PLr9/Hq+PLr9/Hq9/Hq9vDq9vDq9vDp9vDp9vDp9vDp + 9vDp9vDp9e/o9e/p9e/o9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9e/o9e/o9e/o9e/o9e/o + 9e/o9e/o9e/o9O7o9O7o9e/o9O7o9O7o9O7o9O7o9O7n9O7n9O7n8+3n8+3m9O7n8+3m8+3n8u3m8uzm + 8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8evl8evl8evl8evl8evl8evl8evl8Ork8Ovl8Ork + 8Orl8Ork8Ork8Ork8Ork8Ork8Ork7+nk7+nk8Ork7+nj7+nj7+nj7+nk7+nj7ujj7ujj7uni7uji7uji + 7uji7eji7eji7eji7efi7efi7ejh7Ofh7Ofh7Ofg7Ofh7efg7Ofg7Ofg7Ofg7Obg7Obg7Obg4t7X497Y + 5N7Y5N7Y5N7Y5N/Z5ODZ5eDa5uHa5eHa5uHb5uLc5+Lc6OLd5+Lc6OLc6OLd6OPd6OLd6OPd6OPe6ePe + 6eTe6eTe6eTe6eTe6eTe6eTe6uTf6uTf6uTf6uTf6uTf6+Xg6+Xg7Obg7Obg7Obh7Ofh7Ofh7Obh7Ofh + 7Ofh7efi7eji7efi7eji7eji7eji7eji7eji7unj7unj7unj7unk7unj7unk7unk7unk7urk7unk7unk + 7+nk7urk7+nk7+nk7+nk7+nk7+nk7+nk7+nk8Ork8Orl8Ork8Orl8Orl8evl8Orm8Orm8evm8evm8evm + 8uzm8uzm8uzm8uzm8u3m8+3m8uzn8uzn8+3n8+3n8+3n8+3n9O7o8+3n9O7o8+3n9O7o8+3n8+3n8+3n + 9O7o9O7o8+3n9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9e/p9O7o9O7o9e/p9e/p9e/p9vDq9e/p + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9vDq9vDq9/Hr9/Hr9/Hr9/Hr9/Hr+PLs+PLs + +PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs9/Hr+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs + +PLs+PLs+PLs+PLs+fPt+PLs+fPt+fPt+fPt+fPt+fTt+fTt+fPt+fTu+fTu+fTu+fTu+fTu+fTu+fTu + +fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTt+fTu+fTu+fTu+fTt+fTt+fXu+fXu+fXu+fXu + +fTu+fXu+fTu+fXu+fXu+fXu+fXu+fXt+fXu+fXu+fXu+fTt+fXu+fXu+fTu+fXt+fXu+fXt+fXu+fXu + +fXu+fXu+fXu+fXu+fbu+fbu+fXu+fXu+fXu+fXu+fbv+fXu+fbv+fbv+fXu+fbu+fbv+fbv+fbu+fbv + +fbv+fbv+fbv+ffv+fbv+fbv+fbv+fbu+fbv+fbv+fbv+fbv+fbv+ffv+fbv+fbu+fbv+fbv+fbv+fbv + +ffv+fbv+fbv+fbv+fbv+fbv+fbv+fbu+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fXv+fXv + +fXu+fXv+fXv+fXv+fXv+fXv+fXu+fXv+fXu+fXv+fXu+fXu+fbv+fXu+fbv+fXu+fXu+fXu+fXu+fXu + +fTu+fXu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fXu+fXu+fXu+fTu+fTu+PTt+fTu+PTt+PTt+PTt+PTt + +PTt+PPt+PPt+PTt+PTt+PPt+PPt+PTt+PPt+PTu+PPt+PTt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPs + +PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PLs+PLr+PPs+PPr+PLr+PPs+PLr+PPr+PPr+PPr + +PPs+PPs+PPs+PPs+PPr+PPs+PLr+PLr+PLr+PLq+PLr9/Hq+PLr9/Hq9/Hq9/Hq9vDq9vDq9vDp9vDp + 9vDq9vDp9vDp9/Hq9vDp9vDq9vDp9vDp9vDp9/Hq9vDp9vDp9vDp9vDp9vDp9u/p9e/o9e/o9e/o9e/o + 9e/o9e/o9e/o9O7n9O7o9O7o9O7o9O7o9O7o9O7n9O7n9O7n9O7n8+3n8+3n8+3m8+3m8uzn8uzm8uzm + 8uzm8uzm8uzm8uzm8uzm8uzm8uzm8evm8evm8evl8evl8evl8Orl8Ork8Ork8Orl7+rk8Ork7+nk7+nk + 7+nk7+nk7+nk7+nk7+nj7+nk7uji7ujk7+jj7ujj7ujj7ujj7uji7uni7uji7uji7eji7eji7eji7eji + 7efh7Ofh7Ofh7Ofh7Ojh7Ofh7Ofh7Ofh7Ofh7efh7Ofg7Ofg7Ofg7Ofg7Obg7Obg6+bg6+bg4t7X497X + 497X5N7Y5N/Y49/Y5ODZ5eDa5ODZ5eHa5uHb5uHb5uLb5uLb5+Lc5+Lc5+Lc5+Lc6OLd6OPd6OPd6OPd + 6OPd6OPd6eTe6eTe6eTe6eTe6eTe6uTf6eTe6uTf6uTf6uXf6uXf6+Xg6+Xg6+bg6+bg6+bg6+bg7Ofh + 7Ofh7Ofh7Ofh7efi7efi7eji7eji7eji7eji7eji7ejj7unj7unj7unj7unj7unj7+rk7+rk7urj7unk + 7urk7+rk7unk7unj7+rk7+nk7+nk7+nk7+rk7+nk7+nl7+nl8Orl8Orl8Orl8Orm8Orm8evm8evm8Orm + 8evm8evl8evm8evm8evm8ezm8uzm8uzm8uzm8uzn8uzm8uzm8uzm8+3n8+3n8+3n8+3n8uzm8+3n8+3n + 8+3n8+3n8+3n8+3n8+3n8+3n9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9e/p9e/p9e/p9e/p9e/p9e/p + 9e/p9e/p9e/p9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9vDq9/Hr9/Hr9vDq9/Hr9/Hr9/Hr9/Hr9/Hr+PLs + +PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs + +PLs+PLs+fPt+PLs+fPt+fPt+fPt+fPt+fPt+fPt+fTt+fTu+fTu+fPt+fTu+fTu+fTu+fTu+fTu+fTu + +fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fXu+fXu+fTu+fTu+fXu+fXu+fXu+fXu + +fXu+fXu+fXu+fXu+fbu+fXu+fXu+fXu+fbu+fXu+fXu+fXu+fXu+fXu+fXu+fbu+fbu+fXu+fXu+fbu + +fXu+fXu+fbu+fXu+fbv+fbu+fbv+fbv+fbv+fbv+fbv+fXu+fbv+fbu+fbv+fbv+fbv+fbv+fbu+fbv + +fbv+fbu+fbv+fbu+ffv+ffv+fbv+ffv+fbv+ffv+ffv+ffv+ffv+ffv+fbv+ffv+ffv+ffv+ffv+fbv + +ffv+fbv+ffv+fbv+ffv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv + +fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fbv+fXv+fXv+fbv+fXv+fbv+fbv+fXv+fXv+fXu+fXu + +fXv+fTu+fTv+fXv+fTu+fXv+fXu+fXu+fXv+fXv+fXu+fXu+fXu+fTu+fXu+fTu+fTu+fXu+fTu+fTu + +PTt+fTu+PTu+fTu+fTu+PTu+fTu+PTt+PPt+PTu+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt + +PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPr+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs + +PPs+PPs+PPr+PPs+PPs+PPs+PLr+PLr+PLr+PLr+PLr9/Hq+PLr9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq + 9/Hq9vDq9vDq9vDp9vDp9vDq9vDp9vDp9vDp9vDp9vDp9vDp9vDp9vDp9fDo9vDo9vDo9fDo9e/o9e/o + 9e/o9e/o9O/o9O/o9O/o9O7o9O7n9O7o9O7o9O7n9O7n9O7n9O3n8+3n8+3n8+3n8uzm8uzm8uzm8uzm + 8uzm8uzm8uzm8uzm8uzm8uzm8evl8evm8evm8evl8evl8evl8Orl8Ork7+nk7+nk7+nk7+nk7unk7unj + 7ujj7+nj7ujj7ujj7ujj7ujj7ujj7uji7uji7eji7uji7uji7eji7uji7eji7efi7Oji7Ofi7Ofh7Ofi + 7Obh7Obh7Obh7Obh6+bg7Ofh7Ofh7Obh7Ofg7Ofg7Obh7Obg7Obg6+bg6+bg6+bf6ubf6+bf4t3X4t3X + 497X497X497Y49/Y49/Y5ODZ5ODZ5ODZ5eDZ5eDa5eHa5eHa5uHb5uHb5uHb5uLb5uLb5+Lc5+Lc5+Lc + 5+Lc5+Pc6OPc6OPd6OPd6eTe6eTe6eTe6eTe6eTe6eTe6eTe6uXf6uTf6uTf6uXf6+Xg6+Xg6+bg6+bg + 6+bg7Obh7Ofh7Ofh7Ofh7efh7efi7eji7eji7eji7eji7unj7ejj7unj7unj7unj7unj7unj7unj7unj + 7unk7unk7unj7unj7+nk7unk7unk7unk7+nl7unk7+nk7+nl7+nl7+nl8Orl8Orm8Orm8Orm8Orm8Orm + 8evm8Orm8Ovm8Ovm8evm8Orl8Ovl8evl8evm8evm8evm8uzm8evm8evm8evl8uzm8uzm8uzm8uzl8uzm + 8uzm8uzm8uzn8+3m8+3n8+3n8+3n8+3o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9e/p9O7o + 9e/p9e/p9e/p9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9/Hr9/Hr9/Hr9vDq9/Hr9/Hr9/Hr9/Hr+PLs9/Hr + +PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+fPt+fPt+PLs+fPt+fPt+fPt + +fPt+fPt+fPt+fPt+fPt+fPt+fPt+fTt+fTt+fTt+fTt+fTt+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu + +fTu+fTu+fTu+fTu+fTu+fTu+fTu+fXu+fTu+fTu+fTu+fTu+fXu+fXu+fTu+fXu+fXu+fXu+fXt+fXt + +fXu+fXu+fbu+fbu+fbu+fbu+fbv+fbv+fbu+fbv+fbu+fbv+fbv+fbv+fbv+fbv+fbv+fbu+fbv+fbu + +fbv+fbv+fbu+fbu+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+ffv+ffv+ffv + +fbv+ffv+ffv+ffv+ffv+ffv+fbv+ffv+fbv+ffv+ffv+fbv+ffv+ffv+ffw+ffv+ffv+fbv+ffv+fbv + +ffv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv + +fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fbv+fXv+fXv+fXv+fXv+fXv+fXv+fXv + +fXv+fXv+fXu+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fbv+fXu+fXv + +fXv+fXu+fTu+fTu+fTu+fTu+PTt+PTu+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PTs+PPs + +PPt+PPs+PPs+PPs+PPs+PTs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs + +PPs+PPs+PPr+PLr+PLr+PLr+PLr+PLr9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq + 9vDq9/Hq9/Hq9vDq9vDp9vDq9vDp9vDp9vDp9vDp9vDp9vDp9e/p9e/o9e/o9e/o9e/o9e/o9e/o9e/o + 9O7o9e7o9O7o9O7o9O7o9O7o9O7o8+7o8+3o8+3n8+3n8+3n8+3n8u3m8+3n8uzn8uzm8uzm8uzm8uzm + 8uzm8uzm8uzm8uzm8uzm8uzm8evm8uzm8uzm8evl8evl8evl8evl8Ork8Ork7+rk7+nk7+nj7unj7unj + 7ujj7ujj7uji7ujj7eji7uji7ujj7eji7eji7eji7eji7eji7eji7Ofi7efh7Ofi7Ofh7Ofh7Ofg7Ofh + 7Ofg6+bg7Ofh6+bg6+bh6+bh6+bg6+bg6+bg6+bg6+bg6+bg6+bg6uXg6uXf6uXf6uXf6uXf4dzW4tzW + 4t3X4t3X4t3X497X497X49/Y49/Y5N/Y5N/Z5ODZ5eDZ5eDa5eDa5uHa5uHa5uHb5uHa5uHa5uHb5uHb + 5uLb5+Lc5+Lc5+Pc5+Pc6OPd6OPd6OPd6ePe6OTd6eTe6eTe6eTe6uXf6uTf6uTf6uXf6uXf6uXf6+bg + 6+bg6+bg6+bg6+bg7Ofg7Ofh7Ofh7Ofh7efh7efi7ejh7eji7eji7eji7eji7enj7eji7eji7ejj7enj + 7unj7unj7unj7unj7unk7unk7unk7unk7unk7unk7unl7unk7+nl7+nl7+nl7+nl7+nl8Orl8Orm8Orm + 8Orm8Orm8Ovm8Orm8Orm8Ovm8Ovl8Orm8evm8Ovm8evm8evm8uzm8evm8evm8uzm8evm8evm8uzm8uzm + 8uzm8uzm8uzm8uzn8+3n8+3n8+3n8+3n8+3n9O7o9O7o9O7o9O7o9O7o9O7o9O7o9O7o9e/p9e/p9e/p + 9e/p9e/p9e/p9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9vDq9vDq9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr + +PLs+PLs+PLs+PLs+PLs+PLs9/Hr+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+fPt+fPt+fPt+fPt+fPt + +fPt+fPt+fTt+fTt+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu + +fTu+fTu+fTu+fTu+fTu+fTu+fTu+fXu+fXu+fXu+fTu+fXu+fXu+fXu+fTu+fXu+fXu+fXu+fXu+fXu + +fbu+fbu+fXu+fbu+fbu+fXu+fbu+fbu+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+ffv+fbv+fbv + +fbv+fbv+ffv+fbv+ffv+fbv+ffv+fbv+ffv+ffv+ffv+ffv+fbv+fbv+ffv+fbv+fbv+fbv+fbv+ffv + +fbv+fbv+fbv+fbv+ffv+fbv+fbv+ffv+fbv+ffv+ffv+fbv+ffw+ffv+ffw+ffw+ffw+ffw+ffw+ffw + +ffw+ffw+ffw+fbv+ffw+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv + +fbv+fbv+fbw+fbw+fbv+fXv+fbv+fbv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fbv + +fbv+fbv+fXv+fbv+fbv+fbv+fXv+fbv+fbv+fbv+fbv+fXv+fXv+fXv+fXv+fXv+fXv+fXv+fXu+fXv + +fXu+fXu+fTu+fTu+fTu+fTu+PTu+fTu+PPt+PTt+fTu+PTt+PTt+PTt+PTt+PPt+PPt+PPt+PTt+PPs + +fTt+PTs+PTs+PPs+PPs+PTs+PTs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs + +PPr+PPs+PPr+PLr+PLr+PLr+PLr+PLr9/Hq9/Hq9/Hq9/Hr9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq9/Hq + 9vDq9vDq9/Hq9/Hq9vDq9vDp9vDp9vDp9e/p9vDp9e/p9vDp9vDp9e/p9e/p9e/o9e/o9e/p9O7o9O7p + 9O7o9O7o9O7o9O7o8+3o9O7n8+3o8+3n8+3o8u3n8uzn8uzn8uzm8uzm8uzn8uzn8uzm8uzm8evm8uzm + 8uzm8evm8evm8uzm8uzm8evm8evm8evm8evm8evl8Orl8Orl8Orl8Ork7+nk7+nk7+nk7unj7unk7unj + 7ujj7ujj7uni7ujj7uji7ujj7ujj7eji7eji7eji7eji7eji7ejh7Ofh7Ojh7Ofi7Ofh7Ofh7Ofh7Ofg + 6+bh6+bh6+bg6+bg6+bg6+bg6uXg6uXg6+Xg6uXf6uXf6uXf6uXf6uTf6uTe6uXe6uXf6uTe4NvV4dvW + 4dvW4dvW4dzW4dzW4t3X4t3X4t3X497X497X5N7Y5N/Y5N/Y5d/Z5eDZ5eDZ5uDa5uDa5uHa5uDa5uHa + 5uHb5uHb5+Lb5uLb5+Lc5+Lc5+Lc6OPc6OPd6OPd6OTd6eTd6eTe6eTe6uXe6uTe6uXe6uXf6uXe6uXf + 6+bf6+Xf6+Xf6+bg6+bg6+bg6+bg7Ofg7Ofg7Obh7Ofh7Ofh7Ofh7Ojh7Oji7Oji7Ofi7Oji7Oji7Oji + 7Ojj7Ojj7Ojj7ejj7ejk7ejk7ejk7enk7unk7unk7unk7unk7unl7unl7unl7+nl7unl7+nl7+nm7+nl + 7+nm7+rm8Orm8Orm8Orm8Orm8Orm8Orm8evm8evm8evm8ezm8uzm8uzm8uzm8uzn8+3n8uzm8+3n8uzn + 8uzm8+3n8uzm8uzm8uzn8+3n8+3o8+3n8+3o8+3n8+3o8+3n8+3o9O7o9O7o9O7o9O7o9O/o9O7o9e/p + 9e/p9e/p9e/p9e/p9vDq9vDq9vDq9vDq9vDq9/Hr9vDq9/Hr9/Hr9/Hr9/Hr9vDq9vDq9vDq9/Hr9/Hr + 9/Hr9/Hr9/Hr+PLs+PLs+PLs9/Hr+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+fPt+fPt+fPt+fPt + +fPt+fTt+fTt+fTu+fTu+fTt+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu + +fTu+fXu+fTu+fTu+fTu+fXu+fTu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXu + +fXu+fbu+fbv+fbu+fbv+fbv+fbv+fbv+fbv+fbv+fbv+ffv+fbv+fbv+ffv+fbv+ffv+ffv+ffv+ffv + +fbv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+fbv+ffv+ffv+ffv+ffv+ffw+fbv+ffw + +ffw+ffw+ffw+ffw+ffw+ffw+ffv+ffw+ffw+ffv+ffw+ffw+ffw+ffw+ffw+ffw+vfw+ffw+ffw+ffw + +ffw+ffw+ffw+ffw+ffw+ffv+ffv+ffv+ffv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbw+fbw+ffw + +ffw+ffw+ffw+ffw+fbw+fbw+fbw+fbw+fbw+fbv+fbv+fbv+fbw+fbv+fXv+fXv+fXw+fXv+fbv+fbv + +fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fXv+fXv+fXv+fXv+fXv+fXv+fTu+fXv+fXv+fTu+fXv + +fXu+fXu+fTu+fTu+fTu+fTu+PTt+fTu+PTt+fTu+fTu+PTu+PTt+fTu+PTt+fTt+fTu+fTt+PTt+PTt + +PTt+fTt+PTs+PTs+PTs+PPs+PTs+PTs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPr+PPs+PPs + +PLr+PPs+PPr+PPr+PPr+PLr9/Lr9/Hr+PLr+PLq9/Hr9/Hq9/Hr9/Hq9/Hq9/Hq9/Hq9vDq9vDq9/Hq + 9vDp9vDp9vDp9vDq9vDq9vDq9vDp9vDp9vDp9vDp9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9O7p9O7o + 9O7p9O7o9O7p9O7o9O7o8+3o9O7o8+3o8+3o8uzo8uzn8uzn8uzn8uzn8uzn8uzn8uzm8uzm8uzm8evm + 8uzm8evm8evm8evm8evm8evm8Ovl8Orl8Orl8Orl8Orl7+rk7+rk7+rk7+nk7+nk7+nk7unj7unj7unj + 7ujj7unj7unj7ujj7ujj7ujj7unj7uji7ujj7eji7eji7eji7eji7eji7Ofi7Ofh7Ofh7Ofi7Ofh7Ofh + 6+bg7Obg7Obg6+bg6+bg6+bg6+bg6+Xg6+Xg6uXf6uXf6uXf6uXf6uXf6eTe6eTe6uTe6ePe39rU4NrV + 4NrV4NrV4NvW4dvW4dvW4dzW4dzW4tzX4t3X497X497X5N7Y5N7Y5N/Z5d/Z5eDZ5uDa5uDa5uDa5uHa + 5uHa5uHb5uHb5uHb5+Hb5+Lb5+Lc5+Lc6OPc6OPc6OPd6OPd6eTd6eTe6uTe6uTe6uTe6uXe6uXe6uXe + 6ubf6uXf6uXf6uXf6+bf6uXf6+bg6+bg6+bg6+bg6+bg7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofi7Ofi7Oji + 7Oji7Ofi7Ofj7Oji7Ojj7Ojj7Ojj7ejj7ejj7ejk7ejk7enk7ejk7enk7unk7unl7unk7ujk7unl7unl + 7unl7unl7+nl7+nl7+rm7+rm8Orm8Orl8Orm8Ovm8evm8evm8uzn8ezm8uzm8uzm8uzn8uzm8+3n8uzn + 8uzm8uzn8uzn8uzn8+3o8+3n8uzn8+3o8+3n8+3n8+3n8+3n8+3n8+3o9O7o9O7o9O7o9O7o9O7o9O7p + 9O7o9O7p9O7p9e/p9e/p9vDq9e/p9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9vDq9/Hr + 9/Hq9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr+PLs+PLs+PLs+PLs+PLs+PLs+fPt+fPt+fPt+fPt+fPt + +fTt+fTt+fPt+fTu+fTt+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu + +fTu+fXu+fTu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fbu+fbu+fXu+fbu+fbu+fbv + +fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+ffv+fbv+fbv+fbv+ffv+ffv+ffv + +ffv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+ffw+ffw+ffw+ffv+ffw+fjw+fjw+vjw+fjw + +fjw+fjw+vjw+vjw+vjx+fjw+fjw+fjw+fjw+fjw+fjw+fjw+fjw+fjw+ffw+vfw+vfw+ffw+ffw+vfx + +ffw+ffw+ffw+vfx+ffw+ffw+ffw+ffw+ffw+ffw+ffw+fbw+ffw+ffw+ffw+ffw+ffw+ffw+vfx+vjx + +vjx+vjx+vjx+vjx+vfw+ffw+ffw+ffw+fbw+fbv+fbv+fbv+fbw+fbw+fbw+fbv+fbv+fbw+fbv+fbv + +fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fXv+fXv+fbv+fbv+fXv+fXv+fXv+fXv+fXv+fXv+fXv + +fTu+fTu+fTu+fTu+fTu+fTu+fXu+fTu+fTu+fTu+fTu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fTt+fXt + +fXt+fXt+fTt+PTs+PTs+PTs+PTt+PPs+PTs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPr+PPs+PPr + +PPr+PPr+PLr+PPr+PLr+PLr+PLr9/Hr+PLr+PLr9/Hr9/Hr9/Hq9/Hq9vDq9vDq9vDq9vDq9vDq9vDq + 9vDq9vDq9vDp9vDq9vDp9vDq9vDp9vDq9vDq9vDp9e/p9e/p9e/p9e/q9e/p9e/p9e/p9O7p9O7p9O7p + 9O7o9O7o9O7o9O7o8+3o8+3o8+3o8+3o8+3o8+3o8uzn8uzn8uzn8uzn8uzn8uzn8uzn8uzm8evm8evm + 8evm8evm8evm8Ovm8evm8Ovl8Ovl8Orl8Orl7+rk7+nk7+nk7+nk7+nk7unk7ujj7ujj7unj7unj7ujj + 7ujj7ejj7ujj7eji7uji7eji7eji7eji7eji7eji7eji7eji7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh7Ofh6+bg + 6+bg6+bg6+bg7Obg6+bg6+bg6+bg6+Xg6uXg6uXf6uXf6uXf6uTf6eTf6eTe6eTd6ePe6ePd3tnT3tnU + 39nU39nU4NrV4NrV4NrV4NvV4dvW4dvW4dvW4tzX4tzX493X493X497X497X5N/Y5N/Y5d/Z5eDZ5eDZ + 5eDa5uDa5uDb5uHb5+Hb5+Hb5+Hb5+Lb5+Lb5+Lc6OLc6OPd6ePc6OPd6ePd6eTd6eTd6eTe6uTe6uXe + 6uXe6uXe6uXf6uXf6uXe6uXf6uXf6uXf6uXf6+bg6+bg6+bg6+bh6+bh6+bh6+bh7Ofh7Ofh7Ofh7Ofi + 7Ofh7Ofh7Ofi7Ofi7Ofi7Oji7Ojj7Ojj7Ojj7Ojj7Ojj7ejj7ejk7enk7ejk7ejk7ujk7ejk7ejk7ujk + 7ejk7ujk7ujk7ujl7unl7unl7+nl7+nl7+rm7+rm8Orm8Ovm8Ovm8evm8evm8uzm8evm8uzn8uzn8uzn + 8uzn8uzn8uzn8uzm8+3n8+3n8uzn8uzn8+3n8uzn8+3o8+3n8+3o8+3o9O7o8+3o8+3o9O7o9O7o9O7o + 9O7o9O7p9O7o9O7p9e/p9e/p9e/p9O7o9e/p9e/p9e/q9e/p9vDp9vDq9vDq9vDq9vDq9vDr9vDq9vDq + 9vDq9/Hr9vDq9vDq9vDr9vDq9vDq9/Hr9/Hr9/Hr9/Hr9/Hr+PLs+PLs+PLs+PLs+PLs+PLs+fPt+fPt + +fPt+fPt+fPt+fPt+fTt+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fXu + +fTu+fTu+fTu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fbu+fbu+fbu+fbu+fbu+fbu + +fbv+ffv+ffv+fbv+ffv+ffv+ffv+fbv+ffv+ffv+ffv+fbv+ffv+ffv+fbv+ffv+ffv+ffv+ffv+ffv + +ffv+ffv+ffv+ffv+ffv+ffv+ffw+fjw+fjw+vjw+fjw+fjw+vjx+vjw+vjx+vjx+vjx+vjx+vjx+vjx + +vjx+vjx+vjx+vjx+fjw+vjx+vjx+vjx+vjx+vjw+vjx+vjx+fjw+vjx+vjx+vfx+vfx+vfx+vfx+vfx + +vfx+vfw+vfx+vfw+vfw+ffw+vfx+vfx+vjx+vfx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx + +vjx+vjx+vjx+vjx+vjx+vjx+vjx+ffw+ffw+ffw+ffw+ffw+ffw+ffw+ffw+ffw+ffw+ffw+fbw+fbw + +fbw+ffw+fbw+fbw+ffw+fbw+fbw+fbw+fbw+fbw+fbw+fbv+fbv+fbv+fbv+fbv+fXv+fbv+fbv+fbv + +fbv+fXv+fXv+fXv+fXv+fXv+fXv+fXu+fXu+fbu+fXu+fXu+fXu+fbu+fXu+fXu+fXu+fXt+fXt+fXt + +fTt+fXt+fTt+fTt+fTt+PTs+PTt+PPs+PPs+PTs+PPs+PPs+PPs+PPs+PPs+PPs+PPr+PPs+PPs+PPs + +PLs+PPs+PLr+PPr+PLs+PLr+PLr+PLr+PLr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hr9/Hq9/Hr9vDr9/Hq9vDq + 9/Hq9vDq9vDq9e/q9vDq9vDq9e/p9vDq9vDp9vDq9e/p9e/p9e/p9O7p9O7p9O7p9O7p9O7p9O7p9O7p + 8+3o9O7o9O7o8+3o8+3o8+3o8+3o8+3o8uzo8uzn8uzn8uzn8uzn8uzn8uzn8evm8evm8evm8evm8evm + 8Ovm8Ovm8evm8Ovl8Orl8Orl8Orl7+rk7+rk7+rk7unk7unj7unj7unj7unj7enj7ejj7eji7eji7Oji + 7eji7eji7eji7eji7eji7Ofi7Ofi7Ofh7Ofh7Ofi7Ofh7Ofi7Ofh6+bg7Ofh6+bh7Obg6+bg6+bg6+bg + 6+bg6+bg6+bg6+Xg6+Xf6+Xf6uTf6uXf6uTf6uTf6eTe6eTe6eTe6ePe6eTe6ePd6ePd6OPd3dnS3dnS + 3tnT39nU3tnT39nU39rU39rV4NrV4NrV4NvV4NvW4dvW4tzX4tzX4tzX4t3X497X497X497X5N/Y5N/Y + 5eDZ5eDZ5uDa5uDa5uDa5uDa5uHb5uDb5+Hb5+Hb5uHb6OLb6OLc6OLc5+Lc6OPc6OPd6OPd6OPc6ePd + 6eTd6uTe6eTd6eTe6eTe6uTe6eTf6eTf6uXf6uXf6uXf6uXg6ubg6uXg6+bg6+bh6+bh7Ofh7Ofh7Ofh + 7Ofh7Ofi7Ofi7Ofh7Ofi7Oji7Ojj7Ojj7Ojj7Ojj7Ojj7Ojj7ejk7ejk7ejk7ejk7ujk7ejk7enk7ujl + 7ujk7ejk7unk7ujk7ujl7unl7+nl7+nl7ujl7+nl7+nl7+nl8Orm8Orl8Orl8Orm8Ovl8Orm8ezm8evn + 8uzn8uzn8uzn8uzn8uzn8uzn8uzn8uzn8uzn8+3o8+3n8uzn8uzo8+3o8+3o8+3o8+3o9O7o9O7o9O3o + 9O7o9O7o9O7p9O7o9O7o9O7p9e/p9O7p9e/p9e/q9e/q9e/p9e/p9vDq9vDq9e/q9vDq9vDq9vDq9vDq + 9vDq9vDq9vDq9vDq9vDq9vDq9vDq9/Hr9vDq9/Hr9/Hr9/Hr+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs + +fLt+fPt+fPt+fPt+fPt+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu + +fXu+fXu+fXu+fXu+fXv+fTu+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fbu+fXu+fXu+fXu+fbu+fbu+fbu + +fbv+fbu+ffv+fbv+fbv+fbv+ffv+fbv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+fbv+ffv+ffv+ffv+ffv + +ffv+fjw+fjw+fjw+fjw+vjx+fjw+vjx+fjw+vjw+fjw+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx + +fjw+vjx+vjx+fjw+fjw+vjw+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vfx+vfx+vjx+vjx + +ffx+vfx+vfx+vfx+vfx+vjx+vfx+vjx+vjx+vfx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx + +vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+ffw+vfx+vfx+vfw+vfw+vfx+vfw+ffw+ffw+ffw+ffw+ffw + +ffw+ffw+fbw+ffw+fbw+ffw+ffw+fbw+ffw+fbw+ffw+fbw+fbw+fbw+fbw+fbw+fbv+fbv+fbv+fbw + +fbv+fbv+fbv+fXv+fbv+fbv+fbv+fbv+fXu+fbu+fXv+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fXt+fXt + +fXu+fTt+fTt+PTs+fTt+PTt+PTs+PTs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PPs + +PLs+PLs+PLs+PPs+PLs+PLr+PLs+PLr+PLs9/Hr+PLr+PLr9/Hr9/Hr+PLr9/Hq9/Hr9vDq9/Hq9vDq + 9vDq9vDq9vDq9e/q9vDq9vDp9e/q9e/q9e/q9e/q9e/p9O7p9O7p9O7p9O7p9O7p9O7o9O7p9O7p8+3o + 8+3o8+3o8+3o8+3o8+3o8+3o8uzn8uzn8uzn8evn8evm8evm8evm8Ovm8evm8evm8Orm8evm8Ovm8Ovl + 8Ovl8Orl8Orl8Orl7+rk7+rk7+nk7+rk7+rk7unj7unj7unj7enj7enj7enj7enj7eji7ejj7eji7Oji + 7ejj7eji7Oji7eji7Oji7Oji7Ofh7Ofi7Oji7Ofi6+bh7Obh6+bh6+bg6+bg6+bg6+bg6+Xg6+bf6uXf + 6uXf6uXg6uXf6uXf6uTe6uTe6uTf6eTe6ePe6OLd6ePe6OPd6OPd6OPd6OPd6OLd6OLd5+Lc3NjS3djS + 3djS3djS3dnS3tnT3tnT3tnU39nU39nU39rV4NrV4NrV4NvW4NvW4dzX4tzX4tzX4tzX4t3X493X497Y + 497Y5N7Y5N/Y5N/Y5d/Z5d/Z5eDZ5eDa5uDa5uDa5uDa5uHa5+Hb5+Hb5+Lb5+Lb5+Lc5+Lc5+Lc6OLd + 6OPd6OPd6OPd6ePe6eTe6ePe6eTe6eTf6eTf6uTf6uTf6uXg6uXg6uXg6uXg6uXg6uXg6ubg6+bh6+bg + 6+bg7Obh7Ofh7Ofh7Ofi7Ofi7Ofi7Oji7Ojj7Ojj7Ojj7Ojj7Ojj7ejk7Ojj7Ojk7Ojk7ejk7ejk7ejk + 7ejk7ejk7ejk7ejk7ujl7ujk7ujl7ujl7ujl7unl7unk7unl7unl7unk7unk7+rl7+rl8Orl7+rm8Orm + 8Orm8Ovm8evm8evm8evn8uzn8uzn8uzm8uzn8uzn8uzn8uzn8uzn8uzn8uzn8u3n8u3o8+3o8+3o8+3o + 8+7o9O7o9O7o9O7p9O7o9O/p9e/p9e/p9e/p9e/p9e/p9e/p9e/p9e/q9e/p9e/q9e/p9e/q9vDq9e/q + 9vDq9e/q9vDq9vDq9vDq9vDq9/Hr9/Hr9/Hr9/Hr+PLs+PLs+PLs+PLs+PLs+PLs+PLs+fPt+fPt+fPt + +fPt+fPt+fPt+fPt+fPt+fPt+fTt+fTt+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu + +fTu+fTu+fXv+fXv+fXv+fXu+fXv+fXv+fXu+fbu+fbv+fXu+fXu+fbv+fbu+fbu+fbu+fbv+fbu+fbv + +fbv+fbv+ffv+fbv+ffv+fbv+fbv+ffv+ffv+ffv+fbv+ffv+ffv+ffv+ffw+ffv+ffw+fjw+ffw+fjw + +fjw+fjw+fjw+fjw+fjw+vjx+fjw+fjw+fjw+fjw+fjw+fjw+fjw+vjx+fjw+fjw+vjx+vjx+vjw+vjw + +vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjy+vjx+vjy+vjy+vjy+vjy+vjy+vjy+vjy+vjy+vjy + +vjy+vjx+vjx+vjy+vjy+vjy+vjx+vjy+vny+vny+vny+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjw + +vjx+vjx+vjx+vjw+vjx+ffw+vfx+vjx+ffw+ffw+vfx+ffw+ffw+vfx+vfw+ffw+ffw+fbw+ffw+fbw + +ffw+ffw+ffw+ffw+ffw+ffw+ffw+ffw+ffw+ffw+ffw+ffw+ffw+ffw+fbw+fbv+fbv+fbw+fbv+fbw + +fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fXv+fbu+fXu+fXu+fXu+fTu+fXu+fXu+fXu+fTu+fTt + +fXt+fXt+fXt+fTt+PTt+PTs+PTs+PTs+PTt+PPs+PTs+PPs+PPs+PPs+PPs+PPs+PPs+PPs+PLs+PLs + +PLs+PLs+PLr+PLs+PLr+PLr9/Hr9/Hr+PLr9/Hr9/Hr9/Hr9/Hs9/Hq9/Hr9/Hr9/Hr9vDr9vDq9vDr + 9vDq9vDq9vDq9vDp9vDq9vDq9vDq9e/q9e/q9e/q9e/p9e/q9O7p9O7p9O7p8+3o8+3o8+3o8+3o8uzn + 8+3o8+3o8uzn8uzn8uzn8uzm8uzm8ezm8ezm8evm8evm8evm8evm8Ovm8Ovm8Ovl8Ovm8Ovl8Ovl8Ovl + 8Ovl7+rl7+rk7+rk7+nk7+rk7+rk7unk7unj7unj7enj7enj7enj7eji7eji7eji7eji7eji7Oji7eji + 7Oji7Oji7Oji7Ofh7Ofh7Ofi7Ofi7Ofh7Obh7Ofh7Obh6+bh6+bg6+Xg6+bg6ubg6+Xf6uXf6uXf6uXf + 6uXf6uXf6eTe6eTe6eTe6ePe6ePe6ePd6OPd6OLd6OLc6OLd5+Lc6OLc5+Lc5+Lc5+Hc5+Lc3NfR3NfQ + 3NfS3NjR3NjS3djS3NjS3dnT3dnS3tnT3tnU3tnU39rU4NrV39rV4NrV4NvW4dvX4dvW4dvX4dzX4dzX + 4t3X4t3X493X497Y5N7Y5N/Y5N/Y5N/Y5N/Y5eDZ5eDZ5eDa5eDa5eDa5eHa5uHb5uHb5uLb5uLc5+Lc + 5+Lc6OLd6OLd6OPd6OPd6OPe6ePe6eTf6eTf6eTf6eTf6eTf6uTg6uXf6uXg6uXg6uTf6uXg6uXg6uXg + 6+bg6ubg6+bg6+bh7Ofh7Obh6+bi6+fi7Ofi6+fj6+fj7Ofj7Ofj6+jj7Ojj7Ojj7Ojk7Ojk7Ojk7Ojj + 7Ojk7Ojk7Ojk7Ojk7ejk7ejk7ejk7ejk7ejk7ejk7enl7enk7enl7unl7unl7unl7+rl7+rl7+rm7+rm + 8Orm8Orm8Orm8Ovm8Ovm8evm8evm8evn8evn8ezn8evn8ezn8uzn8uzn8uzo8uzn8u3n8uzn8u3o8uzn + 8+3o8+3o9O7o9O7p9O7p9O7p9e/p9e/q9e/p9e/q9e/p9O7p9e/p9e/q9e/q9e/q9e/q9e/q9e/q9e/q + 9vDr9vDq9vDq9vDq9vDq9vDr9/Hr9/Hr9/Hr9/Hr+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLt+fPt + +fPt+fPt+fPt+fPt+fPt+fPt+fTt+fTt+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu + +fTu+fTu+fXu+fXv+fXv+fXv+fXv+fbv+fbv+fbv+fbv+fbv+fbv+ffv+fbv+ffv+ffv+fbv+fbv+ffv + +ffv+ffv+fbv+fbv+ffv+ffv+fbv+ffv+ffv+ffv+ffw+ffw+ffv+ffv+fjw+ffv+fjw+fjw+fjw+fjw + +fjw+fjw+fjw+fjw+fjw+vjx+fjw+fjw+fjw+fjw+fjw+fjw+fjw+vjx+vjx+vjx+vjx+vjx+vjx+vjx + +vjx+vjy+vjx+vjy+vjy+vjy+vny+vjy+vjy+vjy+vjy+vjy+vjy+vny+vny+vny+vjy+vny+vny+vnx + +vny+vjx+vny+vjy+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vjy+vjy + +vjy+vny+vjy+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vfw+vfx+ffw+ffw+ffw+ffw+ffw+vfw+vfx + +vfx+vfx+vfx+vfx+vjx+vfx+vfx+ffw+vfx+ffw+ffw+ffw+ffw+fbw+fbw+fbw+fbv+ffw+fbv+fbw + +ffv+fbv+fbv+fbv+fbv+fbv+fXv+fXv+fbv+fXv+fbv+fbv+fXu+fXu+fbu+fXu+fbu+fXu+fXu+fXu + +fXt+fXt+fTt+fTt+fTt+PTt+PTt+PTs+fTt+PTs+PTt+PTs+PPs+PPs+PPs+PPs+PPt+PPs+PPs+PPs + +PLs+PPs+PLs+PLs9/Hs9/Hs9/Hr9/Hs9/Hr9/Hr9vDq9/Hr9/Hs9/Hr9vDr9vDr9vDr9vDr9vDq9vDr + 9vDq9vDq9vDq9vDr9e/q9e/q9e/q9e/q9O7p9O7p9O7p9O7p8+3o8+3o8+3o8u3o8+3o8uzn8uzn8uzn + 8uzn8uzn8uzn8uzm8ezm8ezm8evm8ezm8evm8evm8Ovl8Ovl8Ovl8Ovl8Ovl7+rl8Ovl8Ovl7+vl7+rk + 7+rk7+rk7+rk7+rk7urk7unj7unj7unj7enj7unj7enj7eni7eni7eji7Oji7Ojh7Ojh7Ojh7Ojh7Ofh + 6+fh7Ofg7Ojh7Ofg6+bh7Ofh7Ofg6+fg7Ofg6+bg6+bg6+bg6+bg6+bg6uXf6uXf6uXf6uXe6eTe6eTe + 6eTe6eTe6eTe6OPd6ePd6OPd6OPd6OPc6OLc5+Lc5+Lc5+Lc5+Lb5+Hc5uHb5+Lb5uHb5uHb2tXP29bQ + 29bQ29fR29fQ29fR3NfS3NjS3NjS3NjS3dnT3tnT3tnT3tnU3tnU39rV39rV4NrW4NrW4NvW4dvW4dzX + 4tzX4tzX4t3X493X497X497Y497Y5N7Y5N7Y5N/Z5N/Y5N/Z5N/Z5N/Z5eDa5eDa5eDb5uDb5uDb5uHc + 5uHc5+Hc5+Ld5+Ld6OLd6OLd6OPe6OPe6OPe6OPe6OPe6OTe6ePf6OTf6eTf6eTf6eTf6eTf6eTf6uTg + 6uXg6uTg6uXg6uXg6uXg6uXh6+Xh6+bh6+bh6+bh6+bi6+bi6+bi6+fi6+fj6+fi6+jj6+fj6+jj7Ojj + 7Ojk7Ojk7Ojj7Ojk7ejk7Ojk7Ojk7ejk7ejl7ejl7enl7ejl7unl7unl7unl7unl7url7urm7+rl7+rl + 8Orl8Orm8Orm8Ovm8Ovm8Ovl8Ovm8Ovm8Ovm8evm8Ozm8ezm8ezm8ezm8ezm8ezn8ezm8ezn8uzn8u3o + 8u3o8u3o8+3o8+3o8+3o8+3o9O7p9O7p9O7p9O7q9O7p9e/q9e/q9e/q9e/q9e/q9e/q9e/q9fDq9vDq + 9vDq9vDr9vDq9vDq9vDq9vDr9/Hr9/Hr9/Hr9/Hs9/Hr+PLr+PLs+PLs+PLs+PLs+PLs+PLs+PLs+PLs + +PLs+PLt+fPt+PLt+fPt+fPt+fTt+fTt+fTt+fTt+fTt+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu + +fXu+fXu+fXv+fXv+fXv+fbv+fXv+fbv+fbv+fbv+fbv+fbv+ffv+fbv+fbv+fbv+fbv+ffv+fbv+fbv + +ffv+fbv+fbv+ffv+ffv+ffv+ffv+ffv+fbv+ffw+ffw+ffv+ffw+ffv+ffw+fjw+fjw+fjw+fjw+fjw + +vjw+vjx+fjw+vjx+vjx+vjx+vjx+vnx+vnx+vnx+vnx+vnx+vnx+vny+vny+vjy+vjy+vjy+vjy+vjy + +vjy+vjy+vjy+vny+vjy+vjy+vny+vjy+vny+vny+vny+vny+vny+vjy+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vjy+vjy+vjy+vjx+vjx+vjx+vjx+vjx+vjx+vjx + +vjx+vjx+vjy+vjy+vjx+vjx+vjx+vjx+vjx+ffw+vfx+ffw+ffw+fbw+ffw+fbw+ffw+fbw+ffw+ffw + +fbw+fbw+fbv+fbw+fbv+fbv+fXv+fbv+fXv+fbv+fbv+fXu+fXu+fXu+fXu+fXu+fXu+fXu+fTu+fTu + +fTu+PTt+PTt+PTt+PTt+PTt+PTs+PPt+PTs+PPt+PPs+PPt+PPt+PPs+PPs+PPs+PPt+PPs+PLs+PLs + +PLs+PLs+PLs9/Hs9/Hs9/Hs9/Hs9/Hs9/Hr9/Hr9vDs9/Hs9vDr9/Hr9vDr9vDr9vDr9vDq9vDq9u/q + 9vDq9e/q9e/q9e/q9e/q9e/q9O7p9O7p9O7p9O7p8+3o8+3o8+3o8uzn8uzo8uzn8uzn8uzn8uzn8uzn + 8uzn8uzn8ezm8ezm8ezm8ezm8ezm8ezm8ezm8ezm8Ovl8Ovl8Ovl8Ovl8Ovl7+rk7+rk7+rk7+rk7+rk + 7+rk7+rk7+rk7urk7urk7unj7enj7enj7enj7eni7eji7Oji7Oji7Ojh7Ojh7Ofh7Ofg7Ofg6+fg6+bg + 6+bf6+bf6+bg6+bf6+bf6uXf6uXf6uXf6uXf6uXf6uXe6uXe6uXe6eXe6eTe6eTe6OPd6OPd6eTe6eTd + 6OPd6OPd6OPd6OPd6OPd6OLc6OLc5+Lc5+Lb5+Lb5uLb5uLb5uLb5uHb5uHb5uHb5uLb5uHb2dPN2tTO + 2tXO2tTP2tbP2tXP2tbQ2tbQ29bR29fR29fR3NfS3NjS3djT3djS3tnT3tnU3tnU39rV39nV4NrW4NvW + 4dvX4dzX4dzX4tzX4tzX4t3X493Y493Y497Y497Y497Y5N7Z5N7Z5d7a5d/a5d/a5eDa5uDb5eDb5eDb + 5uDc5uDc5uHc5uHc5+Hd5uHc5+Hd5+Hd5+Ld6OLd5+Ld6OLe6OLe6OLe6OPe6OPe6OPe6OPe6ePf6OTf + 6eTf6eTf6uTf6uTg6uTg6uXg6uXg6uXg6ubg6+bh6ubh6+bh6+bh6+bh6+bi6+fi6+fi6+ji6+ji6+ji + 7Ojj6+ji7Ojj7Ojj7Ojk7Ojj7Ojk7Ojk7enk7enk7enl7enk7enk7unl7unl7url7urk7urk7url7+rl + 7url7+rl7+rl7+vl8Orm8Ovm8Ovm8Ovm8Ovm8Ozm8Ovm8ezm8ezn8Ovm8ezn8Ovm8ezn8ezn8ezn8ezn + 8ezn8ezn8u3o8u3n8u3o8u3o8+3o8+3p8+3o8+3p8+7p9O7p9O7p9O7p9O7p9O7q9O7q9e/q9O/p9e/q + 9e/p9e/q9vDq9vDq9e/q9vDr9vDq9vDr9vDr9vDr9vDr9vDr9vDr9/Hr9/Hs9/Hs9/Hs+PLs9/Hs+PLs + +PLs+PLt+PLs+PLt+fPt+fPt+fPt+fTt+fTt+fTt+fTt+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu + +fTu+fTu+fXv+fXv+fXv+fXv+fXv+fbv+fbv+fbv+fbv+ffv+ffv+ffv+fbv+fbv+fbv+fbv+fbv+fbv + +ffv+fbv+fbv+ffv+fbv+fbv+ffv+fbv+ffv+ffv+ffv+ffw+fjw+fjw+ffw+fjw+vjw+fjw+fjw+vjx + +vjx+vjx+vnx+vny+vnx+vnx+vnx+vny+vnx+vny+vnx+vnx+vny+vnx+vnx+vny+vny+vny+vny+vny + +vjy+vjy+vny+vjy+vjy+vny+vny+vjy+vny+vny+vny+vny+vny+vny+vny+vjy+vny+vny+vny+vny + +vny+vny+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vny+vny+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vny+vjy+vjy+vny+vjy+vjy+vny+vny+vjy+vny+vjy+vny+vny+vny+vny+vjy+vjy + +vny+vjy+vjx+vjy+vjx+vjx+vjx+vjx+vfx+vjx+fjw+ffw+ffw+fbw+ffw+ffw+fbw+ffw+fbw+ffw + +fbw+fbv+fbw+fbv+fbv+fbv+fXv+fbv+fbv+fbv+fXv+fXv+fXu+fXu+fXu+fXu+fXu+PTt+fTu+fTu + +fTt+fTu+PTt+PTt+PTt+fTt+fTt+PTs+PPt+PPt+PPt+PPs+PPt+PPs+PPt+PPs+PLs+PPs+PLt+PLt + +PLs+PLs+PLs9/Hs9/Hs9/Hs9/Hs9/Hs9/Hs9/Hs9/Hs9/Hs9vDq9vDr9vDr9vDr9vDr9e/q9e/q9e/q + 9e/q9e/q9O7q9e/q9e/q9O7p9O7p9O7p8+3o8+3o8+3o8+3o8+3o8+3o8+3o8u3n8uzn8u3n8u3n8uzn + 8uzn8ezm8ezm8ezm8uzn8ezm8ezm8ezm8evm8ezm8Ozl8Ozl8Ovl7+vk8Ovk7+rk7+rk7urj7urk7urj + 7urj7urj7unj7urj7erj7eni7eni7eni7eji7eni7Ojh7Ojh7Ofg7Ofg7Ofg7Ofg6+bf6ubf6+bf6ubf + 6uXf6uXe6uXe6uXf6uXe6uXf6eTe6uTe6eTd6eTe6eTe6eTe6eTd6OTd6OTd6OPd6eTd6OTd6OPd6OPc + 6OPc6OPc6OPc6OPc5+Lc5+Lc5+Lc5+Lb5uHb5uHb5uHb5uLb5eHa5uHa5uHb5uHb5eDa5eHa2NPM2NPN + 2NPN2NPN2dTN2dTO2tTO2tXP2tXP2tbQ2tbQ2tbQ29fR3NjS3NjS3NjS3djT3djU3dnT3tnU3tnU39nV + 39rV4NrW4NrW4NvW4dvX4tzX4tzX4tzX4t3X4t3Y493Y493Y497Y5N7Z5N/a5N/a5N/a5N/a5N/a5d/b + 5d/b5eDb5uDc5eDb5eDb5uDc5uDc5uDc5uHc5uHd5+Hd5+Ld5+Ld6OLd5+Ld6OLe6OLe6OPe6OPe6eTf + 6OTe6eTf6eTf6eTf6eXf6uXf6eXf6uXf6eXg6uXf6uXg6ubg6+bg6+bh6+fh6+fh6+fh6+ji6ufi6+ji + 6+fi6+ji6+ji6+ji7Oji7Ojj6+jj6+ji7Ojj7Ojj7Ojj7enk7enk7enk7enk7url7urk7erk7urk7urk + 7urk7+rk7+rl7+rl7+rl8Ovm8Ovm8Ovm8Ovm8Ovm8Ozm8Ozm8Ozm8Ovm8ezm8ezm8Ozm8Ozm8ezm8ezn + 8ezn8ezn8u3n8u3o8u3o8u3o8u3o8u3o8u3o8+3o8+7p8+7p8+7p9O7p8+7q9O7q9O7p9O7p9e7q9O7q + 9e/q9e/q9e/q9e/r9e/r9vDr9vDr9vDr9vDr9vDr9vDr9vDq9vDr9vDr9/Hr9/Hr9/Hr9/Hs+PLs+PLr + +PLs+PLt+PLs+PLs+fPt+fPt+fTt+fTt+fTt+fPt+fTt+fTu+fTu+fTt+fTu+fTu+fTu+fTu+fTu+fTu + +fTu+fXu+fTu+fXu+fbv+fbv+vbv+fbv+fbv+fbv+fbv+fbv+fbv+ffv+fbv+fbv+ffv+fbv+fbv+fbv + +fbv+fbv+fbv+ffv+fbv+fbv+ffv+ffv+ffv+ffw+ffw+ffw+fjw+fjw+fjw+vjw+fjw+vnx+vjx+vnx + +vjx+vnx+vjx+vny+vjx+vnx+vjx+vnx+vny+vny+vny+vnx+vny+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vjy+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vnz+vny+vnz + +vny+vnz+vnz+vnz+vnz+vnz+vnz+/r0+vnz+vnz+vnz+vnz+vnz+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vjy+vny+vjy+vjy+vny+vjy+vny+vny+vjy+vny+vjy+vny+vny+vjy+vjy+vny+vny + +vjx+vny+vjy+vjy+vjx+vjy+vjx+vjx+vjx+vjx+vjx+ffw+vfx+vfx+ffw+ffw+fbw+fbw+fbw+fbv + +fbw+fbv+fbw+fbw+fbv+fbv+fbv+fbv+fbv+fXv+fbv+fbv+fXu+fXu+fXu+fXu+fXu+fTu+fXu+fXu + +PTu+fTt+fTu+PTt+PPt+PTt+PPt+PTt+fTu+PPt+PPt+PPt+PPt+PPs+PPt+PPs+PPt+PPs+PLs9/Hs + 9/Hs9/Hs9/Hs9/Hs9/Hs9/Hs9/Hs9/Hs9/Hs9/Hr9/Hs9vDr9vDr9vDr9vDq9vDr9vDr9e/q9e/q9e/q + 9e/q9O7p9O7p9O7p9O7p8+3o9O7p8+7o8+3o8+3o8+3o8+3o8+3o8+3o8+zo8u3n8uzn8uzn8uzn8uzn + 8uzn8uzn8ezm8e3m8ezm8Ozl8Ozm8Ovl8Ozl8Ozl7+vk8Ovl7+vk7+vk7urk7urj7urj7unj7urj7erj + 7urj7unj7unj7enj7uri7eni7eni7eni7eji7ejh7Ojh7Ojh7Ofg7Ofg7Ofg6+bf6+bf6uXf6uXf6uXf + 6uXe6eTe6uTf6uXe6eTe6eXd6eTe6eTd6eTe6eTe6OTd6OTd6eTd6OPc6OPd6OPd6OPc6OPc6OPd6OPc + 6OLc5+Lc6OLc5+Lb5+Lb5+Lc5uLb5uHb5uHb5uHb5uHb5uHb5eHa5uDa5eHa5eDa5eDa5ODZ19LM19LM + 2NPM2NPN2NPM2NTN2dTO2dTO2tTP2tXP2tXP2tXQ2tbQ29fR29fQ29fR3NjS3NjS3NjT3NjT3dnU3dnU + 3tnU3tnV39nW39rW39vW4NvX4NrX4NvX4dvX4dzX4tzY4t3Y4t3Y4t3Y497Z497Z497Z49/Z497Z49/Z + 5N/a5N/a5d/b5d/b5eDb5eDb5eDb5eDb5uHc5eHb5uHc5uLc5uLc5+Ld5+Ld5+Pd5+Pd6OPe6OPe6OTe + 6OPe6OTe6OTe6eTf6eXf6eTf6eXf6uXf6uXf6eXf6uXf6ubg6ubf6ubf6ubg6ubg6+bh6ufg6+fh6ufh + 6ujh6ufh6ufh6ujh6uji6uji6+fi6+fi6+ji7Ojj7Ojj7ejj7Onk7enk7enk7enk7enk7enk7enk7urk + 7urk7urk7urk7urk7+vl7+vl7+vl7+vl7+vl7+vl7+vm7+vm7+vm7+vm8Ovm7+vm8Ovm8Ozm8Ovm8Ozm + 8Ozm8ezn8ezn8e3n8u3o8u3o8u3o8u3o8u3o8+7p8+3o8+7o8+7p8+7p8+7p8+7p8+7p8+7p9O7p9O7p + 9O7q9O7q9O/q9e/q9e/r9e/r9e/q9e/r9e/r9e/r9e/r9e/q9e/r9vDr9vDr9vDr9/Hr9/Hs9/Hs+PLs + +PLs+PLt+PLt+PLt+PLt+PLt+fPt+fPt+fTt+fTt+fPt+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu+fTu + +fTu+fXu+fXu+fXu+vXu+vXv+fXv+fXv+vbv+vXv+vbv+fXv+fbv+fbv+fbv+fbv+fbv+ffv+ffv+ffv + +fbv+ffv+ffv+ffv+ffv+ffw+ffw+ffw+ffw+ffw+fjw+fjw+fjw+fjw+fjw+vjx+fjw+vnx+vnx+vnx + +vnx+vnx+vnx+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vny+vnz+vny+vnz+vnz+vny+vnz+vny+vny+vnz+vny+vny+vny+vny+vnz+vny+vny + +vny+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vny+vny+vnz+vny+vny+vny + +vny+vnz+vny+vny+vny+vny+vny+vny+vny+vny+vny+vjy+vny+vny+vny+vny+vny+vny+vny+vny + +vny+vjx+vjy+vjx+vjx+vjy+vjx+vjx+vjx+vjx+vjw+vjx+vjw+ffw+vfw+ffw+ffw+ffw+ffw+fbw + +ffw+ffw+ffw+ffw+ffw+ffw+ffw+fbv+fbv+fbv+fbv+fbv+fXv+fbv+fbu+fbu+fXu+fXu+fTu+fTu + +fTt+PTu+PTt+PPt+PTt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPs+PLt+PLs+PLt + 9/Hs9/Hs9/Hs9/Hs9vDr9vDr9vDr9vDr9vDr9vDr9vDr9fDq9fDq9e/q9e/q9e/q9O/p9O7p9O7p9O7p + 9O7p9O7p9O7p9O7p8+7o8+3o8+7o8+3o8+7o8+3o8u3n8u3n8u3n8u3n8uzn8uzm8ezm8e3m8ezm8ezm + 8ezm8Ozl8Ozl8Ozl8Ozl7+zk7+vk7+vk7+vk7urj7urj7urj7urj7urj7eni7eni7eni7eni7eni7eni + 7eni7eni7eni7eni7eni7uni7eji7ejh7Ojh7Ojh7ejh7Ofg7Ofg6+bg6+bg6+bg6+bf6uXf6uXe6+Xe + 6eXe6eTe6eTe6eXe6eTe6eTe6eTe6eTe6eTe6eTe6OPd6eTd6OTd6OPd6OTd6ePd6OLc6OPc6OLc5+Lc + 5+Lc5+Lc5+Lb5+Lb5uHb5uHb5uHb5uHb5uDa5eDa5uDa5eDa5eDa5eDZ5N/Z5N/Z5ODZ5N/Y1tHL1tHL + 19LL19LL19LM2NPN2NPN2NPN2dTO2dTO2dTO2tTP2dXP2tXQ2tXQ2tbQ2tfQ29fS3NfS3NjS3NjT3NjT + 3djU3dnU3tnV3tnV39rV39rV39rW39vW4NvW4NvX4NvX4NzX4dzX4dzX4dzX4tzY4t3Y4t3Y497Z497Z + 497Z49/Z49/Z49/Z5N/a5ODa5ODa5ODa5eDb5eDb5eHb5eHb5eHb5uLc5uLc5uLc5uLc5uPc5+Pd6OPd + 6OPd6OTe6OPd6OTe6OTe6OXe6eTf6eXf6eXf6eXf6eXf6eXf6eXf6uXf6ubf6uXf6ubf6ubg6ubg6ubg + 6ufg6ufh6ufh6ufh6ufh6ujh6ufh6+fi6+ji6+ji6+ji7Oji6+jj7Ojj7Ojj7Ojk7enk7enk7enk7enk + 7urk7erk7urk7urk7urk7urk7urk7url7urk7uvl7uvl7+rl7+rl7uvl7+vl7+vl8Ovm7+vl8Ovm8Ovm + 8Ovm8Ozm8ezn8ezn8ezn8ezn8u3n8e3n8u3o8u3o8u3o8u3o8u3o8u7o8u7o8+7p8+7o8+7o8+7p8+7p + 8+7p9O7p9O7q9O7q9O/q9e/q9O/q9e/r9e/q9e/r9e/r9e/r9e/q9e/r9vDr9vDr9vDs9vDs9vDs9/Hs + 9/Ht+PLt+PLt9/Hs+PLt+PLt+PLt+PLt+fPt+fPt+fPt+fPu+fPu+fPu+fTu+fTu+fTu+fTu+fTu+fTu + +fTu+fTu+fTu+fTu+fXu+vXu+fTu+vXu+vXv+vXv+vXv+fXv+fbv+vbv+fXv+fbv+fbv+fbv+ffv+ffv + +ffv+ffv+ffv+ffv+ffv+ffv+ffw+ffw+fjw+fjw+fjw+fjw+fjw+fjw+fnw+vjx+vjx+vjx+vnx+vnx + +vnx+vny+vnx+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vny+vnz+vny+vny+vnz+vny + +vny+vny+vnz+vny+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vny+vny+vnz+vnz+vnz+vnz + +vny+vnz+vnz+vny+vny+vnz+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vjy+vjy+vny+vjx+vjx+vjx+vjx+vjx+vfx+vjx+vjx+vfx+vfx+vfx+vfx+vfx+vfw + +vfx+ffw+ffw+ffw+ffw+ffw+ffw+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbu+fbu+fXu+fXu+fTu+fTu + +fTu+fTu+PTt+PPt+PPt+PTu+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PPt+PLs9/Hs9/Hs9/Hs + 9/Hs9/Hs9/Hs9vDr9vDr9vDr9e/q9e/q9vDq9e/q9e/q9e/q9e/q9O7p9O7p9O7p9O7p9O7o9O7p8+7o + 8+7o8+3o8+7o8+7o8+7o8+3o8+7o8u3n8+3o8u3n8u3n8u3n8e3m8e3m8e3m8ezm8ezm8e3m8Ozl8Ozl + 8Ozl7+vk7+vk7+vk7+vk7+vk7+vk7urj7urj7urj7urj7urj7uni7eni7eni7eni7eji7eji7ejh7ejh + 7ejh7Ojh7Ojh7Ojh7ejh7Ojh7ejh7Ofg7Ofg7Ofg7Ofg7Obg7Obg6+bf6+bf6+Xf6+Xe6uXf6uXe6uXe + 6uTe6uTe6uTe6eTe6eTe6eTe6eTe6eTd6eTd6eTd6OPd6OPd6OPc6OPc6OPc6OLc6OLb5+Lc5+Lb5uLb + 5+Lb5+Hb5uHa5uHa5uHa5uDa5uDa5eDa5uDa5eDa5d/Z5d/Z5N/Z5N/Z5N/Z5d/Z5N/Z5N/Z1M/J1dDK + 1dDK1tHK1tHK19LL19LM2NLM2NLM2NPN2NPN2NPO2dTO2dTP2dTP2tXQ2tXQ29bQ29bQ2tbQ29fS29fS + 29fS3NjT3NjT3dnT3dnU3dnU3tnU3tnU3tnV3trV39rV39rV3trV4NvW4NvW39vW4dzW4d3X4d3X4t3X + 4t3X4t7Y4t7Y4t7Y4t7Y4t7Y497Y4t/Y49/Z49/Z5ODZ5ODZ5ODa5OHa5eHa5eHb5eHb5uLc5uLc5+Lc + 5+Pc5+Pd5+Pd6OPd6OTe6OTe6OTe6OTe6OTd6OTe6OTe6OTe6OTe6eXe6eXe6eXe6eXf6eXf6eXf6ubf + 6ubf6ubf6ubg6ubg6ufg6ufg6ufg6ufg6ufg6ujg6ujh6ufh6+jh6+jh7Ofi7Oji7Ojj7Ojj7Ojj7Ojj + 7Onj7enk7enk7enk7erk7enj7erk7enj7erj7erj7erj7erj7urk7urk7urk7urk7+vl7+vl7+vl7+vl + 7+vl8Ovm8Ozm8Ovm8Ozm8Ozm8Ozm8e3n8e3n8e3n8e3n8e3n8e3n8u3o8u3o8u3o8e3n8u7o8u7o8u7o + 8+7p8u7o8+7p9O/q9O/q9O/q9O/q9O/q9O/q9e/r9e/r9e/r9e/r9e/r9e/r9vDr9vDs9vDs9vDs9/Hs + 9/Hs9/Hs9/Hs9/Hs9/Ht9/Ht9/Ht9/Hs+PLt+PLt+PLt+fPt+fPt+fPu+fTu+fTu+fTu+fTu+fTu+fTu + +fTu+fTu+fTu+fTu+fTu+fXv+fXu+vXv+vXv+vXv+vbv+vbv+vbv+vbv+vbv+vfv+vbv+vfv+ffv+ffv + +vfv+fbv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+ffw+ffw+ffw+ffw+fjw+fjw+fjw+vjx+vjx+vnx+vnx + +vnx+vny+vny+vnx+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vnz+vnz+vnz+vnz+vrz+/r0+/r0+vrz+vr0+vrz+vrz+vnz+vnz+vnz+vnz+vnz+vnz + +vnz+vnz+vnz+vrz+vnz+vnz+vrz+vrz+vrz+vnz+vr0+/r0+vr0+vrz+vrz+vrz+/r0+vnz+vrz+vnz + +vnz+vnz+vnz+vrz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vny+vny+vny + +vny+vny+vny+vny+vny+vjy+vny+vjy+vjy+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vjx+vfx+vfw+ffw + +ffw+ffw+ffw+ffw+ffv+fbw+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fbv+fXu+fXu+fXu+fXu+fXu+fTu + +fTu+fTu+PTu+PTu+PTu+PPt+PPu+PPu+PPt+PPt+PPt+PPt+PPt+PPt+PLt+PLs9/Hs9/Hs9/Hs9/Hs + 9vDr9vDr9vDr9vDr9e/q9vDq9e/q9e/q9e/q9O7q9O/p9O/q9O7p9O7p9O7p9O7p9O7o8+7o8+7o8+7o + 8+7o8+7o8+7o8u7n8u7n8+7o8+3o8u3n8u3n8u3n8u3n8e3m8e3m8e3m8e3m8ezm8Ozl8Ozl8Ozl7+vk + 7+vk7+vk7+vk7+vk7+rk7+vk7urk7+rj7urj7urj7urj7urj7uni7eni7eni7eni7ejh7ejh7ejh7ejh + 7Ofg7Ofg7Ofg7Ofg7Ofg7Obg6+bf6+bf6+bf6+bf6+Xf6+Xe6+Xe6uXe6uTe6uTe6eTe6uTe6uTd6eTe + 6uTd6eTd6uPd6eTd6eTd6ePd6ePc6OPc6OPc6OLc6OLb6OLc6OLb5+Lc5+Hb5+Lb5+Hb5+Ha5+Ha5+Ha + 5uHa5uDa5uDa5uDa5uDZ5uDa5eDZ5eDZ5d/Z5d/Z5N/Z5N/Y5N/Z5N/Y5N7Y5N7Y5N/Y5N7Y083J087I + 087J1NDJ1NDJ1tDK1tDK1tHK19LM19LM2NLN2NLN2NPN2NPO2dTO2NTO2dTP2tTP2dXP2tXP2tbQ2tbQ + 29bR29bR29jR29jS29jS3NjS3NnS3NnT3NnT3NnT3dnT3dnU3trU3trU39rV39rV39vV4NzW4NzW4NzW + 4dzW4d3W4d3X4t3X4t7X4t7X4t7Y4t7Y4t7Y49/Y49/Y49/Y4+DZ5ODZ5ODa5OHa5OHa5eHb5uHb5eLb + 5uLc5uLc5uLc5+Pc5uPc5+Pd5+Pd5+Pd5+Pd5+Td5+Pd5+Pd6OTe6OTe6OTd6OTe6OXe6OXe6eXf6eXe + 6eXe6ubf6eXf6ebf6ebf6ufg6ebf6ebf6ufg6ufg6ufg6ufg6+fh6ufh6+fh6+jh6+fi6+jh6+ji7Oji + 7Oji7Ojj7Oji7Ojj7Onj7Ojj7enj7ejj7enj7erj7erj7erj7erk7erk7urk7urk7urk7urk7uvk7url + 7+vl7+vl7+vl7+vl7+vl7+vl8Ozm8Ozm8Ozm8O3m8Ozm8e3n8e3n8e3n8e3n8e3n8e7n8u3o8u3o8u3o + 8u7o8u7o8+7o8+/p9O/q9O/q9O/q9O/q9O/q9O/q9O/q9e/q9e/r9e/r9e/r9e/r9vDr9vDs9vDs9vDs + 9/Hs9vDs9/Ht9/Hs9/Ht9/Ht9/Ht9/Ht9/Ht+PLt+PLt+PLu+PLt+fPu+fPu+fTu+fTu+fTu+fTu+fTu + +fTu+fTu+fTu+fXu+fTu+fXv+fXu+vXv+vXv+vXv+vXv+vbv+vbv+vbv+vbv+vbv+vbv+vfv+vbv+vfv + +vfv+ffv+vbv+ffv+ffv+ffv+ffv+ffv+ffv+ffw+ffw+ffw+ffw+fjw+fjw+vjx+vjx+vjx+vnx+vnx + +vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vnz+vnz+vrz+/r0+/r0+/r0+/r0+/r0+/v0+/v0+/r0+/r0+vnz+/r0+vrz+vrz+/r0 + +vnz+vrz+/v0+/r0+/r0+/r0+/r0+/v0+/r0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+vr0+vrz + +/r0+/r0+vrz+vrz+vnz+vnz+vnz+vnz+vnz+vnz+vrz+vnz+vnz+vnz+vnz+vnz+vnz+vny+vny+vny + +vny+vny+vny+vjy+vny+vjy+vjy+vjy+vjy+vjx+vjx+vjx+vjx+vfx+vfx+vjx+vjw+ffw+vfw+ffw + +fbw+ffw+fbw+fbw+fbw+fbv+fbw+fbv+fXw+fbw+fXv+fbv+fbv+fbv+fbv+fXv+fXu+fXu+fXu+fTu + +PTu+PTu+PTu+PPu+PPu+PPu+PPu+PPu+PPu+PPt+PLt+PLt+PLt+PLt9/Hs9/Hs9/Hs9/Hs9/Hs9vDr + 9vDr9vDr9vDr9vDr9e/q9e/q9e/q9e/q9e/q9e/q9O7p9O/p9O7p9O7p9O7p9O7o9O7o8+7o8+7o8+7o + 8+7o8u7n8+7o8u7n8u7o8u7n8u7n8u3n8u3m8e3m8e3m8e3m8Ozm8Ozl8Ozl8Ozl7+vk7+vk7+vk7+vk + 7uvk7+rj7urj7urj7urj7urj7urj7urj7uni7unj7unj7unj7uni7eni7uni7eni7ejh7ejh7ejh7Ofg + 7efg7Ofg7Ofg7Ofg7Ofg7Obf7Obf6+bf6+Xf6+Xe6+Xe6uXe6uTe6uTd6eTd6uTd6ePd6uTd6uTd6ePd + 6eTd6ePd6ePd6ePc6OPc6eLc6OLc6OPc6OLc6OLc5+Lb6OLb5+Hb5uLb5+Hb5+Lb5uHa5uHa5uHa5uHa + 5uDa5uDa5eDZ5eDZ5eDZ5d/Y5d/Z5d/Y5N7Y5d/Y5N7Y5N7Y5N7Y5N7Y5N7Y5N7Y5N7Y5N7Y0MvH0czI + 0czI0szJ08zJ083J1M7J1M7K1c/K1dDK1dDL19HM19HM19LM19LN2NLN2NPN2NPO2dTO2dTO2dXO2tXP + 2tbQ2tbQ2tbQ2tfQ29fR29jR29jR29jR3NjS3NnS3NnS3NnT3dnT3dnT3tnU3tnU3trU39rV39vV39vV + 4NvW4NvW4NvW4NzW4NzW4NzW4d3W4t3X4t7X4t7X4t7X4t7Y4t/Y49/Y5ODZ5ODZ5ODZ5eDa5eDa5eHa + 5eHa5uHb5eLb5uLb5uLb5uHb5uLc5uLb5uLc5uLc5+Lc5+Pc6OPc6OPd6OPd6OTd6OTe6OTe6eXe6eXe + 6eXf6eXe6uXf6ubf6ubf6ebf6ebg6ebf6ebg6ebg6ubg6ufg6ufh6ufh6ufh6ufh6+fh6+jh6+fi6+fh + 6+fh7Ofh6+fh6+fi7Oji7Oji7Oji7Ojj7enj7enj7Onj7erj7erj7erj7erk7erj7erk7urk7urk7urk + 7urk7uvk7urk7uvk7uvl7uvl7uvk7+zl7uzl7+zm7+zm8Ozm8Ozm8Ozm8O3m8Ozm8e3n8e3n8e3n8e3n + 8u7o8u7o8u7o8u7o8+7p8+/p9O/q8+7p9O/q9O/q9O/q9O/q9O/q9O/q9O/q9e/r9e/r9e/r9e/r9fDr + 9vDs9vDs9vDs9vDs9vDs9vDs9vDs9/Ht9/Ht+PLt+PLt+PLu+PLu+PLu+PLu+fPu+fPu+fTu+fTu+fTu + +fTu+fTu+fTu+fTu+fTv+fTv+fTu+fTu+fXv+fTv+fTu+fTv+fXv+fXv+vbv+vbv+vXv+vbv+vbv+vbv + +vbv+vbv+vbv+ffv+fbv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+ffw+fjw+fjw+fjw+fjw+vjx+vnx + +vnx+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vnz+vny+vny+vnz + +vnz+vnz+vr0+vrz+vrz+vrz+/v0+/r0+vrz+/v0+vr0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0 + +/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/r0+/r0 + +vrz+vrz+/r0+vrz+vr0+vrz+vnz+vnz+vny+vnz+vnz+vnz+vnz+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vny+vny+vjy+vjy+vjx+vjx+vjx+vjx+vjx+vjx+ffw+ffw+vjw+ffw+ffw+ffw+ffw + +fbw+fbw+fbw+fbw+fbv+fXw+fbv+fbv+fbw+fbw+fbv+fbw+fbv+fbv+fXv+fXu+fXu+fTu+fTu+PTu + +PTu+PPu+PPu+PPu+PPu+PPu+PPu+PPt+PPt+PLt+PLs+PLt9/Hs9/Hs9/Hs9/Hs9vDr9/Hs9vDr9vDr + 9vDr9vDr9vDr9e/q9e/q9e/q9O7q9e/q9O/p9O7p9O7p9O7p9O7p9O7p8+7o8+7o8+7o8+7o8u7o8u7o + 8u7n8u7n8u7n8e3m8e3m8e3m8e3m8Ozm8e3m8Ozl8Ozl8Ozl7+vk7+vk7+vk7urj7urj7urj7uri7uri + 7uni7uni7uni7uni7uni7uni7uni7uni7uni7uni7uji7eji7uji7eji7ejh7eji7ejh7ejh7efh7Ofg + 7Ofg7Ofg7Ofg7Obf7Obf7Obf6+Xe7Obf6+Xe6+Xe6+Xe6uTe6uTe6uTe6ePd6uTd6uTd6uTd6ePd6eTc + 6ePd6ePc6ePd6OPc6ePc6OPc6OLc6OPc6OLc6OLc5+Lb5+Lb5+Lb5+Lb5uHa5uHa5uHa5uDa5uDa5uDa + 5uDa5d/Z5d/Z5d/Z5d/Z5N7Y5N/Z5N7Y5N7Y5N7Y5N/Y5d7Y5N7Y5N7Y5N/Y5N7Y5N/Y5N7Y0MrH0MvI + 0MzH0czI0czJ0szI0s3J0s7J083J1M7J1M/K1dDL1tDL1tHL1tHM19LM2NLN19LN2NPN2NTN2dTO2dTO + 2tXP2tXP2tbP2tbP2tbQ2tbQ2tfQ29fR29jR29jR3NjS3NnS3NjS3dnT3dnT3dnT3dnT3trU3trU3trU + 39vV39vV4NvV4NvV4NvV4NzV4NzW4dzW4dzW4dzW4t3W4t7X4t7X497Y5N7Y5N/Y5N/Y5N/Z5N/Z5ODZ + 5ODZ5eDa5eDa5uHa5uHa5uHa5uHa5uHb5uHb5+Lb5+Lc5+Lc5+Lc5+Lc6OPc6OPc6OPd6OPd6OTd6eTe + 6eTe6eXe6eTe6eXe6uXf6eXf6ebf6ubf6ebg6ubg6ubg6ufg6ufg6ufg6ufh6+fh6+fh6+fh6+bh6+fh + 6+fh6+fh6+fh7Ofh7Ofh7Ofi7Oji7Oji7Oji7Oji7Oji7eni7enj7enj7urj7enj7erk7urk7enk7urk + 7urk7erk7urk7urk7uvk7uvk7uvk7uvk7uvl7+zl7uzl7+zm7+zm7+zm8Ozm8Ozm8O3m8O3m8e3n8e3n + 8e3n8e3n8e3n8u3o8u7o8u7o8+/p8+7p8+/p8+/p8+7p8+/p8+/p9O/q9O/q9O/q9O/q9O/q9e/r9fDr + 9fDr9vDs9vDr9vDs9vDs9vDs9/Hs9/Ht9/Ht9/Ht9/Ht+PLt+PLu+PLu+PLu+PLu+fPu+fPu+fPu+fTv + +fTu+fTu+fTu+fTv+fTv+fTu+fTv+fTv+fTv+fTv+fTv+fTu+fXv+fXv+fXv+fXv+vXv+fXv+vbv+vbv + +vbv+vbv+vbv+vbv+vfv+vfv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+fjw+fjw+fjw+vjx+vnx+vnx + +vnx+vny+vnx+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vnz+vny+vnz+vnz+vnz + +vnz+vrz+vnz+vnz+vrz+vr0+vr0+/r0+vrz+/r0+/r0+/r0+/r0+/v0+/v0+/v0+/v0+/v0+/v0+/v0 + +/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v1+/v0+/v0+/v0+/v0+/r0+/r0 + +vvz+vrz+vr0+vrz+vrz+vrz+vnz+vnz+vnz+vnz+vnz+vny+vny+vny+vny+vnz+vny+vnz+vnz+vny + +vny+vny+vny+vny+vny+vny+vny+vjy+vjx+vjx+vjx+vjx+ffw+vjx+ffw+ffw+ffw+ffx+fbw+fbw + +fbw+fbw+fbw+fbx+fbw+fbw+fbv+fbw+fbw+fbw+fbw+fbv+fXv+fXv+fTv+PTv+PTu+PTu+PTu+PPu + +PPu+PPu+PPu+PPu+PPu+PPt+PLt+PLt+PLt9/Hs+PLs9/Hs9/Hs9/Hs9vDs9vDr9vDr9vDr9vDr9vDr + 9vDr9vDr9e/q9e/q9e/q9O/p9O7p9O7p9O/p8+7o9O7p9O/p8+7o8+7o8+7o8+7o8u7n8u7n8u7n8e3m + 8e3m8e3m8e3m8e3m8Ozm8Ozl8Ozl8Ozl7+vk8Ozl7+vk8Ozl7+vk7+vk7urj7+vk7urj7urj7urj7urj + 7uri7uni7uni7uni7uji7uji7uni7ujh7ujh7uji7ujh7ejh7efh7efh7efg7efg7efg7efg7efg7efg + 7Ofg7Obf7Obf7Obf7Obf6+Xe6+Xe6+Xe6+Xe6uTe6uTe6eTd6ePd6eTd6ePd6ePd6ePc6ePc6OPc6ePc + 6OPc6OLc6OLc6OLc6OPc6OLc5+Lb5+Lb5+Lb5+Lb5+Lb5+Hb5+Hb5+Hb5uHa5uHa5eDZ5uDa5uDa5eDZ + 5d/Z5d/Z5d/Z5d/Z5N/Y5N/Y5N/Y5N/Y5N/Y5N/Y5d/Z5N/Y5N/Y5d/Z5N7Y5N/Y5N/Y5N7YzcnGzsrG + z8rG0MvHz8zH0MzI0MzI0c3I0s3J0s3J0s3J087J1M/K1M/K1NDK1dHL1tHM1tHM19LM19LN19PN2NPN + 2NTN2NTO2dTO2dTO2dXO2dXO2tbP2tbP2tbQ2tbQ29fQ29fR29jR3NjS3NjS3NjS3djS3tnT3tnT3tnT + 3tnU39rU39rU39rU4NvV4NrV4NvV4NvV4NvV4dzV4dzV4dzV4tzW4t3W493X497X497X497X497Y5N7Y + 5N7Y5N/Y5d/Z5d/Z5eDZ5eDZ5uDZ5uDZ5uDa5uDa5+Hb5+Lb5+Lb5+Lb6OLc6OLc6OPd6ePc6OPd6OPd + 6eTd6eTd6eTe6eTd6eTe6uXe6uXf6eXe6eXf6eXf6ubf6ubg6ubg6ubg6ubg6ubg6ubg6ufg6+fg6+bg + 6+bg6ubg6+bg6+bh6+bh6+bh6+fh7Ofi7Ofi7Oji7Oji7eji7eji7eni7eji7eni7eni7eni7enj7eni + 7urj7urj7urj7urk7urj7urk7uvk7uvk7uvk7uvk7uvk7+vk7uvk7+vk7+zl7+zl8Ozl8Ozm8Ozm8Ozm + 8O3m8O3m8O3m8e3n8e7n8e7n8u7o8u7o8u7o8u7o8u7o8u7o8u7o8u7o8+/p8+/p9O/q9O/q9O/q9PDq + 9O/q9e/r9fDr9fDr9fDr9vDs9vDs9vDs9vDs9vDs9/Ht9/Ht9/Ht9/Ht9/Ht+PLu+PLu+PLu+PLu+PLu + +PLu+fPu+fPv+fTv+fTv+fTv+fTv+fTv+fTv+fTv+fTv+fTv+fTv+fTv+fXv+fTv+fTv+fXv+fXv+fXv + +vbv+vbv+vbv+vbv+vbv+vbv+vfv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+ffv+fjw+fjw+vjw+vnx+vnx + +vnx+vnx+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vnz + +vnz+vnz+vrz+vr0+vrz+vrz+/r0+vrz+vr0+/r0+vrz+vr0+/r0+/r0+/r0+/v0+/v0+/v0+/v0+/v0 + +/v0+/v0+/v0+/v1+/v0+/v1+/v1+/v1+/v1+/v1+/v1+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/r0 + +/r0+vrz+vrz+/r0+vrz+vnz+vr0+vnz+vnz+vnz+vnz+vny+vny+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vny+vny+vny+vny+vjy+vny+vjy+vjx+vjx+vjx+vjx+ffw+ffx+ffx+vfx+vfw+ffw + +fbw+fbw+fbw+fbw+fbw+fbw+fbw+fbw+fXw+fbv+fXw+fXw+fXv+fTv+PTv+PTu+PTu+PTu+PPu+PPu + +PPu+PPu+PPu+PPu+PLt+PLt+PLt9/Ht9/Hs9/Hs9/Hs9/Hr9vDr9vDr9vDr9vDr9vDr9vDr9fDq9e/q + 9e/q9fDq9O/q9O/p9O/p8+7o9O/p9O/p8+/o8+7o8+7o8+7o8u7n8u7n8u7n8u7n8u7n8u7n8e3m8e3m + 8e3m8e3m8e3m8Ozl8Ozl8Ozl8Ozl8Ozl8Ozk7+vk7+vk7+vk7+vk7+vk7+vk7urj7urj7urj7urj7urj + 7urj7unj7uni7uni7uji7uji7uji7ejh7ejh7efh7efg7efg7Ofg7Obg7Obf7Obf7Obf7Obf6+Xf6+Xf + 6+Xf6+Xe6+Xf6+Xe6uTe6uTe6uTe6uTd6uTd6ePd6ePd6ePc6ePd6ePc6ePc6ePc6ePd6ePc6ePc6ePc + 6ePc6OLc6OLc6OLc6OLb6OLc6OLb5+Lb5+Hb5+Hb5+Hb5+Ha5+Ha5uDa5uDa5uDa5uDa5uDa5uDa5eDZ + 5eDZ5uDa5d/Z5eDZ5eDZ5d/Z5d/Z5N/Y5N/Y5N/Y5N/Y5N/Y5N/Y497X497X497X493X497Xy8jDzMjC + zMnDzMnDzMrEzMrEzcrFzsvFz8vGz8vG0MzG0MzH0c3I0c3I0s7I087J08/J1M/J1M/K1dDK1tDL1tHL + 1tHM19LM19LM2NLM2NPN2NPN2dTO2tTO2dTO2tXP2tXP2tbQ2tbQ29fR29fQ29jR3NjR3NjR3djS3djS + 3djS3djT3tnT3tnT3tnU3tnU39rU39rU39rU4NvV4NrV4NvV4dvV4dzV4dzV4dzV4tzW4tzW4t3W4t3W + 4t3W5N7Y497X5N7Y5N7Y5N/Y5N7Y5d/Z5d/Z5d/Z5uDZ5uDa5uDa5+Ha5+Hb6OLb5+Hb5+Lc6OLc6OLc + 6OPc6ePd6OPd6ePd6eTd6eTd6eTd6uTe6eTe6eTe6eTe6eTe6uXf6eXe6uXf6uXf6uXg6ubg6ubg6ubg + 6+bg6+bg6+bh6+bh6+bh7Ofh6+bh7Ofi7Ofi7Ofi7Ofi7eji7eji7eji7eji7eji7eji7eni7eni7eni + 7unj7unj7unj7unj7urj7unj7urj7urj7urk7urk7urk7uvk7+vk7+vk7+vk7+vk7+zl7+zl7+zl7+zl + 7+zl7+zl8O3m8O3m8O3m8O7m8e7n8e7n8e7n8e7n8u7o8u7o8u7o8u7o8u7o8+/p8+7p8+/p8+/p9O/q + 9PDq9PDq9PDq9O/q9fDr9fDr9fDr9fDr9fDr9vDs9fDr9vDs9vDs9vDs9vDs9vDs9/Hs9/Ht9/Ht9/Ht + +PLu+PLu+PLu+PPu+fPv+fPu+fTv+fTw+fTv+fTv+fTv+fTv+fTv+fTv+fTw+fTv+fTv+fXv+fTv+fTv + +fXv+fTv+vXv+vXv+vbv+vbv+vbv+vbv+vbv+ffv+ffv+vfv+ffv+ffv+fjv+fjw+fjw+vjw+vnx+vnx + +vnx+vnx+vnx+vnx+vnx+vny+vny+vnx+vny+vny+vny+vny+vny+vny+vny+vny+vny+vnz+vnz+vnz + +vrz+/r0+vnz+/r0+vr0+/r0+/r0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0 + +/v1+/v1+/v1+/v1+/v1+/v1+/v1+/v1+/v1+/v1+/v1+/v1+/v1+/v1+/v0+/v0+/v1+/v0+/v0+/v0 + +/v0+/v0+/v0+/v0+/v0+/v0+/r0+/v0+/v0+/r0+/v0+vnz+vrz+vnz+vnz+vnz+vny+vny+vny+vny + +vny+vny+vny+vny+vny+vny+vny+vny+vny+vjx+vjx+vfx+vfw+vfx+ffx+ffw+ffw+fbw+fbw+ffw + +fbw+fbw+fbw+fbw+fbw+fbw+fbw+fbw+fXw+fXw+fXw+fXw+fTw+PTv+PTv+PTv+PPu+PPu+PPu+PPu + +PPu+PPu+PPu+PPu+PPt+PPt+PLt+PLs+PLt9/Hs9vDs9/Hs9vDs9vDs9vDr9vDr9fDq9fDq9e/q9PDq + 9O/q9O/p9O/p8+/o9O/o9O/o8+7o8+/o8+7o8u7o8u7n8u7n8u7n8u7n8e3m8e3m8e3m8e3m8Ozl8e3m + 8e3m8Ozl8Ozl8Ozl8Ozl8Ovk7+vk7+vk7+vk7+vk7+rj7+rj7+rj7+rj7uni7uni7uni7uji7uni7ujh + 7ujh7ujh7ujh7ujh7ujh7ejh7efg7efg7efg7Obf7Obf7Obf7Obf6+Xe7Obf7Obf7Obf6+Xe6+Xf6+Xf + 6uTe6uTe6+Xe6uTe6uTd6uTd6uTe6eTd6ePd6ePc6ePc6ePd6ePc6ePc6ePc6ePc6ePd6ePd6ePc6ePc + 6ePc6OPc6OLc6OLc6OLc6OLb6OLb5+Hb5+Ha5uHa5uHa5uHa5uDa5uDa5uDa5uDa5uDa5uDa5uDa5eDZ + 5eDZ5eDZ5d/Z5d/Z5d/Z5d/Z5N7Y5N/Y5N7Y5N7Y497X497Y497X493X4t3W4t3W4t3W4t3XysfBy8bA + y8bBy8fBy8fBy8jCzMjCzMnDzcnDzcnDzsrEzsrEz8rFz8vF0MvG0MzG0czH0szH0s3I087I087I08/I + 1M/J1c/K1dDK1tHK1tHL19LM19LM19LM2NPN2NTN2dPN2dTO2dTO2dXP2tXP2tXP2tXP2tbP2tbQ29bQ + 29fQ29fR3NfR3NfR3NfS3NjS3djS3djS3tnT3tnT39nU39rU4NrU4NvU4NvU4NvU4dvV4dzV4dzV4tzW + 4tzW4t3W4t3W493X497X497X5N7Y5N7Y5N7Y5d/Z5d/Z5d/Z5uDa5uDa5uDa5+Hb5+Ha5+Hb5+Hb6OLb + 6OLc6OLc6OLc6OLc6OLd6ePd6ePd6ePd6ePe6eTe6eTe6eTe6eTe6eTf6eXf6uXf6uXg6uXg6uXf6uXg + 6ubg6+bg6+bg6+bh6+bh6+bh6+bh6+bh7Ofi7Ofi7Ofi7Ofi7efi7efi7eji7efi7eji7eji7eji7uji + 7ujj7ujj7unj7unj7urj7urj7urj7urk7urk7urk7urk7+rk7+rk7+rk7+vk7+vl7+vl7+vl7+zl7+zl + 7+zl7+zl8O3m8O3m8O3m8O3m8O3m8O7m8e7n8e7n8e7n8e7n8u7o8e7n8u7o8u/o8u/o8u/o8+/p8+/p + 8+/p8+/p9PDq9PDq9PDq9fDr9PDq9fDr9fDr9fDr9fDr9fDr9fDr9vDs9vDs9vDs9vDs9vDs9vDs9vDs + 9/Ht9/Ht+PLu+PLu+PLu+PLu+PPu+fPv+fTv+fTv+fTv+fTw+fTw+fTw+fTw+fTw+fTw+fTv+fTw+fTv + +fXv+fXv+fXv+vXv+vXv+vbv+vXv+vbw+vfv+vfv+ffv+ffv+ffv+ffv+ffv+ffw+ffw+fjw+fjw+fjw + +fjw+vnx+vnx+vnx+vnx+vny+vnx+vny+vnx+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vnz + +vny+vnz+vnz+vnz+vrz+vrz+vr0+/v0+vr0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0+/v0 + +/v1+/v1+/v1+/v1+/v1+/v1+/v1+/v1+/v1+/v1+/v1+/v1+/v0+/v0+/v1+/v0+/v0+/v0+/v0+/v0 + +/v0+/v1+/v0+/v0+/v0+/v0+/v0+/v0+/r0+vrz+vrz+vrz+vrz+vnz+vnz+vnz+vny+vny+vny+vny + +vny+vny+vny+vny+vny+vny+vjy+vjy+vjx+vjx+vjx+ffx+ffw+ffx+ffw+ffw+fbx+fbw+fbw+fbx + +fbw+fbw+fbw+fbw+fbw+fXw+fbw+fXw+fXw+fXw+fTv+fTw+PTv+PTv+PPv+PPv+PPv+PPu+PPu+PPu + +PPu+PPu+PPu+PPu+PLt+PLt+PLt9/Ht9/Hs9/Hs9/Hs9/Hs9vHs9vDr9vDr9vDr9vDr9e/q9fDq9O/p + 9PDp9PDp8+/o8+/o8+/o8+/o8+7o8+/o8u7o8u7n8u7n8u7m8u7n8e3m8e3m8e3m8e3m8e3m8e3m8Ozl + 8O3m8Ozl8Ozl8Ozl8Ovk8Ovk8Ovk7+vk7+rj7+rj7+rj7+rj7uni7+ni7uni7+ni7uni7uji7ujh7ujh + 7ujh7ujh7efg7efg7efg7efg7Obf7Obf7Obf7Obf7Obf7Obf6+Xe6+Xe6+Xe6+Xe6+Xe6+Xe6+Xe6+Xe + 6+Xe6+Xe6+Xe6+Xe6uTe6uTd6ePd6uTd6ePc6ePc6OLc6ePc6OLc6OLc6OLc6OLc6OLc6OPc6OLc6OPc + 6OLc6OLc6OLb6OLb6OLb5+Hb5+Ha5+Ha5uDa5uDa5uDZ5eDZ5eDZ5eDZ5eDZ5eDZ5eDZ5eDZ5d/Z5d/Z + 5d/Z5N/Y5N7Y5N7Y5N7Y5N7Y497Y497X497X493X493X4t3X4t3W4t3X4t3X4tzW4tzW4dzWyMS+ycS+ + ycS+ysW/ysW/y8W/ysbAy8bAy8fBzMfBzMjCzMjCzMjDzcnDzsnDzsnEz8rF0MvG0MvG0MvG0czH0c3H + 0s3H0s3H087I087I1M/I1M/J1c/K1dHK1tDL1tHL1tHM19LM19LM2NLN2NLN2NPN2NPN2dTO2dPO2dTO + 2dTO2dXP2dTP2dXQ2tXP2tbQ29bR29bQ3NbR3NfS3NjS3djT3tnT3tnT3tnU39rU39rU39rU4NvU4NvU + 4NzV4dzW4tzW4tzW4t3X4tzX493X493Y5N7Y497Y5N7Z5N7Z5d/Z5d/a5d/a5d/a5uDb5eDa5uDa5uDb + 5uDb5+Hb5+Hc5+Hc5+Hc5+Hc6OLc6OLc6OLc6OLd6ePd6ePe6eTe6eTe6eTe6eTf6eTf6eTg6uXg6uXf + 6uXg6ubg6uXf6uXg6+bg6+bg6+bg6+bg6+bh6+bh7Obh7Obi7Obh7Obi7Ofi7Ofi7efi7efh7eji7eji + 7uji7uji7eji7uji7uji7uji7unj7unj7unj7+rk7urk7+rk7+rk7+rk7+rk7+rl7+vl7+vl7+vl7+vl + 7+vl7+zl7+zl7+zm7+zm7+zm8O3m8O3m8O3m8O3m8O3m8e7n8e7n8e7n8u/o8e7n8e7n8u7o8u/o8u/o + 8/Dp8+/p8+/p9O/q8/Dp9PDq9PDq9PDq9PDq9PDq9PDq9fDr9fDr9fDr9fDr9fDr9vDs9vDs9vDs9vDs + 9/Hs9/Hs+PLt+PLt+PLu+PLu+PLu+fPv+fTv+fTv+fPv+fTw+fTw+fTw+fTw+fTw+fTw+fTw+fTw+fTw + +fTw+fXv+fXv+vXv+vbv+vbv+vbv+vbv+vfv+vfw+vfw+vfv+ffv+vfw+vfv+ffw+ffw+ffw+ffw+fjw + +fjw+fjw+vjw+vnx+vnx+vnx+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vny+vny+vny+vnz+vnz+vnz+vrz+vr0+/r0+/v0+/v0+vr0+/v0+/v0+/v0+/r0+/v0 + +/v0+/v0+/v0+/v1+/v1+/v1+/v1+/v0+/v1+/v1+/v0+/r0+/v0+/r0+/r0+/r0+/r0+/v0+/v0+/v0 + +/r0+/v0+/v0+/v0+/r0+/r0+vrz+vnz+vnz+vny+vny+vny+vnz+vny+vny+vnz+vny+vny+vny+vny + +vny+vny+vny+vny+vjx+vny+vjx+vjx+vfx+vjx+vjx+ffx+ffx+fbx+fbx+ffx+fbw+fbx+fbw+fbx + +fbw+fbw+fbw+fbw+fbx+fXw+fXw+fXw+fXw+fTw+PTw+fTw+PPv+PPv+PPv+PPv+PPu+PLu+PLu+PLu + +PLu+PLu9/Lt9/Ht9/Ht9/Ht9/Ht9/Ht9/Hs9vHs9vHs9/Hs9vDr9vDr9vDr9fDr9fDq9fDq9fDq9PDp + 9PDp9PDp8+/o8/Do8+/o8+/o8u7o8+/o8u7n8u7n8u7m8u7n8e3m8e3m8e3m8e3m8O3m8Ozl8Ozl8Ozl + 8Ozl8Ozl8Ovk8Ovk8Ovk8Ovk7+rj7+rj8Orj7+rj7+rj7+ni7+ni7+ni7+ni7uni7ujh7ujh7ujh7ujh + 7ujh7efg7efg7efg7efg7ebg7efg7Obf7Obf7Obf7Obf6+Xe7Obf6+Xe6+Xe6+Xe6+Xe6+Xe6+Xe6+Xe + 6+Xe6+Xe6+Xe6uTe6uTe6uTd6ePd6ePd6ePc6ePc6OLc6OLc6OLc6OLb6OLc6OLb6OLc6OLc6OLc6OLc + 6OLb6OLb6OLb5+Hb5+Hb5+Ha5uDa5uDa5uDa5uDZ5uDZ5uDZ5d/Y5d/Z5d/Y5d/Y5N7Y5N7Y5N7Y5N7Y + 5N7Y5N7X493X493X4t3X4t3W4tzX4tzX4tzW4tzW4dzW4dzW4dzW4NzV4dzW4dzW4NzV4NvVx8K8xsG7 + x8K8yMK8yMO9ycO9ycS+ycS+ysW/y8bAy8bAy8bAy8fBzMfBzMjCzcjCzcnDzsnDzsnEz8rF0MrF0MrF + 0cvG0cvG0cvG0szH0s3H083H083H087I1M/J1M/J1M/J1dDK1dDK1tDL1dHK1tHL1tLL19LM19LM19PM + 2NPN2NLN2NPN2NTO2NTO2dXP2dXP2tXQ29bQ29fR29bR3NfS3NfS3djT3djT3djU3tjU3tnU3tnT39nU + 39rU4NrV4NrV4dvW4dvW4dzW4tzW4tzX493Y493Y5N7Z5N7Z5N7Z5N7Z5N7Z5N7Z5N7Z5N/Z5d/a5d/a + 5eDa5d/a5uDb5eDa5uDb5uDb5+Hb5+Hc5+Hc6OLd6OLd6ePd6eLe6ePe6ePe6eTe6eTe6eTe6eTf6eTf + 6eTf6uXf6uXf6uXf6uXf6+bg6+bg6+bh6+bh6+Xg7Obh7Obh7Obh7Ofi7efi7efi7uji7efh7efi7efi + 7efh7uji7eji7uji7uji7uji7uji7unj7unj7unj7unk7unj7+nj7unk7+nk7+nk7+rk7+rk7+rk7+rk + 7+vl7+vl7+vl7+vl7+vl7+vm8Ozm8Ozm8Ozm8O3m8O3m8O3m8e3n8e7n8O7m8e7n8e7n8u7o8u7o8u/o + 8u/o8u/o8+/p8u/o8+/p8/Dp8/Dp9PDq8/Dp9PDq9O/q9PDq9PDq9PDq9fDr9fDr9fDr9fDr9fDr9vDs + 9vDr9vDs9vDs9/Ht9/Ht9/Ht+PLu+PLu+PLu+fPv+PPu+fPv+fTv+fTv+fTv+fTv+fTw+fTw+fTw+fTw + +fTw+fTw+fXv+fTv+fXw+vbv+vbv+vbw+vbv+vfv+vfw+vbv+vfw+vfw+vfv+ffw+ffw+ffw+ffw+ffw + +fjw+ffw+fjw+vnx+vnx+vnx+vnx+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vny+vny+vnz+vnz+vnz+vnz+vnz+vrz+vrz+vnz+/r0+vrz+/r0+vrz+/r0+vrz+/v0 + +/r0+vr0+/r0+/r0+/v0+/v1+/v0+/v0+/v0+/v0+/v0+vr0+vrz+vrz+vr0+/r0+/r0+/r0+/r0+/v0 + +vrz+/rz+/r0+vrz+vrz+vrz+vrz+vnz+vnz+vnz+vnz+vnz+vnz+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vjy+vjx+vjx+vjx+vjx+vjx+vjx+vjx+ffx+ffx+fbx+ffx+fbx+ffx+fbw+fbx+fbx+fXx + +fbw+fbw+fbx+fXw+fbw+fXw+fTw+fTw+fXw+PTw+PTv+PTv+PPv+PPv+PPv+PPu+PPu+PLu9/Ht+PLu + 9/Ht+PLu9/Ht9/Ht9/Ht9/Ht9vDs9/Hs9/Ht9vHs9vDr9vHr9fDr9fDr9fHr9fDq9fDr9fDq9PDp9PDp + 9PDp9PDp8+/o9PDp8+/o8+/o8u7n8+/o8u7n8u7n8u7n8e3m8e3m8e3m8e3m8e3m8Ozl8Ozl8Ozl8Ovk + 8Ozl8Ovk8Ovk8Ovk8Ovk8Ovk7+rj8Orj7+rj7+rj7+ni7+ni7+ni7uni7uni7uji7ujh7uji7ujh7efg + 7ejg7efg7efg7efg7efg7efg7efg7efg7Obf7Obf7Obf6+Xe6+Xe6+Xe6+Xe7Obf6+Xe6+Xe6+Xe6+Xe + 6+Xe6+Xe6+Xe6uTd6uTe6uTd6uTd6ePd6ePc6ePd6ePc6ePc6ePc6OLc6OLc6OLc6eLc6OLc6OLc6OLc + 6OLb6OLb5+Ha5+Hb5+Ha5uHa5uDa5uDZ5uDa5uDZ5d/Z5d/Y5d/Y5N7Y5d/Y5d/Y5N7Y5N7Y493X493X + 493Y4tzX493X493X4tzX4tzX4tzW4dzW4dzW4dzW4dzW4dvW4NvV4NvV39rU39rU39rU3trTxL+5xL+5 + xMC6xcC6xcC6xsG7x8K8x8K8yMO9yMO9ycS+ycS+ysW/ysW/ysbAy8bAy8fBzMfBzMjCzMjCzcjDzsjD + z8nEz8nDz8nEz8rF0MrF0MrF0MvG0cvG0czG0czG0s3H083H087H1M7I1M7I1M/J1M/J1dDK1dDL1tHL + 1tHL1tLM19LN19LN19PN19PO2NPO2NTP2NTP2NTP2dTP2dXQ2tXR2tXR29bS29bS3NbT3NbT3NfT3dfT + 3djT3djT3tjU3tjU39nV39nV39rV4NrV4NrV4drW4NrV4dvW4dvW4dzW4tzX4tzX4t3X4t3Y497Y493Y + 497Y5N/Z5N/Z5N/Z5eDa5eDa5eDa5uDa5uDb5+Hc5+Hc5+Hc5+Lc5+Lc6OLd6OPd6OPd6OPe6OPe6OPe + 6eTe6eTe6eTe6eXf6uXf6uXg6uXg6ubg6+Xg6+Xg6+Xg6+Xg7Obh7Obh7Obh7Obh7Obi7Obi7efi7efi + 7efh7efi7eji7uji7uji7ejj7uji7unj7unj7unj7+nj7unj7+nj7+nj7+rk7+rk7+nj7+nj7+rk7+rk + 7+rk7+rk7+rk7+rk7+vl8Ovl8Ovl8Ozm8Ozm8Ozm8Ozm8Ozm8Ozm8Ozm8O3m8O3m8O3m8O7n8e7n8e7n + 8e7n8e7n8e7n8u/o8u/o8u/o8u/o8u/o8u/o8/Dp8/Dp9PDq9PDq9PDq9PDq9fDr9fDr9fDr9fDr9fDr + 9fDr9vDs9vDs9vDs9vDs9vDs9/Ht9/Ht+PLt+PLu+PLu+PLu+PLu+PPu+fPv+fPv+fPv+fPv+fTw+fTw + +fTw+fTw+fTw+fTw+fTw+vXv+vXw+vbv+vbw+vbw+vbw+vbw+vfw+vfw+vfw+vfw+vfw+ffw+ffw+ffw + +ffw+ffw+ffw+fjw+fjw+fjw+fjx+fjx+fjx+vjx+vnx+vnx+vny+vnx+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vny+vny+vny+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vr0+vr0+vrz+/r0 + +vrz+vrz+vr0+/v0+vrz+vrz+vr0+vrz+/r0+vrz+/r0+vrz+vrz+vnz+vnz+vnz+vrz+vnz+vnz+vnz + +vnz+vnz+vnz+vny+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vnz+vny+vny+vny+vny+vny+vny+vny+vjy + +vjy+vjx+vjx+vjx+vjx+ffx+ffx+ffx+ffx+ffx+ffx+ffx+fbw+fbx+fbx+fbx+fbx+fbx+fbx+fbx + +fbx+fbx+fbx+fXw+fXw+fXw+PTw+fTw+PPv+PTv+PPv+PPv+PPv+PPu+PLu+PLu+PLu9/Ht9/Ht9/Ht + 9/Ht9/Ht9/Ht9/Ht9vHs9vHs9vHs9vHs9vHs9vDs9fDr9fDr9fDr9PDq9PDq9PDp9PDq9PDp9O/p9PDp + 9O/p8+/o8+/o8+/o8+/o8u7o8u7n8u7n8e3m8e3m8e3m8e3m8e3m8Ozm8Ozl8Ozl8Ozl8Ovk8Ovk8Ovk + 8Ovk8Orj8Orj8Orj8Orj8Orj7+rj7+ni7+ni7+ni7+ni7uji7ujh7ujh7ujh7ujh7ujh7ujh7ujh7efg + 7efg7ujh7efg7efg7efg7efg7Obg7Obf7Obf7Obf6+Xe6+Xe6+Xe6+Xe6+Xe6uTd6+Xe6uTd6uTd6uTd + 6uTd6uTd6uTd6uTd6uTd6ePd6uTd6ePd6ePc6ePd6ePc6OLc6OLc6OLc6OLc6OLb6OLb5+Lb5+Hb5+Hb + 5+Ha5uDa5uDa5uDa5uDa5uDa5uDZ5d/Z5d/Z5N/Y5N7Y5N7Y5N7Y5N7Y5N7Y5N7Y493Y493X493X493X + 4tzX4tzX4tzW4dvW4dvW4dvW4NvV4NvV4NrV4NrV39rU39nU3tnT3tnT3tjT3tjS3djS3djSwby3wby2 + wby3wr24wr64w765w765xL+5xcC6xcC6xsG7x8K8x8K8yMK8yMO9ycO9ycO9ycS+ycS+ysW/ysW/y8bA + y8fBzMfBzMfCzcjCzsjDzsjDzsnEz8nEz8nF0MrF0MrF0MvG0cvG0MvG0czG0szH0s3I087I087I1M/J + 1c/K1dDL1dDL1tDL1tHL1tLM1tLM19LM19LN19PO19PO19PO2NTP2NTP2NTQ2dXQ2dXQ2tXR2tXR29XS + 2tbS29bS29fS3NfS3NfS3NjS3NjS3djT3tnT3tjT3tnT3trU39rU39rU4NvV4NvW4NzV4NvW4dzW4tzX + 4t3X493Y4t3Y497Y497Y5N/Z5N/Z5d/Z5d/a5eDa5eDa5uDb5uHb5uHb5+Hc5+Lc5+Lc6OLd6OPd6OPd + 6OPd6OPe6OTe6OTe6eTf6eTe6eTf6uXf6uXg6uXf6uXg6+Xg6+Xg6+Xg6+Xg7Obh7Obh7Obh7Obi7Obh + 7Obh7Ofh7Obh7efh7efi7efi7eji7uji7uji7uji7uji7uji7+nj7+ji7unj7+nj7+nj7+nj7+rk7+nj + 7+nj7+rk8Ork7+rk7+rk8Ork7+rk8Ovl8Ovl8Ovl8Ovl8Ozm8Ozm8Ozm8Ozm8O3m8O3m8O7n8O7n8e7n + 8e7n8e7n8e7n8u/o8u/o8u/o8u/o8u/o8u/o8/Dp8/Dp9PDq9PDq9PDq9PDq9PDq9fDr9fDr9fDr9fDr + 9vDs9vDs9vDs9vDs9vDs9vDs9vDs9vDs9/Ht9/Ht9/Ht+PLu+PLu+PLt+PLu+PLu+PLu+PLu+fPv+fPv + +fTv+fTv+fTw+fTw+fTw+fTw+fTw+fTv+vXw+vXw+vbw+vbv+vbw+vbw+vbw+vbw+vfw+vbw+ffw+ffw + +ffw+ffw+ffw+ffw+ffw+ffw+fjw+fjx+fjx+fjw+vnx+vnx+vnx+vnx+vnx+vnx+vnx+vny+vny+vny + +vny+vny+vny+vny+vny+vny+vny+vny+vnz+vny+vnz+vnz+vnz+vnz+vnz+vnz+vrz+vrz+vrz+vrz + +vnz+vnz+vrz+vrz+vnz+vrz+vnz+vnz+vrz+vrz+vnz+vry+vnz+vny+vrz+vrz+vny+vnz+vny+vny + +vny+vny+vny+vny+vny+vny+vnz+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vjx + +vjx+vjx+vjx+vjy+vjx+ffx+ffx+ffx+ffx+ffx+ffx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx + +fXx+fXx+fXw+fXw+fXw+fTw+PTv+PTv+PPv+PPv+PPv+PPv+PPv+PPu9/Lu+PLu9/Ht9/Ht9/Ht9/Hs + 9/Ht9vHs9/Hs9vHs9vHs9vHs9vHs9vHs9vHs9vDs9fDr9fHr9fDr9PDq9PDq9PDq9PDp9PDp8+/p8+/p + 8+/p8+/o8u7o8u7o8u7n8e3m8e3m8e3m8Ozm8e3m8e3m8ezl8Ozl8Ozl8Ozl8Ozl8Ovk8Ovk8Ovk8Orj + 8Ovk8Orj8Orj8Orj8Orj8Orj7+ni7+ni7+ni7uni7uni7ujh7ujh7ujh7ujh7ujh7ujh7efg7efg7efg + 7efg7efg7efg7efg7Obf7Obf7Obf7Obf7Obf7Obf7Obf6+Xe6+Xe6+Xe6+Xe6uTd6uTe6uTd6uTd6uTd + 6ePd6ePd6eTd6uTd6eTd6ePc6ePc6ePc6OLc6OLc6OLc6OLb6OLb5+Hb5+Hb5+Ha5+Ha5uHa5uHa5uDa + 5uDa5uDa5eDZ5uDa5d/Z5d/Z5d/Y5N7Z5N7Y5N7Y5N7Y5N7Y493Y493Y493X493Y4tzX4tzX4tzX4dvW + 4dvW4dvW4dvW4NrV39rU39rU39rU3tnT3tnT3tnT3dnS3dnS3djS3NjR3NfR3NfR3NfR29fQvrq1vbm0 + vrq0vrq0v7q1v7u2wLu2wby2wby3wr23w764w764xL+5xL+5xL+5xcC6xsG7x8G8x8K8x8K8yMO8yMO9 + ycS+ycS+ysS/ysXAysXAy8bBy8fBzMfCzcfDzcfDzcfDzsjEzsjEzsjEz8nFz8nEz8rF0MvG0MvG0czG + 0czG0s3I083I087I087J1M/J1M/J1c/K1NDK1dDK1dHL1tHL1tLL1tLM1tPN1tPN1tTN19TO2NTO2NTP + 2NXP2NXP2NXQ2dXQ2dXQ2tbR2tbQ29fS29bR29fS3NfS3NjS3djT3dnT3tnT3trU3trU39rV39vV4NvW + 4NvW4dzW4NzX4dzW4d3X4t3X4t3X4t3X4t7X4t7X497Y49/Y5N/Y5ODZ5ODZ5eDa5uDb5uHb5uHc5+Hc + 5+Lc5+Lc5+Lc6OLd6OLd6OLd6OPd6OPe6eTe6OPe6eTe6eTe6eTf6uTf6uTf6uTf6+Xg6+Xg6+Xg6+Xg + 7Obg7Obg7Obh7Obh7Obg7efh7Obg7efh7efh7efh7efh7uji7uji7uji7uji7uji7uji7+nj7+nj7+nj + 8Ork8Ork7+rk8Ork8Ork8Ork8Ovl8Ovl8Ovl8Ovl8Ozm8Ozm8Ozm8Ozm8Ozm8O3m8O3m8O3m8O3n8O3n + 8O3n8e7n8e7n8e7n8e7n8e7n8e7n8e7n8u/o8u/o8u/o8/Dp8/Dp9PDq9PDq9PDq9PDq9PDq9fDr9fDr + 9fDr9fDr9fDr9fHr9vHs9vHs9vDs9vDs9vDs9/Ht9/Ht9/Ht9/Ht9/Ht9/Ht+PLu+PLu+PLu+fPv+PLu + +fPv+fTv+fPv+fTv+fTw+fTw+fTw+fTw+fTv+fXv+vXv+fXw+vXw+vXw+vbw+vbw+vbw+vbw+vbw+fbw + +ffw+ffx+ffw+ffw+ffx+ffw+ffx+ffx+fjx+fjx+fjx+fjx+fjx+fjx+fjx+fjx+vnx+vnx+vnx+vnx + +vnx+vnx+vny+vnx+vnx+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny + +vny+vny+vny+vny+vny+vny+vny+vny+vny+vjy+vny+vjy+vny+vjy+vjy+vjy+vjy+vjx+vjy+vjy + +ffx+ffy+ffx+ffx+ffy+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fXx+fbx+fXw+fXx+fXw+fXw + +fTw+PTv+PTv+PTv+PTv+PPv+PPv+PPv+PPv+PPv+PPv+PPu+PLu+PLu+PLu+PLu9/Lt9/Ht9/Hs9/Ht + 9/Ht9/Hs9vHs9vHs9vHr9fHr9vHr9fHr9vHr9fHr9fHr9fHq9PDq9PDq9PDq8+/p9PDp8+/p8+/p8u7o + 8u7o8u7o8u7o8e3n8e3m8ezm8ezm8ezm8ezm8ezm8Ozl8Ozl8ezl8Ozk8Ovk8Ovk8Ovk8Ovk8Orj8Orj + 8Ork7+ni8Orj7+ni8Orj8Orj7+ni7+ni7+ji7+ni7ujh7unh7ujh7ujh7ejh7ujh7efg7efg7efg7efg + 7Obf7Obf7Obf7Obf7Obf7Obe6+Xe6+Xe6+Xe6+Xe6uTd6uTd6uTd6uTd6ePd6ePc6ePd6ePc6ePc6OPc + 6OLc6OLc6OLc6OLc6OLc6OLb5+Lc6OLb5+Hb5uHa5uHa5uHa5uDa5uDa5eDZ5d/a5N/Z5N/Z5N/Z5N7Y + 5N7Z5N7Y493X497Y497Y493Y4tzX493X4tzX4tzX4tzW4tzW4dvW4dzW4dvW4NvW4NvV4NvV39rV4NrU + 39rU39rU3tnT3tnT3djS3dnS3djS3djS3NjR3NfQ29fQ29fQ29bQ29bP29XP2tXP2tXO2tTOu7eyu7ex + u7eyvLiyvbizvbm0vbm0vrq0v7q1v7q1wLu2wLu3wLu3wr23wr23wr23w764w765xL+6xL+6xcC6xsG8 + xsG8x8K8yMK9yMK+yMO+ycS/ycXAycXAysXAysbAysbBy8bBy8fCy8fCzMfCzMfCzcjDzcjDzsnEzsnE + zsrEz8rE0MvF0MzF0czF0czG0s3H0s3H0s7H087I087I1M/I1NDJ1NDJ1dDK1dHK1dLL1tLL1tLM1tPM + 1tPM1tPN19TN19TO2NTO2NPO2NTP2dTP2dXQ2dTP2tbQ2tbQ29bR3NfR3NfS3NfS3djT3djT3dnT3tnU + 3tnU39rV39rU39rV4NvW4NvW4NvV4NvW4dzW4dzW4d3X4t3X4t3Y4t7Y497Y497Y5N/Z5N/Z5ODZ5eDa + 5uHa5uHa5uHa5uLb5+Lb5uHc5+Lc5+Lb5+Lc5+Pc5+Pc5+Pc6OPd6OTd6OTe6OTd6eTe6eTf6uTf6uTf + 6uTf6uTf6+Xg6uTg6+Xg6+Xg7Obg7Obg7Obg7Obg7Obg7Obg7efh7efh7efh7uji7uji7uji7uji7+nj + 7+nj7+nj8Ork8Ork8Ork8Ork8Ork8Ovl8Ovl8Ovl8Ovl8Ozm8Ozm8Ozm8Ozm8Ozm8Ozm8Ozm8Ozn8O3n + 8Ozn8O3n8e3n8e7n8e7n8e7n8e7n8e7n8e7n8e7n8u/o8u/o8u/o8vDo8vDo8/Dp9PDq8/Dp8/Dp9PDq + 9PDq9PDq9PDq9PDq9fHr9fDr9fHr9vHs9vDs9vHs9vHs9/Ht9/Ht+PLt9/Hu+PLt+PLt+PLu+PLu+PLv + +PLu+fPv+fTv+fTv+fTw+fTw+fTw+fTw+fTw+fXw+fXv+fTw+fXw+fXv+vXw+vbw+vbw+vbw+vbw+vbx + +fbw+ffx+ffx+ffx+ffx+ffx+ffx+ffx+ffx+ffx+fjx+fjx+fjx+fjx+fjx+fjx+fjx+fjx+fjx+vnx + +vjx+vnx+fjy+vnx+vnx+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vny+vnz+vny + +vny+vny+vny+vny+vjz+vny+vny+vny+vny+vny+vnz+vny+vny+vny+vny+vny+vny+vny+vny+vnz + +vny+vny+vny+vny+vny+vny+vny+vjy+vny+vjy+vjy+vjy+vjy+vjy+vfy+vjy+vjy+vjy+ffy+ffy + +ffy+ffy+ffy+ffy+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fXw+fXw+PTv+PTv + +PTv+PTv+PPv+PPv+PPv+PPv+PPv+PPu+PPu+PPu+PPu+PLu9/Lt+PLu9/Lt9/Ht9/Ht9/Lt9/Lt9vLs + 9/Ht9/Ht9vHs9vLs9vLr9vHr9vHr9fHr9fHr9fHr9PDq9fHr9PDq9PDq9PDq8+/p8+/p8u7o8u7o8u7o + 8u7o8u7o8u3n8e3n8e3m8ezm8e3m8ezm8ezm8ezm8ezm8ezl8Ovk8evk8Ovk8evk8Ovk8Ovk8Orj8Orj + 8Orj7+ni8Ori8Orj7+ni7+ni7+ni7+ni7+ni7ujh7ujh7ujh7ujh7ejg7ejg7efg7efg7efg7Obf7Obf + 7Obf7Obf6+Xf6+Xe6+Xe6uTe6uTe6uTd6uTd6uTd6uTd6ePc6ePc6ePc6OLb6OLb6OLc6OLb6OLb6OLb + 6OLb6OLb6OLa5+Hb5+Ha5uHb5uHa5uHa5uDa5uDa5eDa5eDa5d/Z5d/Z5N/Z5N7Z497Y5N7Z497Y493Y + 493Y4tzX4tzX4dzW4tzW4dvW4dvW4dvW4dvV4NvV4NrV4NrV39rU39rU39rU3trT39rU3tnT3tnT3tnT + 3djS3djS3NjR3NjR29fQ3NfR3NfQ3NbQ29bQ29XP2tXP2tXO2tTO2tTO2dTN2dTN2dPN2NPMubWvuLOu + ubWvubWvurawu7axu7axu7eyu7iyvLiyvLizvbm0vbi0vrm0vrm2v7u3v7u3wLy3wby4wb24wr25w765 + w765xL+6xcC7xMC7xcG7xsK8x8K9x8O9x8O+x8O9x8S+yMS+ycS+ycS/ycW/ycW/ysW/ysbAy8bBzMbB + zMfCzcfCzcjCzsjDzsnDz8nDz8rE0MrE0MvE0MvF0czF0s3G0s3G0s3G083H083H1M7I1M/I1M/I1c/J + 1dDJ1dDK1dHK1dHK1tHL1tLL19LM1tLM19LN2NPN2NPN2NPO2dTP2dXP2tXQ2tbP2tbQ2tbQ29fR3NfR + 3NfS3djS3djS3djS3djT3djT3tnT3tnU3tnU39rU4NrV4NvV4NvV4NvW4dzX4dzW4t3X4t3Y4t3Y4t7Y + 497Y497Y5N7Z5N7Y5N/Z5N/Z5eDa5d/Z5eDa5eHa5eDa5uHa5uHb5uLb5uLc5uPc5+Lc6OPd6OPd6OPd + 6OPe6OPe6eTe6eTe6eTf6eTe6uXf6uXf6uXf6uXf6+Xf6+Xf6+bf7Obg7Obg7Obg7Obg7efh7efh7efh + 7uji7uji7uji7uji7+nj7+nj7+nj7+nj7+rk8Ork8Ork8Ork8Ork8Ovl8Ovl8Ovl8Ovl8Ozm8Ozm8Ozm + 8Ozm8ezm8e3n8e3n8e3n8e3n8O3n8e7n8e3n8e7n8e7n8u/o8u/o8u/o8u/o8/Dp8u/o8/Dp8/Dp8/Dp + 9PDq9PDq9PDq9PDq9PDq9fDr9fHr9fHs9vHs9vHs9vHs9vHs9/Lt9/Lt+PLt9/Lt9/Ht9/Ht+PLu+PLu + +PLu+PLu+PLu+fPv+fPv+fPv+fTw+fTv+fTv+fTw+fTw+fTv+fTw+fXw+fTv+fXv+fXv+fXv+fXv+fXv + +vbw+fbw+vbw+ffx+ffx+fbw+ffx+ffx+ffx+ffx+ffx+ffx+ffy+fjx+fjx+ffx+fjy+fjx+fjx+fjy + +vjy+fjy+vnx+vnx+vny+vny+vnx+vny+vnx+vny+vny+vny+vny+vny+vjx+vjy+vny+vny+vjy+vny + +vny+vjy+vny+vny+vny+vny+vny+vny+vny+vny+vnz+vny+vny+vny+vnz+vny+vnz+vnz+vny+vjy + +vny+vjy+vjy+vjy+vjy+vny+vjz+vjy+vjy+vjy+vjy+ffy+vjy+ffx+fjy+vfy+ffy+ffy+fby+fby + +fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fXx+fbx+fXx+fbx+fbx+fXw+fXw+fTw+fXw+fTw+PTv+PTv + +PTv+PPv+PPv+PPv+PPv+PPu+PPu+PPu+PPu+PPu+PPu9/Lt9/Lt9/Lt9/Lt9/Hs9/Ls9vLs9vHs9fHr + 9vLs9fHr9fDr9fHr9fHr9PDq9fHr9PDq9PDq9PDq9PDq9PDq9PDp8+/p8+/p8u7o8+/o8+/p8u7o8u3n + 8u3n8u3n8ezm8ezm8uzm8ezm8evl8ezl8evl8evk8evk8Ork8evk8Ork8Orj8evj8Orj8Orj8Orj8Orj + 8Orj8Orj7+ni7+ni7+ni7ujh7+ni7ujh7ujh7ujh7efg7efg7efg7efg7efg7Obf7Obf7Obf7Obf7Obe + 7Obf6+Xf6+Xe6uXe6uTe6uTd6uTd6uTd6eTd6ePd6OPc6OLc6OLb6OLb5+Lb5+Hb5+Hb5+Ha5+Ha5uDa + 5uDa5uDa5uDa5uDa5uDa5d/Z5d/Z5d/Z5d/Z5d/Z5N/Z5N/Z5N7Y5N7Y497Y493Y493X4tzX4t3X4tzX + 4dvW4NvW4drW4NvW4NrV4NrV39rU39rU3tnT3trT3tnT3tnT3djS3dnT3djS3NjR3NfR3NfR3NfQ3NfQ + 29bP29bP29XP2tXO2tXO2tTO2tTO2dTO2dPN2dPN2NPM19LL2NLM19HL1tHK1tDL1tDK1tDKt7KttrKs + t7Ott7OuuLStubSvubSuubWvurWvurawurWwureyu7iyu7ezu7izvLm0vbm1vbq1vrq2vrq2v7u2v7y2 + wLy3wLy3wb23wr24wr64w765xL+5xL+6xb+6xcC6xsC7xsK8x8K8x8K8x8K+yMO+x8O9yMS+yMS+ycW/ + ycXAysW/y8XAzMbBzMbBzMbCzMfCzcfCzsjCzsnCzsnDz8nDz8rE0MvE0MvE0MvE0czG0szG0s3G0s3H + 087H087I1M7I1M7J1M/J1M7J08/J1M/K1dDL1dDL1tHM1tHM1tHM19HN19LN2NPO2dTP2dTP2dTP2tXP + 29XQ29bQ29bQ29fR29fR29bR3NfS3NjS3djT3djT3tjT3tjU39nU39rV4NrV4NrV4dvW4dvW4dzX4dzX + 4tzX4tzX4tzX4tzX493Y4t3X493Y497Y497Z5N7Z5N7Z5N/Z5N/Z5N/a5ODa5ODa5eHb5eHb5uLc5uLc + 5uLc5uLc5+Pd6OPd5+Ld6OPd6OPd6OPd6OPd6OPd6OTe6eTe6uTe6uXe6uXe6uXe6ubf6+bf6+bg6+bg + 7Obg7Obg7efg7Ofg7efh7ufi7efh7uji7uji7uji7uji7uji7unj7+nj8Ork8Ork8Ovl8Ork8Ovl8Ovl + 8Ozm8Ozm8Ozm8ezm8Ozm8Ozm8e3n8e3n8e7n8e3n8e7n8e7o8e7n8e7o8u7o8u7o8e7o8u/o8vDo8u/o + 8/Dp8/Dp9PDq8/Dp9PDq9fDr9fDr9fHr9fHr9vHs9vHs9vLs9/Ls9/Lt9/Lt9vLs9/Ls9/Lt9/Lt9/Lt + 9/Lt9/Ht+PLt+PLu+PLu+PLu+fPv+fPv+fPv+fTv+fTw+fTw+fTv+fTv+fTw+fTv+fTv+fXv+fXv+fXv + +fXv+fXw+vbw+fbw+fbw+fbw+fbw+fbw+ffx+ffx+ffx+ffx+ffx+ffx+ffx+ffx+ffx+ffx+fjx+fjx + +fjx+fjy+fjy+fjx+vjy+vjy+fjy+vjy+vny+fjy+vjy+vjy+fjy+vjx+vjx+vjy+vjy+fjy+vjy+vjy + +vny+vjy+vjy+vjy+vjx+vjy+vjy+vny+vjy+vjy+vjy+vjy+vny+vjy+vjy+vjy+vjy+vjy+vjy+vjy + +vjy+vjy+vfy+vjz+ffy+ffy+ffy+ffy+ffy+ffy+fbx+ffy+ffx+ffy+fbx+fbx+fbx+fbx+fbx+fbx + +fbx+fbx+fbx+fbx+fbx+fbx+fXw+fbx+fXw+fXw+fXw+fXw+fTw+fTw+fTw+PTw+PTv+PPv+PPv+PTv + +PPv+PPv+PPv+PPv+PPv+PPv+PPu+PPu+PPu9/Lt9/Lt9/Lt9/Lt9/Lt9vLs9vLs9vLs9vHs9vHs9fHr + 9fHr9fHr9PDq9PDq9PDq8+/p9PDq8+/p8+/p8+/p8u7o8+/p8u7o8u7o8u7o8u3n8+7o8u3o8u3n8u3n + 8u3n8uzm8uzm8uzm8uzm8uzm8evl8evk8Ovl8evl8Ork8Ork8Ork8Ork7+nj7+nj8Ori8Orj7+ni7+ni + 7+ni7+ni7ujh7+ni7ujh7ujh7ujh7efg7efg7efg7Obg7Obf7Obf7Obf7Obf7Obf7Obf7Obf6+Xe6+Xe + 6+Xe6uXe6uTd6uTd6ePd6ePc6ePd6ePc6OLb6OLb6OLb5+Lb5+Hb5uHb5uHa5uDb5uDb5eDa5N/Z5N/Z + 5N/Z5N/Z497Y5N7Y497Y493Y497Y493Y4t3Y493X493X4tzX4tzW4dzW4dzW4dvW4dvW4dvV4NvV4NvU + 39rU3trT3trT3tnT3dnS3djS3djT3djS3NfR3NfR3NfQ29fQ29bQ29bQ29bQ2tbQ29XO2tTO2tTO2tTO + 2dPN2dPN2NPM2NLM2NLM2NLM19LL1tHK1tHL1tDK1dDJ1c/J1c/J1M/I1M7I087I087I0s3HtbCrtK+q + tLCqtbCrtLGrtrGstrGstrKst7KtuLOuuLOuubSvubWwubWwurawuraxureyu7iyvLizvLm0vLm0vbm0 + vrq1vrq1v7u1wLu2wLu2wLy2wby2wb23wb23wr24wr64w765w7+6xL+6xMC7xcC6xcG7xcG8xsG8xsK9 + x8K9x8O+yMO+yMO/ycS/ycS/ysTAysTAysXBy8XAy8bAzMbBzMfCzcfCzcjDzsjDzsjDzsnEz8nEz8rF + 0MrG0MvG0MvG0cvH0szH0szH0szH0s3I0s3I0s3J087J0s/J08/K1M/L1dDL1dDL1tHM1tHN19HN19LN + 19LO2NPO2NPO2dTO2dTO2dTP2dXP2tXQ2tXQ2tbQ2tbQ29fR3NfS3NfS3djT3djT3tjU3tnU39rV3trU + 39rV39rV4NvW4NrW4NvW4dvX4dvX4dvX4dzX4tzY493Y4tzY493Y5N7Z5N7a5N7Z5N7Z5N/a49/a5ODa + 5ODb5ODb5eDb5eHb5uLc5eHc5uHb5uHc5uHc5uHd5+Hd5uLd5uLd5+Pd6OPd6OPd6OTd6OTd6eTe6eTe + 6eTe6uXe6uXe6uXf6+bf6ubf6+bf7Obg7Ofg7Ofg7Ofg7efh7ejh7uji7uji7+nj7+nj7+nj7+nj7+nk + 8Ork8Ork8Ork8Ovl8Ovl8Ovl8evl8evl8ezm8ezm8ezm8ezm8ezm8ezm8ezn8ezm8e3n8e3n8e3n8e3n + 8e7o8e7o8u7o8u7o8u/o8u/o8vDo8/Dp9PDq9PHq9PHq9PHq9PHq9fHr9fHr9fHr9fHr9fHr9vHr9vHr + 9vHr9/Ls9/Ls9/Ls+PLt+PLt+PLu+PLu+PLu+PLu+fPv+fPv+fPv+fTv+fTv+fTv+fTv+fTv+fTv+fTv + +fTv+fXv+fXv+fXw+fXv+fXw+fXv+fXw+fXv+fXw+fbw+fXw+fbw+fbw+fbw+fbx+fbx+fbx+fbw+ffx + +ffx+ffx+ffx+fbx+ffx+ffx+ffx+ffx+ffx+ffx+ffx+ffx+fjy+ffx+ffy+ffx+fjx+ffx+fjy+fjy + +fjy+fjy+vjy+fjy+vjy+vjy+fjy+fjy+vjy+fjy+fjy+fjx+fjy+ffx+vfy+ffy+ffy+ffy+ffy+ffy + +ffy+ffy+ffy+ffx+ffx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fbx+fXw+fXw + +fXw+fbw+fXw+fXw+fXw+fXw+fXw+fTw+PTw+PTv+PTv+PTv+PTv+PTv+PPv+PPv+PPv+PPv+PPu+PPu + +PPu+PPu+PPu+PPu+PPu+PLu9/Ps9/Lt9/Lt9vLs9/Ls9vHs9vLs9vLs9vLs9vLs9fHr9fHr9fHr9PDq + 9PDq9PDq9PDq8+/p8+/p8+/p8+7o8u7o8u7o8u7o8u7o8u3n8u3n8u3n8u3n8u3n8u3m8ezm8uzm8uzm + 8ezm8uzm8evl8evl8evl8evl8Ork8Ork8Ork8Ork8Ork7+nj7+nj7+nj7+ni7+ni7+ni7uji7uji7ujh + 7ujh7ujh7efh7efg7Obg7Obg7Obf7Obf6+Xe6+Xe6+Xe6+Xe6uTd6uTd6+Xe6uTd6uTd6uTd6ePc6ePc + 6ePc6OLc6OLc6OLc6OLc6OLb6OLb6OLb5+Hb5+Hb5uDa5uDa5uDa5uDa5d/a5N7Z5N7Z497Y497Y493Y + 4t3X4t3X4tzX4tzW4dzW4NzW4dzW4NvV4NvV4NvV39rU39rU39rU3trU3trU3trT3dnS3dnS3djS3djS + 3djS3dfS3dfR3NfR29fQ29bQ29bQ29XQ29XP2tXP2tTP2tTO2dTO2dTN2dPN2NPN2NLN2NLM19LM19LM + 19HM1tHL1tDL1tDK1dDK1c/J1M/J1M7I087I083I0s3H0szH0szH0cvG0cvG0MvG0MrFz8rFsq6qsq2o + sq6osq6ps66ps66ps66rs66qtK+rtLCrtLGstbGstrKstrKstrKtuLOuuLOuubSuurSvurWvurawuraw + u7axu7eyvLiyvLiyvbizvrm0vrm0vrq0vrq0v7q1v7u2v7u2wLy2wLy3wLy3wb23wr64wr64wr65w7+6 + w7+6xMC7xMC8xMC8xcG9xcG9xcK+xsK+xsO/yMO/x8PAyMPAyMTAyMTAycTBysXBysXBy8bBy8bCzMfC + zMfCzMjCzMjDzsnEzsnEzsrFz8rF0MvGz8vF0MzG0MzG0czH0c3H0c3H0c7I0c7I0s7J0s/J08/K1M/L + 1M/L1NDL1NDL1dDL1dHL1tHM1tLM1tLM19PM19PN2NTO2NTO2dTO2dTP2dXP2tXQ2tbQ2tbQ2tfR29fR + 29fR3NjS3NjT3NjT3djS3dnU3dnU3trU3tnV3trU39rV39rV4NvW4NvX4dzX4dzX4dzX4tzY4tzY4tzY + 4t3Y4t3Z4t3Z497Z497a497a497a5N/a5N/a5ODa5N/b5N/c5eDc5uDc5uHc5uHc5uHd5uHc5uLc5+Ld + 5+Ld5+Ld6OPd6OPd6OPd6eTd6eTd6eTe6uXe6uXe6+bf6+bf6+bf7Obg7Ofg7efh7efh7ejh7uji7uji + 7ujj7uji7uji7+nj7+nj7+nj7+nj7+nj8Ork8Ork8Ork8Ork8Ork8Ork8Ovl8evl8evl8ezm8ezm8ezm + 8ezm8e3n8u3n8u3n8e3n8e3n8u7o8u7o8u7o8u/o8u/o8u/o8u/o8+/o8/Dp8/Dp9PDq9PDp9PDq9PDq + 9PDq9fHq9fHr9fHq9vLr9vHr9vLs9vLs9vLs9vLs9vLs9/Ls9/Lt9/Lt+PLt+PLt+PLu+PLu+PPu+PPu + +PPu+PPu+fPv+fTv+fTv+fPv+fTv+fTv+fTv+fTv+fTv+fTv+fTv+fTv+fTv+fXv+fTv+fTv+fTv+fXv + +fXv+fXv+fXw+fbw+fbw+fbw+fbw+fbw+fbw+fbw+fbw+fbw+ffx+fbw+ffx+ffx+ffx+ffx+ffx+ffx + +ffx+ffx+ffx+ffx+ffx+ffx+ffx+ffx+ffx+fbx+fbx+fbx+fbx+fbx+fbw+fbw+fbx+fbx+fbw+fbx + +fbw+fbw+fbw+fbw+fbw+fbw+fbw+fbw+fbw+fbw+fbw+fbw+PXv+fbw+PXv+fXw+PXv+PXv+PXv+PXv + +PXv+PXv+PTv+PTv+PTv+PTv+PTv+PTu+PTv+PTu+PTu+PTu+PTu+PPu+PPu9/Pt+PPt9/Pt9/Pt9/Pt + 9/Pt9/Ls9vLs9vLr9vLr9vLr9fLq9fHq9PHq9PHq9PHq9PHq9PHp9PHq9PDq9PDq8/Dp8/Dp8+/p8+/o + 8+7o8u/o8u7o8u7n8u7n8u7n8u7m8u3m8u3m8u3m8uzm8uzm8uzm8uzm8ezl8ezl8evl8evl8evl8Ork + 8Ork8Ork7+nj7+nj7+nj7+nj7+nj7uji7uji7uji7uji7uji7uji7uji7efh7efh7Obg7Obg7Obg7Obg + 7Obg6+Xf6+Xf6+Xf6uTf6uTe6uTe6uTd6ePd6ePd6ePc6ePc6OLc6OLb6OLc6OLc6OLb5+Hb5+Hb5+Ha + 5+Ha5uDa5uDb5uDa5uDa5uDa5d/Z5d/Z5N/Z5N7Z5N7Y5N7Z493Y493Y4t3X4tzX4tzX4dzW4dzW4dvW + 4NvW4NvW39rV39rV3trU3tnU3tnT3tnT3dnT3tjT3NjS3NjS3NfS3NfS3NfR3NbQ29bQ29bQ29bQ2tXQ + 29XP2tTP2tTP2dXO2dTO2dTO2NPN2NLN2NLN2NLN19LM19HM1tHM1tHL1tDL1tDK1c/K1c/K1M/J1M7J + 087I087I083I0s3H0s3I0czG0cvG0MvGz8vGz8rFzsrEz8rFzsnEzsnEzcjDzcjDzcjDzMjCsKyor6um + r6umsKunsKynsKynsayosayosa2osq6ps6+qs6+qs6+qtLCqtbCrtbCstrGstrGst7Ktt7KtuLOtuLOu + uLSuuLSvubWvubawurawuraxuraxu7ayu7eyvLeyvbizvrm0vbmzvrm0vrm0vrq1v7q1v7u2v7u2wLu2 + wby3wb24wr65wr65w765w766w8C7w8C8xMG8xMG8xMG9xMG9xcK+xcK+xsK+xsK+xsO+x8O+yMS/yMS/ + ycXAysXAysbAysbAy8bCy8jCzMfCzcjDzcnDzsnDzcnDzsnEzsrEz8rEz8rEz8rF0MvF0MzG0MzG0MzG + 0c3H0c3I0c7I0s7I0s7J087J087K08/K1M/K1NDK1NDK1dDL1dDL1tHM1tHL19PN1tLM19PN2NTN2NTO + 2NTO2NTP2dbP2tXQ2tbQ2tbQ2tfR29fS29fS3NjS29jS3NjS3dnU3dnT3dnU3dnU3trU3trU3trV39vW + 4NvW4NvW4NvW4dzX4NzX4dzX4d3X4t3Y4t3Y4t3Z4t3Z4t3Z497Z497a497a497a5N7b5d7b5N7b5d/b + 5eDb5eDb5uDb5uDb5uHc5uHb5uHc5+Lc5+Ld6OLd6OPd6OPe6OPd6eTe6uTe6uXe6uXf6+bf6+bf6+bf + 7Ofg7Ofg7Ofg7efh7ejh7ejh7ejh7ejh7uji7uji7uji7uji7uni7+nj7+nj7+nj8Ork8Ork8Ork8Ovl + 8evl8evl8evl8ezm8ezm8ezm8ezm8ezm8e3n8u3n8e3n8u7o8u7o8u7o8u/o8u/o8u7o8u/o8u/o8+/o + 8+/o8/Dp8/Dp9PDp9PDp9PDp9PDq9PDq9PDq9PDq9PDq9fHq9fHr9fHr9fHr9vHs9fHr9vLs9vLs9vLs + 9vLs9vLs9/Ls9/Lt9/Pt9/Lt+PPt+PPt+PPu+PPu+PPu+PPu+fTu+fTu+fTv+fPu+fTu+fTu+fTu+fTu + +fTu+fTu+fTv+fTv+fTv+fTv+fXv+fXv+fXv+fTv+fXv+fXv+fXv+fbw+fbw+fbw+fbw+fbw+fbw+fXw + +fbw+fbw+fbw+PXw+Pbw+fbw+fXw+PXv+PXv+PXv+PXv+PXv+PXw+PXv+PXv+PXv+PXw+PXv+PXv+PXv + +PXv+PXv+PXv+PXv+PXv+PTv+PTv+PTv+PTv+PTv+PTv+PTv+PTv+PTu+PTu+PTu+PTu+PTu+PTu+PTu + +PTu+PTu+PTu+PTu+PTu+PTt+PTu9/Pt9/Tt9/Pt9/Pt9/Ps9vPs9vPs9vPs9vPs9vPr9vPr9fLr9fLr + 9fLr9fLq9fLq9PHq9PHq9PHp9PDp8/Dp8/Dp8/Do8+/o8+/o8+/o8+/o8u/n8u/o8u7n8u7n8u7n8u7n + 8+7n8u3m8u3m8u3m8uzm8ezl8ezl8ezl8Ozk8ezl8ezl8Ovk8Ovk8Ovk8Ovk7+rj7+rj7+rj7+rj7uni + 7uni7uni7ejh7ejh7ejh7ejh7ejh7Ofg7Ofg7Obg7Obg7Obg7Obg7Obg7Obg6+Xf6uXe6uTe6uTe6uTe + 6ePe6ePe6ePd6ePd6OLd6OLd6OLd6OLc6OLc5+Hc5+Hb5uDa5uDa5uDa5d/a5d/a5d/a5d/a5d/Z5d/Z + 5N7Z5N7Z493Y4t3Y493Y4t3X4tzX4tzX4dzX4dzW4dzX4dzX4dvW4NvW4NvW39rV39rV39rV3trU3tnT + 3dnT3djT3djT3djS3NjS3NfS3NfR3NbR3NbR29XQ29XQ2tXP29XP2tTO2dTO2NTN2dTO2dPO2NPN2NPN + 2NLN2NLN19LM19LM19LM19HM1tHL1tDL1tDL1dDK1NDJ1M/J087J087J087I0s3I0s3H0s3I0czH0MzG + 0MvFz8vFz8vFz8rEzsnEzsrEzcnDzcjDzcnCzcjCzcjCy8jBy8jBysfBy8fBysfBysbAysW/rqumrqql + rqqlr6qmrqqmr6unr6ynsKynsKynsaynsa2nsa2osq6os66ps66ps6+ptK+qtLCqtLCrtLCrtbCstrGs + trKstrKst7Kst7Ott7Out7SuuLSvuLSvuLWvubWwurawuraxuraxu7ayu7ayvLaxvLeyvLeyvbizvbm0 + vrm0vrq0vrq1v7u1wLu2wLy2wLy3wb22wL23wL22wL23wr64wr+5wsC6xMC6xMC7xMC7xcC8xcG8xsG8 + xsG9x8K9x8O9yMO9ycO+ysS/ycS+ysS/ysW/ysXAy8fBzMbAy8bBzMfBzMfBzMfCzcfCzsjDzsjDzsnE + z8rEzsrFz8vGz8vG0MvG0MvH0MvH0czH0czI0s3I083J087I1M/J1M/J1M/J1NDK1dDL1dDL1dLL1tHM + 1tLM19LM19LN19PN19PN2NTO2NPO2dTO2dTP2dXP2dXP2tXQ2tXQ2tbQ2tbQ29bR29bR29fS29fS29fS + 3NjT3NjT3dnU3drU3drU3drU3tvV3tvV3tvW39zW4NzX4NzX39zX4NzX4d3Y4d3Y4d3Y4d3Y4t3Y4t3Z + 493Z4t3Z4t7Z497Z5N7Z5N7a5N/a5N/a5d/a5d/a5d/a5uDc5uDc5uDb5+Hb5+Hc5+Hc6OLc6OLc6OPd + 6ePe6eTe6eTe6eTe6uXf6uXf6uXf6uXf6+bf6+bf6+bf7Ofg7Ojg7Ofg7Ofg7efg7ejh7ejh7uji7uji + 7uji7uni7uni7+nj8Ork8Ork8Ork8Ork8evl8Ovl8Ovl8evl8ezm8ezm8ezm8ezm8ezm8e3m8ezm8e3n + 8e3m8e3n8u3n8u3m8u3m8u7n8u7n8u7n8u7n8+/o8+/n8+/o8+7o8/Dp8+/p8/Dp9PDq9PDq9PDq9PDq + 9PDq9PDq9PDq9fHr9fHq9fHr9fHr9vLr9vLr9vLs9/Lr9/Ls9vLt9vLs9vLs9/Ls9vLs9vLt9/Pt9/Pt + 9/Pt9/Lt+PPt9/Pt+PPs+PPt+PPt+PPu+fPu+PTt+PPu+PPt+fPu+fTu+fTu+fTu+PTu+PTu+PTu+PTu + +PTu+PPt+PPu+PTt+PTu+PTu+PTu+PPu+PTu+PPt+PTu+PTu+PTu+PTu+PTu+PTu9/Tu9/Tu9/Pu9/Tu + 9/Pt9/Tt+PTu9/Tu+PTu+PTu9/Tu9/Tt9/Tt9/Pt9/Pt9/Tt9/Ts9vTr9vPs9vPs9vPs9vPs9vPs9vPs + 9vPs9vPs9vPs9vPs9vPs9vPs9fPr9fLq9PLq9fLr9PLr9PLq9fLq9PHq9PHq9PHq9PHp8/Hp8/Dp9PHq + 8/Do8/Dp8/Do8+/o8u/o8+/o8+/o8+7n8u3n8u7n8u3m8u3m8u3m8uzm8ezl8u3m8ezl8ezl8ezl8ezl + 8ezl8ezl8Ovk8Ovk8Ovk8Ovk8Ovk7+rj7+rj7+rj7+rj7+rj7uni7ujh7ejh7ejh7ejh7Ofg7Ofg7Ofg + 7Ofg7Ofg7Ofg6+bf6+bf6+bg6+be6uXf6+Xf6uXe6uTe6uXe6eTd6eTe6eTd6OPd6OPd6OLc5+Lc6OLd + 5+Lc5uHc5uDc5+Hc5uDb5uDb5d/b5d/b5d/a5d7a5d/a5N7a5N7Z493Z497Z497Z497Y4tzY4t3Y4t3X + 4dzX4dzW4NvW4NvV4NvV39rV39rU39rV3trU3tnU3tnU3tnT3tnT3tnT3djT3djS3dfS3dfR3NfR29fR + 29bQ3NbQ29XQ2tXQ2tXP2tXP2dTO2dTO2NTN2NPN2NPN19PM19LM19LM1tLL1tLK1tHL1tHK1NDK1dDK + 1M/K1M/J08/J087J087I087I0s3H0s3H0s3H0s3H0czH0cvG0MvG0MvF0MvFz8rFz8rFzsrEz8rEzsnD + zsjDzcjCzMjCzMfBzMfBy8fAy8bAy8bAysW/ysW/ycW+ysS+ycS+ycS+yMK9yMO8yMK8x8K8raulramk + rKmkramkraqlraqlraqlrqumrqumr6umsKumsKynsKynsKynsa2nsq2osa6osq6osq6ptK6ps66ps6+p + tLCqtbCqtbCqtbCrtrGrtrGrtrGst7Kst7Ktt7Ott7OuuLSvuLSvuLSwuLSwubWwubWwuraxuraxurax + u7eyvLiyvLiyvbizvrmzvrm0vbmzvrqzv7q0v7q0v7u1v7u1wLy2wLy2wLy3wLy3wL23wb24wb64w765 + w7+6xMC7xcC7xcG8xsG8xsK8xsK8xsK9x8K9x8K9yMK+yMS+ycS/ycS/ycS/ysXAysXBysXBysXBzMbB + zMfCzcjDzMjCzcjDzcjEzcnEzsnEzsnFzsrFzsrFzsrGz8vG0MrG0MvH0MvH0czH0szI0czI0c3I0s3I + 087J1M7J1M/K1M/K1NDK1dHL1dDL1dHL1tHL19LL1tLM19LN19LN19PN2NPO2NPO2dTP2dTP2tXP2tXQ + 2tbQ29bR29bR3NfS3NfS3NjS3djT3djT3dnU3dnU3tnU3trV3trV3trV3trW3tvV3tvW3trW3tvW3tvW + 39zX39zX4NzY4NzY4dzY4d3Y4t3Y4t3Z4t7Z497Z497Z5N/a5N/a5N/a5N/a5d/b5eDb5uDb5eDb5uDb + 5uDc5+Hc5+Hc5+Hc5+Hc5+Hc6OLd6OLd6OPd6OPd6OPe6eTe6eTe6eTe6uXf6uTf6uXf6uXf6+bg6+bf + 6+bg7Ofg7Ofg7ejh7Ofg7ejh7ejh7uji7uji7uji7uji7+nj7+nj7+nj7+nj7+rj8Ork8Ork8Ork8Ork + 8Ork8Ovk8Ovl8Ovl8Ovl8Ovl8ezm8ezm8ezm8ezm8u3m8ezm8u3m8u3m8uzm8u3m8u7n8u7n8+7n8+7n + 8+7n8+/o8+/o8+/o8+/o8+/o8+/p8+/o8+/p9O/p9PDp9PDp8+/p9PDq9PDq9fDq9PDq9PDq9fHq9PDq + 9fHq9fHr9fHr9fHr9vLr9vLs9fHr9vLs9vLr9vLs9vLs9vLs9vLs9vLs9vLs9vLs9/Ls9/Ls9vLs9vLs + 9/Ls9/Ps9/Lr9/Lr9/Lr9/Ps9/Ps9/Ps9/Ps9/Pr9/Ps9/Pr9/Pr9/Ps9vPs9/Ps9/Pr9/Pr9vLr9vLr + 9vLr9vLr9vLr9vLr9vLr9vLr9vLr9vLr9vLr9vLr9vLr9vLq9vLr9vLq9vLq9fLq9fHq9fHq9fHq9fHq + 9fHq9fHq9fHp9fHp9fDp9PDp9PDp9PDp9PDp9PDo9PDp9O/o9O/o9O/o8+/n8+/o8+/o8+/o8+7n8+/o + 8+7n8+3n8+7m8+3m8+3m8u3m8uzl8uzm8uzl8ezl8ezl8evk8ezk8Ovk8Ovk8Ovk8Orj8Orj8Orj7+rj + 7+ri7+rj7+ni7uni7uni7uni7ujh7ujg7ejh7ejh7efg7efg7Ofg7Obf6+bf6+bf6+Xf6+Xf6uXe6uXe + 6uTe6uXe6eTe6eTe6eTd6eTe6OPd6OPc6OPd5+Ld5+Ld5+Lc5+Ld5uHb5uHc5uHb5uHb5uHb5eHb5ODb + 5eDb5ODa49/a5N/a49/a497a497Z4t3Z4t3Z4t3Z4t3Y4d3Y4dzX4NzX4NvX4NvX39vW39vW39rV3trV + 39rV3trU3tnU3djT3djT3djT3NjR3NjR3NfR3NfR29fQ29fQ29bQ2tbP2tbP29XP2dXP2tXO2dXO2dTO + 2dTO2NPN2NTN19PM19LM19LM1tHL1tHL1tHL1tDK1dDK1M/K1M/I08/I087I087I083H087I0szH0s3H + 0czG0czG0czF0MvGz8rEz8rEz8vEzsrDzsrDzsnDzsnDzsnDzcjCzcjCzMjCzcjCzMfBzMfAzMbAy8bA + y8W/ysW/ysW/ysS+ysS+ycS9yMO9yMK8x8K8x8G7xsG7xsC6xcC6xb+6xMC5xL+5xL65w764rqqlraik + rKikramkq6ijraqkraqlraqlrqqlraqlrqmlrqumr6qmr6umr6umsKymsKynsKynsKynsa2nsa2nsa2o + sq2osq2osq6psq6os66ps66ps6+ptK+qtLCrtLCrtbCstbGstbKstbKttbKttrKut7Out7Out7OuuLOv + uLSvubSvubWvurWvu7awurawu7awurWvurWvubSuurWvurWvu7awvLexvLexvLeyvbiyvbmzvrm0vrq1 + v7u2v7u3v7y3wLy4wby4wb24wb25wr65wr65w766xMC7xMC7xcG7xcG7xsG8xsK8xsK8x8O9x8O+x8O+ + yMS/yMW/ycW/ycbAysbAysbBysbBy8fBy8jCy8fCy8fCy8jDzMjDzMjDzMjEzcnEzcnEzsnFz8nFzsrF + z8rF0MvF0MvG0MzG0MzG0c3H0s3H0s7H087I1M7J08/J1M/J1dDK1dDK1dDL1dHK1tHL1tHL1tLM19LM + 19LM2NPN2NPO2NTO2dTP2dTP2tXQ2tXQ2tXQ29bR29bR29fR29fR3NfS3NfS3NjS3NjT3NjT3NjT3djU + 3dnU3dnU3dnV3trW3trW3trW3tvW39vX39vW4NzX4N3X4N3X4d3Y4d3X4d3Y4d3Y4t7Y4t7Y4t7Z4t7Z + 4t7Z4t7Z49/Z497Z49/a5N/a5N/a5d/b5d/b5eDb5uDb5uDc5uHd5uHc5uHc5+Hc6OLd5+Ld6OPe6ePe + 6ePe6eTe6eTf6uXf6eTf6uXf6uXf6uXf6uXf6ubf6+bf6+bf6+bg6+fg7Ofg7Ofg7Ofg7Ofg7efh7uji + 7ejh7efh7uji7+nj7uji7+nj7+nj7+rk7+nj8Ork8Ork8Ork8Ork8Ork8Ork8Ovl8Orl8Ovl8Ovl8ezm + 8evl8Ovm8ezm8ezl8ezm8uzl8u3m8uzl8uzm8u3m8u3m8u3m8u7m8+7m8u7m8u7n8+7n8+7n8+7n8+7o + 8+7o8+7o9O7o8+/o8+/o8+7o9O/p9O/p9O/p9O/p9O/p9O/p9O/p9O/p9O/p9O/p9O/p9O/p9O/p9O/p + 9O/p9O/p9O/p9O/p9PDp9PDq9O/q9PDp9O/p9PDp9PDp9PDp9O/p9O/p9O/p9O/p9PDp9O/o9O/o9O/o + 9O/o9O/o9O/o9O/o9O/o9O7n9O7n9O7o9O7n9O7n8+7n8+7m8+7n9O7n8+7m9O7n9O7n9O7m8+7n9O7n + 8+7m9O7m8+3m9O7n8+3m8+3m8+3m8+3m8+3m8uzl8+3m8uzl8uzl8uzl8uvk8uzl8uzk8uzl8evk8uzl + 8evk8evk8Orj8Orj8Orj8Orj7+ni7+ni7+ni7ujh7+ni7ujh7ujh7ujh7ujh7ujh7ujh7ujg7efg7efg + 7efg7efg7Obf7Obf7Obf6+Xf6+Xe6uTe6+Xe6uTe6uTe6uTe6eTe6ePe6ePd6ePd6OLd5+Lc6OLd5+Hc + 5+Hc5+Hc5+Hc5+Hc5+Hc5uDb5uDb5uDa5d/a5eDa5d/a5d/a5N/a5N7a49/a497Y497Y4t7Z4t7Y4t3Y + 4d3Y4d3X4d3X4NzW4N3W4NzW39vW39vV3tvV3tvV3trV3trU3tnU3tnU3dnT3dnS3NnS3NjS3NjS3NjS + 29fR29bR29bR2tbQ2tbQ2tXP2dXP2dXO2dTO2dTO2NPN2NPN2NPM2NLM19LM1tLM1tHL1tDK1dDJ1M/J + 1M/J1M/J083I0s3H0s3H0szH0czG0czG0cvG0czG0MzF0MzF0MzF0MvF0MvF0MrFz8rEz8rEz8rEzsnD + zsnCzcnCzcjCzcjCzcjBzMfBzMfBzMfAzMbAy8W/y8W/ysW/ysS+ysS+ysS+ycO9ycO9yMO9yMK8yMK8 + x8G7x8K8xsG7xsG7xcC6xcC6xL+5xL65w764w764wr23wr23wby2wby2wbu1wLu1v7q1wLu1raqlrKej + rKijrKikraijramkramkraqlrqqlrqqlrqqlrqqmr6qmrqqmr6umr6umsKumsKymsKymsKymsKynsayn + saynsaynsaynsaynsayosayosa2nsq2osq2psq2psq6ps6+qtK+qtLCrtLCrtLCrtLCrtLGrtbGstbKs + trGstrKstrKtt7Ktt7Ktt7Kst7KttrGrtbCqtbCrtK+qtK+qtK+qtbCrtrGst7Gtt7Gtt7KuuLOuubOu + ubSvurWwurawurexu7iyvLmzvLm0vbq0vbq1vrq1vru2wLy3wL23wb24wb64wr+4w7+5xL+5xMC6xMG7 + xsK8xsK8x8K8x8O9x8O9x8O9yMO9yMS+yMS+ycS+ycW/ysW/y8W/ysbAysbAysfBysfBy8bCzMfCzMfC + zMjCzMfDzcjEzsjDzsjEzsjEzsnEz8nEz8rFz8rF0MrF0MvG0cvG0czH0czH0s3I0s3I0s3I0s7I087J + 1M/J1M/K1dDK1NDK1dHL1tHL1tHM19LM1tLM19LM19LN19PN2NPN2NTN2NTO2dTO2dXP2tXP2tXP2tbQ + 29bR29bR29fR29fS29jS3NjS3NjT3NjT3NjT3djU3djT3dnU3dnU3trV3tnV3trU3trV39vV39vV39vV + 39zW39zW39zW4NzX4NzX4N3X4d3Y4d3Y4d7Y4d7Z4t7Z4t7Z4t7Z497a497a5N/a5N/a5N/b5eDb5d/b + 5eDc5uDc5uDc5uHc5uHc5uHc5uHd5+Hd5+Ld5+Ld5+Ld5+Ld6OLe6OLe6OLe6OLe6OPe6OPe6ePe6eTe + 6eTe6uXf6uXf6+bg6ubf6+bg7Obg7Obg7Ofg7Ofh7efh7efh7efh7efh7efh7efh7efh7efh7uji7uji + 7uji7uji7uji7uji7unj7unj7+nj7+nj7+nj7+nj7+nj7+rk7+rk7+rk7+rk7+rk8Ovk8Ork8Ovk8Ovk + 8Ovk8ezl8Ovk8Ovl8ezk8ezl8ezl8ezl8ezl8ezl8ezl8ezl8ezl8ezl8uzm8ezl8ezl8ezl8ezl8ezl + 8ezl8uzl8uzm8uzm8uzm8uzm8uzm8uzm8uzm8uzm8+3n8+3n8uzm8uzm8+zm8uzm8uzm8uzm8uzm8evl + 8evl8evl8evl8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Ork8Orj8Orj8Orj8Orj + 8Orj8Orj7+nj8Orj8Orj7+ni7+nj7+ni7+ni7+ni7+ni7+ni7+ni7+ni7uji7ujh7ujh7ujh7ujh7ujh + 7efg7efg7efg7Obg7efg7Obf7Obf6+Xf6+Xe6+Xf6+Xf6uTe6+Xe6uTf6uTe6uTe6uTe6ePe6ePe6ePe + 6ePd6OLe6ePd6OLd6OLd6OLd6OLd5+Hc5+Lc5+Hc5uDc5uHb5uDb5uDb5eDb5eDb5d/a5N/a5ODa5N7Z + 5N/Z5N7Z49/Z49/Z497Y4t7Y4t7Y4t7X4t3X4d3X4d3X4dzW4dzW4NzW4NvV4NvV4NvV39vU39rU39rU + 39rU3trU3tnT3trT3tnT3tnS3djS3djS3NjR3NfR3NfR29bQ2tbQ2tbP2tXO2tbP2dXO2dXO2dXO2dTO + 2NTO2NTN2NPN19PN19LM19HM1tHM1tDL1dDK1M/K1M7K1M7J087I0s3I0s3H0czH0czG0MvF0MvFz8rF + z8rEzsrEzsrEzsnDzsnDzcjCzcjCzcjCzMjCzMfBzcjCzcnCzcjCzcjCzcjBzMfBzMfAy8bAzMbAy8a/ + y8W/ysW+ysS+ysS+ycO9ycO9yMO9yMK8x8K8x8K7x8G7xsC7xsC6xcC6xb+6xb+5xL65w764w764w764 + w764wby3wr23wby2wLu2wLu2wLu1v7q1v7q1vrm0vrmzvrm0vbmzvbmzvbizvLiyvLeyvLeyrKikrKei + rKejraikrKijramkramkraqlramkraqlraqlrqqlrqqlrqqlrqqlrqqlr6umr6umr6umr6ymsKumsKum + sKumsKumsKynsKymsKymsKynsKynsKyosK2nsa2osa2osa2osq6psq6osq6os66ps66ps6+ps6+qs6+q + s6+qs7Cqs7CrtLCrtK+rtK+qs66qsq2psayosKyor6qmr6qmrqqmr6umr6qmr6umr6umsKymsKynsK2o + sa6osq6os6+qtLCqtbCqtrKst7Kst7Ott7OtubWvubWvurWwu7exvLeyvLizvbizvrq0vrq0wLy1wby2 + wb23wr24w764xL65xL+5xMC6xcC6xcC6xsG7xsG7xsG8xsG8x8G8x8K9x8K9yMO+x8O+yMS/yMS/yMS/ + yMS/ycTAysTAycXAycXAycXAysbBysbBy8bBy8bCzMfCzMfCzMjDzcfDzcjEzsnEz8rFz8nFz8rF0MrG + 0MrG0MvG0czH0szI0szI0szI083J087J1M7J083J1M7K1M7K1M7K1M/K1dDL1c/L1dDL1tDM1tHM1tHM + 19LN19LN19PM2NPO2NTO2NTO2NTO2NXO2NXP2NXP2NXP2dXQ2dXQ2tbQ2tbQ2tbQ2tbQ29fR3NfR3NjS + 3NjS3djS3dnT3djT3tnT3tnU3tnU3trV3trU3trU39rV39vW39vW39zX4NzX4NzX4NzX4N3X4d3Y4d3Y + 4d3Y4d3Y4d7Y4d3Y4d3Y4t3Y4t7Y4t7Z4t7Z4t7Z49/a49/a5N/a5N/b5N/a5N/b5eDb5d/b5uDb5uDc + 5uDc5uDc5uDd5+Dd5+Hd5+Ld5+Ld6OLe6OPe6OPe6OPe6eTe6eTe6eTe6eTe6uXf6uTe6uXe6uXf6uXe + 6eTf6uXf6uXf6+Xf6uXf6uXf6+Xf6+bf6+Xf6+Xg6+Xg7Obg7Obg7ebh7Obg7Obg7efh7efh7ebh7efh + 7efh7efh7efh7efh7efh7Ofh7efh7Ofh7efh7efh7efh7efh7ejh7efh7Ofh7efh7efh7Ofh7Ofh7Ojg + 7ejh7ejh7ejh7enh7ejh7uni7ejh7uni7ejh7uni7uni7uni7uni7uni7uni7+ni7uji7ejh7ejh7ejh + 7ejh7efh7efh7efh7efh7efh7efh7Ofg7Ofh7Ofg7Obg7Ofh7Ofh7Obg7Obg7Obg6+bg6+bg6+Xg6+Xg + 6+Xg6+Xg6+Xg6+Xg6+Xg6+Xg6uTg6+Xg6+Xg6uTg6uTf6+Xf6uTf6uTe6ePf6ePf6ePe6ePe6ePe6ePe + 6OLd6OLe6OLd6OHd5+Ld6OLd5+Hd6OLd5+Hc5uDc5+Hc5+Dc5uDc5uDc5uDc5uDb5uDb5uDb5eDa5eDa + 5N/a5N/Z5N/Z5N/Z5N/Z497Y497Z4t7X4t7Y4d7X4t3Y4t7X4t7X4d3X4t3X4N3X4d3X4dzX4NzV4NvW + 4NzV39zV39vV39vV39rU39rT3trT3tnU3trU3tnS3tnT3djS3djS3djS3dfR3dfR3NfQ3NfQ3NfP3NbQ + 29bP29bP29bO2tbO2tXO2tXO2dTO2tTN2dTN2NPN2NPN2NPM19LM19LM1tHL1tHK1tDK1dDK1NDK08/J + 1M/J087I0s7I0s3I0c3H0MzG0MvFzsvFzsrFzsvEzsrEzcrDzcnDzcjDzMjCy8jBy8fBy8bBysbAysbA + ysW/ysa/ycW/ycW+ycS+ycS9yMO9yMO9ysS/ycO+yMO9ysS+ycO9ycO9yMK9yMO8x8K8x8K8x8G7xsG7 + xsG7xcG6xcC6xsC6xb+6xL+6xL+5w765w724wr24wry4wby3wby3wbu2wLu2wLu2wLq2v7q2v7q1vrq0 + vrq0vrm0vbizvbizvLizvLiyvLeyvLeyu7exu7axurawurawurawubWvurWvubSuubSuubSuq6ikq6ai + rKekrKejrKejraikraikraijraikraikramlraqlramkrqqlraqlraqlrqqmrqqlramlrqqlrqqlr6ql + rqqmr6umsKumr6umsKumr6umsKynsKynsK2osa2osa2osa2osa6osq6osq6psq2osq2psq2ps66ps66p + s66qsq6psq6qsq+qsa6psa6psKyor6unrqqmraelq6ekq6ejqqaiqqahqqahqqehqaahqaWhqaahqaah + q6ahqqahqqaiq6eiq6ehrKijramkr6qkr6ulsKymsK2nsq6os66ptK+qtbGstrGtt7KtuLOvubSvurWx + urawuraxvLeyvLiyvbm0vrq0v7u1v7u2wbu3wby4wr24w765w765xL+6xL+6xcC7xcG7xcG7xcG8xcK8 + xcG8xsK8xcK9xsK8xsK9xsO+x8O+x8O/yMS+yMS/yMS+yMS/ycW/ysXAysXAysbAysbBy8fBy8fCzcjC + zcjCzcnDzcnDzcnDzsnEzsrEzsrEz8rEz8vE0MvGz8vF0MvG0MvG0MzG0czH0c3H0s3I0s3I0s7I087J + 1M/J1M7J1M/J1M/K1c/K1dDL1dDL1dDL1tHL1tHL1tLM19HM1tLM1tLN1tLN2NPO19PO19TP2NTP2dTP + 2dTP2dTP2dTP2dXP2tXQ2tbQ2tXQ2tbQ29bQ29fQ29fR3NfR3NfR3NjR3NjS3djS3djS3djS3dnT3tnT + 3tnT3trU3trV39rV39vV4NrV39vV4NzW39zW4NzW4NzX4NzX4N3W4NzX4d7Y4N7X4d7Y4d7Y4d7X4d7Y + 4t7Z4t7Y4t7Y4t7Z4t/Z497Z49/Z49/a5N/a5N/a5N/b5ODb5ODb5N/b5eDb5eDc5eDc5eDc5uDc5eDc + 5uHd5uHc5uHd5uHd5uHd5uHd5uHd5+Ld5+Ld5+Le5+Le5+Le6OPe5+Ld5+Le6OLe6OPe6OPe6OPe6OPe + 6OPe6OTf6OPe6OPf6OPe6eTf6ePf6ePf6ePf6uPf6uPf6uPf6ePg6ePf6uPf6uTf6uPf6uTf6uTf6uTf + 6uTf6uTf6uTf6eTf6uTf6uTf6uTf6uTe6eTe6uTf6uTf6eTe6uTf6uTf6uTf6uTf6eTf6eTf6eTf6eTf + 6eTf6eTf6eTf6eTf6eTf6uTf6eTf6eTf6eTf6eTf6OTe6OPe6eTf6OTe6OPe6OPe6OPe6OPe6OPe5+Ld + 6OLe6OLd5+Lc5+Ld5+Ld5+Ld5uHc5uHc5uHc5uHc5uHc5uDb5uHb5eDc5eDb5eDb5eDb5d/a5N/a5ODb + 5N/a4+Db49/a5N/a4t/Z49/Z4t/Z49/Z4t/Z4t7Z4t/Y4t7Y4t7X4t7Y4t7X4d3X4t7W4d3W4NzW4N3W + 4N3W4dzW4NzV4NvV4NvU4NvU4NvU39rU39rT39rT39rS39nT39nT3tnS3tjS3tjS3tjS3tjS3djR3dfR + 3dfR3NfQ3NbQ3NbQ3NbP29XP29bP29TP2tTO2tTO2tTO2tTO2dTO2dTO2dTN2NPN2NPN2NLM2NPM19LL + 1tHL1tHL1tDL1tDL1dDL1dDK1dDK1M/J1M/J1M/K087I087I0s3I0czH0czH0MvGz8vFz8rFzsrEzsnD + zcjDzcjCzMfCy8fBy8bAysXAysXAycS+ycS+yMO+x8K9x8K9xsG8xsG8xcC7xcC7xcC7xL+6xL+6w766 + w765w765w725w765wr24wr24wr64w764w764xL+6w7+6xMC6xb+6xL+6xL+6xL65xL65w725w725wr64 + wr25wry4wLy3wLy3wLy3wLy3wLu2v7q1v7u2vrq2vrq0vbm0vbq0vbm0vbi0vbi0vLizvLiyvLeyvLey + urexu7axuraxuraxuraxubWwubWvubSuubSuuLOtuLOtt7KstrKst7GstrGrtbCrtrCrtbCqq6ejq6ai + qqaiq6aiq6ajrKejrKejraikrKijraikramkramkramkrKmkramlrKmkrKmkrKmkramkrqmlrqmlrqql + rqmlrqmlrqqlrqqlr6qmr6qmr6umr6umr6ynsKynsKymsa2nsa2nsaynsa2nsa2osa2osa2osq2osq2o + sq2osq6psq6osq6osa2osa2pr6unrqqmrammq6ekqqaiqaaip6Sgp6Sfp6SepqOepaGdpaGdpKGbpaCb + pKCbo5+aop6ao5+aop+ao5+ao5+apJ+bpJ+bpaGcpqKepqKeqKSgqaWhqqeiqqajrKikramlrqunr6yo + sa2psq6qs6+qtLCrtbGst7OuubWwuraxurawu7eyu7iyvbmzvbq0v7u2v7u1wLy3wLy2wLy3wb24wr64 + wr65wr64w765w7+6xMC6xMC6xMC7xMC7xMC7xMC8xcG8xcG8xsK9x8K9x8K9x8K9yMO+yMO+yMO+yMS/ + ycS/ycS/ycTAysXAysXAysbBy8bBy8bBy8bBzMfCzMfCzMfCzMjCzcjDzcjDzcnEzsnEzsrEzsnFzsrF + z8vFz8vG0MvG0MzG0MzH0MzH0czH0c3H0c3H0s7I0s7I0s7J0s/J08/J08/J08/K1M/K1M/L1NDL1M/L + 1NDM1dDM1dDM1dDM1dDM1dHM1tHM1tHN1tHN1tHM19HM19LN19LN2NPO2NPO2NPO2NPO2NTO2dTP2dTP + 2dTP2tXQ2tXQ2tbQ2tbQ29bQ29fQ29fR3NfR3NfR3NjR3NjS3djS3djS3djS3dnT3dnT3tnT3trU3trU + 3trU39rU39vU39rV39vV4NvW4NvW39vV4NvW4NzW4NzW4NzW4NzW4NzX4NzW4NzX4d3X4dzX4d3X4d3X + 4d3Y4d3Y4t7Y4t7Y4t3Y4t7Z4t7Y4t3Y4t7Z4t7Z4t7Y497Z497Z497Z49/Z49/Z49/a49/Z49/a4+Da + 5N/a49/a4+Da5ODa4+Da5ODa5ODa5ODa5ODa5ODa5OHb5OHa5ODa5eDb5eHb5eDb5eHb5eDb5eDb5eDb + 5eDb5eDb5eDb5eDc5eDb5eDb5eDb5eDb5eDb5eDb5eDb5eDb5eDb5eDb5eDb5ODb5ODb5eDb5N/b5N/a + 5ODa5d/a5N/a5N/a5N/a5ODa5ODa5ODZ5N/Z5ODZ5ODZ5ODZ5ODZ5N/a5ODZ5ODZ4+DZ49/Z5N/Z49/Z + 49/Y49/Z49/Y49/Y4t/Y4t7Y4t7Y4t7X4t7X4d7X4d7X4d7X4d7X4d7X4d3X4d7X4d3X4d3X4d3W4d3X + 4dzW4NzW4NzV39zV4NzV4NvV4NvV39rU39rV39rV39rU39rU39rU39nU3tnT3tnT3tjT3tjT3djS3djS + 3dfS3dfS3NfR3dfR3NbQ3NfQ29bQ3NXQ29XP2tXP2tXP2tTP2tXO2tTO2tTO2tTO2dPO2dPO2dPN2dPN + 2dPN19LM2NLN19HM19HM19HM1tHL1tDM1tDL1dDL1dDL1dDK1dDK1M/K1M/K1M7J087J087J0s7I0s3H + 0czH0czH0c3H0MvGz8rGz8rEzsnDzsnDzcnDzcnDzMjCzMjCy8bBysXAysW/ycS/yMS+yMO9x8K8xcG7 + xcC6xL+5w764wr64wr23wby3wLu2wLq1v7q1vrm0vbizvLiyvLizvLeyu7exu7exu7eyvLeyvLeyvLey + u7eyvLizvLizvbm0vbm0vbm0vrq1vrq2v7u2wLy3wLy4wLy3wby4wb23wby3wLy2v7u2v7u2v7u1vrq1 + vrq1vbq0vbmzvbmzvLmzvLiyvLiyvLexurexu7exu7exurexurawurawurawurWwubWvubWvuLSvubSu + uLSuuLOuuLOtt7KttrKstrKstrGrtbGrtbCrtLCqtK+qtK+qtK6ps66psq2osq6osq2osq2nq6aiqqWh + qqaiqqWhq6airKeirKejraijrKijraijrKijramjramjramkrKikramjrKmjrKmjrKmjrKmjrKmkramk + ramkrqmkramlramlraqlrqqlrqqmraqlrqumrqumr6umr6umsKymsKylsKymsKynsaynsKynsaynsa2n + saynsa2osa2osa2osa2nsKynr6unraqlrKmkq6eiqKWhqKWgp6OfpqKdpaKcpaGcpKCao5+aop6ZoJ2Y + oJ2Xn5uXnpqWnZmVnJiUnJiUm5eTm5eTmpeTm5iUmpeTm5eTmpeUm5iUnJmVnZqWn5yYn5yYoJ6aop+b + pKGdpaKep6SgqaagqqeirKijrqqlrqqmsa2os66ptLCrtbKstrGtt7OuuLSvurawuraxu7ezurayvLi0 + vbi0vbm0vrm2v7q2v7q2wLu4wLy3wby4wb24wb25wr25wb25wr25w7+7wr67w766w766w7+6w7+6xL+6 + xMC7xMC7xcG7xcG7xcG8xsG8xsK9x8K9x8K9yMO+yMO+yMO+yMO/yMS/yMS/ycXAysXAysXAysbBysbB + y8bBzMfCzMbCzMfDzcjDzcfEzsjEzsnEzsjEzsrEz8rFz8rFz8rGz8vG0MvG0MvG0MvG0MzH0MzH0MzH + 0MzH0MzI0M7I0M3I0M3I0c3J0c7I0s7J0s7J0s7K0s/K0s/J087J087K1NDJ08/K1NDK09DK1NDL1M/L + 1NDM1dDL1dDL1dDM1dHN1tHM1tHN19HN19LO2NLO2NPO2NPO2NTO2NPP2dTO2NTO2dTP2dTP2dXP2dTP + 2dTP2tXP2tXQ2tbQ2tbQ2tXQ29bQ3NbQ29bR3NfR3NbR3NbR3dfR3dfR3dfS3dfS3djS3dfT3tjS3tjS + 3tjS3tjT3tnT3tnU3tnU3trU39rU39rT3trU39rU3tvU4NvU4NvV4NvU39vU39rU39rU39rU39rU39vU + 4NvU4NrV4NvV4NvV4NvV4dvV4dvV4dvW4NvV4dvW4dzW4dvW4tzW4dzX4tzX4dzW4dzW4dzW4dzX4dzW + 4d3W4dzW4d3W4d3W4dzW4dzW4dzW4dzW4NzW4dzW4NzW4NzW4NzW4NzW4NzW4NvW4NzW39vV39zV4NvV + 4NvV4NrV39vU4NrV39rU4NrV4NvU4NvV39vV4NvV4NrV4NvV4dvV4dvU4NvV4NvU4NrU4NrU4NrU4NrT + 39nT39nT3tnS3tjT3tnS3tjS3tjS3tjS3tjS3tjS3tjS3tjS39nT3tjS3tjS3tjS3tnS3tjS3tfR3tjR + 3dfR3NfQ3NbQ29bQ29bQ29bQ29bQ29bQ2tbQ2tXQ2tXP2tXP2tXP2tXP2dTP2dTO2dTO2dTO2NPO2NPP + 2NPN2NLN19LO19LO19HN1tHM1tDM1tDN1dDL1dDM1c/M1M/L1NDL1M/K1M/K1M/K1NDJ08/J087J087J + 087I0s7J0s7I0s7I0c3H0c3H0c3H0c3H0c3H0MzG0czG0MzF0MvFz8vFz8vFzsrEzcrDzsrDzMjCy8fA + y8fAy8bAy8W/ysa/ycS9yMO9x8K8x8K8xcG6xcC6xL+5wr63wby2v7u1vrq0vbiyvLiyvLaxurWwuLSu + uLOut7KttbCrtbCrtK+qtK+qs66qsq6psayosKyosKynsaynsq2osa2osq2os66qs6+qs7CqtLCrtbGs + tbGst7OutrOtubWwubWwubWwurayu7ixu7iyvLmzvrm0vbiyvrq0vbiyvbmzvbiyvLexvLiyvLexu7aw + u7awu7awurawurWvurSuubWvubSuuLSuuLOtuLOtt7Kst7Kst7KstrKstrGrtbGrtbCqtbCqtK+ptbCq + tK+ptK+ptK+ps6+ps66osq6osq6osq2nsq2osa2osaynsKymsKymsKunr6qmr6umr6ulr6qnq6aiqaSg + qaSgqqWhqqWhq6ahqqWhq6airKairKahrKeirKeirKeirKiirKiirKiirKijrKiirKiirKijrKijrKij + rKmjrKijrKikraikrailrailramlrqqlrqqlrqqlrqqlr6qlr6qlr6qlr6ulsKumr6umsKumsKymsKym + sKymsaynsaynsKymsKynsKunrqqmramlrKijqqeip6Wgp6Sgp6OfpqKdpaGcpaGco5+aop6ZoJ2YoJuX + n5qWnZqVm5iTmpaSmZWRmJWQlpOPlZKOlJGNlJCNk5CMko+LkY6LkY+Lko+LkY6KkY+Kko6Lko+MlJGN + lZKOlpOPl5SQmZaSm5iUnJmVn5yXoZ2Yo5+apaGcpqKdqKWfqqahq6ijramkr6unsKyosa2ps66qtLCs + trGttrKut7SvuLSwurWxuraxu7eyu7eyvLizvLmzvbm0vrq1vru1vru2vrq1vru2wLy3wLy3wLy3wLy3 + wLy3wb23wb24wb64wr65w7+5w7+5w7+6w8C6xMC7xMG7xMG7xcG7xcG8xcK8xsK8xsK8xsO9x8O9x8O9 + x8O+yMS+yMS+ycS/ycXAysXAysXAysbAysbAy8bAysbBy8fCzMfCzMfCzMfCzMfCzMjCzMjDzMnDzcjD + zcjEzcnEzsnEzcnEzsnFzsrFzsnFzsrGzsrGz8rGz8rGz8vHz8vH0MvH0MvH0MzH0MzH0MzH0MzH0MzH + 0c3I0c3I0c3I0s7I0s7J0s7J0s7J0s/J08/J08/K1M/L1M/K1M/K1NDL1M/L1NDL1dDL1dDL1dDM1dDM + 1tHM1dHM1tHM1tHM1tHN1tLN1tLN19LN19PN19PN19PO2NPO2NPO2NPO2NTO2NTP2dTP2dTP2dTP2dTP + 2dTP2dTP2dTQ2dTO2tXQ2dXQ2tXP2tXQ2tXQ29XQ2tXQ2tXQ29XQ29XR29bR29bR29bR3NbR29bR29bR + 29bR3NbR29bR3NfR29bR29fR29fR3NbR29fS3NfR3NfR3NfS3NfR3NfR3NfR3NfS3dfS3NfS3NfS3NfR + 3tjS3dfS3dfS3dfS3dfS3dfS3dfS3dfS3dfS3dfS3dfS3NfR3NfR3NfR3NfQ3NfR3NfR3NfR3NbQ29bQ + 29bQ29fQ29bR3NfR3NfR29fR29fQ3NfR3NbR29bR29bR29bR29bR29bR29bQ2tbQ2tbQ2tbQ2tXQ2tXQ + 2tTQ2tXQ2tTP2tTQ2dTQ2tTP2dTP2dTP2tTP2dPO2tTP2tTP2tTP2dTP2dTO2dPO2dPO2NPO2NPO2NPN + 2NLO1tLM19LM1tHM1tHM1dDL1tDM1dDL1dDL1NDL1dDL1dDL1NDK1dDK1dDL1NDK1M/K1M/K1NDK1NDK + 08/J0s/J0s7J0s7I0c7I0s7I0c3I0c7H0M3H0c3I0M3H0MzH0MzG0MzG0MzGz8vG0MzGz8vGz8vFz8vF + zsrEz8rEz8rDzsnDzMjCzMjBzMjBzMjBzMfAy8bAy8a/ysa/ycW+ycS9yMO9x8K8xsG7xsG6xb+5w764 + wry3wbu2wLq1vrmzvbiyu7axubSvuLOtt7GttbCss6+qsq2osKynr6qlrqmlraijrKeiqqWgqaSgqKOf + p6KdpqGdpqGcpaCcpaCcpaGcpaGcpaGcpqKdp6Oep6OeqKSfqaWgqqahqqehrKijramkrqqkrqumsKym + saynsa6osq+ps7CqtbGrtrGstbGst7OtuLOtubOturWvubWuu7awurWvurWvubSuubSuuLOtuLOtuLOt + uLOtt7Kst7KstrKstrGrtrGstbCqtbCqtbCqtK+ptK+ptK6ps66ps66os66osq2nsq2osq2nsaynsq2n + saynsaymsKymsKymsKymsKumsKumr6umrqqlr6qlrqqlrqqlrqmkrqmkramkrqmkramkramjqqagqKSf + qKSfqaSfqaSfqaSfqqWgqqWgqqWgqqWgq6ahq6ahq6ahq6ahq6ahq6ahq6airKeirKeirKeiq6eirKii + rKijrKijrKijrKikrKikrKikraikramkramkramkramkrqmkrqmkrqqkrqmkrqqkr6qlr6qlr6qlr6ql + r6qmsKumsKumsKumr6qmr6qmrqmlraikq6ijqqahp6SfpqSfpqKfpaGdpKGco6Ccop6aoZ2an5yXn5qW + npqWnJmTmpaSmZWRl5SQlpOOlJCNko+LkY6LkY2KjoyIjouHjYqGjImFi4iEioeCiYaCiIWBiIWAiIWB + h4WBiIWBiIWBiYaCioeDi4eEjImFjouHkI2Jko+LlJCMlpKOmJSRmpaSnJiVnpqWoJ2Yop+apKGcpqOe + qKSgqaahqqiirKmkrqumsKymsa2osq6ptLCrtbGrtrGst7Ott7SuubWvurawurexurexu7ezvLizvLez + vbm0vbi0vbi0vrm0vrm0v7q1wLu2wLy2wLy3wLy3wLy3wby4wby4wry4wry4wr64wr65w765w766wr65 + w7+6xMC6xL+7xMC7xcC7xcC7xMC7xcC8xsG8xsG8xsK8xsK9x8K9x8K9yMO+yMO+yMS+yMS+yMS/yMS/ + yMS/ycS+ycS+yMW+ycS/ycW/ycbAycXAycXAysbAysbAysbAysbBy8fBy8fBy8fCzMfCzMfBzMfCzcjD + zcjDzcjDzcjDzsjEzsjEzsnEzsnEzsrEz8rFzsrFz8rFzsrFzsvFz8rFz8vG0MvGz8vG0MzG0MzG0M3G + 0MzH0MzH0M3H0c7H0c7I0c3I0s3I0c7I0s7J0s7J0s7J087K087K0s7K087K08/K08/K09DL08/K08/L + 08/K08/K09DK09DK09DK09DL1M/L1NDL1NDK1NHL1NHK1NDL1NDL1dHM1dHM1dHM1dDL1dHM1dHM1dHM + 1dHM1tHN1tHN1dDM1tHN1tDN1tDN1tHO19HN1tDN1tHN1tHN1tHN1tHN1tHM1tHM1tHN1tLM1tHM1tHN + 1tLN19LN1tLN1tLN1tLN19LO19LO1tLN19LO19LO1tLN1tHN1tLO1tHO1tHN1tHN1tHN1tHN1tDN1tHN + 1tHN1tHN1tHN1tHM1tHN1tHM1tHN1tHM1tHM1tHM1dDL1dDL1dDL1dDL1dHL1NDL1NHL1NDL1NDL1NDK + 1NDL1NDK1M/L08/L09DK09DK09DK1M/L1M/K08/K08/K087K08/K0s7J0s/J0s7I0s3J0s7I0c7I0M3H + 0c3H0c3H0MzG0MzG0MzG0MzF0MzF0MvF0MzF0MvFz8vFz8vFz8rEz8vFz8rEz8rEz8vEz8vEz8rEz8rE + z8vEzsrDz8rDzsrDz8rDzsnCzsnCzcjCzcnCzMnCzMjBzMjBzMjBzMjBy8fBysbAy8bAysW/ycS+ycS/ + ycS+yMO9yMK9x8G9xsC8xcC7xL+5w763wry3wby2wLq1v7m0vbeyu7awubSvuLKutrGrtK+qs66psayn + sKumraikrKeiqqWgqKOepqKdpKCbop6ZoJyYn5uWnZmVnJiTmpeSmZWQmJSPlpOOlpKOlpKOlpKNlZKN + lpKNlpKNmJSPmJSPmZWQmpaRm5eSnJiTnpqVn5uWoZyYop2Yo5+apKCbpqKdp6KeqaSfqaWgqqagrKei + raikrqqkr6qlsKumsqymsq2nsa2os66os66otK+ptbCrtK+qtrGqtrGqtK+qtK+qtK+ptK+ps66ps66o + s66ps66os66ps66ps66osq2nsq2osaynsaynsaynsKymsKymsKumsKumsKqmsKumr6qlr6qlr6qlr6ql + rqqkr6qkrqmkrqmkrqmkramkraijraijraijraijramjrKejrKiirKeirKiirKeiq6eiq6iiqaSfp6Kd + p6Oep6KdqKOeqKOeqKOeqaSfqaSfqKOeqaSfqqWgqqWgqaSfqaSfqqagqqWgq6ahq6ahq6ahq6ahrKei + q6eiq6eiq6ijq6ijq6ijrKejrKijrKijrKikraijraijraijraijrqmkraijraijrqmkrqmkrqmkrqmk + rqmlr6qlr6qlr6qlr6qmrqqmramlrKijq6eiqaWhp6SfpqKfpaKepKGco6Ccop+boZ6aoJyZn5yXnpqW + nZmVm5iTmJWQmJSQlpOPlZKOko6Lko6KkY2JjouHjYqFjImEiYaCiIWAh4N/hYF9hIB8gn56gX15gH14 + gHx4f3t4fnt3fnt3fnt3fXp3fnp3fnp4f3x5gX17gX57gn97hIB9hYJ+h4SAioeDjImEjouHkY+Kk5CM + lpKOmJWQmpaRnZiTnpqVoZyXop6ZpJ+apqKcp6Oeqqagq6eiramjr6qlsaynsa2osq6ptLCrtLGttrGt + t7Ovt7OuuLSvurWwuraxu7axu7ayu7eyvLizvbm0vbm0vbi0vrm0vrq1vrq0vrq1v7q1v7u2v7u2v7q2 + wLy3wLy3wLy3wLy3wby3wby4wby4wb24wr25wr65wr65wr65w766w7+6xL+6xL+6xL+6xL+7xMC7xMC7 + xMC7xMC7xcC8xcC8xcC8xcG8xsG9x8G9x8K9x8K+xsK9x8K+x8K+x8O+x8O+yMO+yMO+yMS/yMS/ycS/ + ycS/ycS/ysW/ysXAysW/ysW/ysbAysbAy8bBy8bAy8bAzMbBzMbBzMfBzMfCzMfCzMfCzcfCzcjDzcjD + zcjDzcjDzsnEzsnEzsnEzcrEzsrEz8rEz8rEz8rFzsrFz8rEz8rFz8vFz8vFz8vFz8vF0MvFz8vF0MzG + z8vF0MzG0MzF0MvG0MvG0MzG0czG0MzG0MzG0MzG0MzG0MzG0MzG0MzG0czH0MzH0czH0czH0c3H0c3H + 0c3I0c3H0c3I0c7I0c7I0c7H0s7I0s3H0s7H0s7I0c7H0c7I0s7I0s7I0c3I0c3I0s7I0s7I0s3I0s3H + 0s3I0s7I0s7I0s7J087J0c7I0s7I0s7I0s7J0s/I0s7I0s7I0s7I0s7I0c7H0c7I0c7I0c7H0c3I0c3H + 0c3H0c3H0c3H0c3H0c3H0c3H0c3H0c3H0c3H0MzG0czG0czH0czG0czG0czG0czG0MzG0cvG0czG0MzF + 0czF0MvF0MvE0MvE0MvE0MrE0MrEz8rE0MrEz8rEz8rEz8rEzsnDzsrEz8rEzsrDzsnDzsnDzcjDzsnD + zcjDzcjCzcjDzcjCzcfDzcfCzcfCzcfCzcfBzcfBzcfBzMbAzMbAzMbAzMXAy8a/y8XAy8W/y8XAysS/ + ysS+ysS/ycS+ycO+ycS+yMO+yMK+yMK+x8K9x8K9yMK9x8K8xsG7xsC7xMC7w766w765wb24wby4wLy2 + vrq1vbi0u7izuraxuLSvtbGttK+rsa2psayorqqmrKikqaWhqKOfpqKdo5+boJyYn5uXnZqVm5eTmJWQ + lpOPlJGMko+KkY2JjoqGjImFioeDioaCiISAh4OAhoN/hoN/hoJ/hYJ+hoJ+hoN/h4N/iISAiIWBioaC + i4eEjIiEj4uHkIyIko6Kk4+LlZGMlpKOmJSQmpaSnJeTnpmUn5qWoJuXop6ZpJ+bpaGcpqGdp6OeqaWh + qqahrKehrKeiramjr6qkrqmkr6ulr6umsKumsaynsq6osayosq2osq2osq2osa2osaynsKynsaynsaym + sKymsKumsKumr6umsKymr6ulr6qlr6qkr6ulrqqlrqmlrqqkrqmkramkramkramkramjramjramjramj + ramjramjraijraijrKijrKiirKiirKehrKiirKehq6ahq6ehqqahqqahq6agqqagq6ahqqagp6SfpqKd + pqKdp6KdpqKcqKKep6KdqKOeqKOeqKOeqaSfqaSfqaSfqqWgqaSfqqWgqqWgqqWgqaWfqqWgqaSfqqWg + qqSgqqWgq6eiqqehqqaiqqeiq6eiq6eiq6aiq6airKeirKeirKeirKeirKeirKeirKeirKeirKijraij + raijrKijraikraikraikraikrKejq6ejqqahqaShp6OepaGdpaCcpKCco6Cbop6boJ2Zn5uYnpuXnJqV + m5iUmZaSmJWQl5SPlpKOlJCNko6KkI2JkIyJjoqGjImEioeCiIWAhoN+hYF9g4B8gX56f3x4fnt3fXl2 + e3h0endzeHVxeHVxdnNwdXJvdXJvdHFudHFudHFvdHFuc3BudHFuc3FudXJvdnNwd3VxeXZze3h0fXp2 + fnx4gX56g4B8hoN+iYWBi4iDjYmFkIyIko6JlJCLl5OOmZWRm5eTnpqWoZ2Zop6ZpKCcpqKdp6OfqKWg + qqeirKmkramkrqumsK2os66ps6+ptLCqtLCrtLGrtrKst7Out7OuuLSvubWvurWvurawurawu7axu7ex + u7exvLiyvLiyvbmzvbmzvbmzvbq0vrq1vrq1vrq1vrq1vrq1v7u2v7y2v7y2v7y2wLy3wLy2wLy3wLy3 + wL23wLy3wL23wb24wb64wb64wr65wr65wr65w7+5w7+6w7+6xL+7w7+7xMC6xMC7xMC7xMC7xMC8xcC8 + xcC8xcC8xcC8xcC8xsG8xsG8xsG9xsG8x8G9xsG9xsK8x8K9yMK9x8O9xsK9yMK+x8O+x8O+x8K9x8O+ + yMS+yMS+yMS+ycS+yMS+ycW/ysW/ycW/ysW/ysW/ysTAycXAysXAy8XAy8XAy8XAysXAysTAy8XBzMXB + zMbBzMbAzMbBzMfCzMfBzMbBy8bBzMfBzMfBzMbBzMfBzMfBzMfBzMjBzMjBzMfBzcfCzcjCzcfCzcfC + zcjCzcfCzcfCzcjCzsjCzcjCzsjDzcjCzcjCzcjCzcjCzcjCzcjCzsnCzsjCzcjCzcjCzcjCzsjCzMjC + zcjCzcjDzsnDzcjDzsnDzsjCzsjDzsjEzsnDzsjCzsjDzsjCzsjDzsjDzsjCzsjCzsjCzsjCzsjCzsjC + zsjCzcjCzcjCzcjCzcjCzcjBzcjBzMjBzMjBzMjBzMfBy8fBzMfBzMfBzMfBzMbBzMbBzMbBzMbBzMbB + y8XBy8XAy8XAy8XAy8XAy8XAy8W/ysS/y8XAysTAysS/ysS/ysS/ysS/y8W/ysS/ysS/ycS/ysS/ysS/ + ycS/ycS+yMO+yMO+yMS+yMO+yMO+yMO+yMK+x8K+x8K+x8G+x8G9xcC8xL+7xcC8xL+7xL+6w766w725 + wr25wb24wb24wLu3wLu3wLy3vru1vrq1vLizvLeyu7eyubWwubSvt7OvtrKttLCrsq6qr6ynrqqlrKij + qqahp6OfpaGdo6CaoJyYnpuWmpiTmJWQlpOPko+LkI2JjYmGi4iEiIWChYJ+g4F8gX56f3x4fXp2e3h0 + eXZyeHVxdnNvdnNvdHJudHFudHFuc3FtdHFudXJudXNvdnNwdnNweHVxeXZye3h0fXl2fnt4gH16gn97 + g4B8hoN/iIWBioeCjIiEjoqHkI2Ik5CMlJCNlpKOmJWQmpeSm5iSnZmVn5uWoJyYop6Zo5+bpJ+cpaGd + p6OeqKSfqKWgqqahq6airKijrKmkramkrqqlrqmkr6umsKumsKynsKumr6qmr6qmr6umr6umr6ulrqql + rqqlrqqkrqqlrqqlrqqlramlrqmkrqmkraqjramkramjramjraikramjraijramjrKijraijraijrKij + raijraiiraijrKiirKiirKeirKiiq6ehrKehq6ahq6ehq6ahq6agqqahqqagqqWgqqWfqaagp6OfpaGd + pqKdpqGcpqGdp6Kdp6Kdp6KdqKOeqKOeqKOeqKOeqKOeqKOeqKOeqKOeqaSfqaSfqaSfqaSfqKSeqaSf + qaSgqaSgqaWgqaWgqqWgqqagqqagqqahqqahqqahqqahq6aiq6ahq6ehq6ehq6ehq6ahq6ahq6ahq6eh + q6eiq6airKejrKekrKijq6eiqqaiqqahqaSgp6KfpaKcpJ+cpJ+apJ+aop6ZoZ6Yn5yXnpqWnZmVnJiU + m5eTmZWRl5OQlpOPlZKNko+LkY6JkIyIj4yHjYqFi4iEioaCh4SAhoJ+hIF8gX96f3x4fXp2fHl1endz + eXZyd3VxdnJudHFucnBtcW9scG1qbmxpbmtobGpoa2lma2hlamhlaWdkamdkamhkamhka2hkbGlmbGll + bWpmbmtnbmtocG1pcW5rc3BsdHFudnNwenZze3h0fnp3gH16g4B8hoJ/iYWCi4iEjouHkY6Kk5CMlZOO + mJWQmZeSnJmVnZuWoJ2YoZ6ao5+cpaGdpqKep6OfqqWhq6eiraiirqqksKymsa2osq2os66ptbCrtbCr + trGst7Kst7KtubSvubSvurSvurWwurWxuraxu7axvLeyvLeyvbiyvbizvbizvbizvbizvrmzvrm0vbm0 + vrm0vrm0v7m1v7q1vrq1v7q2v7u2v7q1v7q2wLu2wLu2wLy2wLy3wLy3wLy3wL23wb24wLy4wL24wL24 + wL24wL24wL24wb64wb25wb25wb65wb26wb25wr66wr65wr65wr+5wr65w7+5w7+6w766w766w7+6w7+7 + w766xL+7xL+7xL+8xL+8xL+7xMC7xMC8xMC8xL+8xMC7xMG8xcC8xcC8xcC7xcC8xcG8xcG8xcG8xcG8 + xsK8xcK9xsK9xsK9xsG9xsK9x8K+xsK+x8K9x8K+x8K+x8K/yMK/x8K+x8O+x8K+x8K+yMK+yMO+yMO+ + x8O+yMO+x8O9yMO+x8O+x8O+yMO+yMO/yMO+yMO+yMO/yMO+yMO/yMO/yMO/yMK/yMK/yMO+yMK+yMO+ + yMO+yMO+yMO/yMO+yMO+yMO/yMS+yMO/x8K+x8O+x8K+yMO+x8K+x8O+x8O+x8O+yMK+x8K+x8K+yMK+ + yMK+x8K+yMK+yMK+yMK+x8K+x8K9x8K9x8O+x8K9x8K9x8K9x8K9xsK9xsK9xsG8xsK9xsK9xcK8xcG9 + xcK8xcG8xsG9xcG8xsC9xcC8xcC8xcC8xcC8xcC8xcC7xcG8xcC7xcC7xL+7xMC6xMC6xL+6xMC6xL+6 + w7+6xL+6w7+6w7+6wr65wr+5wr+5wr65wL24v7u3vru2vru2vrq2vbm0vbm0vbm0u7eyubawuLWwuLOv + trOutrKttLCrsq6psa2or6ymr6ulrKiiqqagp6SfpaKdpKCbop6ZoJyXnpqVmpaRl5OPlJCMkY6JjouG + jIiEiIWBhoJ+gn97gH15fXp2endzd3RxdHJucm9scG1qbWtna2lmaGZjaGViZmRhZWNgZWJfZGFfY2Fd + Y2FeZGFeZGJeZGFeZWJfZmNgZmRgZ2ViaGZiamdkbGlmbWpnbmxocG1qcm9sdXJud3RweXZye3h1fnp3 + gH15gn97hIF9h4R/iYaCjIiDjYqGkI2Jko6KlJCMlpKOmJSPmJaRm5eTnZmVnpuVoJyXoZ2YoZ6ZpKGb + paGcpqKep6SeqKSfqqahqqehq6eiq6ejrKmkrKikrqqmrqmmr6qmrqqlramlrqqmrqqlrqqmrqqmrqqm + ramlrqqlrqqlramlramkraikrqmkramkramkramjramjraijraijraijraijrKiirKiirKeirKeirKei + rKeirKeirKeiq6eirKeiq6ehq6ahq6agqqagqqagqqWgqqWgqaWfqqWgqaSfqaSfqaSfqaSfp6KepaGc + pqGdpqGcpqGdpqGcpqGdpqGcp6KdpqKdp6Kdp6Kdp6KdpqKcp6Kdp6Kdp6Kdp6Kdp6Kdp6KdqKOeqKOe + qKOfqKOfqKSfqKSfqaSfqaWgqaWfqqWgqaWgqaWgqqagqaWgqqWgqqWhqaWgqqWhqqWgqqWgqqagqqah + qqahqqaiqqaiq6eiqqeiqqehqqagqaWgqKOepqGdpaCbo5+aop6Zop2ZoZ2Xn5uWnpuVnZqUnJiTmpeS + mpeSmJSQlpKPlZGOlJCMkI6JkIyIjouHjYqGjIiEioeCiISAhoN+hIF8gn97gH15fnt2fHl1e3h0eXZy + eHVxdnNvc3BtcnBtcG5rb2xpbWtobGlma2hlaWdlZ2VjZmRhZmNgZGJfZGFeY2BeYl9cYl9cYl9cYV9c + Yl9cYl9cYV9bYmBdYl9cYmBdY2BeZGFfZWJgZmRhZ2RiaWZkamhlbWpnb2xpcW5rdHFudnRxeXZze3l1 + fnt3gH55g4F9hoSAiYaCi4mFjouHkI2Jko+LlJGMl5OQmZWRm5eSnZmUn5uWoZ2Yop+apKCcpqKep6Oe + qaSgq6eirKikramlr6qmsKunsayosq2ps66qs6+qtK+rtrGstrKttrKttrKtt7Kut7OuuLSvubSwubSw + uLSvubSwurWxuraxuraxu7eyu7eyu7ayu7eyvLezvLizvbi0vbi0vbm0vrm1vrm0vbq1vrq1vrq1vrq1 + vrq1vrq1vrq1vru2vrq1vru2vrq2vru2vru2vru1v7u1vru2v7u2vru2v7u2v7y2v7u2v7y1v7u2v7y2 + vru2wLy2v7y2v7y2wLy3v723wLy3wL23wL23wby4wr24wb24wr25wr25wr24wr65wr65wr25wr65wr65 + wr+5wr65wr+5wr65wr65wr+5wr+5w7+6wr+6wr+6wr+6w7+6wr+7w7+6w7+6w7+7w7+6w766w7+6w7+6 + w7+6w7+6w7+7w8C7w8C6w8C6w8C6w8C6w8C6w8C7w8C6w8C6w8C6w8C7w8C6w7+6w7+6w8C7wr+7w8C7 + w8C7wr+6w7+7w7+6w7+7xL+7w7+6xL+6xL+6w8C6w7+6w8C6w7+6w8C6w7+5w7+5w8C6wr+6wr+6wr+6 + wr+6wr+6wr+6w7+6wr66w766wr66wr65w765wr65wr64w764w764wr24wr64w763wr64wr63w764wr63 + wr23wr64wb23wb23wb23wb23wL23wby3wLy3v7u2v7u2v7q2v7u2v7u2vrq1vrq0vrm0vLiyvLiyvLiy + u7exu7ixu7exurawurWvubSuubSuuLOttrKstbGrs7Cqsa6osKymr6umrqqlrKijqqehqKSepqKdo5+a + oZ2ZnpuWnZmVmpaSl5OPlpKOk4+KkIyHjoqGi4eDh4N/hYF9gn56f3x4e3h0d3RxdHFucG5qbWpmaWZj + Z2RhY2FeYl9cXlxZXVpYW1hWWVZUV1VSV1RSVVNQVVJQVFJPU1FPU1FOU1FPVFFPVFFPVFJQVVNQVlNR + V1RSWFZTWVZUWlhVW1lWXVpYX1xZYV5bYmBdZWJfZmRhaWZjamhkbGpmb21pcnBsdXJud3RxeXZyfHl1 + fnp2gX15g4B8hoJ+iIWAioaCjIiEj4uHkY2Jko6KlZGNlpOPmJSQmZaRnZiTnZqVn5uWoJyXoZ2Yo6Ca + pKCapaGcpqKdqKSeqKWgqaWgqqehq6iirKijrKijrqqlraqkrqqmrqqlrqqlramlramlramkramlramk + ramkramkrKijrKmkrKijraijrKiirKijrKiirKiirKeirKeiq6ehq6ehq6ahq6ahq6ahq6ahqqagqqag + qqagqqWgqqWgqqWgqaWgqqWfqaSfqaWfqaSfqaSfqKSeqKSeqKOeqKOeqKOdqKOdp6OdqKOdpqGdpKCb + pJ+bpJ+bpaCcpKCcpaCcpaCcpqCcpaCcpaCcpqGcpqGcpqGcpqGcpqGcpqGcpqGcpqGcpqKcp6Kdp6Ke + p6KeqKOeqKOfqKOfqKOeqKSfqaSfqaSgqKOfqaSgqaSfqaSfqaWfqqWgqaWgqaWgqaSgqaWgqqWgqqWh + qqWhqqahqqeiqqaiqqeiqqehqKWgqKSfpqKdpqGco5+aop6aoZ2ZoZ2YoJuWnpuVnpmUnJmUm5iTmpaS + mJaRlpKPlJGNlJGNko+LkIyIj4uHjoqGjYmEi4eCiYWAh4N/hYF9g4B7gX56f3x3fnp2e3l0enhzeHVx + dnNwdHJuc29scm9rcG1qbmtobGpna2llamhkaGdjZmRhZWJfZGFfYV9cYV5cYF1bX1xZXltZXltYXFpX + W1lWW1hWWlhVWlhWWlhVWldVWVZUWVZUWVdVWVdVWVdVW1lWXFpXXVpYXlxZX11aYF9cYmBdY2FfZWNg + ZmRhaGZjamhlbWpnb2xpcG1qc3FtdnNweXZye3h1fXp3f3x5gn97hYJ+h4SAiYaCjIiFjoqGkY2Kko+L + lZKOlpKPmJWRm5eTnJmUnpqWn5uXop2Zo5+bpKGcpqKdp6OeqaWgqqahq6eirKijramlrqqlr6qlr6um + sKyosa2osq6os6+qs7CqtLCqtLCrtbGstrKstrKtt7Ott7OuuLSuuLSvuLSvubSwurWwuraxurWxuray + urayu7axuraxuraxu7eyu7eyu7eyu7eyu7eyu7eyvLeyvLeyvLizvbizvbizvLiyvLizvLizvbizvLiz + vbiyvbiyvbizvbiyvbiyvbmzvbmzvbmzvbmzvrq0vrq0vrq0vrq0vrq0vru1vrq1vrq1v7q1v7q1v7q1 + v7q1v7q1v7q1v7q1v7q1v7q1v7q1v7q2v7u1wLu2wLu2v7u1v7u1wLu1v7u1wLy2v7y1v7y2wLy2wLy2 + v7y2wLy2wLy2wLy2wLu2wLu2wLy2wby3wLy3wLy2wby2wLy2wLu2wLu2wLy2wLy2wLy2wLy1wLy1wLy2 + v7y2wLy2v7u1v7u1v7u1v7u1v7u1v7u2v7q1v7q1v7q1v7q1v7q1v7q1v7q0v7q0v7q0v7q0v7q0v7q0 + v7u1v7q0v7u1v7q0vrq0v7q0vrq0vrm0vrm0vrmzvrm0vrm0vrizvbizvbizvLexu7exvLexvLexvLex + u7awu7awu7awurWvurWvurWvubSut7Ott7OttrKstrKstbGrtLCrtK+qtLCqs66psKynsKunr6qmramk + raijrKeiqqagqaWfp6OepaGco5+aop6ZoZ2YnpqVnJiTm5aSl5KOlZGMko6JkIyHjYmFioaCh4SAhYJ+ + gn97fnt3fHh1eHVydXJvcm9sbmtpbGlmaGZiZWNgYl9cX11aXFpXWVZUVlNRU1FPUU9MTkxKS0pHSUdF + SEZFSEZER0VDRkRCRUNCRUNBREJAREJAREJBREJARUNBRURCRkRDRkVDSEZESUhGSklHS0pHTUtJTkxK + UE5MUlBOU1FPVVNRWFVSWlhVXFlXXlxZYF5bY2BdZWJfZ2RhaWZja2hlbmtocW5rdHFtd3RweXZye3h0 + fnp2gHx4g397hYJ9iISAioaBjIiEj4uGkIyHko6JlJCLl5OOmJSPmZaQnJiTnZmUn5qWoJyWoJ2Yo5+Z + pJ+apqGcpaKcqKOdqaSgqqWgqqagq6ahrKeirKiiraijrKijrqmkrqmkramkrKijraijraijrKijrKij + rKejq6eiq6eiqqeiqqahqqahqqahqqahqqWhqqahqqWhqqahqaWgqaWfqaWfqaSfqaSfqaSfqaSfqKSf + qKSeqaSeqKSeqKSeqKSeqKOeqKSeqKOdqKOdqKOdp6OdqKOdp6Odp6Kcp6KdpqKcpqKcpqKcpaCbo5+Z + pJ+apJ+ao56ZpJ+apJ+apJ+apJ+bpJ+bpJ+apJ+bpKCbpJ+bpaCbpaCbpaCcpaGcpaCbpaGcpqGcpqGd + pqGdpqGep6KeqKOep6KeqKOeqKOeqKOeqaSfqKOfqKOeqKSfqKOeqKOfqKSfqKSfqKSgqKSfqKSgqKWg + qKWhqaWgqaWgqaahqqahqaWgqKSfp6OepqKdpKGco56ZoZ2YoJyYoJuYn5qWnZqVnZmUm5iTm5eTmpWS + mJWRlpKPlJGNk5CMko+Lj4yIjouHjYqGjImEioeCiISAh4N/hIF9gn56gH15fnt3fHl1e3h0endzd3Rx + dnNwdHFucm9scW5rb2xpbWpna2lmamhkamdkaGZiZmNgZGJfY2FeYF5bYF5bX11aXltYXFpXXFlXWlhW + WldVWVdUWFVTV1RSVlRSVVNRVFJQVFJQVFJQU1FPU1FPU1JPU1JQVFJQVVNQVFNQVVNRVVRRV1VSV1VT + WFdUWVdUWlhVW1lXXFpYXVtZXlxaYF5bYV5cYmBeZGJfZmRhZ2ViaWdkbGlmbmtocG1qcm9sdHFudnNw + eXZze3h1fnx4gH16g398hoN/iISBioeDjImFj4uHkIyJkY6KlJCMlZKOlpOPmJWQmpeSm5iTnJmUnpqV + n5yXoZ6Yop+apKCbpaGcpqKdp6OeqKWfqaWgqqehq6eirKeirKmkrqqlr6umsKynsKynsa2osq6ps66p + s6+qs6+qtLCqtbCrtbGrtbCrtbGstrKstbGstrGstrKttrKtt7Ktt7Ktt7OuuLOuuLKuuLSvubSvubSu + ubSvubSvubSvubSvubSvubSwurWwurSwurWvurWwurWwurawurWwurawurawu7axuraxurawurWwuraw + urexurawu7axu7axu7axu7axu7ayvLeyvLeyvLeyvLeyvLeyvLeyvLeyvLeyvLixvLexvLexvLexu7ex + vLeyvLixvLiyvLexu7exu7eyu7exu7eyvLeyu7eyu7exu7axu7axu7axu7axu7axu7axvLexu7awu7ex + vLexvLexvLexu7awurawu7awurawurawurawurawurawurWwubSvubSvubSvubSvubSvubSvubSvubSu + ubSvubSuubSuuLOuuLOtt7Kst7KttrKstrGstbGrtLCrtLCrs6+qs6+qs6+qsq6psa2psKunsKynsKum + r6qlrqmkrqmkrKiiq6eiqqahqqWgqKOepqKdpqGcpKCbo5+aop6ZoJyXnpuWnJmUm5iTmJWQl5OPlZGO + lJCMkY2Jj4uHjYmFi4eDiISAhoJ+g4B8gX56f3x4e3h0eXZydXJvc3Btb2xpbGlmamdkZmNhYmBdYF1b + XFpYWVdUVlRSU1JPUU9NTkxKTEpISUdGR0ZERURCQ0I/QkA+QD89Pz48Pjw6PDo5Ozk4Ojg3OTc2ODY1 + ODY1ODY1ODY1ODc1ODc2OTg2Ojg2Ozk4Ozo4PDs5Pjw7Pz07QT89QUA+Q0E/RURCR0VDSUdFSkhGTEpI + TkxKUE1LUlBOVFJPV1RSWVZUW1hWXVtYX11aYmBdZGJfZ2RgaWZja2hlbmtocW5rdHFtdnNveXVye3h0 + fXp2gHx4gn96hYF8h4N/iYWAi4iDjouGj4uGkY2Ik4+KlZGMlpKNmJSPmpaRnJiTnpqUnpuVoJyWop2Y + o56Zo5+apaCapqKcp6KeqKSeqaSfqaWfq6agq6ahrKehq6airaijraijrKeirKaiq6aiq6aiq6aiqqah + q6ahqqahqqahqqahqqahqaahqaagqaWgqaSfqaWgqKSfqKSfqKSeqKOeqKSeqKSep6Odp6Oep6Odp6Kd + p6KdpqKdp6KcpqKcpqGcpqKcpqGcpqKcpqGcpaCbpqGcpaGbpaGbpaCbpaGbpaGbpKCapKCapKCbop6Z + op6Zo56aop6Zo56Zop6Zop6Zop6aop6Zo56Zop6aop2Zo56Zo56Zo56Zo5+ao5+ao6CapJ+apKCbpKCb + pKCcpqGcpqGcpqGcpqGcpqGdpqGcp6Kdp6Kep6Kep6Kdp6OeqKOeqKOep6Oep6Oep6Oep6Oep6Sep6Of + qKOfqKSgqKSgqKSfqKSfqaSfp6OepqGcpaCbo5+bop2YoJyXn5uXoJuXnpqWnZmUnJiUmpeSmpaSmZWR + mJSQlZGOk4+Mk4+MkY+Lj4yIjYqGjImFi4iEiIaBh4SAhYJ+g4B8gH16f3x4fXp2e3h0eXd0eHVydXNw + dHJvc3BtcW5rcG1qbmxobGpmamhkamdkaGZjaGViZWJfZGJfY2BeX15bX11aXlxZXVtYW1lXW1lWWVdV + WVdUWFZUVlRSVlNRVVJRVFJQU1FPUlFOUlBOUE5MUE5MUE5MUE9MUE5MUE5MUE5MUE5MUE5MUE5MUE5M + UU9MUU5MUU9NUVBNUlBNUU9NUlBOUlBPVFFQU1FQVFNRVlRSVlRTV1VTWFZUWlhWW1hWW1lXXVtYXlxa + YF1bYl9dZGFfZWNgZ2RiaWdka2lmbGpnbmxpcG5qc3BtdXJvdnRweXZze3h0fXp3fnx4gX56goB8hIF9 + hoR/iYaBioeDjImFj4yHkI2Jko+KlJCMlZKNlpOOl5SPmJWQmpeSmpeSnJmUnZqVnpuWoJ2YoZ2Yop6a + op+ao6CbpKGcpqKdp6Sep6Sep6SfqKWgqKWfqaWgqqagq6ehq6iirKijrKmjrqmkrqqlr6umr6qmsKun + sKynsq2osq2psqyosayosq2psq2qsq2osqyosq2osq2ps66ps66qs66ptK+qtK+qtK+ptK+qtK+qtLCq + tLCqtLCqtLCrtLCstbGrtLCstbGstbGstbGstrKttrGttrGttrGttrGttrGstrGttrGttrGstrGstrGs + trGstrGstrGstrGstrGstrGttrGstrGstbGstLCrtLCrtLCrtLCrtLCstK+stK+stK+qs66rs66qsq6q + sq6qsq2psq2psq2osayosa2osKynsKynsaynsKumsKynr6unr6umrqqmrqqmrqqmrqqmramkraikraik + rKekq6aiq6aiqqahqaSgqKSgqKSfp6OepaGcpJ+bpKCbo5+bop6ZoZ2ZoJ2Yn5uXnpqWnZiWm5eUmpaS + mZWRl5OQlpKOlZCNk5CMkY6KkIyIjYqGjImFioeEiIWChoKAhYF+gn98f3x5fXt3e3h1eXdzdnRxc3Fu + cW5rb2xpbGlnamdkZ2RiZGJfYmBdX1xaXFlXWVdVVlRSVFJQUU9NT01LTEpISkhGSEZERURCQ0FAQUA+ + QD49PTw6Ozo5Ozk4OTg3ODY1NzY0NjQzNTMyNDIxMzIxMjEwMjAvMTAvMC8uMC8uMC8tMC8tMC4tLy4s + Ly8tMS8uMTAuMjEvMzIwNTMyNjQzNzY0ODc1OTg2Ozo4PDs5Pjw7Pz48QkA+RENBRkRCSEZESUdFTElH + TkxKT01KUk9NVFFPVlRRWFZTWlhVXVpYX1xZYl9cZGFeZmNgaWZia2hkbWpmcW1qdHBsdnJveHRwenZz + fXl1f3t3gX55hIB8hoJ+iIR/ioaBjYmEjoqFkIyHko2JlJCLlZGMl5OOmZWQm5aRnJiSnZmTnpqUoJyX + oZyXop6Yo5+ZpJ+apaGcpqKcp6Kcp6KdqKOeqKSfqaWgqaWfqqagqqahqqahqqahqqahqqahqqagqaWg + qKWgqKWgqKWfqKSfqaSfqKSgqKSeqKOep6Oep6Kdp6Kdp6KdpqKepqKdpqKdpqKdpqKdpqKdp6KepqKd + pqGcpaGcpaGbpaCbpaCapaGcpKGbpKCbpKCapKCao5+ZpJ+bo5+apJ+Zo5+ZpJ+Zo5+Zo5+ZpJ+aop6Y + op6Yo56Zop6Zo56Zop2Yop6Zop6Zop6Zop6Zop6Zop6Zop6aop6Zop2Yop2Yo56Zo56Zo5+ao5+apKCb + pKCbpKCbpaGcpaGcpqGcpaGcpqKdpaGbpqKdpqKdp6KdpqKcpqKcp6Kdp6Kdp6OepqOdp6OepqOepqKe + p6Sfp6Ofp6OfqKSfqKOfp6OepqKdpqGcpJ+bop6ZoZ2YoJuWn5qWn5qWnpmVnJiTnJeUmpaSmZWRmJSR + l5OPlJCNk5CMko6LkY6Lj4uHjYqGjIiFioeEiISBhoOAhYF+g398gH15fnt3fHl2end0eHVyeHVxdXJv + dHFuc3BtcW5rb2xpbmtobGlmamdkamdkaGZjZ2ViZWNfY2FeYmBdX11aX11aXlxZXFpYW1lXWlhWWVZV + WFZUWFZUVVRSVVNQVFJQVFJPUlBOUVBOUU9NUE5MT05LT05MUE5MT01LT05LTkxKTkxKTkxKTUxKTUxK + TUtKTkxKTUtJTUxJTEtJTEpITUtJTUtJTEtJTUtJTUtKTUtKTUtKTUtKTkxKTkxLT01LT01LUE5MUE5M + UE9NUU9NUlBOU1FPU1JPVVNRVlRSV1VTWFZUWVdUWlhVW1pXXFtYXl1aX11bYF9cYmBdZGJeZWNgZmRh + aWZjamhlbGpmbWtocG5qcm9sc3BsdXJvdnRweHVyenh0e3l1fXt3f3x5gX96hIF9hYJ+hoN/h4SAiYaC + i4iEjIqGjYuGjouHkIyIkI2Jko+Lk4+LlJGMlJGNlZGNlpKOmJSPl5SQmJWRmpaSm5eUnJiUnZiUnZmV + npqWnpqWn5qXn5uXoZyZoZ2ZoZ2ZoZ2Zop6aop6ao5+ao56bo5+bpJ+bpKCcpaGcpqKdp6Odp6Oep6Oe + p6Oep6Sep6Sep6Sep6SeqKSfqKWgqKWgqKWgqKWgqKSgqKSgqKSfqKSgqaSgqKSgqKSgqKSfqKSgqKSg + qKSfqKSfqKSfqKSfqKSfqKSfp6OeqKSfp6Sfp6OepqOepqKepqKepqKepqKepqKepKCdpKCdpaGdpKCd + o5+co5+bop6aoZyYoJyYoJyYn5yXn5yXn5uWnpmWnZqWnZmVnJmVnJmUm5iTmZaSmZaTmZWSmJSRlpOQ + lpKPlZGOlJCNk5CMko6KkY2Kj4yIjouHjYmGjIiFioeEiIWCh4SAhoJ/hIJ+g4B9gX57f316fnt4e3l2 + end1eHVydnNwdHFucnBtcG1qbWtobGlmamdkZ2RiZGJfYmBdYF5bXlxZXFpXWVhVV1VTVFJQUlBOUE5M + TkxKTEpISkhHSEZFRkVDRUNBQ0JAQkA+Pz48Pjw6PDs5Ozo4OTg2NzY1NjU0NTQyNDMyMjIwMTAvMTAu + MC8tLy4tLi0sLSwrLSwrLCsqLCsqLCsqKyopLCspKyopKyopKyooKyopKyopKyopLCsqLCspLCsqLCsq + LSwrLi0sLy4sMC4tMjEvMzIwNDMyNjUzNzY0OTc1Ozk4PDo5Pjw6Pz48QkA+REJARkRCR0ZESUdFTElH + TkxKT01KUlBNVFJPVlRSWFZTWlhVXVpYX1xZYl9cY2FdZmNgaGViamdlbWpncG1qc3BsdXJvd3RxenZz + fXl1fnp2gH15g398hoJ+h4R/iYWBjIiEjoqGj4uHkY2IlJCLlZGMl5KOmZSPm5aRnJeSnZiTnZmUn5uW + n5uWoJ2XoZ2Yop6Zo6CapaCcpaCbpqGcp6Kep6OeqKSfqaSfqaWgqaWgqaWfqaWfqKWfqKWfqKSfqKSf + qKSfqKSfqKSfp6Oep6Kdp6OepqKdp6KdpqGcpqKdpqKdpqGcpqKcpqKdpqKdpaGcpqGcpaGcpqGcpaGc + paGcpaGcpKGbpKCbpKCapKCbpKCbpJ+apKCbpKCbpJ+ao6CapKCapJ+ao5+ao5+ao6Cao5+ZpaCbo56Z + o56Zo5+ao5+ZpJ+apJ+Zo5+ao5+Zo5+Zo5+ao56ao56ao56ao56ao5+ao56ao56apJ+apJ+ao5+apKCb + paGcpaCbpaGcpaCcpqGcpqGcpqGcp6GcpqGcpqGcp6Kdp6Oep6Kdp6Kdp6Kdp6OdqKOep6Oep6Oep6Se + p6Sep6SfqKSgqKSfqKOfqKOfpqKepqGcpaCbop6aoZyYn5uWnpqVnpmVnZmVnJiTnJeTmpaRmZaRmJSQ + l5OPlJGMk5CMk4+LkY6Kj4yHjYqGjImFi4iEiIWCh4SAhoJ+g4B8gH16fnt4fHp2end0eHVzeHVydXJw + dHJuc3Btcm9sb21qbmxobWtna2hlaWdkaWdjaGViZmNgZGJeYmFdYF5bX11aXlxZXFtYW1pXW1hWWVdV + WFZVWFZUVlRSVVNRVFJRVFJQU1FPUlBOUVBOUE9MUE5MUE5MT05MT05MT05MTkxKTkxKTkxKTkxKTkxK + TUxKTUtJTEpITEpITEpIS0lHS0pIS0lHS0lHS0lHSklHSkhHSkhHSkhHSkhHSkhHSUhGSkhGSkhGSkhG + SkhGSkhHSklHSkhHSklHS0lHS0lHS0pITEtJTEtITUtJTUxKTkxKT01KT01LUE5MUU9NUlBOUlFOUlFO + VFJPVFJQVFNQVlRSWFZUWFZUWVdUWllWW1pXXFpYXVtYXlxZYF5bYV9cY2FeZWJgZmRhZ2ViaGZjaWdk + a2hmbGpobWtob2xpcW5rcnBsc3FudHJvdnRwd3RxeHZzend0enh1fHh2fXp3fnp4gHx6gH16gn57gn98 + hIB9hYF/hYF/hoOAh4OAh4SBiYWCiYaCioeDi4eEioeEi4iEjImFjYmFjYqGjouHjouHj4uIj4yIkIyI + kI2JkI2JkI2JkY6KkY6Kko+Kko+Mko+Lko+Lko+Mko+Mko6Lko6Lko+Lko+Mko+Lko6Lko6LkY2KkY6K + kY6KkY2JkY6KkY2KkY2KkY2KkY6KkY2JkI6KkI2KkI2JkY2KkI2Jj4yJj4uIjouHjouHjYmHjImFjImF + ioeEioeDiYaCiIWBiIWBh4SAhoJ/hYJ/hIF+hIF+g4F9goB8gH56f315fnx5fXt4fXp3e3h2end0eHZz + eHVydnNxdHJvc3Bucm9scW5rbmxobWpnbGlmamdkaGVjZWRgZGJfYmBdYF5cXlxaXVtYWlhXWFZVVlRT + VVNRVFJQU1FPUlBNUE5LTUtJS0pISkhGSEdFR0VDRkRCRENBQ0JAQUA+QD89Pz48PTw6PDo5Ojk4Ojg3 + ODc2NzY0NjUzNTQyNDMxMzIwMjEvMTAvMC8uLy4tLi4sLi0sLSwrLSwqLCsqKyopKyopKikoKikoKiko + KigoKSgnKSgnKSgnKSgnKCgnKCgnKSgnKSgnKSgnKSgnKSgnKSgnKignKikoKiooKyooKyopKyopLCoq + LSwrLy4sLy4tMC4tMTAvNDIxNTQyNjU0NzY0OTg2Ozo4PTs5Pj07QD48QkA+RENBRkRCSEdFSkhGTEpI + TkxKUE5LUlBOVFJQV1RSWFZUW1hWXVpYX11aYl9cZGFeZmNgaWZja2hlbmtocW1qdHBtdnNveHVxendz + fXp2f3t4gX55hIB8hoJ/iIWAi4eCjoqFjoqGkIyIko6JlJGMlpKMmJSPmZWQm5aSnJiTnZmUnpqUoJuX + oJuXoZ2Yop6Zo56apKCbpaGcpqGdpqKdqKSfqKSgqqahqqahq6ahqqahqqahqqahqqahqqagqaWgqaWg + qKWgqaSfqKSfqKSfqKWgqKSeqKOep6Oep6Kdp6Oep6Oep6Oep6Oep6Kep6Odp6Kdp6Kdp6KdpqKdpqKd + paGcpaGcpaKcpaGcpKGbpKGbpKCbpaCcpJ+bpKCbpKCbpKCbpKCbpJ+ao5+apJ+bpKCao5+apqKcpJ+a + o6CapJ+apJ+apJ+apKCapJ+apKCapJ+ao5+ao5+ao5+ao5+ao5+ao5+ao56ao5+ao56apJ+ao5+apKCb + paCbpaGbpaGbpaCbpaCbpaGcpqKdpqGcpqGcpqKdpqKdp6Kdp6KdqKOeqKOeqKOeqKOep6OeqKOeqKOe + p6Sfp6Sfp6SfqKSfqKOfp6OfpqGdpaCcpJ+aoZ2YoZyXn5qVnpqVnZmUnJiTnJeSm5aSmpWRmZWRmJSQ + lpOPlZGMk4+Lk4+KkY6Kj4yHjYqGjImFi4iEiIWCh4SAhIJ+g4B8gH15fnt4fHl2e3d0eHVyeHVydXNv + dHFuc3BtcW5rb21qbmtobWpmamhkaWdjaWZjZ2ViZWNgZGFfYmBeYF5bX11aXlxZXFtYW1lXWllWWVdV + WFZUWFZUVlRSVVNRVFJRVFJQUlFPUlBOUlBNUE5MUE5LUE5LUE5LT01LT01LTkxKTkxKTkxKTUxJTUxJ + TUxJTUtIS0pIS0pIS0pIS0lHS0lHSklHSklHSklHSkhHSkhGSkhGSUdGSEZFR0ZESEZESEZESEZER0ZE + R0ZER0ZER0ZDR0VDRkVDRkVDRkVDR0VDRkVDR0VDR0VDR0VDR0VDR0VDR0ZDR0ZER0ZER0ZER0ZER0ZE + SEZESEZESEdESUdFSUhFSUhGSUhGSkhGSklGS0lHS0pITEtITEtJTUtJTkxKT05LUE5MUE9MUVBNUlBO + U1FPU1JPVFJQVVNRVVRRVlRSV1VTWFZUWFZUWFdVWVhVWlhWXFpYXFpYXVpYXVtZX1xaYF1bYF5cYV5c + YV9dY2BeY2FfZGJgZWJgZWNhZmNhZ2RiZ2VjaWZkaWZkamdkamhla2hma2lmbGlmbGpnbWtobmtob2xp + b21qb21qcG5qcG5rcG5rcW9scW5scW9scW9scm9scm9tcm9tcm9scm9scm9scm9scm9scW5scW5rcW5r + cW5rcW5rcW5rcW5rcW5rcW5rcG1rb21qb21qb21qbmxpbWtobWpobGpnbGpna2lma2hmamhlaWdkaGZk + aGVjZmRiZWNgZGJfZGFfYl9dYV9cYF5bX11bX1xaXlxZXFpYW1pXWllWWVhVV1VTVlRSVVNRVFJQU1FP + U1FPUVBNUE5MT01LTkxKTUtJS0pISklGSUhGSEZER0ZERkVDRENBQ0JAQkE/QkE/QT8+QD49Pj07PTw7 + PTs6PDo5Ozo4Ojg3ODc2NzY1NzY0NjUzNTQyNDMyMzIxMzEwMTAvMTAvMS8uMC8uLi4sLi4sLi0sLS0r + LCwqLCsqLCoqKyopKyooKikoKikoKigoKSgnKSgnKSgnKSgnKCcmKSgnKCcmKCcmKCcmKCcmKCcmKCYm + JyYlJyYmJyYlJyYlJyYlJyYlJyYlKCcmKCcmKCgmKCgmKSgnKSgnKSgnKSgnKikoKiooKiooKyopLCoq + LSwrLi0sLy4tMC4tMTAvNDIxNTQyNjU0NzY0OTc2Ozo4PDs5Pj07QD48QkA+REJBRkRCSEZESUhGTEpI + TUtJT01LUlBOU1FPVlRRWFZTWlhVXVpYX1xZYV5cY2FeZWNgaGViamhkbWpncG1qc3BsdXJvd3RxenZz + fXl2f3t3gX16hIB8h4N/iIWAioaCjYmFjoqGkIyIkY2IlJCLlZGMl5OOmZSQmpaSm5eSnJiTnZmUn5qW + n5uXoJ2YoZ2Yop6apKCbpaCbpaGcpqGcp6KeqKOfqaWfqaSgqqagqaWgqaagqaWgqKWgqKWgqKWfqKSf + qKWfqKSeqKSep6Oep6OepqKdp6OepqKdpqKcp6Kdp6KdpqKdpqKcpqKcpqKdpqKcpaKcpqGcpaKcpaGc + pKGcpKGcpaGcpaGbpKCcpKCbpKCbpKCbpJ+bpJ+bo5+ao56Zo56aop6Zop6Zo56Zop6Zo56ZpaCbo56a + o56ZpJ+ao56ZpJ+ao56ao5+ZpJ+apJ+ao5+ZpJ+apJ+apJ+apJ+apJ+ao5+ao56ao5+aop6ao5+bo5+a + pKCbpKCapJ+apaCbpaCbpaCbpaCbpaCbpaCcpqGcpqGcpqGcpqKcpqKdpqKdp6Kdp6Kdp6Kdp6Odp6Oe + p6SeqKSfqKSfqKSfp6Oep6OepqGdpKCco56aoZyYoJuWnpmUnZmUnZmUnJiTm5aRmpaSmZWRmJSQl5OP + lpOOlJGMko+Kk46KkI2IjouGjYmFi4iDioaCiISBhoN/hIF9gn97gHx5fnp3fHh1enZ0eXVzeHRydXJw + dHFucnBtcW5rb2xpbmtobWpnamhlaWZkaGZjZ2ViZWJfY2FeYmBdYF1bX11aXlxaXFpYW1lXW1lWWVdV + WFZUWFZUVlRSVVNRVFJQVFJPUlBOUlBOUVBNUE5MT05LUE5LT05LT01LT01LTkxJTkxJTkxJTUtJTUtJ + TUtJTEpIS0lHS0pIS0pIS0lHS0lHSkhGSklHSklHSkhGSkhGSUhGSUhGSEZER0ZER0ZER0VDR0VDR0VD + RkVCRkVCRkVCRURBRURBRURCRURBRUNBRENBRENBREJAREJAQ0JAREJAREJAQ0JAQ0JAQ0I/Q0I/Q0E/ + Q0E/QkE/QkE/QkE/QkE/QkA+QkA+QkA+QkE+QkE/QkE/QkE/Q0FAQ0E/Q0E/Q0JAQ0JAQ0JAREJAQ0JA + REJARENBRENARUNBRUNCRURCRkRCRkVCRkVDR0ZER0ZER0ZER0ZER0ZESEZFSEdFSUdFSUdGSUdGSkhG + SkhGSkhHS0lHTEpITEpJTEpITEpITEpJTEpJTUtJTUtJTkxKTkxKTkxKTkxKTkxKT01KT01LT01LT05M + UE5MUE5MUU9NUE9NUE9NUE5NUE9NUU9NUU9NUU9NUlBOUU9NUU5NUE5NUE5NUE5NUE5NUE5MT05MT05M + UE5MT01MUE5MUE5MT05LUE5MTk1LTk1LTk1KTUxKTUxKTEtJTEpIS0pIS0lISkhHSkhGSUhGSUdGSEdF + R0ZERkVDRkRCRURCRUNBRENBREJAQ0FAQkE/QkA+QUA+QD89Pz48Pz48Pz48PTw6PDs6PTs6PDs5Ozo4 + Ozk4Ojk3Ojg3OTc2ODY1NzY0NjUzNjQzNTQyNTQyNDMyNDIxMzIwMjEvMjEvMTAuMDAuMC8uLy4tLi0s + Li0sLi0sLi0rLSwrLSwrLSwqLCsqLCsqKyspKyopKyooKiooKikoKikoKiknKSgnKSgnKSgnKSgnKSgn + KCgmKCcmKCcmKCcmKCcmKCcmJyYlJyYlJyYlJyYlJyYlJyYlJyYlJyYlJyYlJyYlJyYlJyYlJyYlJyYl + JyYlJyYlJyYlJyYlJyYlJyYlJyYlKCcmKCcmKCcmKCcmKSgmKSgnKSgnKSgnKikoKiooKiooKyopKyop + LCsqLi0sLy4tMC4tMTAvMzIwNDMyNjUzNzY0OTc1Ozk4PDs5Pjw6Pz48QkA+REJARURCSEZESUhGS0pH + TEtJTk1KUU9NU1FPVVNRV1VTWldVXFpXXlxZYF5bYmBdZWNgZ2ViamdkbWpncG1qcm9sdXJud3RweXZy + fHl1fnp3gH15gn97hoJ+h4N/iYaCjIiEjYqFj4uHkY6Kk4+MlJCMlpKOmJSQmZWRm5eSnJiTnJmUnpqV + n5qWoJyXoZ2Yop6Zo5+apKCbpKCbpaGcpqKepqKep6SeqKSfqKWgqaWgqKWfqKSfqKSfqKSfp6Sep6Sf + p6Oep6OepqOdpqKdpqOdpqGcpqKcpqKdpqKcpqGcpaGcpqKcpqGcpqGcpaGcpqGcpaGbpaGbpqGcpaGc + paGbpaCbpaGbpKCbpJ+bpJ+apJ+ao5+ao56ao56ao56ao56ao56Zo56Zop2Yop2Yop2Yop2YpaCco56Z + o56Zo56Zo56Zo56Zo56Zo5+apJ6ZpJ+ao56Zo56ZpJ6ZpJ+apJ+ao56Zo56apJ+ao5+apJ+bo5+bpJ+b + pKCcpJ+apaCbpKCbpaCbpaCbpaCbpaGcpaCbpqGcpqGcpqGcpqKcpqKdpqGcp6KdpqKdp6KdpqKdp6Ke + p6OepqOep6Oep6Oep6Oep6KepaGdpJ+bo56aoJyYn5qWnpmUnZmUnZmUnJiUm5aSmpWSmZWSmJWQl5OP + lpKOlZGMk5CLko+KkY2Ij4uHjomFjIeEi4eDiIWBhoN/hYF+g4B8gX16fnt4fXp3e3h1enZ0eXZzdnRw + dXJvdHFucm9scG1rbmtpbmtoa2lmamhkaWdkaGZjZmRhZWJfZGJeYV9cYF5bYF1bXlxZXVtZXFpYWlhW + WlhWWVhWV1ZUVlRSVlRSVVNRVFJQVFJPU1FOUk9NUU9MUU9MUU9MUU5MUU5MUE5LT01LT01LT01LT01L + T01LTkxKTUtJTUtJTUtJTUtJTUtJTEpJTEpITEpJTEpITEpIS0pIS0lISkhGSUhGSUhGSUdFSUdFSUdF + SEdESEZESEdER0VDR0ZDR0ZDR0ZDRkVDRkVDRkVDRURCRURCRURCRUNBRURBRUNBREJARENAREJAQ0E/ + Q0E/QkE/QkE/QkE/QkE/QkA+QUA+QUA+QUA+QUA+QUA+QUA+QUA+QUA+QD89QD89QD89QD89QD89QD89 + QD49QD89QD48QD89Pz49QD49QD89QD89QD89QD89QD89Pz49Pz49Pz49Pz49Pz48Pz49Pz48Pz49Pz48 + Pz48Pz49Pz49QD49QD49QD49QD49QD49QD49QD49QD49QD49QD49QD49QD49QD49QD49QD49QD89QT89 + QD89QD49QD89QD89QD49QD89QD49QD49QD89Pz49QD49Pz49Pz49QD48QD48Pz08Pz08Pj08Pj07Pj08 + Pj08Pj07Pj07Pj07Pj07Pjw7PTw6PTw7PTw6PTw6PDs6PDs5Ozo4Ozo4Ozk4Ojk3Ojk3Ojk3Ojk3OTg2 + OTg2ODc2ODc1NzY0NzY0NjU0NjU0NjU0NjQzNTQzNTQyNDQyNDMxMzIxMjIwMjEwMjEvMTAvMTAvMTAv + MTAuMDAuMDAuMC8uMC8tLy4tLy4tLy4tLy4sLi0sLi0sLi0sLi0sLi0sLS0sLSwrLSwrLCwqLCsqLCsq + LCsqLCsqLCsqLCsqLCsqLCsqLCsqLCsqLCsqLCsqLCspKyopKyopKyopKyopKyopKyopKyopKyopKyop + KyopKyopKyopKyopKyopKyopKyopKyooKyopKyopKyopKyopKyopKyopKykoKyooKyooKyooKyopKyop + KyooKyopKyopKiooKiooKyopKyopLCsqLCsqLCsqLCsqLCwqLSwrLSwrLSwrLSwrLi0sLi0sLy4sLy4s + Ly8tMTAvMjIwMzIwNDMyNjUzODY1OTg2Ozk4PDs5Pjw7Pz48QUA+QkE/RUNBR0VDSEdFSkhGTEtJTkxK + UE5MUlBOVFNQVlRSWVZUWlhWXVtYX11aYV9cY2FeZWNgaGZjamhlbGpnb21qcm9sdHJud3RxeHZze3h1 + fnt3gH15gn97hIF+h4SAiIWCi4eEjYmGjouIkI2Jko+MlJCNlZKOl5OQmJWRmpaTnJmUnZmUnpqWn5uX + oJyYoZ6Zop+ao5+bpKGdpaKcpJ+bpaCcpqKepqKdqKOeqKOeqKSfqKSfqKSfqKSfqKSeqKSfp6Oep6Oe + p6OdpqKdpqKdpqKcpqKcpaGcpaGcpaGbpaGbpaGcpaCbpaCbpaCbpaCbpaCbpaCbpKCbpKCapJ+apaCa + pJ+apaCbpKCbpKCao5+apJ+ao5+Zop6Zop2Zop6Zop6Yop2Yop2Yop2Yop2YoJyXoZyXoJuXpaGco56Z + pJ+ao5+ao56Zo5+ao56Zo56Zo56Zo56Zo56Zo56Zo56Zo5+ao56Zo5+ao5+apJ+ao5+ao6Cbo5+bo5+b + o5+bpJ+bpKCbpaCbpaCbpKCbpKCbpaCbpaCbpaGcpaCbpaCbpqGcpqGcpaCbpqGcpqGcpqGdpqGdpqKd + pqKdp6KdpqKdp6Oep6OepqKdpaCco5+bop2ZoJuXn5qWnZiUvru44+Pi4+Li4+Li4+Li4+Li4+Li4uLi + 4uLi4uLh4uLh4uLh4uLh4uHh4uHh4uHh4eHh4eHh4eHg4eHg4eDg4eDg4ODg4ODg4ODg4ODg4ODg4ODf + 4ODf4ODf4N/f4N/f39/f39/f39/e39/e397e397e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e + 3t7e3t7d3t3d3d3d3d3d3d3d3d3d3d3d3d3d3d3c3d3d3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e + 3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e + 3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7d3t7d3t7d3t7d3t7d3t7d3t3d3t3d3t3d3t3d3t3d + 3t3d3t3d3d3d3d3d3d3d3d3d3t7e397e4N/f4eHg4+Pi5eXl5ubm6Ojo6enp6urq6+vr7Ozs7Ozs6+vr + 6+vr6urq6urq6urq6urp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp + 6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6eno6eno6eno6eno6eno6eno6eno6eno6eno + 6eno6ejo6ejo6ejo6ejo6ejo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6+rq + 6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr + 6+vr6+vr6+vr6+vq6+vq6+rq6+rq6+rq6+rq6+rq6+rq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6+vq6+vr6+vr6+vr7Ozs7Ozs7Ozs + 7ezs7Ozs6+rq6unp6Ojo5+bm5eXl5OTk5OTk4+Pj4uLi4eHh4eHh4ODg4ODg4ODg4ODg4ODg4ODg4ODg + 4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg + 4ODg4ODg4ODg4ODg4ODg4ODg4eDg4eDg4ODg4eDg4eDg4eHg4eHg4eHg4eHg4eHg4eHh4eHh4eHh4eHh + 4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4uLh4uLh4uLi4uLi4uLi4uLi4uLi4uLi4uLi + 5OPj5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5eTk5eXk5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl + 5uXl5uXl5ubl5ubl5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5+bm5+bm5+fm5+fm5+fm + 5+fm5+fm5+fn5+fn5+fn4+PipaCbpaGcpqKdpqKeqKOfqKOfqKSfqKOeqKOep6Oep6OepqKdpqOdpqKd + pqKcpaKcpqKcpaGbpaGbpaGbpqCbpKCapaCbpKCapKCapJ+apJ+apKCapJ+apKCapJ+apJ+apKCapJ+a + pJ+apJ+ao56Zo5+Zo56Zo56Zo56Zo56Zop2Yop2YoZ2XoZyXoZ2XoZyXoZyXoZyXoJyXoZyXpaCbo56Z + o56Zo56ZpJ+ao56Zo56Zo56Zo56Zo56Zo56Zo56ao5+ao56Zo56Zop6Zo5+ao56Zo5+ao5+ao6Cbo5+a + o5+ao6CbpKCco5+bpKCbpKCbpKCbpKCbpKCbpKCbpKCbpKCbpaCbpKCbpaCbpaCbpaCcpaCcpaGcpqGd + paGcpqKdpqKdpqKcpqGcpqGcpKCbop6ZoZ2Yn5qWnpmVnJeTwb686urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6+vr7Ozs7u7u8PDw8fHx + 8/Pz9fX19vb2+Pj4+vr6/Pz8/f39/v7+/v7+////////////////////////9/f39PT09fX19fX19fX1 + 9fX19fX19vb29vb29vb29vb29vb29/f39/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+vr6+vr6+vr6+vr6 + +/v7+/v7+/v7/Pz8/Pz8/f39/f39/f39/v7+/v7+/v7+//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////v7+/v7+/Pz8+/v7+vr6+Pj49vb29fX18/Pz8fHx7+/v + 7e3t7Ozs6+vr6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq5ublo5+apKCbpaGdpaGcp6Kdp6Oep6Oep6OepqKdpqKdpqKdpqKcpqKcpqKc + pqGcpaCbpaCbpaGbpaCbpaCbpJ+apKCapJ+apKCapJ+apJ+apJ+apJ+apJ+apJ+apJ+apJ+ao56Zo56Z + o56Zo56Zo5+Zop6Yop6Yop2Yo56Zop6Yop6Yop2Yop2Yop2Yop2YoZyXoZyYoJyXoZ2YoZuYpaCbo56Z + o56Zo56Zo56Zo56Zo56Zo56Zo5+ao56ao56Zop6Zo56Zo56Zo56Zo56Zo56Zo56Zo5+aop+aop+ao5+a + pJ+ao5+ao56ao56ao56ao5+ao5+apJ+apJ+apJ+apJ+apJ+apKCbpKCbpaCbpKCcpaCcpaCcpaCcpaGc + paGcpqGcpqGcpqKdpqGcpaGcpKCbop6ZoZyYn5qWnZiUnJeTwL686urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6+vr7Ozs7u7u8PDw8vLy9PT09/b2+Pj4+/v7/Pz8/f39/v7+//////////// + /////////////////////////////////////////////////////////////f399PT09PT09fX19fX1 + 9fX19fX19fX19vb29vb29vb29vb29vb29/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr6 + +vr6+/v7+/v7/Pz8/Pz8/Pz8/f39/f39/f39/v7+/v7+//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////v7+/f39/Pz8+vr6+Pj49vb29PT08vLy8PDw7u7u7Ozs6+vr6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq5+fno5+Zo5+apaCdpaCdpqKdpqKdpqKdpqKdpqKdpqKdpqGdpqKdpqGcpqGc + pqGcpaCbpKCapKCapJ+apJ+apJ6apJ6apJ+apJ+ao56Zo56Zo56Zo56Zo56Zop6Yo56Zo56Zop6Yop6Y + op2Yop2Yop2Yop2Yop2Yop2Yop2YopyYop2YoZyXoZ2XoZyXoZyXoZyXoZyXoJyXoJyXoJyWpJ+aop2Y + op6Zo56Zop6Yo56Zop6Zo56Zo56Zo56ao56Zo56Zo56Zo5+ao56Zop6Zop6Zo56aop6Zo5+aop+ao5+a + pJ+apJ+apJ+ao56ao56ao56ao56ao56Zo5+apJ+apJ+apJ+apKCapaCapKCbpaCbpaCcpKCcpaCcpaGc + paGcpqGcpqKdpqKcpqGcpqCcpKCcop6ZoZyYn5qWnZiUnJeTwL286urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6+vr7Ozs7u7u8PDw + 8/Ly9fX1+Pf3+vr6/Pz8/f39/v7+//////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////+fn59PT09PT09fX1 + 9fX19fX19fX19fX19vb29vb29vb29vb29vb29/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6 + +vr6+/v7+/v7+/v7/Pz8/Pz8/Pz8/f39/f39/f39/v7+/v7+//////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////v7+/f39/Pz8+fn59/f39PT08vLy8PDw7e3t + 7Ozs6uvq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq5+fno56Zo5+apJ+bpKCcpqCcpqKdpqGcpqGdpqGcpqGdpqGcpaCbpaGcpKCb + paCcpaCbpaCbpJ+apJ+apJ+apJ+aop6Yo56Zop6Yop6Yo56Zo56Zo56Zop6Yop2Yo56Zop2Yop6Yop2Y + oZyXoZyXoZ2YoZyXoJyXoJuWoJuWoZyXoJyWoZyXoJuWoJyXoJyWoZyXoJuWn5uWn5uXoJuWpKCaop6Z + o56Zop6Zo56Zo56Zo56Zop6Zo56Zo56Zo56Zo56Zo56aop6ao56ao56ao56Zop6ao5+aop+aop+ao5+a + pJ+bpJ+apJ+ao56ao56ao56ao56ao56ao56ao56apJ+bpJ+bpJ+apJ+bpJ+bpaCbpKCcpaCcpKCcpaGc + pqGcpqGcpqGdpqGdpqGcpaCbo6Cbop6ZoZyYn5uWnJiUm5eSwb686+vr6+vr6+vr6+vr6+vr6+vr6+vr + 6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr + 6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr + 6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr + 6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr7Ozs7u7u8fHx8/Pz9vb2+Pj4+/v7/f39/v7+//////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////v7+9fX19PT09PT0 + 9fX19fX19fX19fX19vb29vb29vb29vb29vb29/f39/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6 + +vr6+vr6+/v7+/v7+/v7/Pz8/Pz8/f39/f39/f39/v7+/v7+/v7+//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /v7+/f39+vr6+Pj49fX18/Pz8PDw7u7u7Ozs6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr + 6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr + 6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr + 6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr + 6+vr6+vr6+vr6+vr6+vr6Ojnop2Yo56ZpJ+bpKCbpaGbpaGbpaGcpqGcpaGcpaGcpaGcpKCbpaCbpKCb + pJ+apJ+apKCbo56Zo56Zo5+ao56Zo56Zop6Zop6Zop6Yop6Yop6Yop2Yop2Yop2Yop2YoZ2Xop2YoZ2Y + oZyXoZyXoZyXoJyWoJyXoJyXoJyWn5uWoJuWoJuWoJuWoJuWoJuWoJuWoJuWoJqWn5uWoJuWpKCbop6Z + o56aop6Zop6Zo56Zo56ao56ao56ao56Zo5+ao56ao56Zo56Zo56ao5+ao56ao5+aop6aop+bo6CbpKCb + pKCbpKCbpKCbpJ+bpJ+bpJ+bo56bpJ6bpJ+bpKCbo5+apJ+bpKCapKCapJ+bpJ+cpJ+cpKCbpJ+cpaCc + paCbpqGcpqGcpqGcpaCcpKCbo5+boZ2ZoJuXnpuWnZiUnJeSwL687Ozs7Ozs7Ozs7Ozs7Ozs7Ozs6+zs + 7Ozs7Ozs6+zs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ovs7Ozs7Ovs7Ozs7Ovs7Ozs6+zs + 7Ozs7Ozs6+zs6+vs6+zs6+zr6+vs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozr7Ozs7Ozr7Ozs6+zs6+zs7Ozr7Ozs + 7Ozs7Ovr7Ozr7Ozr6+vs7Ozs7Ozs7Ovs7Ozr7Ovr7Ozs7Ozs7Ovs7Ovr7Ozr7Ovr7Ozs6+zs6+vs7Ozs + 7Ozs7Ozs7e3t7+/v8vLy9PT09/f3+vr6/Pz8/v7+//////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////+vr69PT09PT0 + 9PT09fX19fX19fX19fX19vb29vb29vb29vb29vb29/f39/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5 + +vr6+vr6+vr6+/v7+/v7+/v7/Pz8/Pz8/f39/f39/f39/v7+/v7+/v7+//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////v7+/Pz8+fn59/f39PT08fHx7+7u7e3s7Ozs6+zs6+zs7Ozs + 7Ovs6+zs6+zr7Ozs7Ozr7Ozs7Ovs7Ozs7Ovr7Ozr6+vs7Ozs7Ozs7Ozs7Ozs7Ovs7Ozs6+vs7Ozs7Ozs + 6+zs6+zr7Ozs7Ozs7Ozr7Ovs7Ozs7Ozs7Ozr6+zs7Ozr7Ozs7Ovr7Ovs7Ozs7Ozs7Ozr7Ovs7Ozs7Ozs + 7Ozs7Ozr7Ozr7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs6+zs7Ozs7Ozs7Ozs7Ovs7Ozs7Ovs7Ozs7Ozs7Ozs + 7Ozs6+zs7Ozr7Ozs7Ozs6OjooZyXoZ2Yo5+aop+apKCbpKCapaCbpaCbpaGbpaCbpKCbpaCbpJ+apJ+a + pKCbo5+apJ+ao56Zop2Yo5+aop2Zop6Yop2Yop6ZoZ6Yop2Yop2YoZyXop2YoZ2YoZyXoZ2YoZ2YopyX + oZyXoJyXoZ2XoJyWoJuWoJyXoZyXoZyXoJyXoJyXoJuWoJuWoJuWoZuWoJyWoZyXoJyXn5uWpaCco56a + o56ao5+ao56Zo56Zo5+ao56Zo56ao5+apJ+apJ+apJ+apJ+ao5+ao5+ao5+ao5+bpKCbpKCbpKGcpKCb + pKCbpaGcpKCcpKCbpaCcpKCcpJ+cpaCcpKCcpJ+cpaCbpKCbpKCbpJ+bpKCbpKCbpJ+bpKCcpKCcpaCc + pqGcpqGcpqGcpqGcpaCcpKCbo5+bop6ZoJyXn5qWnJmVm5eTwL687Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs + 7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs + 7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs + 7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7e3t7u7u8fHx9PT09/f3 + +vr6/Pz8/v7+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////9vb29PT0 + 9PT09fX19fX19fX19fX19fX19vb29vb29vb29vb29vb29/f39/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5 + +vr6+vr6+vr6+vr6+/v7+/v7/Pz8/Pz8/Pz8/f39/f39/f39/v7+/v7+//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////v7+/Pz8+fn59vb28/Pz + 8PDw7u7u7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs + 7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs + 7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs + 7Ozs7Ozs7Ozs7Ozs7Ozs6ejooZyWoZyXop6Zop+ao5+apKCbpaCbpaCbpJ+apJ+apKCbo6CbpJ+ao5+a + op+ao5+ao5+aop+aoZ2Yop6aop6ZoZ2Yop2YoZ2Yop2Yop2YoZ2YopyXop2YoZ2YoZyYoZyXoZyXoZ2X + oJyXoZyXoZyXoZyXoJyWoJuWoJuWoJuWoJuWoJuWoJuWoJuWoJuWoJuWoJuWnpqVn5qVn5uWpqGdo5+b + pJ+bpJ+bo56apJ+apJ+apJ+apJ+ao56apJ+bpKCbpKCbpKCbpJ+apKCbpKCbpKCbpKCcpKCcpKGcpaGc + paGcpaGcpKCcpaGcpaGcpaGcpaGcpKGcpKCcpaCcpaCcpaCbpaCbpaCbpaCbpKCbpaCcpaCcpaCcpaGc + pqGcpqGcpqGcpqGcpaCbpaGco6Cbop6ZoZ2Yn5uWnpmVnJmUwcC97e3t7e3t7e3t7e3t7e3t7e3t7e3t + 7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t + 7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t + 7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7+/v8fHx9PT09/f3+/v7/f39/v7+//////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////Pz89PT0 + 9PT09PT09fX19fX19fX19fX19fX19vb29vb29vb29vb29vb29/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5 + +fn5+vr6+vr6+vr6+/v7+/v7+/v7/Pz8/Pz8/Pz8/f39/f39/f39/v7+/v7+//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////v7+/Pz8+vr69/f39PT08fHx7u7u7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t + 7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t + 7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t + 7e3t7e3t7e3t7e3t7e3t6enpoJuWoJyXop6Zop6Zo5+ao5+apKCbpJ+apKCapJ+apJ+ao56Zo5+ao56Z + o56Zop6Zop6aop6Yop2YoZ2YoZ2YoZ2Yop2YoZ2ZoZ2YoZyYoZyYoZ2YoZyYoJyYoZyXoJyXoZyXoZyX + oJuWoJuWoJuWn5uVoJuWoJuWoJqWn5qVoJqWn5qVn5qVnpqUn5qVn5qVn5qVn5qVn5qVn5qVpqGepJ+b + o5+bpJ+cpKCbpKCbpaCcpaCbpaGcpaCbpaCbpaCcpaCbpaCbpKCbpKCbpaCbpaCbpaCcpKGcpaGcpaGc + paGcpaGcpaGcpaGcpaGcpaGcpaGcpaGcpaGcpaCcpaGcpaCcpaCcpaCbpKCbpaCbpaCcpaCbpaGbpaGc + paGcpqGcpqGcpaCbpaCbpaCbo6Cbop6ZoZyYoJyXnpmVnZiTwsC97u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u8PDx8/Pz9vb2+vr6/f39/v7+//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////9/f3 + 9PT09PT09PT09fX19fX19fX19fX19vb29vb29vb29vb29vb29vb29/f39/f39/f3+Pj4+Pj4+Pj4+fn5 + +fn5+fn5+vr6+vr6+vr6+/v7+/v7+/v7/Pz8/Pz8/Pz8/f39/f39/v7+/v7+/v7+//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////v7+/Pz8+fn59vb28/Lz8PDw7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u6urpn5uWoJyXop6Zop6Zo5+ao5+apKCbpKCbo5+apJ+apJ6apJ+ao56Zo56Z + op6Zo56Zop6Zop6Yop2Yop2YoZ2YoZyYoZ2YoZyYoJyXoJyYoJyYoJuYoJyXoJuXoJuXoJuXoJuXoJuW + oJuWoJuWn5qWoJuWoJqWn5qVn5qVn5qVn5qVn5qVn5qVn5qVnpqVnpqVnpqUn5qVnpmUnpmUpqKepKCc + paCcpJ+cpaCcpKCcpqGcpaCcpaGcpaCbpaGcpaCbpaCbpqGcpaCbpaCbpaCbpaCbpKCbpKGcpKGcpaGc + pqGcpqGcpqGcpqGcpqKcpqGcpqGcpqKcpaGcpKGcpKGcpKCcpKCcpKCcpKCcpJ+cpKCbpaCcpaCbpaCc + paGbpaGbpaGcpqGcpaGbpaCbo6Cbop6ZoZyYoJuWnpmVnZiTwsC+7+7v7+/u7+/u7u7u7u7u7+7v7u7u + 7u7u7u/u7u7u7u7v7u7u7u7v7u/u7+/u7u7u7u7u7+7u7u/u7+7u7u7u7u/u7u/u7+/u7u7u7+7v7u7v + 7+/u7+/u7u/u7u7u7u7u7+7u7u7u7+/u7u7v7u7u7u7v7u7u7+7v7u7v7u7u7+/v7+7v7u7u7u7u7+/v + 8fHx9PT09/f3+/v7/f39//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////f39 + 9PT09PT09PT09PT09fX19fX19fX19fX19vb29vb29vb29vb29vb29/f39/f39/f39/f3+Pj4+Pj4+Pj4 + +fn5+fn5+fn5+vr6+vr6+vr6+/v7+/v7+/v7/Pz8/Pz8/f39/f39/f39/v7+/v7+/v7+//////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////v7+/f39+vr69/f38/Pz8PDw7u7v7+/v + 7u7u7u7u7u7u7u7u7u7u7+7u7u7v7u/v7u7v7u7v7+/v7u7u7u/v7u/u7u7u7u/v7+7u7+7u7+/v7+/u + 7u7u7u7v7u7u7u7v7+7v7u7u7u/u7+7u7u/u7u7v7u7v7+/u7+/v7+7v7u/u7u/v7u7v7u7u7+/v7+7u + 7u/u7u7u7u/v7u/u7+7u7Ovrn5qVoJuWoZ6Yop6Zo56Zo56ZpJ+apJ+apJ+apJ+ao5+ao56Zo56Zop2Y + o56Zop2Yo56Zop2Yop2Yop2Yop2YoZyXoJyXoJyXoJyXoJyXoJuXoJyXn5uWn5uXoJuWn5qWoJqWn5uW + n5qWn5qWn5qWn5qVn5uVn5qVn5qUn5qVnpqVnpmUnpqVnpqVnpqVnpmUnpmUnpmUnpmUnZmUpqKepKCc + pKCbpaCdpqCdpaGdpqCcpqGcpqGcpaGcpaCbpqCcpaCbpqGcpaCbpaCbpaCbpKCbpKCbpaCbpaGcpaCb + pqGcpaGcpqGcpqGcpaGcpaGcpaGcpaGcpaGcpKGcpKGcpKGcpKCco5+cpKCcpKCcpKCcpaCcpaGcpaGc + paGbpaGcpaGcpqKdpaGcpKCbo5+aop6ZoZyXn5uWnZmUnJiTw8C97+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v8fHx9PT09/f3+/r6/f39 + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + +Pj49PT09PT09PT09fX19fX19fX19fX19fX19vb29vb29vb29vb29vb29/f39/f39/f39/f3+Pj4+Pj4 + +Pj4+fn5+fn5+vr6+vr6+vr6+vr6+/v7+/v7+/v7/Pz8/Pz8/f39/f39/f39/v7+/v7+/v7+//////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////f39+vr6 + 9vb28/Pz8PDw7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7Ozsn5qVoJqWoZ2YoZ2Yop2Yo56Zo56Zo56Zo56Zop2Yop6Zop2Yop6Zop6Y + op2YoZ2Yop2YoZ2YoZ2YoZyYoZyXoZyXoZyXoJyXoJyXoJuWoJuWoJyXoJuWn5qXoJuWoJqWoJuWoJuW + n5qWn5uWn5qWn5qVnpqVn5qVn5qVnpqVnpqVnpqVnpqVnpqVnpqVnpqVnpmUnZmUnpqVnpqVp6OepaGb + paGdpaCdpaGdpaGcpaGdpaCcpaCcpaCcpaCcpaGcpaCcpaCbpaCbpaCbpaCbpaCcpaCcpaGcpaGcpaGc + paGcpqGcpaGcpqGcpqGcpqGcpaGcpaGcpaGcpaGcpaGcpKGcpKGcpKCcpKCcpKCdpKCcpaGdpKCcpaGc + paGcpaGcpaGcpaGcpaGcpaCbo5+aop6ZoJyXn5uWnpmUnJeSwsC98PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8vLy9vb2+fn5/Pz8/v7+//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /v7+9PT09PT09PT09PT09fX19fX19fX19fX19fX19vb29vb29vb29vb29vb29/f39/f39/f3+Pj4+Pj4 + +Pj4+fn5+fn5+fn5+vr6+vr6+vr6+vr6+/v7+/v7/Pz8/Pz8/Pz8/f39/f39/f39/v7+/v7+//////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////v7+/Pz8+Pj49fX18vLy8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw7e3snpmUn5qVoJyXoJyXop2Yop2Yo56Zop6Zop6Zop2Yop2Yop6Yop2Yop2Y + op2YoZ2Yop2YoZyXoZyXoZyXopyXoJyXoZyXoJuWoJyWoJuWn5uWoJuWoJyXn5yXoJuWoJuWoJuWn5uX + oJuWoJuWn5qWn5qWnpqVn5qVnpqVnpqVnpqVn5qVnpqVn5qVnpqVnpqVn5qVnpqVnpmUnpqVqKOepqGc + paGcpaGcpKGcpKGcpKCcpKCcpaCcpaCcpaCcpKCbpaCcpaGcpKCcpaCbpKCbpKGcpaGcpqGcpaGcpaGc + pqGcpqGcpaGcpaGcpaGcpqGcpqGcpqGcpaGcpaGcpaGcpKGcpKGcpaGcpKCcpKCdpaGdpaCcpaGcpaGc + paGcpaGcpaKdpqKdpaGcpKCbo6Cbo56ZoJyXn5uWnZmUnJiTw8C+8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8/Pz9vb2+vr6/f39//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /Pz89vb28/Pz8/Pz8/Pz8/Pz9PT09PT09PT09PT09PT09fX19fX19fX19fX19fX19vb29vb29vb29vb2 + 9vb29vb29/f39/f39/f3+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+fn5+fn5+vr6+vr6+vr6+/v7+/v7+/v7/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8+/v7+fn59vb28/Pz8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx7u3tnpiTnpmUn5uWoJyXop2YoZyXop6Zop6Yop2Yop2Yop2Yop2Yop2Yop2Y + op2Yop2Yop2Yop2YoZyXoZyXoZyXoZyXoJuWoJyWoJuWoJuWn5uWoJuWoJuWoJuWoJyWoJuWoJyXoJyX + n5uXoJuWn5uWn5qWnpqVnpuWnpqWn5qVnpqWnpqWnpqVnpqVnpmUnpqVnpqVn5qVnpqVnpqVp6OepaGc + pqGcpqKcpaGcpaGcpaGcpaGcpKCcpKCcpKCcpaCcpKCcpKCcpKCbpaCbpKCbpKGcpKGcpaGcpaGcpqGc + paGcpqGcpqGcpqGcpqGcpqGcpqGcpqGcpqGcpqGcpqGcpqGcpqGcpaKdpaGdpaGdpaKepaKepaKdpqKd + pqKdpqKdpqKdpqKdpqKcpaGcpKCbop+aoZ2YoJyXnpqVnZiTxMG+8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8/Pz9vb2+vr6/f39//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4uLi0dHR0dHR0dHR0dHR1NTU7u7u7u7u7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7+/v7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u8PDw8vLy + 8vLy8vLy8vLy8vLy8vLy7u7unZmUnpqVn5yWoJyXoZyYoZyXop2Yop2Yop2Yop2Yop2Yop2Yop2Yop2Y + oZ2Xop2YoZyXoZ2YoJuWoZyXoJyWoJuWn5uWoJuWoJuWoJyWn5uVn5uVoJuWn5qWoJuWoJuWoJuWoJuW + oJyXoJuWn5uWn5uXoJuWn5uWn5qVn5qWn5uWnpqWn5qVn5qWnpqVn5qWnpqVnpmUnpqVnpqVqKOepaGc + pqKdpqKcpqKdpaGcpqKdpaGcpaGdpaGcpaGcpaCcpKCcpaCcpKCcpKCcpKCbpKGcpaGcpaGcpaGcpqGc + pqGcpqGcpqGcpqGcpqGcpqGcpqGcpqGcpqKcpqGcpqGcpqKdpqKdpqKdpqKdpaKepaKepaKepqKep6Ke + p6Kep6KdpqKdp6KdpqKdpqKdpaCco5+aoZ2YoJyXnpqVnpmUxMK/8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz + 9fX1+Pj4/Pz8/v7+//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4ODgz8/Pz8/Pz8/Pz8/P0tLS7u7u7u7u7u7u7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7+/v7+/v7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u8fHx8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz7+/unZqVnpqVn5yXoJyXoZ2YoZyYoZ2YoZyYoZ2YoZ2YoZyXoZyXoZyXoZyX + oZ2YoZyXoZyXoJyXoJuWoZyXoJyWoZyXoZyXoZyXoJyWoJuWoJuWoZyXoJyWoJuWoJyWoJuWoJyXoJuW + oJyXoJuWoJyXoJyXn5uXoJyXn5uXn5uXn5qVnpqWn5qWn5qWn5qWn5uWn5qWnpqVn5qVnpqVp6OepqGc + paGcpqKdpqKdpqKdpqKdpaGdpqGcpaGcpaGdpaGdpaGdpaGdpaGdpaCcpaGcpKGcpaGcpaGcpaGcpaGc + pqGcpqGcpaGcpaGcpqGcpqKcpqKdpqKdpqGcpqKdpqKdp6KdpqKdpqKdpqKdpqKep6Oep6Oep6Ofp6Oe + p6Oep6OeqKKep6Kdp6KdpqKdpaCcpKCbop2YoZyXoJuWnpqVxcK/9PT09PT09PT09PT09PT09PT09PT0 + 8/T09PTz9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09vb2+vn6/f39 + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4ODgz8/Pz8/Pz8/Pz8/P0tLS7u7u7u7u7u7u7u7u7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw7Ozs6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo8PDw8PDw7+/v + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u8vLy9PT0 + 9PT09PT09PT09PT09PP08O/vnZqVnpqVn5yXoJyXoZyXoZ2Yop6YoZ6ZoZyXoZyXoZyYoZ2YoZ2YoZyX + oZyXoJyXoZyXoZyXoJyXoJyXoJyXoJuWoJyXoJyXoJuWoJuWoJuWoJuWoJyXoJyWoJuWoJuWoJuWoZyW + oJuWoJyXoJyXoJuWoJyXoJuWoJuWoJuWn5uXoJuXn5uXn5uXn5qWn5qWn5qWn5qWn5uWn5qVqKOepaGc + pqKcpqKdpqKdpqKdpqKdpqKdpqKdpqKdpqGdpaGdpqKepqGdpaGdpqGcpaCcpaCcpaGcpqGcpqGdpqKd + pqGcp6KdpqGcpqKdpqKdpqKdp6KdpqKdp6Oep6Oep6Oep6Oep6Oep6OeqKOep6Sfp6SeqKSgp6Ofp6Of + qKOeqKOep6KeqKOep6Odp6KdpaCcpJ+ao56Zop2YoJuXnpmUxcK/9PT09PT09PT09PT09PX09PX19PT0 + 9PT09PT09PT19PT09PT09PX09PT09PT09PT09PT19PT09PX09PT19PX09/f3+vr6/v7+//////////// + /////////////////////////////////////////v7+/v7+/f39/f39/Pz8/Pz8+/v7+/v7+vr6+vr6 + +fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+vr6+vr6+/v7+/v7/Pz8/f39/f39/v7+/v7+//////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4ODgz8/Pz8/Pz8/Pz8/P0tLS7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDwxsbGoqKioqKioqKioqKioqKioqKioqKioqKiqamp8PDw8PDw8PDw + 8PDwycnJ5ubm7u7u3d3dtLS0uLi45OTk7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u8vLy9fT0 + 9PX09PT09PT09PT09fT08PDwnpqVnpqVoJyXoJ2YoZ2YoZ6Zop6Zop6Zop2YoZ2Yop6Zop2Yop2YoZ2Y + oZyXoZ2YoZyYoZyYoZ2YoZ2YoZyXoZyXoZyXoJyXoJuWoZyWoJuXoJuWoJyWoJuWoJuWoJuWoJuWoJuW + oJuWoJuWoJuWoJyXoJuWoJyXoJyWoJuWoJuWoJyXoJuXoJuXoJuWn5uXn5uWoJuWoJuWn5qWqKSfpqGc + p6Kdp6KdpqKdpqKdpqKdpqKdp6OepqOepqOepqGdpqKepqGdpqGdpqGdpqKdpaGdpqGdpqGdpqKdpqKd + p6KdpqKdpqKdpqKdpqKdpqKdpqKepqOep6Oep6Oep6Oep6Oep6Oep6OeqKOeqKOeqKSfqKSfp6OfqKOf + qKOfqKOeqKOeqKOepqGdpqKdpaCcpaCbo56Zop2YoJyXn5qVxsPA9fX19fX19fX19fX19fX19fX19fX1 + 9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19/f3+vr6/f39//////////////////////// + /////v7+/v7+/f39/Pz8+/v7+fn5+Pj49vb29PT08/Pz8fHx8PDw7u7u7e3t7Ozs6urq6enp6Ojo5+fn + 5ubm5eXl5OTk4+Pj4+Pj4+Pj4uLi4uLi4uLi4uLi4+Pj5OTk5OTk5ubm5+fn6Ojo6urq7Ozs7u7u8fHx + 9PT09vb2+fn5+/v7/f39/v7+//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4ODgz8/Pz8/Pz8/Pz8/P0tLS7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7uoKCgtLS07+/v7+/v7+/v + 7+/vubm5l5eX7u7u7+/v7+/v7+/v4eHhg4OD3t7e7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw5OTkl5eX09PT8PDw8PDw8PDw8PDw8PDw8PDw8PDw7e3tl5eXycnJ8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw5OTkpqamgYGBdXV1fn5+n5+f3t7e8PDw + 8PDw8PDw8PDw8PDw7e3t6+vr8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw1NTUkpKS5OTk8PDwvb29 + ioqK7+/v8PDw8PDw8PDw6urqsbGxiIiIdnZ2dnZ2iIiIsLCw6urq8PDw8PDw8PDw7+/vqampp6enp6en + p6enp6enp6enrKys7e3t8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDwzMzMn5+fn5+fpaWlqqqqqqqqqqqqqqqqqqqqsbGx8PDw8PDw8PDw + 8PDw3NzcwcHB7u7uq6ur39/f09PTuLi47u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u8/Pz9fX1 + 9fX19fX19fb19fX19fX18vLyn5uWn5yXoJyXoJ2YoZ2Yop6Zop6Zop6Zop6Zop6Zop2Yop2YoZ2Yop2Y + op2YoZ2YoZyXoZ2YoZyXoZyXoZyXoJuWoZyXoZyXoJyWoJyWoJyWoJuWoJuWoJyWoJuWoJuWoJuWoJuW + oJuWoJuWoJuWoJuWoJuWoJuWoJyXoJuWoJuWoJyXoJuWoJuWoJuXn5uXoJyXoJuXn5qWoJqWqKSfp6Kd + pqKdp6Kdp6Kdp6Kdp6Oep6OepqOepqOepqKepqOepqKep6OepqOepqKepqKepqKepqKepqKep6Oep6Oe + p6Oep6Kep6Oep6Oep6Oep6Oep6Oep6Sep6Oep6OeqKOeqKOeqKOep6OeqKOeqKSfqKOep6OfqKSfqKOf + p6Ofp6OeqKOep6Kep6Kdp6KdpaCcpaCco56Zop6YoJyXoJuXxsTB9vb29vb29vb29vb29vb29vb29vb2 + 9vb29vb29vb29vb29vb29vb29vb29vb29vb2+fn5/Pz9/////////////////////v7+/f39/Pz8+vr6 + +Pj49vb29PT08vLy8PDw7u7u7Ozs6urq6Ojo5ubm5OTk4uLi4ODg3t7e3Nzc2tra2NjY1tbW1dXV09PT + 0tLS0NDQz8/Pzs7Ozc3NzMzMy8vLy8vLysrKysrKysrKysrKy8vLy8vLzMzMzc3Nzs7O0NDQ0tLS1NTU + 1tbW2dnZ3Nzc4ODg5OTk6Ojo7Ozs8fHx9vb2+vr6/Pz8/v7+//////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4ODgz8/Pz8/Pz8/Pz8/P0tLS7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7uxcXFPDw81NTU7+/v7+/v7+/v + 7+/vioqKSkpK7e3t7+/v7+/v7+/v7u7ub29vd3d37+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw + 8PDw8PDw2NjYNzc3tLS08PDw8PDw8PDw8PDw8PDw8PDw8PDw6urqODg4n5+f8PDw4uLi3d3d3d3d3d3d + 3d3d3d3d3d3d3d3d3d3d3d3d4uLi8PDw8PDw8PDw8PDw3d3dTU1NSUlJfHx8ioqKgICAUFBQQ0NDzs7O + 8PDw8PDw8PDw8PDwra2tXFxc7e3t8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwubm5NTU12NjY8PDwlpaW + PDw87u7u8PDw8PDw7+/vbW1tPj4+cnJyiIiIiIiIc3NzPz8/a2tr7u7u8PDw8PDw7e3tOTk5RUVFU1NT + U1NTU1NTREREPz8/6Ojo8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw7u7uvLy8n5+frKys5ubm8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw7+/vurq64ODgqqqq7u7u5+fnr6+v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v9PT09vb2 + 9vb29vb29vb29vb29vb28/PzoJyXoZ2YoJ2YoZ2Yop2Yo56Zo56Zo56Zo56Zop6Zop6Zop6Zop6Zop2Y + op2YoZ2Yop2Yop2YoZ2Yop2YoZyXoZyXoZyXoJyWoZyXoZyXoZyXoJyWoJyWoJuWoJuWoJuWn5qVoJuW + oJuWoJuWoJuWoJuWoJyXoJuWoJuWoJyXoJuWoJuWoJuWoJuXoJyXoJyXoJuWoJuXoJuXoJuXqaSfp6Oe + p6KdqKKdp6Kdp6Kdp6OeqKOep6OeqKOep6OepqOepqOepqOepqOepqKepqKepqKfpqKfp6Oep6Oep6Oe + qKOep6Oep6Sfp6Oep6OeqKOeqKSfqKOeqKOeqKOeqKSfqKSfqKSfqKOeqKOep6OeqKOeqKSfqKSfqKOf + p6OfqKOep6Oep6Oep6KdpqKdpqGcpaCco56Zop6ZoZ2YoJuXx8TC9/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f3+Pj4+/v7/v7+/////////////v7+/f39+/v7+fn59/f39fX18vLy8PDw + 7u7u6+vr6enp5ubm5OTk4eHh39/f3Nzc2dnZ19fX1NTU0tLSz8/Pzc3NysrKyMjIxsbGxMTEwsLCwMDA + vr6+vLy8urq6ubm5uLi4tra2tbW1tLS0s7OzsrKysrKysbGxsbGxsbGxsbGxsrKys7OztLS0tbW1t7e3 + uLi4u7u7vr6+wcHBxMTEyMjIzMzM0dHR1tbW3Nzc4uLi6enp8PDw9vb2+vr6/f39//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4ODgz8/Pz8/Pz8/Pz8/P0tLS7u7u7u7u7u7u7u7u7u7u7u7u7u7u7e3tbGxsa2tr7u7u7+/v7+/v7+/v + 7+/vioqKSkpK7e3t7+/v7+/v7+/v7+/vu7u7ODg40tLS7+/v7+/v7+/v7+/v7+/v7+/vy8vLnZ2dwcHB + 7+/v8PDw2NjYNzc3tLS08PDw4eHh3Nzc3Nzc3Nzc3Nzc5eXl6urqODg4n5+f8PDwZmZmNzc3Nzc3Nzc3 + Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3bW1t8PDw8PDw8PDw8PDwsbGxNjY20NDQ8PDw8PDw8PDw39/fPj4+kJCQ + 8PDw8PDw8PDw8PDw4uLiPz8/vb298PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwubm5NTU12NjY8PDwlpaW + PDw87u7u8PDw8PDw7OzsTU1NYWFhwMDA1dXV1dXVwMDAY2NjSkpK6+vr8PDw8PDw7e3tOTk5kZGR3d3d + 3d3d3d3dkJCQPz8/6Ojo8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7u7ut7e3n5+frKys6Ojo8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw39/fvr6+vr6+vLy8tbW1zMzM8PDw8PDw7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v9PT09/f3 + 9/f39/f39/f39/f39/f39PTzn5uVoJyXoZ2Xop2Yop2Yop2Yo56Zop6Zo56Zop6Yop2Yop2Yop6Yop2Y + op2YoZ2YoZ2YoZyXop2YoZyXoZyXoZyXoZyXoZyXoJuWoZyXoJuWoJuWoJuWoJuWn5uWoJuWoJuWoJuW + oJyXoJyXoJyXoZyXoJuWoJyXoJyWoJyXoJuWoJuWoJuWoJuWoJyXoJuWoJyXoJuWoJuWn5uWqaSfqKOe + qKOeqKOep6OeqKOeqKOeqKOeqKOep6OeqKOep6Oep6Oep6OepqKdpqKepqKepqKfpqOfp6Ofp6Kep6Oe + p6Oep6Oep6Oep6Oep6OeqKSfqKSfqKSfqKSfqKSfqKSfqaSfqKSfqaSfqKOeqKSfqKSfqaSfqaWgqKSf + qKSfqKSfp6Ofp6Oep6Kep6Kdp6KdpaGcpJ+apJ+aoZ6ZoZyXx8XC+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4 + +Pj4+Pj4+Pj4+Pj4+fj5/Pz8/v7+/////////v7+/Pz8+vr6+Pj49vb28/Pz8fHx7u7u7Ozs6enp5ubm + 4+Pj4ODg3d3d29vb2NjY1dXV0tLS0NDQzs7OzMzMysrKyMjIxsbGxMTEwsLCwMDAv7+/vb29vLy8urq6 + uLi4tra2tLS0s7OzsrKysLCwrq6urKysq6urqampp6enpqampKSkoqKioaGhn5+fnp6enZ2dnZ2dnZ2d + nZ2dnp6eoKCgoqKipKSkqKiorKyssLCwtLS0urq6v7+/xsbGzc3N1dXV3t7e5+fn8PDw+Pj4/Pz8/v7+ + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4ODgz8/Pz8/Pz8/Pz8/P0tLS7u7u7u7u7u7u7u7u7u7u7u7u7u7u39/fOjo6paWl7u7u7+/v7+/v7+/v + 7+/vioqKSkpK7e3t7+/v7+/v7+/v7+/v6OjoQEBAl5eX7+/v7+/v7+/v7+/v7+/vsbGxOTk5UlJSOTk5 + lpaW8PDw2NjYNzc3tLS08PDwaGhoNjY2NjY2NjY2NjY2ioqK6urqODg4n5+f8PDw3Nzc1dXV1dXV1dXV + 1dXV1dXV1dXV1dXV1dXV1dXV3d3d8PDw8PDw8PDw8PDw39/fVFRUREREbm5ueHh4cXFxSkpKSEhIz8/P + 8PDw8PDw8PDw8PDw8PDwfX19c3Nz8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwubm5NTU12NjY8PDwlpaW + PDw87u7u8PDw8PDw8PDwyMjIaWlpQ0NDOzs7Ozs7Q0NDaGhox8fH8PDw8PDw8PDw7e3tOTk5NTU1Nzc3 + Nzc3Nzc3NTU1Pz8/6Ojo8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7OzssbGxn5+fr6+v6+vr8PDw8PDw8PDw8PDw8PDw8PDw + 0tLSvLy82NjYu7u74eHh2tra3t7e7+/v8PDw8PDw8PDw8PDw7+/v7+/v7+/v7+/v7+/v7+/v9fX1+Pj4 + +Pj4+Pj4+Pj4+Pj4+Pj49PT0npqUoJyWoZ2XoZ2XoZ2XoZ2Xop2Yop2Yop2Yop2Yop2YopyXoZ2YoZ2Y + oZ2YoZ2YoZ2YoJ2YoJyXoZ2YoJyXoJyXoJyXoJuWoJuWn5uWn5uWoJuWn5uWoJuWoJuWoJyWoJuWoJyX + oJuWoJyXoJyXoJyXoJyXoJyXoJyXn5uWoJuWoJuWoJuWoJuWoJyWoJuWoJuWoJyXoJuXoJyXqqWgqKOe + qKOeqKOeqKOep6OeqKOeqKSfqKOeqKOep6Oep6Oep6Oep6OepqOep6OepqOepqOfpqKfpqKfp6Ofp6Of + qKSgqKOfp6OeqKSeqaSfqKSeqaSfqaSfqKSfqKSfqKSfqaSfqKSfqKOeqaOeqKOeqKSfqKWgqKSgqKSf + qKSfqKSgqKSfqKSfp6Oep6Oep6OepqGdpaCbpKCao5+Zop6ZyMbD+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4 + +Pj4+Pj4+fn5/Pz8/////////v7+/f39+/v7+fn59/f39PT08fHx7+/v7Ozs6enp5ubm4+Pj4ODg3t7e + 29vb2dnZ19fX1dXV09PT0tLS0NDQzs7OzMzMy8vLycnJyMjIxsbGxMTEwsLCwMDAv7+/vb29vLy8urq6 + uLi4tra2tLS0s7OzsrKysLCwrq6urKysq6urqampp6enpqampKSkoqKioKCgn5+fnZ2dm5ubmpqamJiY + lpaWlJSUk5OTkpKSkJCQkJCQkJCQkpKSlJSUmJiYnZ2do6OjqqqqsbGxubm5wsLCzc3N2NjY5OTk7+/v + +Pj4/f39//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4ODgz8/Pz8/Pz8/Pz8/P0tLS7+/v7u7u7u7u7u7u7u7u7u7u7u7uwcHBMzMzyMjI5OTkWFhYUVFRUVFR + UVFRQUFBNzc3UFBQUVFRUVFRUVFRs7Oz7u7uYGBgbGxs7+/v7+/v7+/v7+/v5ubmR0dHhoaG7u7uoKCg + OTk519fX2NjYNzc3tLS08PDwZWVlYWFh0NDQ0NDQTU1NiIiI6urqODg4n5+f8PDw8PDw1tbWjo6Ojo6O + jo6Ojo6Ojo6Ojo6Ojo6O1dXV8PDw8PDw8PDw8PDw6urq5ubm3d3dqqqqhoaGdHR0g4ODoqKi2dnZ5ubm + 6Ojo8PDw8PDw8PDw8PDwxMTEPDw83t7e8PDw8PDw8PDw8PDw7u7uaGhoUlJSSEhIMzMzTk5OUlJSQ0ND + NDQ0UVFRUlJShoaGgICAgICAf39/eHh4cnJycnJyeHh4f39/gICAgICA2NjY8PDw7e3tOTk5i4uL0tLS + 0tLS0tLSioqKPz8/6Ojo8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw6enpq6urn5+ftbW17u7u8PDw8PDw8PDw8PDw19fX + tLS03d3drq6u09PTurq68PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7+/v7+/v7+/v9fX1+Pj4 + +Pj4+Pj4+Pj4+Pj4+Pj49fX1n5uWn5yXop2YoZyXoZ2XoZ2Xop6Yop2YoZ2Yop2Yop2Yop2YoZ2Yop2Y + oZ2YoZ2YoZ2YoZ2YoZyXoJyXoJyXn52YoJyXn5uWn5yXoJuWoJuWn5yXn5yXoJyXoJuWoJyXoJyXoJ2Y + oJ2YoZyXoJyWoJuWoJyXoJuWoJuWoJyXn5uWoJyXn5yXoJuWoJuWoJyXoJuWn5yYoJyWoJyYqqWgqKOe + qKOeqKOeqKOeqKSfqKOeqKOep6OeqKSeqKOeqKOeqKOeqKOeqKSep6Sfp6SfpqOfp6Ogp6Sgp6Ogp6Sg + p6Sfp6SfqKSfqKSfqKSfqKSfqKSfqaSfqaSfqKSfqKSfqKSfqKSfqKOeqKSfqKSfqKWgqKSfqKWgqaWg + qaWgqKWgqKSgqKSgp6Ofp6Ofp6OfpqKdpaCcpKCbpJ+aop6ayMbE+fn5+fn5+fn5+fn5+fn5+fn5+fn5 + +fn5/Pz8/////////v7+/f39+/v7+fn59vb29PT08fHx7u7u6+vr6Ojo5ubm4+Pj4eHh39/f3t7e3Nzc + 2tra2NjY19fX1dXV09PT0tLS0NDQzs7OzMzMy8vLycnJyMjIxsbGxMTEwsLCwcHBv7+/vr6+vLy8urq6 + ubm5t7e3tbW1tLS0srKysLCwrq6ura2tq6urqampqKiopqampKSkoqKioaGhn5+fnZ2dm5ubmpqamJiY + kpCNioR+hHpyfnJoeWtgdmhbdGVYcmRWc2VZdGhdd25lfHVvhIB9jo2NlZWVnp6ep6ensrKyvr6+y8vL + 2tra6enp9fX1/Pz8//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4ODgz8/Pz8/Pz8/Pz8/P0tLS8PDw7u7u7u7u7u7u7u7u7u7u7u7urq6uNzc31tbW6urqu7u7uLi4ubm5 + ubm5ubm5ubm5ubm5ubm5uLi4ubm52tra7u7ucXFxXFxc7u7u7u7u7u7u7u7uu7u7NjY2z8/P7+/v4uLi + PDw8oqKi19fXNzc3s7Oz8PDwZWVla2tr8PDw8PDwUlJSiIiI6enpODg4n5+f8PDw8PDwvr6+MzMzY2Nj + bGxsbGxsbGxsbGxsbGxsy8vL8PDw8PDw8PDw8PDwgoKCPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8 + X19f8PDw8PDw8PDw8PDw7OzsVlZWm5ub8PDw8PDw8PDw8PDw7u7uq6uroKCgoKCgoKCglpaWkJCQm5ub + oKCgoKCgoKCgsLCwfHx8fHx8fHx8fHx8SkpKSEhIfHx8fHx8fHx8fHx819fX8PDw3d3dioqKpaWl6Ojo + 8PDw8PDwr6+vbW1t6urq8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw4+PjpaWln5+fvr6+7+/v8PDw8PDw8PDwxsbG + zc3N8PDwxsbG0dHRvr6+3t7e8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7+/v7+/v7u7u9fX1+fn5 + +fn5+fn5+fn5+fn5+fn59vX1n5uWoJyXoZyXoZ2XoZyXoZ2Xop2Yop2Yop2Yop2YoZ2YoZ2Yop2YoZ2Y + oZ2YoZ2Yop6Zop6Zop6ZoZ2YoZ2YoJyXoJyXoJyXoJyYoJ2YoJyXoJ2YoZ2YoZyXoZyYoZ2YoZyYoZ2Y + oZyYoJyYoZ2YoZyXoZyXoJyXoJyXoJyXoJyXoJyXoJyXoJyXoJyXoJ2YoZyXoZ2YoZyXoZyXqqWgqKOe + qKOeqKOeqKSeqKOeqKSep6OeqKOeqKOep6OeqKOeqKOep6OeqKSeqKSfp6Ofp6Ofp6Sgp6SgqKSgqKSg + qKSgqKSgqKSgqKSfqKSfqKSfqKSfqaSfqKSfqKSfqaSfqaSfqKSfqKOeqKOeqKSfqKSfqKWgqaWgqKWg + qaWgqaWgqKWgqKWgqKSgp6OgqKOfpqKepaGcpaCbpKCbpKCbycfF+vr6+vr6+vr6+vr6+vr6+vr6+/v7 + /v7+/////////f39/Pz8+vr69/f39fX18vLy7+/v7e3t6urq6Ojo5ubm5OTk4+Pj4eHh39/f3t7e3Nzc + 29vb2dnZ2NjY19fX1tbW1dXV1NTU09PT0tLS0dHR0NDQz8/Pzs7Ozc3NzMzMy8vLysrKycnJyMjIx8fH + xsbGxcXFxMTEwsLCwcHBv7+/vr6+vLy8urq6uLi4tra2tLS0srKysLCwra2tpKKfkYd+gG9gdF1Ia082 + ZkguZUguZUcuZEcuY0cuYkYuYUYuYEUtX0UtXkQtXUMtW0MtWkItWkMwYE9Aal5TeHJsiomImJiYpaWl + s7OzxMTE19fX6urq9vb2/v7+//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4+Pjz8/Pz8/Pz8/Pz8/P09PT+fn5+Pj49/f39/f39/f39/f39/f3tLS0Nzc33t7e9/f32traUVFRbGxs + w8PD9/f39/f34ODgh4eHS0tLqamp9/f3+Pj4c3NzX19f+Pj4+Pj4+Pj4+Pj4ra2tOjo67u7u+Pj49vb2 + TU1NlJSU39/fNzc3urq6+fn5Z2dnbW1t+fn5+fn5VFRUjY2N8vLyODg4PT09R0dH4eHhxcXFMzMzxMTE + 4ODg4ODg4ODg4ODg4ODg9vb2+fn5+fn5+fn5+fn53NzcxMTEsLCwsLCwsLCwsLCwsLCwsLCwsLCwwMDA + 09PT+fn5+fn5+fn5+fn5+fn5pKSkVFRU9vb2+fn5+fn5+fn5+fn5+fn5+Pj4s7OzWlpaPT09OTk5QkJC + dHR02tra+fn5+fn5+fn5gYGBYmJiYmJiQUFBQEBAYmJiYmJicnJy9vb2+fn5t7e3Pz8/RkZGQEBAT09P + 2tra+fn5nZ2dQEBA8fHx+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5 + +fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5 + +fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5 + +fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5 + +fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn54+PjoaGhn5+f0tLS+fn5+fn5+fn55OTk + sLCw1dXVra2t7e3t7e3tu7u7+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+vr6+vr6 + +vr6+vr6+vr6+vr6+vr69vb2oJyXn5yXoZ2YoZ2Yop2YoZ2Yop6Zop6Yop6Zop6Zop6Zop2Yop2Yop6Z + op6Zop6Zop6Zop+aop6Zop6Zop6Zop6ZoZ6ZoZ6YoZ6ZoZ2YoZ6YoJ2YoZ2YoJyXoZ2Yop2Zop2YoZ2Y + oZ2ZoZ2YoZ2Yop2YoZ2YoZ2YoZyXoZ2YoJyXoJ2YoJyXoZ2YoZ2YoJyWoZ2YopyYop2YoZ2YqqWgqKOe + qKOeqKOep6OeqKOep6OeqKOeqKOep6Oep6Oep6Oep6Oep6Oep6Oep6Oep6Ofp6Ofp6SgqKSgqKSgqKSg + qKSgqKSgqKSgqaSfqKSgqKSfqKSfqaSgqaSgqKSfqaSfqaSfqKSfqKSfqKSfqKWgqKWgqaWgqaWgqqWg + qaWgqqahqaahqaahqaWhqaWhqKSgqKSfpqKfpaGdpaGdpaCcysjF+vr6+vr6+vr6+vr6+/v6/f39//// + /////////f39+/v7+fn59/f39PT08vLy7+/v7e3t6+vr6urq6Ojo5+fn5ubm5eXl5OTk5OTk5OTk4+Pj + 4+Pj4uLi4uLi4eHh4eHh4eHh4ODg4ODg39/f39/f39/f3t7e3t7e3t7e3d3d3d3d3Nzc3Nzc29vb29vb + 2tra2dnZ2NjY19fX19fX1tbW1dXV09PT0tLS0dHRz8/PzczMsqqkloZ4eF1GaUouaUouaEkuaEkuZ0ku + ZkguZkguZUguZEcuZEcuY0cuYkYuYUYuYEUtX0UtXkQtXUQtXEMtWkItWUEtV0AtVT8tVUEvYlJFdm5n + jIuKnZ2dsLCwx8fH3t7e8fHx/Pz8//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 5eXlz8/Pz8/Pz8/Pz8/P1NTU/////////v7+/f39/f39/f39/f39zs7OMzMz0dHR/f39+Pj4x8fHeHh4 + ODg4hoaGurq6QkJCV1dXsLCw7Ozs/f39/Pz8YWFhc3Nz/v7+/v7+/v7+/v7+urq6ODg46Ojo/v7++Pj4 + RUVFn5+f5OTkNzc3vr6+////aWlpb29v////////VVVVj4+P+Pj4ODg4dnZ2qqqq8/PzycnJMzMzNzc3 + ODg4ODg4ODg4ODg4ODg45OTk////////////////////09PTODg4ODg4ODg4ODg4ODg4ODg4ODg4rq6u + ////////////////////////7OzsPj4+zs7O////////////////////wMDANzc3jIyMzMzM09PTv7+/ + YWFhS0tL8vLy////////XFxcYGBgqampqampqampqampqamps7Oz/f39+Pj4SEhIgICA+Pj47u7uWFhY + ZGRkvLy8fHx8QEBA9/f3//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////09PTn5+fpKSk9vb2//////////// + 6Ojo0NDQ7e3t////////4uLi+/v7/////////////////////////////////////////////////Pz8 + +vr6+vr6+vr6+vr6+vr69/b2oJ2Yop2Yop2Yop6Zo56Zo56Zo56Zo56Zo56Zo5+Zo56Zo56Zo56Zo56Z + o56Zo5+ao5+ao5+ao56Zop6Zo56aop6Zop6Zop6Zop6ZoZ6Yop2YoZ2Yop6ZoZ6Zop6YoZ2YoZ6Zop6Z + oZ2YoZ6ZoZ2Yop2YoZ2YoZ2YoZ2YoZ2YoZ2YoZ2YoZ2YoZ2YoZ2YoZ2Yop2YoZyXoZ2Yop2YqaWgqKOe + qKOeqKOeqKOep6OeqKOep6Oep6Oep6Oep6Oep6Oep6Oep6OeqKSfqKSfqKSfqKSgqKSgqKSgqKSgqKWg + qaahqKWgqKSgqKSgqaSgqaWgqaSfqKWgqaSfqaWgqaWgqaSgqaSfqaSfqKSgqaSfqaWgqaWgqqWgqqah + qqahqqahqaahqaahqaahqaahqaWhqKShpqKfp6KfpaGdpqKdysjG+/v7+/v7+/v7/Pz8/v7+//////// + /////v7++/v7+fn59/f39fX18/Pz8fHx7+/v7u7u7u7u7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t + 7e3t7e3t7e3t7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v7u7u7u7u + 7u7u7u7u7u7u7e3t7e3t7Ozs7Ozs6+vr6urq0s3Io5KDd1pBa0suakouakouaUouaUouaEkuaEkuZ0ku + Z0kuZkguZkguZUguZEcuY0cuY0cuYkYuYUYuYEUtX0UtXkQtXUQtXEMtWkItWUItV0EtVkAtVD8sVD8s + XEc1b2Zig4OIn5+fu7u72NjY7+/v/Pz8//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 5eXlz8/Pz8/Pz8/Pz8/P1NTU/////////////f39/f39/f39/f397+/vPDw8p6en/f39/f39/f39/Pz8 + wcHBPj4+NjY2i4uL9vb2/f39/f39/f398vLyPj4+oqKi/v7+/v7+/v7+/v7+4+PjNzc3srKy/v7+zs7O + NTU1zc3N5OTkNzc3vr6+////aWlpbm5u/v7+/v7+VVVVj4+P+Pj4ODg4qKio////////ycnJMzMzzMzM + 6+vr6+vr6+vr6+vr6+vr/Pz8////////////////////0tLSMzMz1tbW9/f39/f39/f39/f39/f3/Pz8 + ////////////////////////////e3t7fX19////////////////////i4uLTk5O/f39//////////// + zs7ONTU1zc3N////////XFxcNjY2PDw8PDw8PDw8PDw8PDw8b29v////7+/vOzs7ra2t////////e3t7 + PDw8VlZWRkZGQEBA9/f3//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////zMzMra2tysrK/////////////f39qqqqn5+f19fX//////////// + //////////////////////////////////////////////////////////////////////////////// + /f39+/v7+/v7+/v7+/v7+Pj4oZ2Yo56Zo56Zo56ZpJ+apJ+apJ+apJ+ao5+ao56ZpJ6apJ6apJ+ao5+a + o56ZpJ+ao5+ao56Zo5+ao5+ao5+ao5+ao5+ao56Zop6Zop6Zo56Zop6aop6Zo5+aop6Zop6ZoZ2Yop2Z + op6Zop6Zop6ZoZ2Yop6ZoZ2Yop2YoZ2Yop2Yop2YoZ2Yop2YoZ2Yop2YoZ2Yop2YoZ2Yop2YqqWgqKOe + qKOep6OeqKOeqKOeqKOep6OeqKSfqKOeqKSfp6SfqKSfqKOeqKSfp6SfqKOeqaSgqKSgqKWgqaWgqaWg + qaahqaWgqKWgqaWgqaWhqaSgqaWgqaWgqqWgqaWgqaWgqaWgqaWgqaWgqaWgqaWgqaWgqaWgqaahqqah + qqahqqahqqahqqWhqqaiqaaiqKWhqKWhp6Ogp6Ofp6KepqKdzMnH/Pz8/Pz8/Pz8/v7+//////////// + /v7+/Pz8+vr6+Pj49vb29fX18/Pz8/Pz8/Pz8/Pz8/Pz8/Pz9PT09PT09PT09fX19fX19vb29vb29/f3 + 9/f3+Pj4+Pj4+fn5+vr6+vr6+/v7+/v7/Pz8/Pz8/Pz8/Pz8/f39/f39/f39/f39/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/Pv7zMG3kHdhbUwwbEwva0sva0svakouakouaUouaUouaEkuaEkuaEku + Z0kuZkguZkguZUguZUguZEcuY0cuY0YuYkYuYUYuYEUtX0UtXkQtXUQtXEMtW0ItWUItWEEtVkAtVD8s + Uz4sVkAtTj5AWFZxj4+UuLi42tra9PT0//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 5eXlz8/Pz8/Pz8/Pz8/P1NTU/////////////v7+/f39/f39/f39/Pz8d3d3Z2dn/Pz8/f39r6+vlJSU + lJSUVlZWOTk5jo6OlJSUlJSU8vLy/f39vLy8Ojo64+Pj/v7+/v7+/v7+/v7+/f39hISER0dHm5ubUVFR + ampq+vr65OTkNzc3vr6+////aWlpPz8/XFxcXFxcOjo6j4+P+Pj4ODg4qKio////////ycnJMzMzYWFh + ampqampqampqampqampq4eHh////////////////////0tLSMzMzn5+ftbW1tbW1tbW1tbW1tbW15ubm + ////////////////////////////y8vLPz8/7u7u////////////////w8PDODg4hYWFxsbG0dHRt7e3 + XV1dTk5O8/Pz////////XFxcXl5epKSkpKSkpKSkpKSkpKSkuLi4/////v7+dXV1RkZGo6OjkpKSOTk5 + paWl/f39n5+fQEBA9/f3//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////0NDQn5+fs7Oz////////////////uLi4n5+fzc3N//////////// + //////////////////////////////////////////////////////////////////////////////// + /////v7+/Pz8/Pz8/Pz8+fn5op6ao56ao56ao5+apJ+apKCapJ+apJ+apJ+apJ+ao5+apJ+apJ+apJ+a + pJ+apJ+ao56Zo56Zo5+ao5+ao56Zo56Zop6aop6Zop6Zop6Zop6Zop6Zop6Zop6Zop6Zop6aop6Zop6Z + op6Zop6Zop6Zop2Yop2Yop6ZoZ2Yop2Yop2YoZ2Yop2Yop2Yop2Yop2Yop2Yop2Yop2Yop2YqqejqKSf + qKSfqKSfp6WgqKSfqKWfqKSfqKWgqKWgqKSfqaWgqKSfqaWgqKWgqaWgqaWgqaSgqKWgqaahqaWhqaWg + qaWgqaahqqWhqqahqaWhqaWhqaWhqqahqqahqaWgqaWgqaWgqaWgqaWgqaWgqaWgqaWgqaahqaWgqqag + qqagqqWhqqWhqqahqqahqaahqaahqaShp6Sgp6Kfp6Ofp6OezMnG/Pz8/f39//////////////////// + /v7+/Pz8+vr69/f39vb29fX19fX19vb29/f3+Pj4+fn5+fn5+vr6+/v7/Pz8/f39/f39/v7+/v7+/v7+ + //////////////////////////////////////////////////////////////////////////////// + ////////////////+vn4wrSmg2VLclE0b08ybk0xbEwwbEsva0svaksvakouaUouaUouaUouaEkuaEku + Z0kuZ0kuZkguZkguZUguZEcuZEcuY0cuYkYuYkYuYUYuYEUtX0UtXkQtXUQtXEMtW0MtWkItWEEtV0At + VUAtUz4sUz8sVT8xRz1WdnaPw8PD6Ojo/f39//////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 5eXlz8/Pz8/Pz8/Pz8/P1NTU/////////////////f39/f39/f39/f391tbWPT092dnZ/f39lpaWcnJy + cnJycnJycnJycnJycnJycnJy7+/v+/v7ampqhISE/f39/v7+/v7+/v7+/v7+/v7+9vb2k5OTZWVlh4eH + 8PDw/v7+5OTkOTk5vr6+////vb29paWlpaWlpaWlpaWlzs7O+Pj4Ojo6qamp////////5eXlm5ubm5ub + m5ubm5ubm5ubm5ubm5ub6+vr////////////////////2dnZVFRUVFRUVFRUVFRUVFRUVFRUVFRUw8PD + ////////////////////////////+vr6ZGRkubm5/////////////////v7+v7+/ZGRkPj4+Ozs7RkZG + fn5+5OTk////////////ampqREREREREREREREREREREREREaWlp////////9fX1l5eXYGBgZ2dnsLCw + /v7+////oqKiQkJC9/f3//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////7Ozsn5+foKCg5OTk////////8PDwo6Ojn5+f3d3d//////////// + //////////////////////////////////////////////////////////////////////////////// + /////////v7+/Pz8/Pz8+fn5o5+ao56ao5+ao5+bpJ+apJ+bpKCbpJ+apJ+apJ+apJ+apJ+apJ+apJ+a + pJ+apJ+ao56ZpJ+ao5+apJ+ao5+ao5+aop6Zop6Zop6Zop6Zop6Zop6Zop6aop6Zop6Zop6aop6Zop6a + op6Zop6ao56Zop6Zop6Zop6Yop6Zop6Zop6ZoZ2Yop2YoZ6Zop2Yop2Yop6Zop2Yop6Zop2Yq6ejqaWg + qKSgqKWgqKWgqaWgqKSgqKWgqaSfqaWgqaWgqaWgqaWgqaWgqqWgqaSgqaWgqaSgqaWhqqahqaahqaah + qaahqqahqaahqaahqqahqqWhqqaiqqWhqqWhqaWgqaWgqqWgqaWgqqWgqaWgqaWgqaWgqaahqqWhqqWh + qqWgqqWhqqahqqahq6ahqqaiqaWhqKWhqaahqKSgp6OfqKOfzMrI/f39/v7+//////////////////// + /f39/Pz8+fn59/f39vb29fX19vb2+fn5+/v7/f39/v7+/v7+//////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////Pv6zr+yknRZgF9Celk8dVU4clI1b08zbk0xbEwwa0sva0svakovakouaUouaUouaEkuaEku + Z0kuZ0kuZkguZkguZUguZUguZUcubUwvfFMwiFoxk18ynmUzpmkzrm00s3A0t3I1tnI1tnE1sG40qGo0 + nWUzjl0yelMwY0cuVT8sTDs+W1h9zs7U/Pz8//////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 5eXlz8/Pz8/Pz8/Pz8/P1NTU/////////////////v7+/f39/f39/f39/f39sbGxwMDA/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f397e3tkpKS7+/v/f39/f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7++fn51NTU8PDw/v7+/////////////////////////v7+1dXV7e3t//////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////+vr69PT0/v7+ + //////////////////////////////////////////////////////////////////////////////// + ////////6+vr19fX/f39//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////wsLCn5+foqKivb29v7+/paWln5+fsbGx/Pz8//////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////v7+/f39+vr6pJ+apJ+apKCbpJ+bpKCbpKCbpKCbpKCbpKCbpJ+apJ+apJ+apJ+apJ+a + pJ+apJ+ao5+apJ+apJ+ao5+ao5+ao5+aop6ao56Zo5+ao5+aop6Zo56aop6Zo56Zo56Zo56ao5+ao5+a + op+aop6aop6aop6Zop6aop6Zop6Zop6Zop2Yop6Zop2Yop6Yop6Zop6Zop6Zop6Zop6Yop6Zq6ejqqWh + qaahqqahqaWgqaWhqqWhqqahqaWgqqWgqqWgqqagqqWgqqWgqqWgqqWhqqWhqqWhqqWhqqahqqahqaah + qqahqqaiqqahqqahqqaiqqaiqqaiqqaiqqaiqqahqqahqqahqqahqqagqqagqaahqqahqqahqqahqqah + qqahq6aiqqahqqaiq6aiq6eiqqeiqqahqaahqaahqKSgqKOfzcrI/v7+//////////////////////// + /f39+/v7+fn59/f39vb29vb29vb2+fn5+/v7/f39/v7+/v7+//////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////7OHYu56FoYFklXVYi2pOgmJFfFs/dlY6c1I2cFA0bk4ybEwwa0swaksvakovaUouaUouaEkuaEku + Z0kuZ0kuZ0kudE8vh1kxmWIyqms0sW40sm80s3A1tXE1tnE1uHI1uXM1u3Q1vHU2vnY2wHc2wng2xHg2 + xno3x3o3yXw3y304wHc3pGg0gFY0UENarKzG//////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 5eXlz8/Pz8/Pz8/Pz8/P1NTU/////////////////////f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////Pz8yMjIo6Ojn5+fn5+foaGhurq69fX1//////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////v7++vr6pKCbpJ+bpaCcpaGcpKCbpaCbpKCbpaCcpKCbpKCbpaCbpKCbpJ+bpJ+a + pKCbpJ+ao5+apJ+apJ+apJ+apJ+apJ+bpJ+ao5+ao5+ao5+ao5+ao5+ao5+ao5+apJ+ao5+bo5+bo5+b + pJ+ao5+bo5+bpJ+bo56ao5+aop6ao56aop6Zo56aop6Zop6Zop6Zo5+aop6Zo56aop6Zop6Zq6ejqqai + qqWhqqahqqWhqqahqqahq6eiqaagqqWgqqahqqahqqahqqagqqWgqqWgqqWhqqWhqqahqaWhqqahqqah + q6aiqqahq6eiqqaiq6aiq6aiq6aiq6aiqqaiq6aiqqaiq6aiq6ahqqahqqahqqahqqaiqqaiqqeiq6ai + q6aiqqeiq6aiq6eiq6eiq6eiq6eiq6eiqaahqqahqqaiqqaizsvJ//////////////////////////// + /v7+/Pz8+vr69/f39vb29fX19fX19vb29/f3+Pj4+Pj4+fn5+vr6+/v7/Pz8/f39/f39/v7+/v7+/v7+ + //////////////////////////////////////////////////////////////////////////////v2 + 8tnD2rmcx6aKtpV5p4Zqmnlcjm5RhWVIfl1BeFg7c1M3cFA0bk4ybE0xa0swaksvaUovaUouaEouaEku + eFEvjl0yo2gzq2w0rGw0rW00r240sG40sW80s3A1tXE2vH1Ax49Pzp1c1Khm2K5u2rJ02rB02qxy16Vq + 05ldzopKyn46y304zX44z3840YA4z384oWdDc2qN4eHr//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 5eXlz8/Pz8/Pz8/Pz8/P1NTU/////////////////////v7+/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////9vb25eXl5OTk8vLy//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////+vr6paGcpKCcpaGcpaCcpKCcpaCcpKCcpKCcpKCbpKCcpJ+bo5+apJ+apJ+a + pJ+bpJ+bo5+bpJ+bpJ+bpJ+bpJ+apKCbpKCbpJ+bpJ+apJ+bpKCbo5+apKCbpJ+bpKCbpKCbpJ+bpKCc + pKCcpKCbo5+cpKCbo5+bo5+bo5+ao56ao5+bo5+bo5+apJ+ao5+bo5+ao5+bo5+bo56ao5+aq6ejqaWh + qqaiqqWhqqaiqqaiqqahqqahqqahqqaiqqahqqahqqahqqagqqahqqahqqahqqaiqqaiqqeiqqahqqei + q6eiq6eiq6eiq6eiq6eiq6ejq6ejrKejq6ejrKeirKairKeiq6aiq6aiq6aiqqaiqqajqqajq6ejq6ej + q6ijq6ijq6eiq6iirKiiq6ijq6ijq6ijqqaiq6aiq6aiqqaiz8zK//////////////////////////// + /v7+/f39+vr6+Pj49vb29fX18/Pz8/Pz8vLy8/Pz8/Pz8/Pz9PT09PT09PT09fX19fX19vb29/f39/f3 + +Pj4+Pj4+fn5+vr6+vr6+vr6+/v7/Pz8/Pz8/Pz8/f39/f39/f39/v7+/v7+/v7+/v7+/v7+///4//nf + /ujM9dW44sGlz66RvJyArIxvnn5hknJVh2dLgF9DeVk9dFQ4cVE1bk8zbE0xa0wwaksvc08wilsxoGYz + p2ozqGo0qWs0qms0rGw0rm01vH9D0JlZ4LJv8MyG/OOb/+2k//Op//iu//2z//+5//++///D///I///O + ///T///Y/frW9OK76sea36pz1IhE1II52IQ5elOeMjLgoKDq/f3+//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 5OTkz8/Pz8/Pz8/Pz8/P1NTU/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8+/v7+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+/v7+/v7/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/v7+//// + ////////////////////+/v7pqKdpaGcpaGcpaGcpKGcpKGcpKGcpKCbo5+co5+bpKCcpKCcpKCcpKCc + pKCbpJ+bpKCbpKCbpJ+bpaCbpKCbpaCcpaCbpaCbpKCbpKCbpKCbpKCbpaCbpKCbpaCbpJ+bpaCcpaCc + pKCcpKCbpaCbpKCcpKCcpKCbo6CbpJ+bpJ+co5+bpJ+bpKCbpJ+ao6Cbo5+bpKCbpJ+bpKCbq6ikqaWi + qqaiqqWhqqaiqqaiqqaiq6aiqqaiq6ahq6ahqqahqqahq6ahqqagqqahq6aiqqahqqaiqqeiq6eiqqei + q6eiq6eiq6eiq6eiq6ejq6ejrKejrKejrKejrKejq6ejrKeirKejrKejq6eiqqajq6ajq6ejq6ejrKei + rKeirKijq6ijrKmkrKijrKijrKikq6ijrKikq6ejq6ajqqaiz8zK//////////////////////////// + /////v7+/Pz8+fn59/f39fX18/Pz8fHx8PDw7u7u7u7u7e3t7e3t7e3t7e3t7Ozs7Ozs7Ozs7e3t7e3t + 7e3t7e3t7u7u7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8/Pz/f39///+///3 + //3o//LV+t7B6sqt1rWZw6OGspF1ooJmlXZZimtOgmJGe1s/dVY6cVI2b080fFUykl8yo2gzpGgzpWkz + pmkzqGo0rW43yIpM4qdk+MR8/8+H/9SL/9iP/92U/+KY/+ed/+yi//Gn//as//uw//62//+6//+////E + ///J///O///S///X///b///f/v3g9OC75bF6d1ezKir/Kir/XFz43t7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4uLi0tLS0tLS0tLS0tLS1dXV8PDw8PDw8PDw8PDw8PDw8PDw8PDw7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz7pqGcpqKcpaGcpaGcpaKcpaKcpaGcpKCcpaCcpKCcpKCbpaGco5+cpaCc + paGcpaCcpKCcpaGbpJ+cpaGcpaGdpaGcpKCbpaGcpaCbpaGcpaCcpqGcpaCbpaCbpaCbpaCbpaCbpaGc + pKCbpKGcpaGcpKCbpKGbpKCbpKCcpKGcpKCcpKCcpKCbpJ+bpKCbpKCcpKCbpKCbpKCbpKCbq6ikqqai + qqaiqqWiqqWiqqaiqqaiqqahq6aiqqahqqahqqahqqahqqahqqahqqahqqahqqaiqqaiq6eiqqeiq6ei + q6eiq6eirKiirKijq6ijq6ejrKijrKijrKikrKejrKejrKeiq6eirKijrKejrKikq6ajq6ejq6ijrKij + rKijrKikraijrKijrKijrKijrKijrKikrKikrKekrKikrKek0M3L//////////////////////////// + /////////f39+/v7+fn59/f39PT08vLy7+/v7e3t6+vr6urq6Ojo5+fn5ubm5eXl5OTk5OTk4+Pj4+Pj + 4uLi4uLi4uLi4uLi4uLi4eHh4eHh4ODg4ODg4ODg4ODg39/f39/f3t7e3t7e7e3t/v7+//////////// + ///9///x//je/ubK8dG13b2hyamNt5d7p4drmXldjW1ShGRIfF1BhFs4l2I0oGYzomczomczpGgzp2o1 + w4FF455c/Lhx/752/8J6/8Z+/8qC/86G/9OK/9eO/9yS/+CX/+Wb/+qg/+6k//Op//iu//yy//+3//+7 + //+////E///I///M///Q///U///Y///b///e3t7xhob/ODj/Kir/MjL/np7//f3///////////////// + //////////////////////////////////////////////////////////////////////////////// + +vr6+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj48/Pz7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v8PDw8PDw8PDw8PDw8PDw8fHx8fHx8fHx8fHx8fHx8vLy8vLy8vLy8vLy8/Pz8/Pz8/Pz9PT0 + 9PT09PT09PT09PT09fX19fX19fX19vb29vb29vb29/f39/f39/f3+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4 + +Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4 + +Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4 + +Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4 + +Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4 + +Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4 + +Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4 + +Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4 + +Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4 + +Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4/f39//// + /////////////////////Pz8pqKdpqKdpqKcpaGcpaGcpaGcpaGcpaKdpaGcpqGcpaGcpaGcpaGcpaCc + paGcpaGdpaGdpaGcpaGdpqGcpaCcpqGdpaGbpaGcpaGcpaCbpaCbpaCbpKCbpaCbpaCbpaGcpaGcpaGc + paGcpaCbpaGcpaGcpKGcpaGcpaGcpaGcpKCcpaCbpKCcpKCcpKCcpKCcpaCbpaCcpKCbpKCbq6mkqqai + qqaiqqajq6ajq6ejq6aiqqaiq6aiqqaiqqaiqqaiqqaiq6aiq6eiq6eiq6eiq6eiq6eiq6eiq6ijq6ej + rKijrKijrKijrKejrKijrKijq6ijrKijrKikrKikrKikrKikraikramkrKijrKijrKikrKikrKijrKij + rKikrKikraikramkramkraikramkrKmkraqlramlraikraik0M3L//////////////////////////// + /////////////v7+/Pz8+vr6+Pj49fX18vLy7+/v7Ozs6urq6Ojo5ubm5OTk4+Pj4eHh39/f3t7e3Nzc + 29vb2dnZ2NjY19fX1tbW1dXV1NTU09PT0tLS0dHR0dHR0NDQz8/P0NDP7u7q//////////////////// + ///////////4//3n/+7S99m948Soz6+TvJyAq4xwnH1hk2xJmWQ3nmUzn2UzoGYzoWYzq24404xN9qdh + /7Bo/7Rs/7dv/7py/752/8J5/8Z9/8qA/86E/9KI/9aM/9qQ/96V/+OZ/+ed/+yh//Cm//Sq//mu//2y + //+2//+6//++///C///G///J///M///Q9/fZx8f+yMj/xMT/fHz/Ly//KSn/amr/8vL///////////// + //////////////////////////////////////////////////////////////////////////////// + xcXFm5ubm5ubm5ubm5ubpKSk8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx+vr6//// + /////////////////////Pz8pqKdpqKdpqKdpqKdpqKdpqKdpqGcpqKcpqKdpaGcpqKdpqKdpqKdpaKd + pqKepqGdpqKepqKepqGdpqGdpqKdpqGcpqGcpaGcpaGcpaCbpaGcpaCbpaGcpaGcpKCbpaCbpaGcpaCb + paGcpaCbpaCbpaCbpqGcpaGcpaGcpaGcpaGcpKGcpKCcpKCbpKCcpKCcpKCcpKCbpaCbpKCbq6ikq6ei + qqaiqqejq6ejqqaiq6ejq6ajq6ajq6ejq6aiq6aiq6eiq6eiq6eiq6eirKejq6ejrKijrKijrKikrKmk + ramkrKikrKmkrKmkramkrKmkrKikramkrKmlrKilramlramlramlrKikrKikrKikrKikramkramlramk + ramkramkrqmkrqmkrqmkrqmkrqmkraqkraqlrqqlraqlraml0M7L//////////////////////////// + /////////////////v7+/f39+/v7+fn59vb29PT08fHx7u7u6+vr6Ojo5ubm4+Pj4eHh39/f3t7e3Nzc + 2tra2NjY19fX1dXV09PT0tLS0NDQzs7OzMzMy8vLycnJyMjIzMjF9OfR//7p///7//////////////// + ///////////////8//7u//TZ+9/E6cqu1LWZuJR1n21CnGQznGQznWUznmUzrnA61YxM9aRc+adg/Kpi + /q1l/7Bo/7Nr/7Zu/7px/711/8F4/8V8/8h//8yD/9CG/9SK/9iO/9yS/+CW/+Sa/+ie/+yi//Cm//Sq + //iu//yx//61//+4//+8//+////C///F0tLru7v/vb3/v7//wMD/r6//UVH/KSn/TEz/5OT///////// + //////////////////////////////////////////////////////////////////////////////// + tra2f39/f39/f39/f39/ioqK8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7+/v7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8p6Oep6Oep6Oep6Kdp6OepqKdpqKdpqKepqKdpqOepqOepqKdpqOepqKe + pqOepqKepaKdpqKepqKepqKepqKepaGdpqGdpqGdpaGcpaGcpaGcpaCcpaGcpaCbpaGcpaGcpaCcpaGc + paGcpaGcpaGcpqGcpaGcpaGcpqGcpaGcpaGcpqGcpKGcpaGcpKCcpKCcpKCbpJ+bpKCbpKCcramlq6ej + q6ejq6ikq6ikq6ejq6ejq6ejrKejq6ejrKejq6ejq6ejrKijrKiirKijrKijraijrKijraikramlramk + ramkrqmkramkraqkramkraqlramlramlramlramkramlraqmrqqlraqlramlramlrqmlramlramlraql + raqlrqmkrqqlrqqlrqqlrqqlrqqlrqqlrqqlraqlraqlraml0M7L//////////////////////////// + /////////////////////////v7+/f39+/v7+fn59vb29PT08vLy7+/v7Ozs6enp5ubm4+Pj4ODg3t7e + 29vb2dnZ19fX1dXV09PT0tLS0NDQzs7OzMzMy8vLycnJycO+4MSs+Nq+//DV//7q///8//////////// + ///////////////////+///0//nf+N7BvJBpmmMzmmMym2MynGQzp2s30olJ7p1W8aBY86Ja9qVd+adf + /Kpi/q1l/7Bn/7Nq/7Zt/7lw/7xz/8B3/8N6/8d+/8qB/86E/9KI/9aM/9mP/92T/+GX/+Wa/+ie/+yi + //Cl//So//es//uv//2y//+1//+47u7Irq7+sLD/srL/s7P/tbX/trb/trb/cnL/Kir/RET/5OT///// + //////////////////////////////////////////////////////////////////////////////// + tra2f39/f39/f39/f39/ioqK8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw2tra1tbW6enp8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8qKOep6OeqKOep6OeqKOep6Oep6OepqOepqOep6OepqOepqOepqOepqOe + pqOepqOepqOepqOepqKepqOepaKepaGdpaKepqKdpaGdpqGcpaGcpaGdpaGcpaGbpaGcpaGcpaGcpqGc + paGcpaGcpqGcpaGcpqGcpqGcpqGcpqGcpaGcpqGcpaGcpaCcpaGcpKGcpaGcpaGdpaCbpaCcraqmrKik + q6ejrKikrKikrKijrKejrKikrKikrKejrKejrKejrKejq6ejrKijrKijraijramkraikraqlraqkraql + rqqlrqqlrqqlrqqlrqqlrqqlraqlraqmrqqlrqqmrqqmrqqmrqqmrqqlrqqlrqqlrqmlrqmlrqmlrqql + raqlrqqlr6qlrqqlrqqlr6qlrqqlrqqlrqqlrqqlrqqlraql0M7M//////////////////////////// + /////////////////////////////////////v7+/Pz8+vr6+Pj49vb28/Pz8fHx7u7u7Ozs6enp5ubm + 4+Pj4ODg3d3d2tra2NjY1dXV0tLS0NDQzs7OzMzMwbmxu56Eza+T48So99q+//DV//7q///8//////// + ////////////////////////4tK/o3JFmGIymWIymmMyn2Y0xoBC5pZQ6plS7JtU751W8aBY86Ja9qRc + +adf/Kph/qxk/69n/7Jp/7Vs/7hv/7ty/751/8J4/8V8/8l//8yC/9CF/9OJ/9eM/9qQ/96T/+GW/+Sa + /+id/+ug/+6j//Km//Wp//is//quubnro6P/paX/p6f/qKj/qqr/q6v/rKz/rKz/hIT/Li7/RET/6en/ + //////////////////////////////////////////////////////////////////////////////// + tra2f39/f39/f39/f39/ioqK8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7+/v7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7u7uTk5ONjY2vr6+8PDw8PDw8PDw8PDw + 8PDwrKys5ubm8PDw3NzcioqKlJSU5ubm8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8qKOeqKSfqKOeqKOeqKOep6OeqKOeqKOep6OepqOep6Oep6OepqOepqOe + pqSep6SfpqSfpqOepqSepqOfpqKepqKepqKepqKepaKepqKdpaGdpaKdpaCcpaGdpqKdpaGcpqGcpqKd + pqGcpqKdpaKdpqKdpaKcpaGcpqGcpqGcpqKcpaGcpaGcpqGcpaGcpqGcpaKdpaKdpaGcpaGcraqmrKij + rKikrKikrKijrKikq6ikq6ejrKejrKikrKikrKijrKejraikrKikrKijramkramkramkramkrqqlraql + rqqlrqqlrqumrqumrqqlraqlrqumrqumrqumrqqmrqqmrqqmrqqmr6qmrqqmr6qmrqqmrqqmrqqmrqqm + rqqlrqqlrqqlrqqlr6qlrqqlrqqlrqqlrqqlrqqlrqqlrqql0M7M//////////////////////////// + /////////////////////////////////////////////////v7+/f39+/v7+fn59/f39fX18vLy8PDw + 7u7u6+vr6Ojo5ubm4+Pj4eHh3t7e29vb2dnZvrSrm31jqIpvuZqAzK6T4cKn9ti9/+/U//7p///7//// + /////////////////Pr5wKGFlmEyl2Eyl2IymWIytHQ73Y5J5JRN5pVO6JdQ6plS7JtU751W8Z9Y86Ja + 9qRc+aZe+6lh/qxj/65m/7Fo/7Rr/7du/7px/710/8B2/8N5/8Z8/8qA/82D/9CG/9OJ/9eM/9qP/92S + /+CV/+OY/+ab/+md/+yg/+6i4de+mJj/mpr/m5v/nZ3/np7/n5//oKD/oaH/oaH/oaH/h4f/Ly//U1P/ + 9/f///////////////////////////////////////////////////////////////////////////// + tra2f39/f39/f39/f39/ioqK8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwwcHBw8PD7u7u7u7u7u7u + 7u7uzc3NuLi47e3t7u7u7u7u7u7u4uLip6en6Ojo7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7u7uS0tLMzMzvb298PDw8PDw8PDw8PDw + 8PDwrq6ulJSU7e3tXFxcp6enj4+Pfn5+8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8qKSfp6OeqKSeqKSfqKSep6Sfp6Oep6Sfp6Sfp6OepqSfp6Sfp6SfpqOe + p6Sfp6Sfp6OepqSfpqOepqSfpqOepqKepqOfp6OepqKepqKepqKdpaKdpqKdpqKdpaKdpqKdpqKdpqOe + pqKdpqGcpqKdpqKdpqKdpqKdpqKdpqKdpqKdpqKdpqKdpqKdpqKdpaGcpqKdpqKdpqOdpqKdrqumramk + rKikraikrKmkrKijrKikrKikrKikrKikrKikrKikrKikrKikrKikraikraikramkramkramkramkraql + rqqlrqqlrqqlrqqlrqumrqumrqumraumrqumrqumrqqmr6qnr6qmr6qmr6qmrqqmrqqmrqqmrqqmrqqm + r6umrqqmr6qlrqqlr6qmr6qlrqqlrqqlrqqlrqqmrqqlrqql0M7L//////////////////////////// + /////////////////////////////////////////////////////////////////v7+/f39/Pz8+vr6 + +Pj49vb29PT08vLy8PDw7u7u6+vr6enpwrmwhGZMjG5TmHpgp4huuJl/y6yR38Gm9Na8/+3S//3n///6 + ////////////7eXdpnpUlWAylWAylmEyoWc1zYNC349I4ZFK45JL5ZRN5pVO6JdQ6plR7JtT751V8Z9X + 86FZ9qRb+KZd+6hg/ati/61k/7Bn/7Nq/7Zs/7hv/7ty/750/8F3/8R6/8d9/8qA/82C/9CF/9OI/9aL + /9mO/9yQ/96T/+GV/+SY/uWaoZ3tj4//kJD/kpL/k5P/lZX/lpb/lpb/l5f/l5f/l5f/l5f/fX3/LCz/ + e3v///////////////////////////////////////////////////////////////////////////// + tra2f39/f39/f39/f39/ioqK8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw1tbWQEBAxsbG7u7u7u7u7u7u + 7u7uioqKSkpK7Ozs7u7u7u7u7u7u7OzsXl5ejo6O7u7u7u7u7+/v7+/v7+/v2trasLCwsLCwsLCwsLCw + sLCwxcXF7+/v7+/v7+/v7+/v7+/vysrKvr6+7+/v7e3ts7Oz3t7e8PDw1NTUubm56+vrs7Oz19fX8PDw + 8PDw8PDw8PDw09PTt7e37e3ttLS019fX8PDw8PDw8PDww8PDvb298PDw8PDw8PDwvb29ycnJ8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw1tbWtLS07Ozs8PDw8PDw8PDwx8fHwcHB8PDwzMzMsLCwsLCwsLCw + sLCwsLCw2NjY8PDw8PDw5+fnsLCw3d3d8PDw8PDw8PDwwsLCxsbG8PDw8PDw8PDw39/fsbGx4uLiwMDA + yMjI8PDw8PDw8PDw8PDw4ODgsbGx4+Pjv7+/zMzM8PDw5OTksbGx6enp8PDwyMjIwsLC8PDw8PDw8PDw + 0dHRnZ2dlJSUtLS06urq8PDw8PDw8PDw8PDw1dXVoKCglJSUuLi47Ozs8PDw8PDwzMzMgYGBwcHB5+fn + sLCwsLCwsLCwsLCwsLCwyMjI8PDw8PDw6enpsLCw3t7e8PDw8PDw8PDwxMTEsLCwsLCwsrKywcHB6Ojo + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDwzc3Nj4+Pj4+Pj4+Pj4+Pj4+Pjo6OPz8/MzMzdnZ2kZGR5OTk8PDw8PDw + 8PDw7OzsZmZm1tbWUFBQ7e3t3t7eWFhY8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8qKSfqKSfqKSfqKSfqKSfqKSfp6Oep6OeqKSfp6Sfp6Oep6Oep6Sfp6Sf + p6SfpqSep6Sfp6Sfp6SfpqSfp6OepqOfpqKepqOepqSfpqKepqKepqKepqOepqKepqKep6Kep6KepqKe + pqKdpqKdpqKepqOep6OepqOepqKepqKdpqOepqKdpqKdp6Oep6Kdp6Kdp6Oep6KepqOepqKdrqqmramk + ramkrKmkrKmkrKijrKijrKmkrKikrKikraikrKikrKikraikraikramkramkramkramkraqlraqlraql + rqqmr6qlrqqmrqqmrqumrqumrqumrqumrqumrqumrqqmr6umr6qmrqqmrqqmrqqmr6qmrqqmrqqmrqum + rqumr6qmrqumr6umr6umr6umrqqmr6qmr6umrqqmrqqmrqqm0M7M//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////v7+/v7+/f39/Pz8+vr6+Pj4zMK6dVg/eVxCgWNJi21Tl3lfpYdttph9yKqQ3b6k8tS5/urP//zk + ///4////2Ma1l2U6k18ylGAylWAysXE52IlE3YxG3o5H4I9I4ZFK45JL5ZRM55VO6JdP6plR7JtT751V + 8Z9W86FY9aNa+KVd+qhf/aph/6xj/69m/7Jo/7Rq/7dt/7lw/7xy/791/8J3/8R6/8d8/8p//82C/8+E + /9KG/9SJ/9eL/9mN/9yQz7u8hIT/hob/iIj/iYn/ior/i4v/jIz/jY3/jY3/jo7/jY3/jY3/jY3/aWn/ + KSn/vLz///////////////////////////////////////////////////////////////////////// + tra2f39/f39/f39/f39/ioqK8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwfX19Xl5e7u7u7+/v7u7u7u7u + 7u7uioqKSkpK7Ozs7u7u7u7u7u7u7u7urKysPj4+3d3d7u7u7u7u7+/v7+/vsrKyNDQ0RUVFRkZGRkZG + RkZGgICA7+/v7+/v7+/v7+/v7+/vgoKCXV1d7+/vxMTENTU1k5OT8PDwnJycTExM7e3tXV1deHh48PDw + 8PDw8PDw8PDwampqbm5u6urqPj4+pKSk8PDw8PDw39/fPz8/lJSU8PDw8PDw8PDwWFhYfHx88PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDwdXV1NDQ0v7+/8PDw8PDw8PDwdnZ2ZGRk8PDwhoaGNjY2RkZGRkZG + RkZGRkZGr6+v8PDw8PDw1NTUMzMzt7e38PDw8PDw8PDwZmZmdHR08PDw8PDw8PDwd3d3NDQ0yMjIi4uL + TU1N7Ozs8PDw8PDw8PDwl5eXRkZG6+vrXl5ehISE8PDwqampMzMzsrKy8PDweHh4aGho8PDw8PDwoKCg + OTk5TExMXV1dOTk5YGBg5eXl8PDw8PDwoqKiOzs7T09PXl5ePDw8X19f4eHh8PDwsrKyMzMzoKCg1tbW + MzMzQkJCRkZGRkZGRkZGhoaG8PDw8PDw2traMzMzurq68PDw8PDw8PDwbW1tOzs7TExMS0tLOzs7SUlJ + wMDA8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDwrKysMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzNzc32NjY8PDw8PDw + 8PDw8PDwtra2jY2NY2Njmpqag4ODhISE8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8qaSgqaWgqKSgqKSgqKSfqKSfp6SfqKSfp6Sfp6Sfp6Sfp6Sfp6Sfp6Sf + p6Sfp6Sfp6Sfp6SfqKSfp6Sfp6Sfp6Oep6OfpqSfpqOep6OepqOep6Oep6Kep6Oep6Oep6Oep6Oep6Oe + p6Oep6Oep6Kep6Kdp6Kdp6Kdp6Oep6Oep6Oep6Oep6Kdp6Oep6Kep6Oep6OeqKOepqOepqKerqumraij + raikramkraijramkrKmkrKmkraikraikrKmkramlrKilrKikramkraikramkramkramlramlraqlraqm + raqmrqqmr6umr6umr6umr6umr6umrqqnrqumr6unrqunrqunrqunrqqnrqunrqqnrqumrqqmrqumrqun + rqunr6umr6ynr6umr6unr6unr6umr6unr6unr6umrqunrqun0M/M//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////2tTNcFM6blE3c1U8eVtBgGNJimxSlXhdo4Vrs5V7xqiN2ryh7tC2/ebM + /vjfw6eLkV8ykl8yk18yl2Izwns92YlD2opE3ItF3Y1G3o5H4I9I4pFJ45JL5ZRM55VO6JdP6plR7JpS + 7pxU8J5W86BY9aJa96Rc+qde/Klg/qti/65k/7Bm/7Jo/7Vr/7dt/7pw/7xy/790/8F3/8R5/8Z7/8l+ + /8uA/86C/9CE/9KG+9GMiYXyfHz/fn7/f3//gYH/goL/g4P/g4P/hIT/hIT/hIT/hIT/hIT/hIT/g4P/ + UFD/Pz//8vL///////////////////////////////////////////////////////////////////// + tra2f39/f39/f39/f39/ioqK8PDw8PDw8PDw8PDw8PDw8PDw8PDw5ubmQEBAm5ub8PDw8PDw7u7u7u7u + 7u7uioqKSkpK7Ozs7u7u7u7u7u7u7u7u4uLiOjo6oaGh7u7u7u7u7+/v7+/vsrKyOTk53d3d6urq6urq + 6urq7Ozs7+/v7+/v7+/v7+/v7+/vgYGBXV1d7+/viIiISEhIWVlZ7+/vm5ubTExM7u7upqamPT094eHh + 8PDw8PDw3t7eOjo6s7Oz6urqPj4+pKSk8PDw8PDwjo6OQUFB4eHh8PDw8PDw8PDwWFhYfHx88PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw4eHhPDw8VFRUd3d38PDw8PDw8PDwdnZ2ZGRk8PDwhoaGVFRU6+vr6+vr + 6+vr6+vr7u7u8PDw8PDw1NTUMzMzt7e38PDw8PDw8PDwZmZmdHR08PDw8PDwvb29ODg4NTU1yMjI0dHR + NjY2vb298PDw8PDw7+/vWFhYhISE8PDwXl5ehISE8PDwa2trSUlJd3d38PDweHh4aGho8PDwzs7OOTk5 + kZGR6urq7+/vysrKQUFBg4OD8PDwzc3NOTk5lJSU7Ozs7+/v0tLSSkpKeXl58PDw6Ojo19fX5eXl1tbW + MzMzvr6+6+vr6+vr6+vr7e3t8PDw8PDw2traMzMzurq68PDw8PDw8PDwbW1tbm5u7Ozs7Ozs4ODgd3d3 + RERE4eHh8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw0tLSOzs7MzMzioqKpKSkpKSkpKSkQUFBMzMzhoaGpqam5+fn8PDw8PDw + zc3Nnp6e1dXVZ2dn0NDQlJSUn5+f6urq8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8qqWhqaWhqaWgqaWgqaWgqaWgqKSfqKSfqKSfqaSfqKSgqKSfqKWgp6Sg + qKSfp6SfqKSfp6Sfp6SfqKSfqKOeqKSfqKSfqKOep6Sfp6Sfp6Sfp6SfqKSfp6Sfp6OeqKOfp6Ofp6Oe + p6Oep6Oep6Kdp6Kdp6Kdp6Kdp6Kep6Oep6Oep6Kdp6Kep6Oep6Oep6Oep6Oep6Oep6Oep6Kdr6umramk + rqmlrqmkraqlramkramlramkraqlraqlramlramlrailramlramlrailramlramlraqlramkraqmrqqn + rqunr6umr6ynr6unr6unr6ynr6ynr6ynr6ynr6ynr6yor6ynr6ynrqunrqunr6unrqumrqumrqumr6un + r6unr6ynr6unr6ynr6ynr6ynsKynsKynsKynr6ynr6yorqyo0dDN//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////5uHdcFU9aEsyak00blE3clU7eFpBf2JIiGtRlHZcoYRqsZN5wqWK1rie5sis + sYZgkF4ykV4ykl8yn2Y1zYE+14dB2IhC2YlD24pE3ItF3Y1G345H4I9I4pBJ45JK5ZNM55VN6JZO6phQ + 7JpS7pxT8J5V8qBX9KJY9qRa+aZc+6he/apg/6xi/65k/7Bm/7Np/7Vr/7dt/7pv/7xx/75z/8F1/8N3 + /8V5/8d7/8l9/8t/uqG+c3P/dXX/dnb/eHj/eXn/enr/enr/e3v/e3v/fHz/fHz/fHz/e3v/e3v/enr/ + d3f/Njb/iIj///////////////////////////////////////////////////////////////////// + tra2f39/f39/f39/f39/ioqK8PDw8PDw8PDw8PDw8PDw8PDw8PDwycnJMzMzxMTE6Ojod3d3cXFxcXFx + cXFxUFBQOjo6cHBwcXFxcXFxcXFxvr6+7OzsW1tbdHR07u7u7u7u7u7u7+/vsrKyOTk54uLi7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/vgYGBXV1d7e3tUFBQsbGxQUFB09PTm5ubTExM7u7u5OTkQEBAYmJi + dXV1dXV1YmJiQkJC5ubm6urqPj4+pKSk8PDw0NDQPT09lJSU8PDw8PDw8PDw8PDwWFhYfHx88PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDwpKSkTExMubm5Pj4+4uLi8PDw8PDwdnZ2ZGRk8PDwhoaGVVVV8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw1NTUMzMzt7e38PDw8PDw8PDwZmZmdHR08PDw6enpU1NTfHx8NjY2yMjI7u7u + YWFhVFRUdXV1dXV1cnJyNzc3xsbG8PDwXl5ehISE4uLiQUFBtbW1Q0ND6enpeHh4aGho8PDwh4eHTExM + 6urq8PDw8PDw8PDwioqKSUlJ7Ozsg4ODUlJS6+vr8PDw8PDw8PDwqKioOzs739/f8PDw8PDw8PDw1tbW + MzMzwsLC8PDw8PDw8PDw8PDw8PDw8PDw2traMzMzurq68PDw8PDw8PDwbW1tcHBw8PDw8PDw8PDw4eHh + Pj4+paWl8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDwlpaWMzMzampq7u7u8PDw7u7uS0tLMzMzvb298PDw8PDw8PDwyMjI + VlZWnZ2dUlJSqKiog4OD8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8qqWhqqWhqqWhqaWgqaWgqaWgqaWgqKWgqKWgqKWgqKWgqKSgqKWgqKWg + qKSfqKSfqKWgp6SfqKSfqKSgqKSfqKSfqKSfqKSfqKSfqKSfqKSfqaSgqKSfqKSgqKSfp6Ofp6Ofp6Oe + p6Oep6Oep6Oep6Kdp6Kep6Oep6Kdp6Kep6Oep6Oep6Oep6Oep6Oep6Odp6Oep6Oep6OeqKOerqunrqql + raqlrqqlraqlrqqlrqqlrqqmraqlrqqlraqlrqqlraqmrqqmraqmramlraqmramlraqmrqqnrqunraqn + r6unr6unsKynsKyosKynsa2osKynsKyosKyor6ynr6ynr6yor6yosKyor6yor6uor6ynr6ynr6unr6um + r6unsK2osKynsKyosKyosKyosK2osK2osKyosK2or62osKyo0s/M//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////8u/tdFtGZEgvZkkwZ0syak00bVA3cVQ7d1pAfmFHh2pQknRbn4ForpB2u5yAnnFI + j10xkF4ykF4yp2o20oM+1YY/1oZA14dB2IhC2olC24pD3ItE3Y1F345G4I9I4pBJ45JK5ZNL5pVM6JZO + 6phP7JlR7ptS8J1U8p9W9KBX9qJZ+KRb+qZd/Khf/qpg/6xi/65k/7Fm/7No/7Vq/7ds/7lu/7tw/71y + /790/8F1/8N3876DdHH3bW3/bm7/b2//cHD/cXH/cnL/c3P/c3P/dHT/dHT/dHT/dHT/c3P/c3P/cnL/ + cnL/YGD/MDD/6Oj///////////////////////////////////////////////////////////////// + tbW1f39/f39/f39/f39/ioqK8PDw8PDw8PDw8PDw8PDw8PDw8PDwsrKyNjY219fX6enpk5OTjo6Ojo6O + jo6Ojo6Ojo6Ojo6Ojo6OjY2NjY2NycnJ7u7ucXFxXV1d7u7u7u7u7u7u7u7usbGxNzc3q6urtLS0tLS0 + tLS05OTkra2tkpKSkpKSkpKS0dHRgYGBXV1dzMzMSkpK6OjocnJymJiYm5ubTExM7u7u8PDwe3t7RERE + jo6Ojo6OSEhIenp68PDw6urqPj4+W1tbcHBwQUFBR0dH1NTU8PDw8PDw8PDw8PDwWFhYfHx88PDw8PDw + 8PDw8PDw8PDw8PDw8PDw7u7uXl5ei4uL6urqSEhIpqam8PDw8PDwdnZ2Y2Nj8PDwhoaGSkpKtLS0tLS0 + tLS0uLi47+/v8PDw8PDw1NTUMzMzt7e38PDw8PDw8PDwZmZmdHR08PDwlJSUY2NjwMDANjY2yMjI8PDw + rKysNTU1hYWFjo6OWlpaUVFR7u7u8PDwXV1dg4ODsLCwYWFh7u7uVlZWtra2eHh4aGho8PDwZmZmbm5u + 8PDw8PDw8PDw8PDw4uLi09PT7u7uXFxcenp68PDw8PDw8PDw8PDw1NTUMzMzwcHB8PDw8PDw8PDw1tbW + MzMzwsLC8PDw8PDw8PDw8PDw8PDw8PDw2traMzMzubm58PDw8PDw8PDwbW1tb29v8PDw8PDw8PDw8PDw + WFhYg4OD8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw6urqWVlZNDQ0sbGx8PDw7u7uS0tLMzMzvb298PDw8PDw8PDwjo6O + n5+f8PDwjo6OpqambGxs1tbW8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8qqaiqqahqqWiqaWhqaahqaWhqaWhqaahqaWhqKWhqaWhqaahqKWhqKWg + qKWgqKSfqKSfqKWgqKSfqKWgqKWgqKSgqKSfqKSfqKSfqKSfqaSfqKSfqKSgqKSgp6SfqKSfqKSfp6Of + p6Ofp6Oep6Oep6OepqKdpqKepqKdpqKep6OepqKdpqKep6Oep6Oep6Ofp6Oep6Oep6Oep6Oer6uorqql + rqqmrqqmrqumrqumrqqmrqumrqqmrqumrqqmrqqmrqqmrqqmrqqmrqqmrqqmrqqlrqqmraqlrqumrqun + r6unsKynsKynsKynsKynsKyosaynsayosKynsKynsKynsKyor6ynsKyor6yosKyor6unr6unr6unr6un + r6uosKynsK2osK2osK2osK2osK2osa2osK2osK2osKyosK2o0tDN//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////Pz8iXRiYkcuY0cvZEgvZUkwZ0oyaU00bFA2cFQ6dllAfGBGhWhPkHNZm3xgkmQ8jl0x + j10xj10xsHA304M91IQ+1YU/1oY/14dA2IdB2YhC2olC24pD3ItE3oxF345G4I9H4pBI45FJ5ZNL5pRM + 6JZN6pdP65lQ7ZpS75xT8Z5U859W9aFY96NZ+aVb+6dd/ale/qpg/6xi/65k/7Bm/7Jn/7Rp/7Zr/7hs + /7pu/7tw/71xpovDZWX/Zmb/Z2f/aGj/aWn/amr/a2v/bGz/bGz/bGz/bGz/bGz/bGz/bGz/bGz/a2v/ + amr/aWn/Pz//ior///////////////////////////////////////////////////////////////// + t7e3f39/f39/f39/f39/i4uL9vb29vb29vb29vb29vb29vb29vb2srKyNzc339/f9vb26enpd3d3lJSU + 3t7e9PT09PT07u7ura2tcHBwxcXF9PT09PT0dnZ2W1tb9PT09PT09PT09PT0tbW1MzMzOzs7PDw8PDw8 + PDw809PTjIyMYWFhYWFhYWFhxsbGhISEX19fkpKShoaG9fX1tbW1Xl5enp6eTU1N8/Pz9vb2ycnJODg4 + 3Nzc5eXlOjo6xsbG9vb28PDwPz8/bW1tk5OTi4uLVlZWRUVF4uLi9vb29vb29vb2WVlZfn5+9vb29vb2 + 9vb29vb29vb29vb29vb209PTNzc31NTU9vb2ioqKXl5e9PT09vb2eHh4ZWVl9vb2iYmJNTU1PDw8PDw8 + PDw8R0dH9fX19vb29vb22dnZMzMzu7u79vb29vb29vb2aGhodnZ22traQ0ND0tLSyMjINjY2zc3N9vb2 + 6+vrQkJCsrKy9fX1Wlpal5eX9vb29vb2X19fhoaGdHR0pqam9vb2lpaWfX19e3t7ampq9vb2YmJidHR0 + 9vb29vb29vb29vb29vb29vb29vb2WFhYgoKC9vb29vb29vb29vb23t7eNDQ0wMDA9vb29vb29vb23Nzc + MzMzx8fH9vb29vb29vb29vb29vb29vb239/fMzMzvr6+9vb29vb29vb2b29vcXFx9vb29vb29vb29vb2 + Xl5egYGB9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb2 + 9vb29vb29vb29vb29vb29vb29vb29vb2z8/POTk5SkpK6enp9PT0TExMMzMzwcHB9vb29vb29vb2tbW1 + a2tr1NTUWlpazc3NysrKgYGB9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb2/Pz8//// + /////////////////////Pz8qqahqqaiqqWhqqahqaWhqqaiqqaiqaaiqaWhqaahqKWhqKWgqKWhqKWg + qKWgqKWgqKWgqKWgqaWgqaWgqKSgqKSfqKSfqKSfqKSgqKSgqaWgqKSfqKWgqKSgp6SfqKSfqKSfp6Sf + p6Kfp6Kep6Ofp6KepqKepqKep6Oep6Oep6Kdp6Oep6Oep6Oep6Oep6Oep6Ofp6OeqKSfqKOfr62or6um + r6umr6umr6ynr6umr6ynrqynr6umrqunr6umrqqmrqqmrqqnrqqnr6qnrqqmrqqnr6umr6unr6umsKun + r6unsKynsK2osKynsaynsaynsa2osa2osaynsK2osK2osKynsKynsKynsKyosKyosKunr6unsKyosKyo + sKypsK2osK2osK2psK2osa2osa2osa2osq2osa2osK2osK2o0tDN//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////p5iLYUYuYUYuYkYuYkcvY0gvZEkwZkoxaEwza082b1M6dFg/e15FhGVKjV83jVwxjVwx + jl0xtnM30oI80oM904Q91IQ+1YU/1oY/14dA2IdB2YhB2olC24pD3ItE3oxF341G4I9H4pBI45FJ5JJK + 5pRL6JVM6ZdO65hP7JpQ7ptS8J1T8p5V9KBW9qJY+KNZ+aVb+6dc/ale/6pg/6xh/65j/7Bk/7Fm/7Nn + /7Vp/7Zq6KuBYF/9X1//YGD/YWH/YmL/Y2P/ZGT/ZGT/ZWX/ZWX/Zmb/Zmb/Zmb/Zmb/ZWX/ZWX/ZGT/ + Y2P/YmL/WVn/Nzf/9/f///////////////////////////////////////////////////////////// + urq6f39/f39/f39/f39/jIyM////////////////////////////ycnJNDQ02NjY////6enpnp6eU1NT + QEBArq6u2NjYWVlZPz8/hISEzc3N/Pz8/Pz8aGhobW1t/f39/f39/f39/f39u7u7Ojo67+/v/Pz8/Pz8 + /Pz8/f39/f39/f39/f39/v7+/v7+iIiIX19fWFhYzMzM/v7+9PT0RUVFiYmJTk5O/Pz8/v7+/f39WFhY + nJycsbGxTk5O+/v7////+Pj4Pz8/ra2t////////7OzsOTk5q6ur/////////v7+W1tbgoKC//////// + ////////////////////kpKSW1tb/v7+////2NjYNjY229vb////e3t7Z2dn////jY2NWFhY/v7+/v7+ + /v7+/v7+////////////4eHhMzMzwcHB////////////ampqd3d3b29vkpKS////z8/PNjY21NTU//// + ////hoaGbGxs39/fOjo639/f/////v7+YGBgfn5+R0dH6Ojo////3t7eR0dHeXl5bGxs////gYGBYmJi + /f39////////////zMzMpqam/v7+d3d3aGho/v7+////////////yMjINTU14eHh////////////4+Pj + MzMzzs7O////////////////////////5+fnMzMzxMTE////////////cnJydHR0////////////+vr6 + SUlJnZ2d//////////////////////////////////////////////////////////////////////// + ////////////////////////////////////lJSUMzMzjo6O/f39TU1NMzMzx8fH/////////////f39 + qampdXV1ubm5/v7+/v7+pKSk9vb2//////////////////////////////////////////////////// + /////////////////////Pz8qqahqqaiqqaiqqaiqaWhqaaiqaahqaWiqaWhqKWhqKWhqaWhqKWiqaWh + qaWhqaWhqaWhqKWhqKagqKWgqKWgqaWgqaWgqaWgqKWgqaWgqKSfqKSfqKSfqaWgqKSfqKSgqKSgp6Sf + p6Sfp6Ofp6Ofp6KepqKfqKOfp6Oep6Ofp6Oep6OfqKSfqKSgp6Ofp6SfqKSfqKSfqKSgqKSfsKyor6um + r6umr6umr6ynr6umr6ynr6ynr6umr6ynr6ynr6unr6unrqqnr6unr6unr6qnrqqnr6umr6umr6umsKyn + sKynsKynsKynsKyosaynsayosa2osa2osaynsaynsaynsKyosKynsKynr6ynsKyosKynsKyosKyosKyo + sK2psK2psK2osK2psq6psa6osa2osa2osq2osa2osK2osK2o0tDN//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////0cnCX0UtYEUuYEUuYUYuYUYuYkcuY0cvZEgwZkoxaEwza042blI5dlc9iVw0jFwxjFwxjl0x + unU40IE70YI80oI804M91IQ91IQ+1YU+1oY/14dA2IdA2YhB2olC24pD3ItE3oxE341F4I5G4pBH45FI + 5JJJ5pNK55RM6ZZN6pdO7JlP7ppR75xS8Z1U859V9KBW9qJY+KNZ+qVa/Kdc/ahd/qpf/6tg/61h/65j + /7Bk/7FlkXfLWVn/Wlr/W1v/XFz/XFz/XV3/Xl7/Xl7/X1//X1//X1//YGD/X1//X1//X1//Xl7/Xl7/ + XV3/XFz/W1v/Ojz/1Of///////////////////////////////////////////////////////////// + urq6f39/f39/f39/f39/jIyM////////////////////////////6+vrODg4tLS0////////////+fn5 + nJycODg4QEBAaWlp5ubm/f39/f39/f399vb2RERElpaW/f39/f39/f39/f39u7u7Ojo67+/v/f39/f39 + /f39/f39/f39/f39/f39/f39/v7+iIiIQ0NDUFBQ+Pj4/v7+/v7+fn5+Tk5OTk5O/Pz8/v7+/v7+pKSk + VVVVbm5ukpKS////////+Pj4Pz8/ra2t////////7OzsOjo6rKys////////////W1tbgoKC//////// + ////////////////+vr6SkpKo6Oj/////////v7+WFhYkZGR////fHx8Z2dn////jY2NWFhY//////// + ////////////////////4eHhMzMzwcHB////////////ampqRkZGT09P9PT0////0NDQNjY21NTU//// + ////1tbWOjo6h4eHY2Nj/f39////////YGBgT09PZ2dn/v7+/////f39Xl5eRkZGbGxs////wMDANzc3 + zs7O////////9vb2Wlpaampq////vLy8Nzc3zs7O////////+fn5a2trXl5e/Pz8////////////4+Pj + MzMzzs7O////////////////////////5+fnMzMzxMTE////////////cnJydHR0/////////v7+r6+v + ODg42tra//////////////////////////////////////////////////////////////////////// + ////////////////////////////////////9vb2VlZWOTk51tbWTU1NMzMzx8fH//////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8q6aiq6eiqqeiqqaiqqaiqqeiqaaiqKWiqaWhqaWiqKWiqKWiqaWiqaWh + qaWhqaWhqaaiqKWhqaWhqKWhqaWhqaWgqaWgqaahqaWgqaWgqaWgqaWgqKSgqKSgqaSgqKSgqaSgqKSf + qKSfqKOfqKOfqKSfqKKfp6SfqKSfqKOfqKSfqKSfqaSfqKSgqKSgqKSfqKWgqKSgqKSgqKSfsK2or6um + r6ynr6ymr6ynr6umr6ynr6ynr6ynr6ynr6ynr6ynr6yor6uor6uor6unr6unr6unr6unr6unsKunsKyo + sKyosK2osK2osK2osa2osa2osa2osa2osa2osa2osayosKyosKynsKyosKyosKyosKyosKyosKyosKyo + sKuosKyosK2osK2osa6psq2osq2osq2osq2osq2osa2osa6p0tDN//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////8O7raVE8XkQtX0UtX0UuYEUuYEUuYUYuYkYuYkcvZEgwZUkxZ0szbE81hloyi1sxi1sxjVwxuXQ3 + 0IA70IE70YE70oI80oI804M91IQ91YQ+1oU+1oY/14dA2IdA2YhB2olC24pC3YtD3oxE341F4I5G4Y9H + 45BI5JFJ5ZNK55RL6JVM6pZN65hO7ZlQ7ppR8JxS8p1T859U9aBW9qJX+KNY+qRa+6Zb/adc/qld/6pf + /6tg2ZmEU1P/VFT/VVX/Vlb/Vlb/V1f/WFj/WFj/WVn/WVn/WVn/Wlr/Wlr/WVn/WVn/WVn/WVn/WFj/ + V1f/V1f/Vlb/Sm//bNP///////////////////////////////////////////////////////////// + urq6f39/f39/f39/f39/jIyM/////////////////////////////f39ZmZmdnZ2////////0dHRwsLC + wcHBXl5eOjo6s7OzwMDAwMDA9vb2/f39y8vLNjY21dXV/f39/f39/f39/f39u7u7NjY2gICAhoaGhoaG + hoaGv7+//f39/f39/f39/f39/f39iIiIMzMzjo6O/v7+/v7+/v7+wcHBMzMzTk5O/Pz8/v7+/v7+6+vr + PDw8ODg42NjY////////+Pj4Pz8/Z2dnioqKhYWFVVVVRkZG6+vrmZmZhoaGhoaGQ0NDU1NThoaGhoaG + sbGx////////////wMDAOjo66Ojo////////////n5+fSUlJ+Pj4fHx8Z2dn////jY2NQkJChoaGhoaG + hoaGhoaGysrKhoaGhoaGenp6MzMzbW1thoaGhoaG2NjYampqNTU1wMDA////////0NDQNjY21NTU//// + /////f39XFxcNTU1qqqq////////////YGBgMzMzr6+v////////////oKCgMzMzbGxs/////Pz8dnZ2 + QUFBkJCQoaGhX19fPz8/1NTU/////f39dXV1Pz8/j4+PoaGhYmJiPz8/0tLS////////////////4+Pj + MzMzzs7O////////////6+vriIiIhoaGfX19MzMzbm5uhoaGhoaG1dXVcnJyUFBQjo6Oi4uLcXFxOTk5 + mJiY/v7+//////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////zs7OODg4YmJiSUlJMzMzx8fH//////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8q6eiq6eiq6eiq6eiq6eiqqeiqqeiqaaiqaaiqKWiqqaiqaaiqaaiqaai + qaaiqaahqqaiqaahqaWhqaahqaahqaWgqqahqqahqaWgqaWgqaWgqaWgqaWgqaWgqaWgqaSgqaWgqaSg + qKSfqaWgqKSgqKSfqKSfqKWgqKSgqKSgqaWgqaSgqKSgqKSgqaWgqaWgqaWgqaSfqaWgqKWgsa2psKyn + sKynr6umsKymr6ynr6ynr6ynr6ynr6ynr6yosKyor6yosKynsKyor6unr6qnr6unr6unsKunsKyosKyo + sKyosKyosK2osa2osa2osa2osa2osa2osa2osaynsayosK2osKyor6ynsKynsKypsKyosKyosKypsKyo + sKypsK2osa2osK6psa2osq6psq6psq6psq2osq2osq6osa6p0tHO//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////j35vXUQtXkQtXkQtXkQtX0UtX0UuYEUuYEYuYUYuYkcvY0gwZkoxgVcxilsxilsxjFwxuHM3z4A6 + z4A60IA70IE70YE70oI804M804M91IQ91YQ+1oU+14Y/2Ic/2IdA2YhB2olB24pC3YtD3oxE341E4I5F + 4Y9G4pBH5JFI5ZJJ5pNK6JRL6ZZM65dN7JhO7plP75pQ8JxS8p1T855U9aBV9qFW+KJX+aRY+6VZ/KZb + /qdcd2PZTk7/T0//UFD/UVH/UlL/UlL/U1P/U1P/VFT/VFT/VFT/VFT/VFT/VFT/VFT/VFT/U1P/U1P/ + UlL/UVH/UYj/T9D/NMX/9fz///////////////////////////////////////////////////////// + urq6f39/f39/f39/f39/jIyM////////////////////////////////xcXFPj4+6Ojo////eXl5S0tL + S0tLS0tLS0tLS0tLS0tLS0tL6urq/Pz8fX19bW1t/Pz8/f39/f39/f39/f390dHRdXV1dXV1dXV1dXV1 + dXV1tra2/f39/f39/f39/f39/f39rq6udXV12tra/v7+/v7+/v7+9fX1eXl5h4eH/f39/v7+/v7+/v7+ + kJCQeXl5/v7+////////+/v7fn5+dnZ2dnZ2eXl5l5eX4+Pj////i4uLdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2 + pqam////////////rKyslJSU////////////////5ubmd3d33d3dpqammZmZ////srKydnZ2dnZ2dnZ2 + dnZ2dnZ2w8PDdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ20tLSm5ubkpKS/v7+////////39/feHh44uLi//// + ////////tbW1ZGRk7Ozs////////////lJSUd3d37e3t////////////5ubmdnZ2nJyc////////+vr6 + oqKiY2NjWlpae3t72dnZ////////////+vr6qampZWVlWlpagYGB3d3d////////////////////7Ozs + dnZ23t7e////////////6Ojod3d3dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2z8/PoKCgdnZ2dnZ2d3d3jIyMzs7O + /v7+//////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////i4uLMzMzMzMzMzMzx8fH//////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8rKijq6ijq6ejq6eiq6eiqqaiqqaiqqaiqqaiqqaiqaaiqqaiqqeiqqai + qqaiqqaiqqaiqqaiqqWgqqaiqqahqqahqqahqqagqqahqqahqqWgqqagqaagqqahqaWgqqWgqqSfqaWg + qaWgqaSfqaWgqKWgqaWgqKWgqaWgqaWgqaSgqKWgqaWgqaWgqqWgqaWgqaWgqqWgqaWgqaWgsa2psKyn + sKynsKynsKynsKynsKynsKynr6ynr6ynr6yosK2osKyosKyosKyosKyosKunsKyosKuosKynr6unsKyo + sKyosKyosa2osK2osa2osa2osa2osa2osa2osa2osa2osa2psK2psK2psK2psK2psKypsa2psK2qsKyp + sKypsa2psa6psa6psq6psq6psq6psq6psq6psq6psq6qsq6p0tDO//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + xb21XEMtXEMtXUMtXUQtXkQtXkQtXkQtX0UuX0UuYEUuYEYuYkcvfFQwiVoxiVoxilsxs3E2zn85zn86 + z4A60IA60IE70YE70YI70oI804M81IM81IQ91YQ91oU+14Y+2Ic/2YdA2ohA2olB24pC3YpC3otD34xE + 4I1F4Y5G4o9G45BH5ZFI5pJJ55RK6JVL6pZM65dN7JhO7plP75pQ8JxR8p1S855T9Z9U9qBV96JW+aNX + xYmJSkr/Skr/S0v/TEz/TEz/TU3/Tk7/Tk7/Tk7/T0//T0//UFD/UFD/UFD/T0//T0//T0//Tk7/Tk7/ + TVv/Taz/TNL/S9L/OMn/xO////////////////////////////////////////////////////////// + urq6f39/f39/f39/f39/jIyM/////////////////////////////////f39jY2NsrKy/////Pz8+/v7 + +/v7+/v7+vr6+fn5+fn5+fn5/Pz87Ozsa2tr4ODg/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////8/PzT09PMzMzMzMzx8fH//////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8rKijrKiirKijrKeirKiiq6eiq6eiqqaiqqaiqqaiqqaiqqaiqqaiqqai + qqajqqaiqqajq6ajqqaiqqaiqqaiqqaiqqaiqqahqqahqqWgqqahqqWgqqWgqqahqqWgqqahqqahqqWg + qqWgqaWgqqagqaWgqKWgqaWgqaahqaWhqaWgqaWgqaWgqaWgqaWgqaWgqaWgqaWgqaWgqKSfsa2psKyn + sKynsKyosKynsKyosKyosa2osKyor6yosK2osK2or6ynsKynsKyosK2osKyosKuosKyosKyosKyosKyp + sK2osK2osK2osK6psa6psa6psq6psa2osa6psa2psa2psa2psa6psK6psK6psK6psK2psK2psa2psq6p + sq6qsq2psq6qsq+qsq+qsq6ps66ps6+qs66qs66qs66psq6q09HO//////////////////////////// + ////////////////////////////////////////////////////////////////////////////9fPy + a1VCW0ItW0MtXEMtXEMtXUMtXUQtXkQtXkQtXkQtX0UuYEUudVAwiFoxiVoxiVoxrG01zX45zn85zn85 + z386z4A60IA60IE60YE70oI70oI804M81IM81YQ91YQ91oU+14Y+2IY/2Yc/2ohA24lB24lB3IpC3YtC + 34xD4I1E4Y5F4o9G45BG5JFH5ZJI5pNJ6JRK6ZVL6pZM65dM7ZhN7plO75pP8JtQ8pxR851S9J5T855W + YVTkRkb/R0f/SEj/SEj/SEj/SUn/Skr/Skr/Skr/Skr/Skr/Skr/S0v/Skr/Skr/Skr/Skr/Skr/Snn/ + ScX/SM7/SM7/R87/Psr/kuH///////////////////////////////////////////////////////// + urq6f39/f39/f39/f39/jIyM//////////////////////////////////////////////////////// + /////////////f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////xsbGNjY2MzMzx8fH//////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8rKijrKijrKijrKiiq6eiq6eiqqajq6eiqqaiqqejqqaiqqeiq6ejq6ej + qqejqqejqqejqqejqqaiq6aiqqaiq6eiq6aiqqahqqahq6ahqqahq6ahq6ahqqahqqahqqahqqahqqWg + qqahqaWgqaWgqaahqaahqaahqaahqaahqaWhqaWhqaWhqqWhqaWhqaWgqqWgqaWgqKSgqKSfsa2psKyn + sKyosK2osa2psKyosKyosa2osKypsK2psKyosK2osK2psK2osKyosKyosKyosKyosKypsaypsKypsa2p + sK2psa2psa6psa6psa6psa6psq6psq6psq6qsq6psq6psa6psa6qsa6qsK6psa6qsa6qsa6psq2qsq2q + sq6qsq6qsq6qsq+qsq+qs6+qs6+qs6+qs6+qs6+qs6+qs6+q09HO//////////////////////////// + ////////////////////////////////////////////////////////////////////////////opSJ + WUItWkItWkItW0ItW0MtXEMtXEMtXUQtXUQtXkQtXkQtbEsvh1kxiFoxiFoxomc0zH44zX45zX45zn85 + zn85z4A60IA60IA60YE60YE70oI704I704M81IM81YQ91oQ91oU+14Y+2IY+2Yc/2ohA24hA24lB3IpB + 3YtC3oxD34xD4I1E4o5F449G5JBG5ZFH5pJI55NJ6JRJ6ZVK6pZL7JdM7ZhN7plN75pO8JpP8ZtQrHiW + QkL/Q0P/Q0P/RET/RET/RUX/Rkb/Rkb/Rkb/Rkb/Rkb/Rkb/Rkb/Rkb/Rkb/Rkb/Rkb/RlL/RqD/Rsv/ + Rcv/RMv/RMr/Q8r/Qcn/adX///////////////////////////////////////////////////////// + urq6f39/f39/f39/f39/jIyM//////////////////////////////////////////////////////// + /////////////v7+/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////v7+sbGxnJyc5OTk//////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8rKijrKijrKijrKijrKejq6ejq6ejq6eiq6ejq6eiqqejq6ejq6ejq6ej + q6ekqqejq6ijq6ejq6ejq6ejqqejq6eiqqahq6eiq6ahq6aiq6aiqqahq6ahq6ahqqahqqaiqqahqqah + qqahqqahqaahqaahqqahqaahqaahqaaiqaahqaahqaahqqaiqaahqqahqaWhqqWhqaWhqaWhsa2qsKyo + sa2psKyosKypsa6psa2psa2psa6psa6psa6psK6qsK6psa6psa6psa6psa2psa2psa2psa2psa2psq2p + sa2psa2psa6psq6psq6ps6+psq6qsq6qsq6psq6psq+qsq6qsq6qsq6qsa6qsa6psq6qsq6qsq6qsq6q + sq6qsq6qsq6qsq+qs6+qsq+qs6+qs6+qtLCrtLCrs6+qs6+q1NHP//////////////////////////// + ////////////////////////////////////////////////////////////////////////5uPgWkQw + WEEtWUItWkItWkItWkItW0MtXEMtXEMtXEMtXUQtY0cuhFgxh1kxh1kxlmEzynw4zH44zX44zX45zn85 + zn85z385z4A60IA60IA60YE60oE70oI704I71IM81IM81YQ81oQ91oU914Y+2IY+2Yc/2og/24hA24lA + 3IpB3YpC3otC34xD4I1D4Y5E4o5F449F5JBG5ZFH5pJH55NI6JRJ6pRK65VK7JZL7ZdM7phM5pVVT0fu + Pz//QED/QED/QUH/QUH/QkL/QkL/QkL/Q0P/Q0P/Q0P/Q0P/RET/RET/Q0P/Q0P/Q2j/Qrr/Qsj/Qsj/ + Qsj/Qcj/QMf/QMf/P8f/SMz///////////////////////////////////////////////////////// + urq6f39/f39/f39/f39/jIyM/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/f39/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+//////// + /////////////////////Pz8rKikrKijrKijrKejrKejq6ikrKijq6ijq6ejq6ekq6ejq6ekq6ejq6ej + q6ikq6ijq6ijq6ikq6ikrKajq6ejq6ejq6ajq6ejq6aiq6ejq6aiqqaiqqaiq6eiq6eiq6eiqqaiq6ei + qqaiqqeiq6eiq6ejqqehqqaiqqeiqaeiqqeiqaeiqaaiqqaiqaaiqqejqaaiqaWiqaaiqqaisa6qsK6p + sK6psa2psa6psa6psa2psa6psq6qsa+qsq+qsa+qsq6psa+qsa6psa6psq2psa2psa2psq6psq6qsa2q + sq6qsq6psa6psq6psq+qsq6qs6+qsq6ps6+qs6+qsq6qsq+qsq+qsq+qsq+qsq+qsq6qsq6qsq6qsq6q + sq6qs6+rsq+qsq+qs6+qs6+qs7Crs6+qtLCrtLCrtK+qs6+q1NHP//////////////////////////// + ////////////////////////////////////////////////////////////////////////kIJ1V0At + V0EtWEEtWUEtWUItWkItWkItW0ItW0MtXEMtXUMtfVQwhlkxhlkxjVwyxHk3zH04zH04zX44zX44zn45 + zn85z385z3850IA50IA60YE60YE60oE704I704I71IM81IM81YQ81oQ914U914Y92IY+2Yc+2oc/24g/ + 24lA3IlA3YpB3otC34xC4IxD4Y1D4o5E445E5I9F5ZBG5pFG55JH6JNI6ZNI6pRJ6pVJ7JZKlGmlPDz/ + PT3/PT3/Pj7/Pj7/Pj7/Pz//Pz//Pz//QED/QED/QED/QED/QED/QED/QEf/QJL/QMT/P8T/P8T/P8T/ + PsT/PsT/PcT/PcT/PMT/Ncb//P7///////////////////////////////////////////////////// + t7e3gYGBgYGBgYGBgYGBjIyM8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx+vr6//// + /////////////////////Pz8raikrKikrKikrKikrKikrKikrKikrKikq6ekrKikrKikrKikrKikrKek + rKikrKikrKmkrKikrKijrKikrKekrKekq6ekq6ijq6ejq6ejq6ejqqeiq6aiq6eirKeiq6eiq6eiq6ei + q6eiq6ejq6ejq6ijq6ejq6eiq6iiq6eiqqejq6ijq6ijqqejqqejqqeiqqeiqqeiqqaiqqaisa+rsK6p + sa6qsa6qsq6qsa6qsq+qsq+qs6+qsq+qsq+qsq+qsq+qsq+qsq+qsq6psq6qsq6qsq6qsa2psq6qsq6q + sa2psq6qsa6psa6psq+qs6+qs6+qsq6qs6+rsq6qs6+rs6+qs6+rsq+qsrCrsq+rs6+qsq6qsq6qsq6q + s66qsq+rsq6qs6+rs7Crs7Crs6+qs7CqtLCrtLCrs6+rtLCr1NHP//////////////////////////// + ////////////////////////////////////////////////////////////////////4+DcWEIvVkAt + VkAtV0EtWEEtWEEtWUEtWUItWkItWkItW0ItcU4vhVgxhlgxh1kxuHM2y304zH04zH04zX44zX44zn44 + zn85zn85z385z4A50IA50IA60YE60oE60oE604I704I71IM71YM81YQ81oQ814U914U92IY+2Yc+2oc+ + 2og/24g/3IlA3YpA3opB34tB4IxC4IxC4Y1D4o5E445E5I9F5ZBF5pFG55FG6JJH6ZNH2YtZQj72Ojr/ + Ojr/Ozv/Ozv/PDz/PDz/PDz/PDz/PT3/PT3/PT3/PT3/PT3/PT3/PV7/PbL/PcH/PcL/PML/PML/PML/ + PML/O8L/O8L/OsH/OsH/McP/6fn///////////////////////////////////////////////////// + 7e3t4+Pj4+Pj4+Pj4+Pj5eXl8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz7e3t6urq6urq6urq6urq6urq6+vr6urq6+vr6+vr6+vr6+vr6+vr6+vr7Ozs + 7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7e3t7e3t7e3t7e3t7u7u7u7u7u7u7u7u7u7u7+/v7+/v8PDw + 8PDw8PDw8PDw8PDw8fHx8fHx8fHx8vLy8vLy8vLy8vLy8vLy8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz+/v7//// + /////////////////////Pz8rKmlramlramkrKmlrKikrKikrKikrKilramkrKikq6ikq6ikrKikrKmk + rKmlrKilrKmlramkrKikrKikrKikrKikq6ejq6ekq6ejrKejq6eirKeiq6eiq6eirKeiq6eirKeiq6ei + q6eirKiiq6eiq6ijrKeirKijrKiiq6ejq6ijq6ijqqiiq6iiq6ijqqeiqqaiq6ijqqaiqqaisa6rsa6p + sa6psa6psq6qsq6qsq+qsq6qsq+qsq+qsq+qsq+qsq+qsq+qsq+qsq+qsq6qsq+qsq6qsq6qsq6qsq6q + sq6qsq6qsa6qsq6qsq+qs6+qs6+qs6+rs6+qs6+rs6+rs7Crs7Crs7Crs7Crsq+rsq+qsq6qsq6qs6+r + s6+rs6+rsq+rs6+rs7Crs7Crs7Crs7Css7CrtLCstLCstLCs1NLQ//////////////////////////// + ////////////////////////////////////////////////////////////////////koJ1V0EtVkAt + VkAtVkAtV0AtV0EtWEEtWEEtWUItWUItYkYuhFgxhVgxhVgxpWg0y3w3y304zH04zH04zX44zX44zX44 + zn44zn85z385z3850IA50IA50YA60YE60oE60oI604I71II71IM71YM71oQ81oQ814U82IU92IY92YY+ + 2oc+2og+24g/3Ik/3YlA3opA3opB34tB4IxC4IxB3opA24g/2og/24g/3YpB4o5D55FGfFq3Nzf/ODj/ + ODj/ODj/OTn/OTn/Ojr/Ojr/Ojr/Ojr/Ojr/Ojr/Ojr/Oj//OoL/Or7/Or//Or//Or//Or//Or//Ob// + Ob//Ob//OL//OL//N7//MsL/2PX///////////////////////////////////////////////////// + r+v6cOD8cOD8cOD8cOD8feL79PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT08/Pz8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8fHx8fHx8fHx8fHx8fHx8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8/Pz8/Pz8/Pz8/Pz8/Pz9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0+/v7//// + /////////////////////Pz8rqmlramlramlrKmlramlramkramkramlrKmkrKmlramlramlramkrail + ramlraikrKmlraikramkramkrKikrKikq6ijrKijq6ejq6ejrKejq6ejq6eirKeirKeiq6eirKeirKii + rKijrKeirKijrKeirKijrKijrKijrKijrKijrKijq6iirKijq6ijq6iiq6ijq6ejq6eiq6eisq+rsa6p + sq6qsq6qs66qsq6qsq+qsq+qs6+qsq+qs6+qsq+qsq+qsq+qs6+rsq+qsq+qsq+qsq6qsq6qsq6qsq6q + sq6qsq6qsq+rsq+rsq+rsq+rs7Crs7Crs7Crs7Crs7Crs7Crs7Crs7Css7Crs7Crs7Css6+rs6+rs6+r + s6+rs6+ss6+ss6+ss7Css7Css7Css7CstLCstLCstLGstLCs1NLQ//////////////////////////// + ////////////////////////////////////////////////////////////////7OnmW0QwWEEtV0At + VkAtVUAtVkAtVkAtV0AtWEEtWEEtWUEtfVQwhFgxhFgxkV4yyXs3y3w3y303zH04zH04zH04zX44zX44 + zn44zn44z384z3850H850IA50YA50YA50oE60oE604I604I61II71IM71YM71oQ81oQ814U82IU82IY9 + 2YY92oc+2oc+24g+3Ig/3Yk/3Yg+24c93phb4al54rKI4rSN3q6DtYZdvXk+tnFHg1iNMjD2NDT9Njb/ + Njb/Njb/Nzf/Nzf/Nzf/ODj/ODj/ODj/ODj/ODj/OFT/OKb/OLz/OLz/OLz/OL3/OL3/OL3/N73/N73/ + N73/Nr3/Nr3/Nr3/Nb3/MsD/0PP///////////////////////////////////////////////////// + cd/6AMz/AMz/AMz/AMz/GND98PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw7+/v7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8rqqlrqqlrqqlrqqlrqmlramlramlramlramlramlrKikraikramlraml + ramlramlramkraikramkramkramkrKmkrKijrKijrKijrKejrKejq6ejq6eiq6eirKeirKejrKejrKei + rKeirKijrKijrKijrKijrKijrKijrKiirKijrKijrKijrKijq6ijq6ijq6ejq6ijqqeiq6ejsq+rsq6q + sq+qs6+qsq+qs6+qsq+qs6+qsq+qs6+qs6+qs6+qsq+qsq+qsrCqs6+rsq+qsq6qsq6rsq6qsq6qsq6r + sq6rsq6rsq6rsq+rsq+rs7Crs7Css7Css7Css7CstLGss7GstLGstLGstLGss7CstLCstLCss7Css7Cs + s7Css7Css7CstLCss7Css7Css7Css7CstLCstLGttLGstLGt1NLQ//////////////////////////// + ////////////////////////////////////////////////////////////////pJaKWUItWUEtWEEt + V0AtVkAtVUAtVUAtVkAtV0AtV0Eta0suhFcwhFgwhVgxvHU2ynw3y3w3y303zH03zH04zH04zX44zX44 + zn44zn44zn84z384z3850IA50IA50YA50YE50oE60oE604I61II61II61YM71YM71oQ71oQ814U82IU8 + 2IY82YY92oY924c934xD6bB989e+/fn2////////////////////l77gLXC8LDvDKSnhKSnxKSnvLi71 + NDT+NTX/NTX/NTX/Njb/Njb/Njb/Njb/Njj/Nnr/Nrf/Nrr/Nrr/Nrr/Nrr/Nrv/Nrv/Nrv/Nbv/Nbv/ + Nbz/NLz/NLz/NLz/M7z/Mb7/0PP///////////////////////////////////////////////////// + cd/6AMz/AMz/AMz/AMz/GND98PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8r6unrqqmrammrqqlramlrqqlramlrqqlramlramlramlramlramlraml + ramlramlrqmkrqmkrqmkramkraikraikramkrKijrKijrKijrKejrKijrKejq6ejrKejrKejrKejrKei + rKijrKijrKijrKijrKijrKijrKijrKijrKijrKijrKijrKijrKiiq6eiq6ejq6ijq6ijq6ejsq+rsa6q + sq+qs6+qs6+qs6+rs6+qtK+qs6+qs6+qs6+qs6+rsq+rsrCrsrCrsq+rsq+rsq+rs6+ssq+rsq+rsq+r + sq6rsq6rsq+rsq+ssrCssrCstLCstLGstLGstLGstbGstLGttLGstLGstLGstLGstLCttLGttLCstLGt + tLCttLGstLCstLCstLCttLCttLCttLGttLGttbGttbGttbGt1NLQ//////////////////////////// + ////////////////////////////////////////////////////////////+/v6ZlA8WkItWUItWEEt + V0EtVkAtVkAtVT8tVUAtVkAtWkItgVYwg1cwg1cwo2gzynw3ynw3y3w3y303zH03zH03zH04zX04zX44 + zn44zn44zn44z384z3840H850IA50YA50YA50oE50oE504E604I61II61II61YM71YM71oQ714Q714Q8 + 2IU82YU8341E8MGY/PXu////////////////////////////////yd7wKXrBKXa/KUm7KSnHKSnlKSno + KyvrMjL9NDT/NDT/NDT/NDT/NDT/NEj/NJz/NLf/NLj/NLj/NLj/NLj/NLn/NLn/NLn/NLn/NLr/M7r/ + M7r/M7r/Mrr/Mrr/Mrr/ML3/7fn8//////////////////////////////////////////////////// + cd/6AMz/AMz/AMz/AMz/GND98PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw7+/v7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw5uvxf6/3MIL8FXL+Inr9WJn5wtbz8PDw8PDw8PDw8PDw8PDw + 8PDwvNLz7O7w8PDw6OvwosP1rsr07e7w8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8r6yorqqmrqqmrqqmrqqmrammrammramlrammramlramlrqmlramlrqml + rqmlrqmkramkramkrqmkramkramlramkramkramkramkraikrKijrKikrKikrKekrKikrKijrKijrKik + rKejrKijrKikrKijrKikrKijrKikrKijrKikrKijrKijrKijrKijrKijq6ijq6ijrKijq6ijsrCssq+r + sq+qs6+rs7Crs6+rs6+qs7Crs6+rs6+rs7Crs7Crs7Crs7CrsrCrsq+rsq+rs6+rs7Css6+ssq6rsq+s + s7Css6+rtLCssrCssrCss7CstLGstLCstLGstbKttbKstbGstbGstLKttbKttbKttLCstbGttbGttLCs + tLCstLCstLCstLCstLCstLCttLGttLGttLGttbKttbGstLGs1NLQ//////////////////////////// + ////////////////////////////////////////////////////////////ysG6XEMtW0ItWkItWUIt + WEEtV0EtVkAtVUAtVT8tVT8tcU4vg1cwg1cwilsxxno3ynw3ynw3y3w3y3w3zH03zH03zH03zX04zX44 + zn44zn44zn44z384z3840H840H840YA50YA50YA50oE50oE504E61II61II61YI61YM61oM71oQ714Q7 + 2oU77bSC/fXu////////////////////////////////////////5vD4KXzFKXrCKXi+KVq8KSy9KSne + KSniKyvmMjL+MjL/MjL/MjT/Mmz/MrH/MrX/Mrb/Mrb/Mrb/Mrf/Mrf/Mrf/Mrj/Mrj/Mrj/Mrj/Mrj/ + Mrj/Mbj/Mbj/Mbj/MLj/Oqjg5OTk//////////////////////////////////////////////////// + cd/6AMz/AMz/AMz/AMz/GND98PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw2dnZ1tbW8PDw8PDw8PDw + 8PDw4ODg19fX8PDw8PDw8PDw8PDw5+fnyMjI7e3t7u7u7u7u7u7u7u7u7u7u7u7u7u7u7Ozs6+vr6+vr + 6+vr6+vr6+vr6+vr7Ozs7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7e3t3Nzc6enp7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v6Ojo3Nzc7u7u7+/v8PDw7u7u7e3t7e3t7e3t7e3t7e3t7e3t7u7u8PDw8PDw8PDw + 7e3t7e3t7e3t7e3t7e3t7e3t7e3t7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw7+/v7e3t7e3t7e3t7e3t7e3t7e3t7e3t8PDw8PDw8PDw7+/v7e3t7e3t7e3t7e3t7e3t7e3t + 7u7u8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw39/f5ubm8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 5OTk4eHh8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw2+TxKn78AGb/AGb/AWf/AGb/AGb/BGj/krr28PDw8PDw8PDw8PDw + 8PDwg7H3lbz27+/wUpX6ZKD5TZL6fK338PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8sKyorqumrqqmraqmraqmraqmrqqmrqqmrqqmrqqmramlrqmlrqmlrqml + rqmmrqmlrqqmrqmlrqmlrqmlrqmkramkrqmkrqmkramkramkramkrKmkramkrKikrKikrKikrKikrKil + rKikrKikraikraikrKmkramkrKmkrKikrKijrKikrKijrKijq6ejrKijq6ijq6ijq6ejq6iks7CssrCr + s7CrtLCss7CrtLCrtLCrtLCstLCstLCrtLCrs7Crs7Crs7Crs7Crs7Gss7Crs7Css7Css6+ss7Css7Cs + s7Css6+rtLCstLCstLCstLCstLGstLGstbKttbGstbGstbGstbKttbKttbKttbKttbGttbGttbGttbGt + tbGttLCttbGstLCstLCttLGttLGttLGttLGttLGstbGttbKt1NPQ//////////////////////////// + ////////////////////////////////////////////////////////////jXtrXEMtW0MtWkItWkIt + WUEtWEEtV0AtVkAtVUAtXEMtgVcwglcwglcwr240ynw3ynw3ynw3y3w3y3w3zH03zH03zH03zX03zX44 + zX44zn44zn44z344z3840H840H840IA40YA50YA50oA50oE504E504E51II61II61YI61YM61oM6349I + +NvB////////////////////////////////////////////////8/T0NmOKKXzEKXvCKXm+KWm8KTO+ + KSnbKSncLCzpMTH/MUL/MZb/MbP/MbT/MbT/MbT/MbX/MbX/MbX/Mbb/Mbb/Mbb/Mbb/Mbb/MLf/MLf/ + MLf/MLf/MLf/NLDxQZXBUXiM6+vr//////////////////////////////////////////////////// + cd/6AMz/AMz/AMz/AMz/GND98PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw4uLiS0tLtbW18PDw8PDw8PDw + 8PDwjY2NTU1N7u7u8PDw8PDw8PDw6urqUVFRpaWl7u7u7u7u7u7u7u7u7u7u7u7u7u7ucXFxOzs7PDw8 + PDw8PDw8PDw8PDw8eXl57u7u7u7u7u7u7+/v7+/v7+/vxsbGbGxs0dHROzs7srKy7+/v7+/v7+/v7+/v + 7+/v7+/vpqamf39/pqamPDw85+fn7+/v7+/vhISEOzs7PDw8PDw8PDw8PDw8PDw8goKC8PDw8PDw8PDw + WFhYPDw8PDw8PDw8PDw8PDw8PDw8vb298PDw8PDw8PDw2trajo6O5ubm8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw0dHROzs7PDw8PDw8PDw8PDw8PDw8QkJC5eXl8PDw8PDwpqamOzs7PDw8PDw8PDw8PDw8PDw8 + bW1t8PDw8PDw8PDw8PDw8PDw8PDw6enpcHBwvb29SkpKkpKS8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + gICAXFxc8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDwTpP6AGb/Hnf9sMv07O7w2uPxZaD5AGb/BGj/wtbz8PDw8PDw8PDw + 8PDw5erxPIj72+TxInn97O3w1+LyMIL88PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8sKyor6umrqumrqqmrqqmrqqmraqmrqqmrqqmrqqmrqqmrqqmraqmrqqm + rqmlrqqlrqqmrqqlrqqlrqqmrqqlrqqlrqqlrqqlraqlramlramlramlraqlramlramlramlramlraml + ramlramlramlramlramlramlrKmkramkrKmkramkrKmkrKmkrKikrKijrKijrKikrKikrKiktLGss7Cs + s7CstLCstLCstLCrtLGstLCrtLCrtLCrtLCrtLCrs7CrtLGss7CrtLGss7Crs7Css6+ss6+stLCss7Cs + tLCstLCss7CstLCstLCstLCstbGttLGstbKttbKttbGstbKttbKttbKttbKttbKttbKttbGttbGttbGt + tbGttbGttbGstLGttLCttLGutLGttLGttbKttLGttbKttbKs1dLQ//////////////////////////// + ////////////////////////////////////////////////////////9fPyY0o0XUQtXEMtW0MtWkIt + WUItWEEtWEEtV0AtVkAtck4vglYwglYwj10xyXs3ynw3ynw3ynw3y3w3y3w3zH03zH03zH03zX03zX03 + zX43zn44zn44z344z384z3840H840H840YA40YA50oA50oE504E504E51IE51II51II61YI65JpZ/e/j + ////////////////////////////////////////////////////6enpRkZGPVduKnm+KXvCKXm/KXK8 + KULJKSnbKSzaL1/4MKv/MLL/MLL/MLP/MLP/MLP/MLT/MLT/MLT/MLT/MLX/MLX/MLX/MLX/L7b/L7b/ + NqnoQ5C5UnSGXV9gXV1dXl5e+fn5//////////////////////////////////////////////////// + cd/6AMz/AMz/AMz/AMz/GND98PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwkJCQUVFR6+vr8PDw8PDw8PDw + 8PDwjIyMSkpK7u7u8PDw8PDw8PDw8PDwn5+fR0dH5eXl7u7u7u7u7u7u7u7u7u7u7u7ubGxsVlZWvb29 + vb29vb29vb29vb29zs7O7u7u7Ozs7u7u7u7u7+/v7+/vtbW1ODg4y8vLNjY2sbGx7+/v7Ozs7+/v7+/v + 7+/v7+/vioqKU1NTpKSkNzc35+fn7+/v7+/vfn5+S0tLvr6+vr6+vr6+vr6+vr6+0tLS8PDw8PDw8PDw + UVFRZGRkpqampqampqampqamp6en4ODg8PDw8PDw8PDw6urqSkpKqqqq8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw0NDQMzMznJycvr6+vr6+vr6+vr6+wMDA7e3t8PDw8PDwoqKiNTU1oqKipqampqampqampqam + wMDA8PDw7+/v7u7u7u7u7+/v8PDw5ubmPT09qKioRkZGj4+P8PDw7u7u8PDw8PDw8PDw8PDw8PDw8PDw + fX19WFhY8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw4ujxA2j/AGb/scz08PDw8PDw8PDw8PDwRY77AGb/XJv58PDw8PDw8PDw + 8PDw8PDwjrj2h7T2KH38tM30krr2UJT68PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8sK2or6unr6unrqunrqynrqunrqqnraqmrqunrqqnrqqmrqqnrqqmrqqn + rqqmrqumr6unr6qmr6umrqumrqumrqumrqumrqumrqqlrqumrqqmraqlraqlrKqmraqlraqlraqmraml + ramlraqmrqmlraqlrqqlraqlraqlramlraqlraqlramkrKmkrKmkrKmkrKikramkramkrKmktLGttLCs + s7CstLCstLGstbCstbGstLCstLCrtLGstLCrtLCrtLCrs7Crs7Css7Crs7CstLCstLCstLCstLCstLCs + tLCstLCstLCstLGttLCstLCstbGttbGstbGstbKttbKttrKttbKttbKttbKttbKttbKttbKutbKttbGu + tbGutbGutbGttbGutLGttbGutbGutbKutbKttbKutbKutrKu1dPQ//////////////////////////// + ////////////////////////////////////////////////////////zcW9X0QtXkQtXUMtXEMtW0It + WkItWUItWEEtV0EtXUQugVYwgVYwglYws281yns3ynw3ynw3ynw3y3w3y3w3zH03zH03zH03zX03zX03 + zX43zn43zn44zn44z384z3840H840H840YA40YA40YA40oA50oE504E504E51II51II5555d/vXu//// + ////////////////////////////////////////////////////1dXVRkZGRkZGQU5aLXKvKXvCKXm/ + KXe8KX3OKYLQK5TjL7H/L7H/L7H/L7L/L7L/L7L/L7P/L7P/L7P/L7T/L7T/L7T/L7T+N6TgRoisVWx5 + XV1dXV1dXV1dXV1dXFxcampq//////////////////////////////////////////////////////// + cd/6AMz/AMz/AMz/AMz/GND98PDw8PDw8PDw8PDw8PDw8PDw8PDw6urqSEhIj4+P8PDw8PDw8PDw8PDw + 8PDwjIyMSkpK7u7u8PDw8PDw8PDw8PDw3NzcNzc3rq6u7u7u7u7u7u7u7u7u7u7u7u7ubGxsYmJi7u7u + 7u7u7u7u6OjolZWVy8vLyMjIVVVV0tLS7u7u6enpg4ODk5OTODg4y8vLNjY2sbGxv7+/TU1NvLy87+/v + 7+/v7+/vioqKU1NTpKSkNzc35+fn7+/v7+/vfn5+VFRU8PDw8PDw8PDw5ubmlpaW0tLS8PDw8PDw8PDw + WFhYOzs7PDw8PDw8PDw8OTk5ODg42dnZ8PDw8PDw8PDw8PDwkJCQYWFh7+/v8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw0NDQMzMzwcHB8PDw8PDw8PDwtbW1qamp8PDw8PDw8PDwpaWlOjo6PDw8PDw8PDw8Ozs7NTU1 + ioqK8PDwsbGxWlpaWlpaYGBgbm5urq6uPT09qKioRkZGj4+Pzs7OXFxcysrK8PDw8PDw7u7ukZGRvr6+ + fX19WFhY8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw4OfxgrH3g7H37e7w8PDw8PDw8PDw8PDwkrr2AGb/K3348PDw8PDw8PDw + 4ujxvNLz4OfxPon7vNLzSpH6WJn62OLx8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8sa2pr6ynr6ynr6ynrqynr6unrqunrqynr6ynr6unr6unr6unr6unr6un + r6unrqunr6unr6unr6umr6umr6umr6umr6umr6umr6umr6umr6umrqumrqumrqumrqumrqqmrqqmrqqm + rqqmrqqmrqqmrqqmrqqmrqqmrqqlrqqlrqqlramkrqqlramkramkramkramkramkramkramktbGttLCs + tLCstLCstLCstbGstbGstbGstbGstbGstbGstbGstLGstLCrtLCss7Gss7Css7GttLCstLGts7CstLCs + tLCstbGttLCstLCttLCttLCttLGstLGttLGttrKttrKttbKttrKttrKstbKttbKutbKutbKutbKutbGu + tbGutbKutbGutbKutrKutbKutbGutbKutbOutrKutrKutrOu1dPQ//////////////////////////// + ////////////////////////////////////////////////////////nYx+X0UtXkQtXUQtXEMtXEMt + W0ItWkItWUEtWEEtcE4vgVYwgVYwjl0xyXs3yns3ynw3ynw3ynw3y3w3y3w3zH03zH03zH03zX03zX03 + zX43zn43zn43zn44z344z3840H840H840H840YA40YA40oA40oA404E504E51IE55ZpY/vbu//////// + ////////////////////////////////////////////////////ycS/R0ZGRkZGRkZGRElOMmqbKXrC + KXm/KX7IKYHOKYTRLq/+LrD/LrD/LrH/LrH/LrH/LrL/LrL/LrL/L7H8OpzVSYGhV2VtXFxcXFxcXFxc + XFxcXFxcXFxcXFxcXFxcf39///////////////////////////////////////////////////////// + cd/6AMz/AMz/AMz/AMz/GND98PDw8PDw8PDw8PDw8PDw8PDw8PDwz8/PMzMzvb296urqnJycmJiYmJiY + mJiYYmJiQEBAl5eXmJiYmJiYmJiYzs7O7e3tU1NTenp67u7u7u7u7u7u7u7u6urq6+vrmJiYkpKS7u7u + 7u7u7e3t4uLiNzc3paWl5+fnXl5eXFxc6Ojog4ODQ0NDlpaWODg4y8vLNjY2sbGx6urqfHx8PDw8wcHB + 7+/v7+/viYmJU1NTpKSkNzc35+fn6enp09PTmZmZenp68PDw8PDw8PDw29vbNjY2sbGx8PDw8PDw8PDw + rq6uoaGhoaGhoaGhoaGhf39/Nzc32dnZ8PDw8PDw8PDw8PDw1dXVOzs70NDQ8PDw8PDw8PDw8PDw8PDw + 8PDw1NTU0dHRYWFhzc3N8PDw8PDw8PDwdnZ2Xl5e8PDw8PDw8PDw0NDQoaGhoaGhoaGhoaGhn5+fQkJC + ioqK8PDwoaGhNjY2lpaWmJiYiIiIrKysPT09qKioRkZGj4+P6OjoaWlpRkZG2NjY7+/vhYWFPDw8tLS0 + fX19WFhY8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwlrz2AGb/JXn38PDw8PDw0t7y + K378VZf6M4P8iLT2gbD38PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8sa2psK2osK2osKynsK2osK2osKynr6ynr6ynr6ynr6ynr6ynr6unr6yn + r6unr6unr6unr6ynr6umsKynr6ynr6umsKymr6umr6umr6umr6umr6umr6umr6umr6umrqumrqqmrqum + rqqmrqqmrqqmr6umrqqmrqqmrqqlrqqmrqqlrqqlramkrqqkramkramkramkramkramkraqltbGttLCs + tLCstbGstbGstbGstbGstbGstbGstbGstLGstbGstLCstLGstLGstLGttLGss7GttLGstLGttLGttLGt + tLGttLCttLCttLGttLCttbGutbGttbKttbKttbGttrGttrKttrKttrKutbKutbKutbKutbKutbKvtbGv + tbGvtrKutbKutrKutrKutrKutrKvtrKutrOutrOutrOutrOv1dPQ//////////////////////////// + ////////////////////////////////////////////////////////dl5KYEUtX0UtXkQtXUQtXEMt + W0MtWkItWUItXEMtf1YwgVYwgVYwsW81yXs3yns3ynw3ynw3ynw3y3w3y3w3zHw3zH03zH03zX03zX03 + zX43zn43zn43zn43z344z3840H840H840H840YA40YA40oA40oA404E404E5341E/vDj//////////// + ////////////////////////////////////////////////////upR0fVk4S0hFRkZGRkZGRkZHN1+B + KXrAKXzEKX/KKX/KLKf2La//LbD/LbD/LbD/LbH/L675PZTHS3mTWGBkW1tbW1tbW1tbW1tbW1tbW1tb + W1tbW1tbW1tbW1tbW1tbnJyc//////////////////////////////////////////////////////// + cd/6AMz/AMz/AMz/AMz/GND98PDw8PDw8PDw8PDw8PDw8PDw8PDwtbW1NTU11NTU5+fnaWlpY2NjY2Nj + Y2NjY2NjY2NjY2NjY2NjY2NjY2Njurq68PDwbW1tYGBg7u7u7u7u7u7u7e3tc3Nza2tr3t7e7u7u7Ozs + rKyseXl53d3dNzc3paWl7u7uzc3NOTk5gICANzc3r6+vtbW1ODg4y8vLNjY2sbGx7+/v7Ozsb29vSUlJ + rq6uXl5eR0dHU1NTpKSkNzc35ubmpKSkOTk5cXFx1tbW7+/v8PDw8PDw29vbNjY2sbGx8PDw5+fn7+/v + bW1tVFRUVFRUVFRUVFRUUlJSUFBQ3Nzc8PDw8PDw8PDw8PDw7u7uaGhoh4eH8PDw8PDw8PDw8PDw8PDw + 4+PjSkpKTU1Nra2t7u7u8PDw8PDw8PDwdnZ2XV1d8PDw7u7u6enpsLCwVFRUVFRUVFRUVFRUVFRUTk5O + mJiY8PDwoaGhOTk56urq8PDw8PDw5ubmPT09qKioRkZGj4+P8PDw4+PjUVFRZWVlpqamNzc3rq6u8PDw + fX19WFhY8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw3eXxssz0y9vy8PDw8PDw8PDw8PDwU5b6AGb/S5H68PDw8PDweqz3 + f6/38PDwZ6L4lrz1PIj73ubx8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8sq6psK2osK2osK2osK2osK2osK2osK2osKynsKynr6ynsKyor6ynr6un + r6unr6unsKynr6unr6unr6unr6unr6ynsKynr6umr6umsKymr6umr6umr6umr6umrqumrqumr6umrqum + r6umrqumrqqmr6unr6unrqqmrqqmrqqlrqqlrqqlramlrqqlramkramlramkramkramkramktbGttLCs + tLCstLCstbGstbGttbGttbGttbGttbGstbGttbGstbGttbGttLGts7Gss7Gts7KttLGttLGutLGutbGu + tbGttbGttbGttbGttLGttbGttLGttLKttbKutrKutrKutrKutrKutrKutbKutbKutbKutbKvtbOwtrOv + trKwtrOvtrOvtrOutrKutrOutrOvt7OutrOvtrSutrOvtrOu1tTR//////////////////////////// + ////////////////////////////////////////////////////8u/tYkYuYUUuYEUtX0QtXkQtXUMt + XEMtW0ItWkIta0sugFYwgFYwiVoxyHo3yXs3yns3ynw3ynw3y3w3y3w3y3w3zHw3zH03zH03zX03zX03 + zX03zn43zn43zn43z343z3840H840H840H840X840YA40oA40oA40oA42IM4+9vA//////////////// + ////////////////////////////////////////////////+fXynmg4mWIyil01UUpDRkZGRkZGRkZG + PVNnK3e7KX3HKX3HK5/uLK//LK//MafwP428TnGGWV1fWlpaWlpaWlpaWlpaWlpaWlpaWlpaW1tbW1tb + W1tbW1tbW1tbW1tbW1tburq6//////////////////////////////////////////////////////// + cuD8AMz/AMz/AMz/AMz/GND+8vLy8vLy8vLy8vLy8vLy8vLy8vLyr6+vNzc33Nzc8vLy7+/vnZ2dvLy8 + 7e3t8vLy8vLy8vLy0tLSl5eX2tra8vLy8vLydnZ2Wlpa8fHx8PDw8PDw8PDw0dHRU1NTV1dX4eHhhoaG + OTk5lJSU4ODgNzc3p6en8PDw8PDwdnZ2MzMzYWFh5eXlsLCwODg4zc3NNjY2srKy8fHx8fHx4uLiR0dH + Z2dnpqamaGhoVFRUpqamNzc36enp8fHxx8fHXl5eQUFBvb298vLy8vLy3d3dNjY2s7Oz4+PjUFBQeXl5 + 5ubm8vLy4uLihYWFnJycurq6QkJC3Nzc8vLy8vLy8vLy8vLy8vLytLS0RkZG6urq8vLy8vLy8vLy8vLy + 8vLy5eXlj4+POjo6fn5+7e3t8vLy8vLydnZ2Xl5e8vLykZGRTk5OwMDA8vLy8fHxsrKyb29v4eHhV1dX + kZGR8vLyoqKiNjY2l5eXmpqapqamoKCgOTk5qqqqRkZGkJCQ8vLy8vLywMDANjY2Ozs7gICA4uLi4uLi + d3d3WFhY8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8vLyXJv6AGb/EnD+mb724ejz1OHzbaX4AWb/AGb/sMz38vLy8vLyjrj4 + Yp756OzzSI/7rsv2pcb3eKz48vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy+/v7//// + /////////////////////Pz8sq6qsa2osa2osa2osa2osKyosa2osK2osK2osKyor6ynr6ynr6ynr6yn + r6ynr6unr6unr6unsKqnr6unr6umr6umr6unr6umsKynr6umr6umsKynr6umsKymr6umr6umr6umr6um + rqumr6unrqumrqqmr6umrqqmrqqmrqqlrqqmrqqlrqqlramlramlrqqlrqqkramkrqqlrqqltbGttLCs + tLCstLCstLCstbGttbGttrGttbGttbGttbGttbGttbGttbGutbKutbKutLKutbKutLKutbKutbKttbGu + tLGttbGutLGttbGttbGutLGttLGttbKutbKttrKutrKutrKutrKutrOutrOutrOutbOvtrOvtrOvtrOv + trOvtrOvt7OvtrOvtrOutrOut7OvtrOvt7OvtrOvtrOutrOu1tTR//////////////////////////// + ////////////////////////////////////////////////////0cjBYkYuYUYuYEUtX0UtXkQtXUQt + XEMtXEMtW0Ite1MwgFYwgFYwp2ozyXs2yXs3yns3ynw3ynw3y3w3y3w3y3w3zHw3zH03zH03zX03zX03 + zX03zn43zn43zn43z343z3430H840H840H840X840YA40oA40oA40oA48rV///////////////////// + ////////////////////////////////////////////////072omWIymmMymWIykV8zXk5ARkZGRkZG + RkZGQk1WN2OKMW6lM4zLQoStT2x/WVlZWVlZWVlZWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpa + WlpaWlpaWlpaWlpaWlpa4ODg//////////////////////////////////////////////////////// + deP/AMz/AMz/AMz/AMz/GtH//v7+/v7+/v7+/v7+/v7+/v7+/v7+xMTENDQ03Nzc/v7+4ODgdnZ2PDw8 + WVlZ0dHR8PDwfn5+OTk5Xl5eubm5/v7+/v7+bGxsZ2dn/v7+/Pz8/Pz8/Pz8/Pz85+fnTExMUVFRODg4 + tbW17+/v4+PjNzc3rq6u/Pz8/Pz8vLy8MzMzmJiYQ0NDOjo6OTk51tbWNzc3urq6/Pz8/Pz8/Pz8oaGh + Pj4+6enpjIyMVlZWra2tNzc39PT0/v7+/v7+9/f3g4ODPj4+lZWVVlZWUlJSNDQ0u7u7/v7+ycnJSkpK + YGBg0dHRTk5OT09PwMDAv7+/Nzc35ubm/v7+/v7+/v7+/v7+/v7+9fX1SEhIurq6/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+yMjIQUFBhISEY2NjVlZWPz8/YGBg/v7+7u7ufHx8Ozs7vb29iIiIODg4jY2N7u7uTk5O + kZGR/v7+urq6XFxcXFxcOzs7UlJSWFhYNTU1srKyR0dHlpaW/v7+/v7+/Pz8WFhYNjY24ODgQkJCOjo6 + NjY2Wlpa/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+jLr/AGb/AGb/AGb/A2j/Amf/AGb/AGb/fbH//v7+/v7+/v7+9fn/ + YKD/MoT/daz/+/z++/z+ZKL/8/j+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+//////// + /////////////////////Pz8sq6qsa2osa2osa2osa2osKynsK2osKyosK2osK2or6ynsKyor6ynr6yn + r6ynr6unr6yor6uor6unr6unr6unr6unr6unr6unr6unr6umr6umr6umr6unsKynr6umr6unr6umr6un + r6umrqumrqumrqqmrqumrqqnrqqmrqqmrqqmrqqmraqlramlramlraqlrqqlrqqmrqqlrqqltbGutLCt + tLCttLCttLCstbGttbKttbKttrGutbKttbKttrKutbKutrKutbKutbOutbKutbKutbKutbKutbKutbKu + tbKutbKutbKutrKutbGttbGttbGttbGutbKttrKutrOutrOutrOutrOutrOvtrOutrSvtrSvt7SwtrOw + t7OwtrOvt7Svt7Ovt7Sut7Out7Ovt7Ovt7Ovt7Ovt7Out7Sv1dTQ//////////////////////////// + ////////////////////////////////////////////////////taebY0cuYkYuYUYuYEUtX0UtXkQt + XUQtXEMtY0cugFUwgFUwglYwwXc1yXs2yXs3yns3ynw3ynw3y3w3y3w3y3w3zHw3zH03zH03zX03zX03 + zX03zn43zn43zn43z343z3430H830H830H840X840YA40YA40oA44Ys///Pq//////////////////// + /////////////////////////////////////////////Pr5oXNKlmEymGIymWIymWIylmEybFM8RkZG + RkZGRkZGRkZGRkZGUlJSWFhYWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWlpaWlpaWlpaWlpa + WlpaWlpaWlpaWlpacHBw//////////////////////////////////////////////////////////// + deP/AMz/AMz/AMz/AMz/GtH/////////////////////////////5OTkNTU1vb29////////////5ubm + dnZ2PT09VlZWT09PyMjI/Pz8////////+vr6TExMjIyM/////v7+/Pz8/f39/f39/f39s7OzMzMzf39/ + sbGxOzs7Ozs7MzMzrq6u/f39/f392dnZNDQ0wMDAycnJmpqaOTk519fXNzc3urq6/f39/f39/f394+Pj + NDQ0QEBAOjo6VlZWra2tNzc39fX1/v7+/v7+/v7++vr6bm5uQEBAoqKimZmZNTU1u7u7////////4eHh + REREOTk5XFxcrKysnJyce3t7Nzc35ubm////////////////////////kJCQaWlp/v7+//////////// + ////////////////wsLCNzc3fHx8p6enXFxcYGBg/////////Pz8goKCOTk5Nzc3o6Ojm5ubmpqaQUFB + kZGR/////////////f39XV1dgICA9fX1Pj4+srKyR0dHlpaW////////////f39/TExM+vr64eHh4ODg + dnZ2W1tb//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////utX/AGb/EHD/YqH/JHz/H3n/SJH/tNL///////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8sq6psa2psa2psa2psa2osa2osK2osa2osKyosKyosKyosKyosKynr6yn + r6yor6yosKyor6unr6yor6yor6uor6yor6uor6ynsKyor6ynsKunsKynsKynr6ynr6ynr6ynr6ynr6yn + r6ynr6ynrqunrqunrqumrqunrqunrqumrqqmrqqmrqqmraqmrqqmrqqmrqumrqumrqumrqumtbGutLCs + tLCttLGttLCstbGttbKttbKttrKutbKutrOutrKutbKutbKutrOvtbOutbOutrOutbOutbKutrOutrKu + trKutbGttrKutrKutbGutbGttbKttbKttbKutrKutrOut7Out7OvtrSvtrSvt7SwtrSvt7Swt7Swt7Sw + t7Swt7SwuLOvuLSvt7Out7Out7OvuLOvt7Ovt7Ovt7OvtrOu1tTR//////////////////////////// + ////////////////////////////////////////////////////m4h3ZEcuY0YuYkYuYUUuYEUtX0Qt + XkQtXUQtb00vf1Uwf1UwlWAyyXs2yXs2yXs3yns3ynw3ynw3y3w3y3w3y3w3zHw3zH03zH03zX03zX03 + zX03zn43zn43zn43z343z3430H830H830H830X840X840YA404A4+MGQ//////////////////////// + ////////////////////////////////////////////x66Ykl8ylGAylWAyl2EymGIymWIyl2EyfFg4 + SkdFRkZGRUVFRUVFU1NTWFhYWFhYWFhYWFhYWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZ + WVlZWVlZWVlZWlpaoaGh//////////////////////////////////////////////////////////// + deP/AMz/AMz/AMz/AMz/GtH//////////////////////////////Pz8WFhYhISE////////7Ozs5eXl + 4eHhXl5eOTk5yMjI5eXl5eXl/Pz8////2traNTU1yMjI/////////f39/Pz8/f39/f394+PjMzMzuLi4 + 7Ozs0NDQxcXFNjY2rq6u/f39/f3939/fNjY2y8vL/f39v7+/OTk519fXNzc3urq6+vr6rKyspqamo6Oj + ODg4hoaGeXl5VlZWra2tNzc39fX1/f392tra1NTU1NTUq6urNDQ00tLS5+fnNjY2u7u7/v7+//////// + lJSUMzMzzs7Onp6ebGxsWlpaNzc35ubm////////////////////////3d3dOzs74eHh//////////// + ////7e3t1dXV1dXV1NTUUVFRe3t7////e3t7YGBg////////////6OjoODg4d3d33d3dbGxsa2trOzs7 + kZGR////5OTkvr6+vLy8UFBQgICA9fX1Pj4+srKyR0dHlpaW/v7+tra2qKioZGRkRkZGpqamqamp7Ozs + goKCW1tb//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////5/H/AGb/Amf/5/H//f7//f7///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8s6+rsa6psq6qsa2psa2psa2psa2osK2osa2psK2osK2osK2or62osKyo + r6ynr6yor62or6yor6yor6yor6yosK2psKyosKyosKyosKyosKyosKyosKynsK2osKynsKyor6ynr6yn + sKynr6ynr6ynr6ynr6ynrqunrqynrqunrqunrqunrqqmrqqmrqumrqunrqumrqumrqumrqumtbGutLCt + tLGttLGttbGttbGttbGttrKttrKutrKutrKutrKutrOvtrOutbOutrOvtrOvtrOutrOvtrOutrKutrKu + trKutrKutrKutrKutbGutbGttbKttbKutrKutrKutrOvt7Ovt7Svt7Swt7SvtrSwt7Svt7SwuLSwt7Sw + uLSwuLSwuLSwuLSvuLOvt7OvuLOvuLOvt7Ovt7Ovt7Ovt7Ov1tTR//////////////////////////// + ////////////////////////////////////////////////////iXNfZEcuY0cuYkYuYUYuYEUtX0Ut + XkQtXUQte1Mwf1Uwf1UwrW00yXs2yXs2yXs2yns3ynw3ynw3y3w3y3w3y3w3zHw3zH03zH03zX03zX03 + zX03zn43zn43zn43z343z3430H830H830H830X830X840YA44Yg5//Lm//////////////////////// + ////////////////////////////////////////6uLaj2A2jl0xkF4ykl8ylGAylmEyl2IymGIyl2Ey + iFw1UElDRUVFRUVFVVVVWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYXFpYZl1WcGFUemVTgmhQjmtNl29M + onNJrHZHtXlFwX5C69O+//////////////////////////////////////////////////////////// + deP/AMz/AMz/AMz/AMz/GtH/////////////////////////////////sLCwRERE8vLy////bGxsODg4 + ODg4NTU1NDQ0ODg4ODg4ODg46urq////kJCQW1tb+/v7/////////v7+/f39/f39/f395ubmMzMzvr6+ + /f39/f398PDwNzc3rq6u/f39/f3939/fNzc3y8vL/f39v7+/OTk519fXNzc3urq69/f3Y2NjWFhYWFhY + WFhYra2tkJCQVlZWra2tNzc39fX1+/v7VFRUNjY2NjY2NjY2NDQ0ra2t5+fnNjY2u7u7/v7+//////// + rq6uMzMz9fX1////////v7+/Nzc35ubm/////////////////////////v7+ZWVllJSU//////////// + ////qKioNjY2NjY2NjY2NTU1WFhY/f39e3t7YGBg/////////////v7+PDw8mpqa/////////Pz8Tk5O + kZGR////tbW1Tk5OTk5OTk5OkJCQ9fX1Pj4+srKyR0dHlpaW/Pz8cHBwVlZWVlZWVlZWVlZWV1dX29vb + goKCW1tb//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////f7/GHT/AGb/ttT///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8s6+rsq6qsq6qsa2psa6psa6psa6psa6psKyosa2osa2osK2osK2osK2o + sK2osK2osK2psK2osK2osK2osKyosK2psK2psa2psK2osa2osKyosK2osK2osa2osKynsKyosK2osKyn + sKynr6ynr6ynr6ynr6umr6unr6umrqunrqunrqumr6unr6umr6unr6umr6unr6umr6umr6umtbGttbGt + tLCttbGttLCttbGttbGttbGutrKutrKutrKutrOut7OvtrOvtrOutrOvtrSutrOutrOvt7OutrOvtrKu + trKutrKutrKutrKutrKutbGutbGttrKutbOutrOvtrOut7Svt7SvuLSwt7Wwt7Wwt7Swt7Swt7OwuLSw + uLSwuLSwuLSwuLSwt7OvuLOvuLSut7Ovt7SwuLOwt7Owt7Ov1dTS//////////////////////////// + ////////////////////////////////////////////////////eV9IZUguZEcuY0cuYkYuYUYuYEUt + X0UtZEcuf1Uwf1UwgVYwxHk2yXs2yXs2yXs2yns3ynw3ynw3y3w3y3w3y3w3zHw3zH03zH03zX03zX03 + zX03zn43zn43zn43z343z3430H830H830H830X830X830YA49Khl//////////////////////////// + ////////////////////////////////////+fb0m3VTiVsyi1sxjVwxkF4ykl8yk2AylWAylmEymGIy + l2Eyl2Ize1g6ZVFAjGpMl25KoHJIqnVGs3hEv3xCyIBA0oM+3oc744k65Ik65Io65Yo65Yo65oo65oo6 + 5os654s654s66Ys6/vHl//////////////////////////////////////////////////////////// + deP/AMz/AMz/AMz/AMz/GtH/////////////////////////////////+fn5ZmZmqqqq////7e3t5+fn + 5+fn5+fn5+fn5+fn5+fn5+fn/Pz87u7uTU1Nzc3N/////////////////f39/Pz8/f399/f3xsbG7Ozs + /f39/f399fX1hISEzc3N/f39/f39/Pz89fX1+/v7/f395eXlsrKy6urqhISE1NTU/f39+vr6+vr6+vr6 + +vr6/Pz809PTvb29zMzMhYWF+fn5/v7++Pj49vb29vb29vb29vb2+/v78PDwhISE1dXV/v7+/v7+//// + 5eXlvb29/Pz8////////2NjYhYWF8PDw////////////////////////////39/fz8/P//////////// + /////Pz89/f39/f39/f39/f3+Pj4////rq6unp6e////////////////wMDA3t7e/////////f39k5OT + vLy8/////f39+/v7+/v7+/v7/Pz8+/v7tbW14eHhj4+Pv7+//////Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/v7+ + s7Ozm5ub//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////Q47/AGb/R5D/fLD/fLD/fLD/fLD/fLD/5O////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8tLCssq6qsq6qsq6qsa6qsq6qsa2psa6psq6psa2psa2osayosa2osa6p + sK6psa2osK2osK6psK6osa2osK2osa2psK2psayosa2psa2psa2osa2osKynsKyosa2osayosa2osKyn + sK2osKynsKynsKynsKynr6ynr6umr6unr6ynr6unrqumr6ynrqqmr6umr6umr6umr6umr6umtbGttLCs + tbGttLCttLCttbGutbGttrKutrKutrKutrKutrOutrOutrOvtrOutrOutrOutrSvt7OvtrOutrOvtrOu + trKutrKutbKutrKutbGutbGutbGutbKutrOvtrOvtrSwt7SwuLSwt7Wwt7Swt7WwuLWwuLWwuLSxuLSw + uLSxuLSxuLSwuLSwuLSwuLSvuLSvuLSwt7Owt7Swt7Owt7Sw1tTS//////////////////////////// + ////////////////////////////////////////////////////blE4ZkguZUguZEcuY0YuYkYuYUUu + YEUtbkwuf1Uwf1UwkV4xyXs2yXs2yXs2yns2yns3ynw3ynw3y3w3y3w3y3w3zHw3zH03zH03zX03zX03 + zX03zn43zn43zn43z343z3430H430H830H830X830X831oI3/86j//////////////////////////// + /////////////////////////////////fz8tZZ7jWI8iFw0iFoyilsxjFwxjl0xkF4ykl8ylGAylmEy + l2IynWQznWQztXE134c54Ic54Ic54Yg64Yg64Yg64og64ok644k644k65Ik65Ik65Yo65Yo65Yo65oo6 + 5os654s654s676Ri//////////////////////////////////////////////////////////////// + deP/AMz/AMz/AMz/AMz/GtH///////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////f39/Pz8/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////cKr/AGb/AGb/AGb/AGb/AGb/AGb/AGb/yuD///////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8tLCss6+qs66qsq6qsq6qsq6qsq6qsq6psq2psq6psq2psa2osa2osa2o + sa6psa2osa6psK2osa2psK6osa2psa6psa2psa2psa2psa2psa2psa2psa2osa2osa2osKyosKynsKyn + sKynsKynsKynsKynsKynr6ynr6umr6ynr6ynrqunrqumr6unr6unr6unr6unr6unr6unr6untbGttLCt + tbGttLCutLCttbGutbGttrKttrKttrKutrOutrKutrOvtrOutrOutrSvtrSvtrSvtrOvt7OvtrOvtrOu + trKutrKutrKutrKutrKutrKvtrKvtrKvtrOwtrOwtrSwt7SwuLWxuLWxuLaxuLaxuLWxuLWxuLWxuLSw + uLSxuLSxuLSxuLWxuLSwuLSwuLSvuLSvuLSwuLSwuLSxuLSx1tTS//////////////////////////// + /////////////////////////////////////////////////v79aUowZkguZUguZEcuY0cuYkYuYUYu + YEUudVAvf1Uwf1UwpmkzyXs2yXs2yXs2yns2yns2ynw3ynw3y3w3y3w3y3w3zHw3zH03zH03zX03zX03 + zX03zn43zn43zn43z343z3430H430H830H830X830X835Ik5/+TM//////////////////////////// + ///////////////////////////////+7tW+vJVyn3ZRj2Q+iFw2iFoyiVoxi1sxjlwxkF4ykl4yk18y + mWIynWUznWQzy3w334c54Ic54Ic54Ig54Yg54Yg54og54og544k544k55Ik55Ik55Io55Yo65Yo65oo6 + 5oo654s654s69sym//////////////////////////////////////////////////////////////// + deP/AMz/AMz/AMz/AMz/GtH///////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////f39/f39/Pz8/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+//////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////zuL/jrv/jrv/jrv/jrv/jrv/jrv/jrv/6PH///////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8tLCss6+rs6+rs66qsq6qs66qsq2psq2psa2psq2psa2osq2osq2osa2o + sq6psq6psq6psa2osa6osa6psK2psa6psa6psa6psa6psa6psa2psa2psa2psa2psKyosKyosKyosKyn + sKynsKynsKyosKunsKynr6ynsKynr6ynr6ynr6unr6yor6ynr6yor6unr6unr6unr6unr6untbGutLGt + tLCttLCutLGutbGutrKutbKutrOutrKutrOutrOutrOutrOutrOvtrOutrOvt7Svt7SvtrOvtrOvtrOv + trOvtrKvtrOvtrOvtrKwtrOvtrKwtrOvtrOwt7Owt7Swt7Sxt7WwuLaxuLawuLWxuLWxuLWwuLWwuLWx + uLWxuLWxuLWxuLWxuLSwuLSwuLSwuLSwuLSwuLSwuLSxuLSx1tTS//////////////////////////// + ////////////////////////////////////////////////+vn4aEkuZ0kuZkguZUguZEcuY0cuYkYu + YUYufVQwf1Uwf1UwtnI0yXs2yXs2yXs2yns2ynw2ynw3ynw3y3w3y3w3y3w3zHw3zH03zH03zX03zX03 + zX03zn43zn43zn43z343z3430H430H830H830X830X837Y45//Tr//////////////////////////// + ///////////////////////////+///2//ba8M6sxp99pXxYkWdCiV03h1oziFoxilsxjVwxj10xkV4y + nWQznmUzpGg03oY534c534c54Ic54Ic54Yg54Yg54og54og544k544k544k55Ik55Ik55Yo55Yo55oo5 + 5oo554o56I4+/vTr//////////////////////////////////////////////////////////////// + deP/AMz/AMz/AMz/AMz/GtH///////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////Pz8/f39/Pz8/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+//////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8tLCss6+rsq+rs6+rs66rsq6qsq6qsq2psq6psa2osa2psq6osa2osa2p + sa2psq6psq6osa6psa2osa6psa6psa6qsa6qsa6psa6psa6qsa2psa2psa2psa2psKyosKyosKyosKyo + sKyor6unsKyor6unr6ynr6unr6unr6ynr6ynr6unr6yor6yor6yor6yor6yor6yor6uor6yotbGutbGu + tLGutbGutbGutbGutbKutrKutrKutrOutrOvt7Out7Svt7OvtrSvtrSvtrSvt7SvtrSvt7Svt7Svt7Ov + t7OvtrOvt7Owt7OvtrOvt7Ovt7Ovt7Owt7Owt7Swt7Swt7Swt7WwuLWwuLaxuLaxuLaxuLWwubWxuLWw + uLSwuLSwuLSwuLWxuLWwuLSwuLSwuLSwuLSwuLSwuLSxuLSx1tTS//////////////////////////// + ////////////////////////////////////////////////+vn4aUouaEkuZ0kuZkguZUguZEcuY0Yu + Zkguf1Uwf1UwgVYwxno2yXs2yXs2yXs2yns2ynw2ynw3y3w3y3w3y3w3zHw3zHw3zH03zH03zX03zX03 + zn03zn43zn43zn43z343z3430H430H830H830X830X839JE6//z5//////////////////////////// + ////////////////////9uzj/e3P///y///8//zo99280quJq4NglGtGil45h1ozh1oxiVoxjFsxlmEy + n2Yzn2UzwHY23oY534c534c54Ic54Ic54Yg54Yg54og54og54og544k544k55Ik55Ik55Yo55Yo55oo5 + 5oo554o58bF3//////////////////////////////////////////////////////////////////// + cuD8AMz/AMz/AMz/AMz/GdD+9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08/Pz8fHx8fHx8fHx + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0 + 9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0+/v7//// + /////////////////////Pz8tLGts7Crs6+rsq6rsq6rs66rsq6rsa2qsq6qsa2psa2psq6qsa2psq6p + sa6psa2psq2qsa6psa2psq6qsq6qsa6qsq6qsa6qsa6qsK2psa6qsK2psa2qsK2psK2psKypr6yosKyo + sKyosKynr6unsKyosKuor6ynsKyosKyosKyosK2or6yor6yor62or6yor62or6yor6yor6yotbKvtbKu + tLGutbKvtbGvtbKvtrKvtbKutrOvtrOutrOutrOuuLSvt7Svt7Svt7Svt7Svt7Svt7SvtrSvt7Swt7Ov + t7OvtrOwt7Owt7Owt7Owt7Owt7Svt7Swt7Swt7Swt7SwuLSwuLWwuLWwuLWwuLaxuLaxuLawubaxuLSw + uLSwuLSwuLSxuLSwuLSwuLSxuLSwuLSwuLSwuLSwuLWwuLWw1tXS//////////////////////////// + /////////////////////////////////////////////////fz8a0swaEouZ0kuZkguZUguZEcuY0cu + akovflUwflUwjFwxyHs2yXs2yXs2yXs2yns2ynw2ynw3y3w3y3w3y3w3zHw3zH03zH03zH03zX03zX03 + zn03zn43zn43z343z343z3430H430H830H830X830X83+JM6//v3//////////////////////////// + ////////////8/DsvaSPsIhl3raT/erK///1//////70/OnK3beVs4tomG9Li2A7h1o0h1kyjFwxoGYz + oGYzp2o03IU53oY534c534c54Ic54Ic54Yc54Yg54og54og54og544k544k55Ik55Ik55Yk55Yo55oo5 + 5oo554o5+uPO//////////////////////////////////////////////////////////////////// + ye32o+b2o+b2o+b2o+b2q+f28vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8fHx7Ozs6urq6urq + 6urq6urq6urq6urq6urq6urq6urq6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr7Ozs7Ozs7Ozs7Ozs7Ozs + 7Ozs7Ozs7Ozs7Ozs7Ozs7e3t7e3t7e3t7e3t7u7u7u7u7u7u7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v + 7+/v8PDw8PDw8PDw8PDw8PDw8fHx8fHx8fHx8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy+vr6//// + /////////////////////Pz8tLGts7Crs6+rsq+rsq+rsq+rsq6rsa6qsq6qsq6psa2qsa6qsa6qsq6p + sq6qsq6qsq6qsq6qsq6qsq6psq6psa6psq6qsa6qsa6psa6qsa6psK6psa6psa2psa2psKypsa2psKyo + sKypsK2osKynsKynsKyosK2osK2osK2osa2osKyor62osK2osK2osK2osK2osKyosK2osKyotrKvtbKv + tbGutbKvtbKvtrKutrKvtrOvtrOut7Out7Svt7Svt7Out7Out7Out7Svt7Svt7Svt7SvuLSwt7Swt7Sw + t7SwuLSxt7Owt7Owt7Owt7Svt7Ovt7SwuLSwuLSwuLSwuLWwuLWwuLWwuLWwuLWwuLawuLWwuLWwuLSw + uLSxuLSwuLSxuLSxuLSxuLSwuLSwuLSwuLSwuLSwuLWwuLSx19XS//////////////////////////// + ////////////////////////////////////////////////////dFY7aUouaEkuZ0kuZkguZUguZEcu + b00vflUwflUwmGIyyHs2yXs2yXs2yXs2yns2ynw2ynw3y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03 + zn03zn43zn43z343z343z3430H430H830H830X830X83+JM6//Po//////////////////////////// + ////8OzotaCMglw6glo3kGlGrYVi2rKQ/OjI///2///////7/vPZ58Siu5RynHRQjGI9h1s1nWQzomcz + omczynw33oY53oY534Y534c54Ic54Ic54Yc54Yg54og54og54og544g544k55Ik55Ik55Yk55Yo55oo5 + 5oo57aJh//////////////////////////////////////////////////////////////////////// + 1NLxtLDqtLDqtLDqtLDqurfr9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39fX18fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz9PT09PT09PT09PT09PT09PT09PT09PT09PT09fX19fX1 + 9fX19vb29vb29vb29vb29vb29vb29vb29vb29/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3/Pz8//// + /////////////////////Pz8tLGtsq+ss7Css7Css7Cssq+rsq+rsq+qsq6rsq6rsq6qsq6qsq6qsq6q + sq6qsa6ps66psq+qsq+psq+qsq6psq6psq6psq6psa6psq+qsa6psa6psa6psa6psa6psa2psK2osa2p + sa2psK2osKyosa2osa2osK2osa2osa2osa2osa2osa2osK6osK2osK2osK2osK2osKyosKyot7OvtrKu + tbKvtbKvtrOvtrOvtbKutrKutrOutrSut7SvuLSvt7OuuLSvt7Out7Svt7Svt7Svt7SvuLSwt7Svt7Sw + t7Owt7Owt7Owt7Owt7SwuLSwt7Swt7SwuLSwuLSwuLSwuLSwuLWwuLWxuLWwuLWwuLWwuLWxuLWxuLWw + uLSwuLSxuLSxuLSyuLSxuLSxuLSxuLSwuLSwuLSxuLWwuLWw19TS//////////////////////////// + ////////////////////////////////////////////////////gGRLakouaUouaEkuZ0kuZkguZEcu + c08vflUwflUwpGgzyHs2yXs2yXs2yXs2yns2ynw2ynw3y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03 + zn03zn43zn43z343z343z3430H430H830H830X830X839ZI6+Ni7////////////////+vj34trTwrGi + mXxjeVMxeVIwelMwfFQxgVo3jmZEqYJf1a6L++XE//71///////+//nm79CwxJ17oXlWnGc4pWgzpGgz + t3I13oY43oY43oY534Y534c54Ic54Ic54Yc54Yg54og54og54og544g544k55Ik55Ik55Yk55Yo55oo5 + 5oo599i8//////////////////////////////////////////////////////////////////////// + iILeKyDJKyDJKyDJKyDJPjXN8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7+/v7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8tLGss7Crs7CssrCrsq+rsq+rsq+rs6+rsq+rsq+rsq6qsq6rsq6qsq6q + sq6qsq6qsq6psq6psq+qsq6psq6psq+qsq+qsq6psq6psq6qsa6qsq6qsq6qsa6psa6qsa6psa6psa2p + sK2psa2psa2osa2osa2osa2osa2osa2osa2osa2osa6osa2osa2osK2osK2osK2osK2osKyotrOvtrKv + trKutrOvtrKvtrKutrKutrOvtrOut7SutrOut7Sut7OuuLSvt7OuuLSut7Svt7Svt7Svt7Swt7Swt7Sw + uLSxuLSxuLSxt7Swt7SwuLSwuLSwuLSwuLSwuLSxuLSwuLSwuLSxuLWxuLWxuLWxuLWxuLaxuLWxuLWx + uLWxuLSxuLSyuLSyuLWyuLWxuLWxuLWxuLWxubWxubWxubax19XS//////////////////////////// + ////////////////////////////////////////////////////knlka0suakouaEouZ0kuZkguZUgu + dlEvflUwflUwrG00yXs2yXs2yXs2yXs2yns2ynw2ynw3y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03 + zn03zn43zn43z343z343z3430H430H830H830X830X8374461IE4m2c4nXBImnFMj2ZCflUweFIwdVAv + dlAvd1EveFEveFIwelIwe1QxgFg2jGRCpX5b0KmG+eHA//7z//////////3w9ty8vIxgqGo0pmkzrW00 + 2oQ43oY43oY43oY434Y434c54Ic54Ic54Yc54Yg54og54og54og544g544k55Ik55Ik55Yk55Yo55oo5 + 655b//79//////////////////////////////////////////////////////////////////////// + iILeKyDJKyDJKyDJKyDJPjXN8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8tbGstLCrtLCss7Crs7Crs6+rsq+rs6+rs6+rsq+rsq+rsq+rsq6qsq6q + sq6qs6+qsq6qsq+qsq+qsq6qsq6ps6+qs6+qsq6psq+qsq+qsq+qsq+qsq6qsq+qsq6qsq6psa6psa2p + sa2psa2psa2psa2psq6psa2osq6osa2osq6osq6psa2osa2osa2osa2osa2osK2osK2or6ynt7OwtrOv + trOvtrKvt7OvtrKvtrOvtrKut7Svt7Ovt7Svt7OuuLSvuLSvuLSvt7Svt7Svt7Svt7Swt7Swt7Sxt7Sx + t7SwuLSxuLSxt7SxuLSxuLWxuLWwuLWwuLSwuLWwuLWwuLWwuLWxuLaxuLWxuLaxuLaxuLWxuLWyuLWy + uLWyuLWyuLWyuLWyuLayuLWyubaxubayubaxubaxubaxurax19XS//////////////////////////// + ////////////////////////////////////////////////////qJSDbEsuakouaUouaEkuZ0kuZkgu + eVIwf1Uwf1UwtHE0yXs2yXs2yXs2yns2yns2ynw2ynw2y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03 + zn03zn43zn43z343z343z3430H430H830H830X830X835Yk59JE6pGgzmGIykV4yi1sxhVgxf1UweVIw + dVAvdVAvdlAvd1EveFEweVIwelMxf1c1imJAoXpXyqOB9tu6//3w////////2Lqbq2s0qWs0rGw01IE3 + 3YU43oY43oY43oY434Y434c44Ic44Ic54Yc54Yc54og54og54og544g544k55Ik55Ik55Yk55Yo55oo5 + +NvD//////////////////////////////////////////////////////////////////////////// + iILeKyDJKyDJKyDJKyDJPjXN8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7+/v + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw2trpfHzOTU3ATU3BdnbM09Po8PDw8PDw8PDw8PDw8PDw + 8PDw3d3q8PDw8PDw8PDw0dHn2dnp8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8trGstLCrtLCrs6+qs7Crs7Crs6+qs7Crs7Crs6+rs6+rsq6qs66rs6+r + s6+rs6+qs6+qsq6qs6+qsq6ps6+qs6+qs6+qs6+qs6+qs6+qsq+qsq+qsq+qsq+qsq+qsa6qsq6qsa6p + sa6psq6qsq6qsa2psa2qsa2psq6psa2psa2psq6osq6psq6psa2osa6psa2psK2osK2osK2ot7OwtrOv + t7OvtrOvt7Ovt7OwtrKvtrOvtrOvt7Svt7Ovt7Svt7SvuLOvuLSvt7Ovt7Swt7Sxt7Sxt7Wxt7SxuLSx + t7SxuLSyuLSxuLWxuLSxuLWxuLWxuLWwuLWwuLWwuLWwuLWwuLWxuLWxuLaxuLaxuLaxuLaxubayubay + ubWyuLayuLWyubayubayubeyubaxubaxubaxubayuraxurax19XT//////////////////////////// + ////////////////////////////////////////////////////xbisbEsva0suakouaUouaEkuZ0ku + elMwf1Uwf1UwuHM1yXs2yXs2yXs2yns2yns2ynw2ynw2y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03 + zn03zn43zn43z343z343z3430H430H830H830X830X832II4+ZQ704A4oGYzmWIykl8yi1sxhVgxf1Uw + eVIwdFAvdFAvdlAvd1EveFEveFIwelMxfVc0h2A+nXZUxJ5789Wz/ffmzqaCrm00rGw0rm000X833YU4 + 3YU43oY43oY43oY434Y434c44Ic44Ic44Yc54Yc54og54og54og544g544k55Ik55Ik55Yk55Yo57KZp + //////////////////////////////////////////////////////////////////////////////// + iILeKyDJKyDJKyDJKyDJPjXN8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7Ozs6+vr8PDw8PDw8PDw + 8PDw7e3t7Ozs8PDw8PDw8PDw8PDw7u7u6Ojo8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7+/v + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u6+vr7e3t7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7Ozs7+/v7+/v7+/v7+/v7+/v7Ozs6+vr7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw6+vr6urq8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwu7vhFhawAACqAACqAACqAACqEhKvt7ff8PDw8PDw8PDw8PDw + 8PDwb2/Kr6/d8PDwdnbMPT28MTG4nJzY8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8tbGstLCrtLCrs7CrtLCrtLCrs7Crs7Crs7Crsq+qs6+rsq+qs66rs66r + s6+rs6+rs6+ss6+rs6+rsq6qs6+qs6+qs6+qs6+qs6+qs6+qsq+qsq+qsq+qsq+rsq+rsq+qsq+qsa6q + sq6qsq6qsq6qsq6qsq6qsq6qsq6qsq6qsa6psq6psa6psa6psa6psa6psa2osa2psa6psK2ot7SxtrOw + trOvt7Owt7Owt7Owt7Owt7Ovt7Owt7Svt7Svt7Svt7SwuLWwuLSwuLSwuLWxuLWxt7WxuLSxuLWyt7Wx + uLWyuLWyuLWyuLWxuLWyuLWxuLaxubWxubaxubaxubWwuLWxubWxubayuLayubayuLayubayubayubay + ubayubeyurezurazurazureyureyureyu7ayuraxuraxurax19XS//////////////////////////// + ////////////////////////////////////////////////////4NnTbUwvbEsua0suakouaEkuZ0ku + e1Mwf1Uwf1UwvHU1yXs2yXs2yXs2yns2yns2ynw2ynw2y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03 + zn03zn43zn43z343z343z3430H830H830H830X830X830n837486+ZY+wHg4oWYzmWMykl8yjFwxhlgx + f1UweVIwdFAvdE8vdVAvdlAvd1EveFEweVIwfFY0hV48mXJQvpJsv4JLsW80r240sm8004A33IU43YU4 + 3YU43oY43oY43oY434Y434c44Ic44Ic44Yc44Yc54og54og54og544g544k55Ik55Ik55Yk55Ys7+ufX + //////////////////////////////////////////////////////////////////////////////// + iILeKyDJKyDJKyDJKyDJPjXN8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw6urqYGBgpqam8PDw8PDw8PDw + 8PDwlJSUWFhY7+/v8PDw8PDw8PDw4+PjTk5Ovr6+8PDw8PDw8PDw8PDw8PDw8PDw7+/vfn5+YGBgYGBg + X19fX19fX19fX19foKCg7u7u7u7u7u7u7u7u7u7u7u7u09PTj4+P3t7eT09Pubm57u7u7u7u7u7u7u7u + 7u7u7u7utra2mpqasLCwU1NT4uLi7+/v7+/v7+/v7+/vioqKW1tb7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw4+PjtbW17Ozs8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDweXl5bW1t8PDw8PDwpqamYGBgYGBgYGBgYGBgYGBgYGBgYGBg + 5+fn8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw3t7rGhqyAACqSEi/tbXft7ffT0/BAACqFRWw19fp8PDw8PDw8PDw + 8PDw2NjpQkK94eHsICCz5ubtzc3mNTW68PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8trGstK+rtbCstK+rtLCrtK+rs7Css7CssrCrs7Crs7Css7Css6+rs6+s + s6+ss6+rs6+ss6+rtK+rs6+rs6+rs6+rs6+rs6+qs6+qs6+qsq+rs6+rs6+rs6+rsq+qsq+rsq+rsq6r + sq+rsq6rsq+qsq6rsq6rsq6qsq6qsq6qsa6qsa+qsq6psa6psq6qsa6psa6psa2psa6psa6puLSxt7Sw + t7Sxt7Owt7Swt7Owt7Swt7Swt7Swt7Swt7Swt7WwuLWwuLWwuLWwuLSwuLWxuLWxuLWxuLWxubayuLax + uLayuLayubayuLWxubaxubWxuraxuraxuraxubWwubWwubaxubWxurayubWyuLaxubayubayubayubay + ubayubayubezurazurayureyureyurayu7eyurayuraxurax19XS//////////////////////////// + /////////////////////////////////////////////////////v79eVk+bUwva0suakouaUouaEku + e1Mwf1Uwf1UwvXU1yXs2yXs2yXs2yns2ynw2ynw2ynw2y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03 + zn03zn43zn43z343z343z3430H830H830H830X830X830n832oQ4+pdA+6BMw4JComczmmMyk18yjFwx + hlkxgFUwelIwdFAvc08vdFAvdlAvdlEvd1EweFIwf1czomo5tnI2tXE1s3A1uXM11oI33IU43IU43YU4 + 3YU43oY43oY43oY434Y434c44Ic44Ic44Yc44Yc54og54og54og544g544k55Ik55Ik55Yk577iI//// + //////////////////////////////////////////////////////////////////////////////// + iILeKyDJKyDJKyDJKyDJPjXN8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwo6OjR0dH5ubm8PDw8PDw8PDw + 8PDwi4uLSUlJ7u7u8PDw8PDw8PDw8PDwj4+PVVVV7Ozs8PDw8PDw8PDw8PDw8PDw7u7uW1tbWFhYmZmZ + mZmZmJiYmJiYmJiYv7+/7u7u7u7u7u7u7u7u7u7u7u7uurq6NTU11NTUNDQ0sLCw7u7u7u7u7u7u7u7u + 7u7u7u7ugYGBSkpKpqamOjo639/f7+/v7+/v7+/v7+/vgICATExM7+/v7+/v7+/v7+/vz8/PlJSUlJSU + lJSUlJSUlJSUlJSUlJSUlJSUlJSUmJiY8PDw8PDw8PDw5OTkQUFBu7u78PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwcnJyZGRk8PDw8PDwjo6OPj4+oKCgoKCgoKCgoKCgeXl5NDQ0 + 5OTk0tLSfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+gICA3Nzc8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDwf3/PAACqKyu26Oju8PDw8PDw7OzvOzu7AACqcnLK8PDw8PDw8PDw + 8PDw8PDwdXXMnp7YISGz1dXotrbfQEC98PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8trGttLCstbCstLCrtLCrtLCrs7Css7Css7Css7Css7Css7Css7Css6+s + s6+ss6+ss6+ss6+stK+rs6+rs6+rs6+rs6+rs6+rs6+rs6+rs6+rs7Crs7Crs6+rsq+rsrCrsrCrsq+r + sq+rsq+rsq+rsq6rsa6qsq6qsq6rsq6qsq6qsq6psq6psq+qsq6qsq6psa6qsa6psa6psa6puLWyuLSx + t7SwuLSwuLWwuLSwuLSwuLSwt7SwuLSwt7WwuLWwuLWwuLWxuLWwuLWxuLWxuLWxuLWxuLaxuLayubay + uLayubayubayubayubaxubaxubaxuraxurawubWxuraxubWxubWxubWyubWyubayuLayuLayubayubay + urazubayurezurezu7ezu7eyu7eyu7eyu7eyu7eyurayurax2NXS//////////////////////////// + ////////////////////////////////////////////////////////o4t2b00vbEsva0suakouaUou + elMwf1Uwf1UwvHQ1yXs2yXs2yXs2yns2ynw2ynw2y3w3y3w3y3w3zHw3zHw3zH03zH03zX03zX03zX03 + zn43zn43zn43z343z3430H430H830H830X830X830X830n830oA35o09/6lT/sp12rt7qnREm2MylGAy + jVwxhlkxgFYwelIwdFAvc08vdE8vdVAvf1YxoGc1unQ3vHU2uXM1t3I1xXk22oM424U43IU43IU43YU4 + 3YU43oY43oY43oY434Y434c44Ic44Ic44Yc44Yc44og54og54og544g544k55Ik55Ik555RL/ffx//// + //////////////////////////////////////////////////////////////////////////////// + iILeKyDJKyDJKyDJKyDJPjXN8PDw8PDw8PDw8PDw8PDw8PDw8PDw7OzsU1NTg4OD8PDw8PDw8PDw8PDw + 8PDwi4uLSUlJ7u7u8PDw8PDw8PDw8PDw0tLSNTU1u7u78PDw8PDw8PDw8PDw8PDw7u7uW1tbeHh48PDw + 8PDw7+/v5eXlurq639/f0tLSeHh44eHh7u7u7e3tpqamqqqqNTU11NTUNDQ0sLCwzMzMbm5u1dXV7u7u + 7u7u7u7ugYGBSkpKpqamOjo639/f7+/v7+/v7+/v7+/vgICATExM7+/v7+/v7+/v7+/vvr6+Y2NjY2Nj + Y2NjY2NjY2NjY2NjY2NjZGRkZGRkaWlp8PDw8PDw8PDw8PDwfn5+cnJy7+/v8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw7e3t5ubm5ubm5ubm5ubm5ubmb29vZGRk8PDw8PDwjo6OQ0ND09PT09PT09PT09PTm5ubNDQ0 + 5OTk0NDQdXV1dXV1V1dXNzc3cnJycHBwNTU1Xl5edXV1dnZ22tra8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDwNja5AACqe3vO8PDw8PDw8PDw8PDwiorSAACqOTm28PDw8PDw8PDw + 7u7v6Oju3NzqQEC8o6PZLCy3MzO5v7/i8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8trKutLGstLGstLGstLCstLCstLCstLCss7CstLCss7CstLGss7CstLCs + tLCstLCss7CstLCss6+stK+ss7CrtLCrs6+rs7CrtLCrtK+rs7Crs7Crs7Crs7Crs7Crs7Crs7CrsrCr + srCrsq+rsq+rsq+rsq6qsq+rs6+rsq+qsq+qs6+qsq+qsq6qsq6psq+qsq+qsq6psq6psq+qubWyuLWx + uLSwuLSwuLWwuLWwuLSwuLSwuLSwuLWwuLWwuLWwuLWxubWxubWxubWxuLWxuLaxuLaxuLaxuLaxuLax + ubayurayubayurayurayurayurayuraxuraxuraxuraxubWxubWyubWyubWyubayubeyubayubeyubay + ubazurazurayurezu7ezurazu7ayu7eyu7ayu7ayurayuray19XS//////////////////////////// + ////////////////////////////////////////////////////////08e8ck4vbkwvbEsuaksuaUou + elIwf1Uwf1UwuXM1yXs2yXs2yXs2yns2ynw2ynw2y3w3y3w3y3w3zHw3zHw3zH03zH03zX03zX03zn03 + zn43zn43zn43z343z3430H430H830H830X830X830X830n830oA304A36ppK/9aB//7D/Pn12sOvu5Z1 + onVNkGA2h1kxglgzhmM+mXRKs31MyIVK0odEyH49wnk5vnY3wXc20oA324Q424Q43IU43IU43IU43YU4 + 3YU43oY43oY43oY434Y434c44Ic44Ic44Yc44Yc44og54og544g544g55Ik55Ik55Ig49tm///////// + //////////////////////////////////////////////////////////////////////////////// + iILeKyDJKyDJKyDJKyDJPjXN8PDw8PDw8PDw8PDw8PDw8PDw8PDw1tbWNTU1tra27e3twMDAvr6+vr6+ + vr6+dHR0Q0NDvb29vr6+vr6+vr6+3d3d7OzsTExMhYWF8PDw8PDw8PDw8PDw8PDw7+/vcHBwiYmJ8PDw + 8PDw8PDwzc3NNTU1u7u73NzcS0tLcnJy7e3toKCgOjo6i4uLNTU11NTUNDQ0sLCw3d3dYGBgSUlJ1tbW + 7u7u7u7ugYGBSkpKpqamOjo61NTUmZmZl5eXl5eXl5eXXFxcQEBAl5eXl5eXl5eXl5eXz8/P7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDwycnJOjo629vb8PDw8PDw8PDw8PDw8PDw + 8PDw8PDwrq6uPDw8PDw8PDw8PDw8PDw8NjY2ZGRk8PDw8PDwkZGRODg4OTk5OTk5OTk5OTk5ODg4OTk5 + 5OTk8PDw8PDw8PDwmpqaPj4+6Ojo4eHhODg4rq6u8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw7OzuDg6sAACqhITQ8PDw8PDw8PDw8PDwk5PVAACqMzO08PDw8PDw4eHs + Q0O9KSm2VlbDeHjNmprX8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8tbKttbGstbGstbGstbGstLGstbGstLCstLGstLGstLGstLGstLGstLCs + tLCstLCstLGstLCstLCstLCstLCstLCrtLCrtLCrs7CrtK+rs7Crs7Crs7Crs7Crs7Crs7Crs7Crs7Cr + s7CrsrCrs6+rs6+rs7Crs6+rs6+rs6+rs6+qs6+qs6+qsq6ps6+qs6+qs66qsq6psq+qsq6pubayubWx + ubWxubWxuLSwubWwuLWwubWwubWwubWwubWwubWxuLWxubWxubWxubWxubaxubayuLayuLayubayubay + urayurayurayurazurayurayurayurayuraxurayuraxubWyubWzubayubazubWzubezuLezuLeyubez + ubazurazurazurazurazurazu7azu7ezu7azurayureyu7ey2NbT//////////////////////////// + ////////////////////////////////////////////////////////+vj3fls8cU4vbUwva0suakou + eFEvgFUwgFUwtHA0yXs2yXs2yXs2yns2ynw2ynw2y3w3y3w3y3w3zHw3zHw3zH03zX03zX03zX03zn03 + zn43zn43z343z343z3430H430H830H830X830X830X830oA30oA30oA304A346VY+/TG//////////// + /////v79+/r4///////g/+mi/rx37J5a2I1KzYJAyX060X842oQ42oQ424Q424Q43IU43IU43IU43YU4 + 3YU43oY43oY43oY434Y434c44Ic44Ic44Yc44Yc44og44og544g544g544g44oc37LJ+//////////// + //////////////////////////////////////////////////////////////////////////////// + iILeKyDJKyDJKyDJKyDJPjXN8PDw8PDw8PDw8PDw8PDw8PDw8PDwubm5NTU10dHR5eXlSkpKQ0NDQ0ND + Q0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDra2t8PDwbGxsZWVl8PDw8PDw8PDw7+/vhYWFlpaW6+vr7u7u8PDw + yMjIoKCgzs7ONTU1u7u77u7uurq6NjY2n5+fPDw8l5eXurq6NTU11NTUNDQ0sLCw7u7u4uLiVlZWWVlZ + xsbGhoaGVVVVSkpKpqamOjo6zc3NYGBgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eurq67e3tp6en + pqampqampqampqampqampqamwMDA7+/v8PDw8PDw8PDw8PDw7+/vWVlZmJiY8PDw8PDw8PDw8PDw8PDw + 6OjorKys3d3dzMzMzMzMzMzMt7e3yMjImpqanp6e8PDwu7u7sLCwqKioqKioqKioqKioqKioqKioqKio + t7e31NTU7+/vbGxsQEBANDQ0SkpKSUlJNDQ0Q0NDaWlp8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw3t7oCAiqAACqPDy87e3v8PDw8PDw8PDwYGDGAACqVFTA8PDw8PDwhYXR + bW3K7OzvU1PCmZnXOzu75+ft8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8trKutbGstbGstbGstbGstbGstbGstbGstLGstLGstLGstLGstLGstLGs + tLGstLCstLCstLCstLCstLCstLCstLCss6+rtK+rtLCrtLCrtLCqs6+qtLCrtLCrs6+qs6+qs7Crs7Cr + s7Crs7Crs7Crs7Crs7Crs7Crs6+rs6+rs6+rs6+rs6+rs6+qs6+qsq6qs6+qsq6ps6+qsq6pubayuLWx + uLSwubWxubWxubWwubWwubWwubWwubWwubWxuLWxuLWyubWxubaxubaxubayuLayubayuLayubeyubay + ubayurayurazurazurazurazurayurayurayurayurayubayubayubazubazubazuLezuLezubezubaz + ubezurazurazurazurezu7ezu7ezureyu7eyu7eyurezu7ez2NbT//////////////////////////// + ////////////////////////////////////////////////////////////s5yJdVAvcU4vbUwva0su + dlAvgFYwgFYwrGw0yXs2yXs2yXs2yns2ynw2ynw2y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03zn03 + zn43zn43z343z343z3430H430H830H830X830X830X830oA30oA30oA304A304A31odB6LyV+u/m//// + ///////////////////w//a1/8qF8qRf3IxG14Q72YM42YM42oQ42oQ424Q424Q43IU43IU43IU43YU4 + 3YU43oY43oY434Y434Y434c44Ic44Ic44Yc44Yc44og44og54og54oc44YY25JVP/ffy//////////// + //////////////////////////////////////////////////////////////////////////////// + iIPeKyDJKyDJKyDJKyDJPzXN8PDw8PDw8PDw8PDw8PDw8PDw8PDwra2tNzc329vb8PDw6urqurq61dXV + 6urq6urq6urq6urq4+Pjtra24ODg7u7u8PDwdXV1W1tb8PDw8PDw8PDw8PDwrKysPj4+enp67u7uoqKi + Ojo6dnZ2ysrKNTU1u7u77u7u7e3tZWVlNTU1UVFR6Ojourq6NTU11dXVNDQ0sbGx7u7u7u7u0tLSPDw8 + cXFxgICAU1NTSkpKpqamOjo639/f5ubmnZ2dm5ubm5ubm5ubm5ubm5ubm5ubm5ub0NDQ7+/v6urqNjY2 + Pj4+S0tLS0tLS0tLS0tLS0tLhoaG7+/v7+/v8PDw8PDw8PDw8PDwoaGhUFBQ7e3t8PDw8PDw8PDw8PDw + wMDAQkJCYGBg39/f7u7ulpaWPT09p6encnJyZWVl7+/vVFRUSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpK + SkpKnp6e7+/vWFhYYGBgsbGxsbGxsbGxsbGxsbGxvLy88PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw29vmBweqAACqAACqcXHL6Oju7OzvpqbaCQmsAQGqpqbb8PDw8PDwfn7P + eHjN8PDwX1/GoKDZiYnSkJDU8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////Pz8trKutbCstrGstbCstbGstbGstbCstbCstbCstbGstbGstLGstbGstLGs + tLGstLCstLGstbCstLCstLCstLCstLCstLCstK+rtLCrtLCrs6+rtLCrs6+rs6+qtLCrtLCrtLCrs7Cr + s7Crs7Crs7Crs7Crs7Css7CstLCss6+rs6+rs6+rs6+rs6+rsq6qsq6qsq6qsq6qsq6qsq6pubWxubWx + uLSwubWxubWxubWxuLSwubWwubWxubWwuLWxuLWyubayubayubayubayubayubezubayubeyubazuray + urayurazurayurazurazurayurayurayurayurayubayubayubayubeyubayubezubeyubeyubeyubez + urezurazurezu7ezu7ezu7ezu7ezu7eyu7ezu7ezu7ezu7ez2NbU//////////////////////////// + ////////////////////////////////////////////////////////////7ujkfFUzdFAvcE0vbEsu + c08vgFYwgFYwo2gzyXs2yXs2yXs2yns2ynw2ynw2y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03zn03 + zn43zn43z343z343z3430H430H830H830X830X830X830oA30oA30oA304A304A31IA31IE31IE325JS + 46t66buT68Sg68Kd6LmM46Vh3I1D2IM42IM42YM42YM42oQ42oQ42oQ424Q424Q43IU43IU43IU43YU4 + 3YU43oY43oY434Y434Y44Ic44Ic44Ic44Yc44Yg44og44og44Yc34IY24Ic4+OXU//////////////// + //////////////////////////////////////////////////////////////////////////////// + jIbhKyDJKyDJKyDJKyDJQDbO/v7+/v7+/v7+/v7+/v7+/v7+/v7+v7+/NTU14ODg/v7+29vbU1NTOjo6 + fn5+6urq+vr6paWlSEhIQEBAqamp/v7+/v7+c3NzZmZm/v7+/v7+/v7+/v7+/v7+zc3NPDw8b29vNzc3 + oKCg/Pz82traNTU1xMTE+/v7/Pz8sLCwMzMzioqKZmZmVFRUNTU14ODgNTU1ubm5/Pz8/Pz8/Pz8jo6O + RUVF9PT0h4eHS0tLr6+vOjo66+vr7OzsZ2dnUlJSNjY2Y2NjY2NjQEBAPT09Y2Njw8PD/Pz8+Pj4NjY2 + jY2N+Pj4+Pj4+Pj4+Pj4+Pj4+vr6/f39/f39/f39/f39/f39/v7+8PDwPz8/yMjI/v7+/v7+/v7+/v7+ + /v7+4uLiU1NTYWFhjIyMPT09sbGx/Pz8dnZ2aGho/v7++vr6+fn52NjYkpKSdnZ2cHBwfn5+ra2t8fHx + +fn5/Pz8/f39W1tbWFhYm5ubm5ubm5ubm5ubm5ubuLi4/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+7+/3CQmrAACqGBiyAACqExOwGxuzAACqAACqVlbH/Pz9/v7+/v7+5+f2 + OTm9RkbBR0fC9PT78/P6SkrD9vb7/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+//////// + /////////////////////Pz8trKutbGttrGttbCstbGstbGstbGstbGstbCstbCstbGstbCstbGstLGs + tLGstLCstLCstLGstLCstLCstLCstLCstK+rtLCstLCss6+ss6+stLCrs6+rs6+rtLCrtLCrtLCstLCr + tLCss7Crs7Css7Css7Css7CstLCss7Css6+ss6+rs6+ss6+rsq6rsq6qsq6qsq6qsq6qsq6pubWyuLSx + ubWxubWxubWxuLSwubWyubWwubWxubWxubWxubayubayubazubazubazubayurayubezurezurezuray + urazurayurWyurayurazurazurezureyurezurayureyurayureyurezureyurezureyurezurezubez + urezurezurezurezurezu7ezu7ezu7ezu7ezu7ezu7ezu7ez2NbU//////////////////////////// + ////////////////////////////////////////////////////////////////rpR+eVIwdE8vb00v + cE0vgVYwgVYwl2EyyXs2yXs2yXs2yns2ynw2ynw2y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03zn03 + zn43zn43z343z343z3430H430H830H830X830X830X830oA30oA30oA304A304A31IA31IE31IE31YE3 + 1YE31oE31oI31oI414I414I42II42IM42IM42YM42YM42oQ42oQ42oQ424Q424Q43IU43IU43IU43YU4 + 3YU43oY43oY434Y434Y44Ic44Ic44Ic44Yc44Yc44Yc34IY234U13oQ08s2s//////////////////// + //////////////////////////////////////////////////////////////////////////////// + jIbiKyDJKyDJKyDJKyDJQDbO////////////////////////////3d3dNDQ0xsbG/////////Pz8w8PD + VlZWTk5OdXV1Pj4+n5+f8fHx/v7+/////Pz8VFRUg4OD////////////////////////mJiYMzMzc3Nz + /v7+////29vbNTU1xsbG/Pz8/Pz82dnZMzMzvb29nZ2dfn5+NTU14eHhNTU1urq6/f39/f39/f391tbW + NjY2YGBgSEhIS0tLsLCwOjo67Ozs/f39/Pz8s7OzQEBA+/v7/Pz8dnZ2XFxc/Pz8/Pz8/f39+Pj4NjY2 + kJCQ/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+////gYGBeXl5//////////////// + ////////3NzcODg4NjY2uLi4////////dnZ2aGho////////xMTEPDw8Y2Njk5OTmpqag4ODRUVFYmJi + +fn5/////v7+iIiIampqampqampqampqampqQ0NDcHBw//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////v7+FRWvAACqqqrjWlrIDg6vBQWsHR20goLV+Pj9//////////////// + +fn94+P2+/v+////////9fX8/Pz+//////////////////////////////////////////////////// + /////////////////////Pz8trKutbGutrGutrGttbGstbGstbCstbGstbGstbCrtbCstLCstbGttLGs + tLCstLCstLCstLCstLCstLCstLCss7CstLCss6+ss6+ss7Css6+ss6+rs7CstLCss7Crs6+rtLCstLCs + tLCstLCss7Css7CstLCss7CstLCss7Css7Css6+ss6+ssq+rsq+rsq+rsq6qsq6qsq6qsq6pubayuLSx + uLSxubWyuLWyuLWxuLWxuLWxubWxuLWxuLWxubWxubayubazubezubezubezureyurizureyureyuray + urayurayurazurezurazurazurazurazureyureyureyureyureyureyureyurayurezubeyubeyurez + urezurezurezu7ezu7ezu7ezu7ezu7ezu7ezu7ezu7ezu7ez2NbT//////////////////////////// + ////////////////////////////////////////////////////////////////8ezohFw6eFEvc08v + b00vgFYwgVYwiFoxyXs2yXs2yns2yns2ynw2ynw2y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03zn03 + zn43zn43z343z343z3430H430H830H830X830X830X830oA30oA30oA304A304A31IA31IE31IE31YE3 + 1YE31oE31oI31oI414I414I42II42IM42IM42YM42YM42oQ42oQ42oQ424Q424Q43IU43IU43IU43YU4 + 3YU43oY43oY434Y434Y44Ic44Ic44Ic44Ic44IY334U23oQ03YMz6rOC//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + jIbiKyDJKyDJKyDJKyDJQDbO////////////////////////////+fn5TExMkZGR/////////Pz8+vr6 + 7e3tVVVVNzc3xsbG+vr6+vr6/v7+////5ubmNjY2urq6////////////////////////09PTMzMzvr6+ + ////////29vbNTU1x8fH/Pz8/Pz84uLiNDQ0z8/P/Pz8xcXFNTU14eHhNTU1urq6+vr60NDQzc3NzMzM + Ozs7cHBwX19fS0tLsLCwOjo67Ozs/f39+fn5uLi4aGho+Pj4+Pj4nJycfHx8+Pj4/Pz8/f39+Pj4NjY2 + bm5utLS0tLS0tLS0tLS0tLS009PT/v7+/v7+/v7+/v7+/v7+/v7+/v7+zc3NPj4+7Ozs//////////// + ////////////aWlpUFBQ////////////dnZ2aGho////////enp6UlJS/Pz8////////////urq6NDQ0 + 1dXV////////8PDw7Ozs7Ozs7Ozs7Ozs7OzsaGhocHBw//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////RETAAACqhobX/////Pz+8/P7/v7/+/v++fn9/Pz+//////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8trKvtrGutbGttrGutbGutbCttbCttbCttbCstbCstbCstbCstLGstLCs + tLGstLCstbGstLGstLGstLGstLGstLCss7CstLCss7Css7CstLCstLCstLCss7CstLCstLCstLCstLCs + tLCstLGstLGstLGss7KttLGss7Css7Css7Css7Css7Css7Crs6+rsq+qsq+qsq+qsq6qsq6qubayubWy + uLSxuLSxubWxubWxubWxubWxubWxubaxubayubayubayuLayubeyubeyubeyuriyureyurezureyu7ay + urazurayu7ayurazu7azurazurazu7eyu7ezureyureyureyu7eyu7eyureyurayurazureyurezubey + urezurezurayurezurezu7ezu7ezu7ezu7ezu7izu7ezu7ez2NbT//////////////////////////// + ////////////////////////////////////////////////////////////////////xbGgfVQwd1Ev + ck4vfVQwgVYwgVYwvnY1yXs2yns2yns2ynw2ynw2y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03zn03 + zn43zn43z343z343z3430H430H830H830X830X830n830oA30oA304A304A304A31IA31IE31IE31YE3 + 1YE31oE31oI31oI414I414I42II42IM42IM42YM42YM42oQ42oQ42oQ424Q424Q43IU43IU43IU43YU4 + 3YU43oY43oY434Y434Y44Ic44Ic434Y334U23oQ13YM03IIy5aJo/v38//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + jIbiKyDJKyDJKyDJKyDJQDbO////////////////////////////////m5ubT09P+Pj4////eHh4SkpK + SkpKPT09NTU1SkpKSkpKSkpK7Ozs////oaGhS0tL9vb2////////////////////////3NzcMzMzycnJ + ////////29vbNTU1x8fH/v7+/Pz84uLiNDQ0z8/P/f39xcXFNTU14eHhNTU1urq68vLyRkZGPDw8PDw8 + PDw8qKioh4eHS0tLsLCwOjo67Ozs/f39YmJiSUlJSUlJSUlJSUlJSUlJSUlJSUlJ5OTk/f39+fn5TExM + SUlJSUlJSUlJSUlJSUlJSUlJlZWV/v7+/v7+/v7+/v7+/v7+/v7+/v7+/Pz8V1dXo6Oj//////////// + ////////////eHh4YmJi////////////dnZ2aGho////////wsLCOzs7ZWVllJSUnJychoaGRkZGYmJi + +Pj4/////v7+X19fNzc3Nzc3Nzc3Nzc3Nzc3Nzc3c3Nz//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////kpLbAACqIyO28/P7/////////v7/QkLAAgKqhYXW//////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8trKvtbKutbKutbGutbKutbGttbGttbCstLCttbGstbGstLCstbGstbGs + tbGstbCstbGstLGstbGstLGstLGstLGttLGttLGstLCttLCstLGts7CstLGstLCstLGstLGstLCstLGs + tLGstLGstLGstLGstLGss7Gss7Gss7Gss7Gss7Css7Css6+rs6+rs6+rsq+qsq6qs6+qsq6qubayubWx + ubWxuLWxubWxubWxubWyubWyubWxubaxubayubaxubayurayurezurezureyuriyureyu7eyureyu7ay + urazu7ayurayu7azu7azurazu7ezu7ezurezu7eyu7ezureyu7eyu7eyureyurayurazurezubazubez + ubezurezurezure0ure0u7e0u7ezu7ezu7izu7ezu7izu7iz2NbU//////////////////////////// + /////////////////////////////////////////////////////////////////////v79nXtdfFMw + dlAvelIvglcwglcwq2wzyXs2yns2yns2ynw2ynw2y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03zn03 + zn43zn43z343z343z3430H430H830H830X830X830n830oA30oA304A304A304A31IA31IE31IE31YE3 + 1YE31oI31oI31oI414I414I42II42IM42IM42YM42YM42oQ42oQ42oQ424Q424Q43IU43IU43IU43YU4 + 3YU43oY43oY434Y434Y434Y43oU23YQ13YM03IIz24Ey4ZZU/fn1//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + jIbiKyDJKyDJKyDJKyDJQDbO////////////////////////////////8vLyUFBQurq6////zs7Ovr6+ + vr6+vr6+vr6+vr6+vr6+vr6++Pj49vb2UFBQtLS0////////////////////////////7+/vn5+f5ubm + ////////4eHhWVlZ0dHR/////f399vb2zc3N8vLy/Pz83Nzch4eH6urqWFhYxsbG/Pz88PDw7+/v7+/v + 7+/v9/f3t7e3lJSUvb29XV1d7+/v/f39yMjIwMDAwMDAwMDAwMDAwMDAwMDAwMDA9fX1/f39/f39/f39 + /f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+xsbGs7Oz//////////// + ////////////v7+/tbW1////////////j4+Pg4OD////////////39/fmZmZdnZ2bm5ug4ODtLS09/f3 + ////////////6enp5OTk5OTk5OTk5OTk5OTk5OTk7Ozs//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////8PD6Hh60AACqUVHF5OT2+vr9oaHgBASrAwOrycnt//////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8t7SvtbKutbKttbGttbGttbGttbGttbGttbGttLGstbGstbCstbGstbGs + tbGstbGstbGstbKttLGstLGttLGttLGstLGttLGstLGstLGstLGstLGstLCstbGttLGstLCrtLGstbGs + tbCstbGstbGstbGstLCstLGstLGstLGss7Css7Css7CstLCss7Crs6+rs6+rsq6qs6+qs6+qurayubWx + ubWxubWxubWxubWxubWxubayubWxubaxubayubayubayubayurayureyureyurezureyu7eyureyu7ay + urayurazu7azu7azu7azu7azu7azu7eyurezu7ezu7ezu7eyu7eyu7eyurezu7ezurazurazurezubaz + urezuba0ure1ure0ure0ure0u7i0u7e0u7i0u7i0u7i0u7i02NfU//////////////////////////// + ////////////////////////////////////////////////////////////////////////8OrlimI/ + elMwd1Evglcwglcwl2EyyXs2yns2yns2ynw2ynw2y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03zn03 + zn43zn43z343z343z3430H430H830H830X830X830n830oA30oA304A304A304A31IE31IE31IE31YE3 + 1YE31oI31oI31oI414I414I42II42IM42IM42YM42YM42oQ42oQ42oQ424Q424Q43IU43IU43IU43YU4 + 3YY43oY43oY434Y43oU33YQ23IM03IIz24Ey2oAx35NQ+/Ps//////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + jIbiKyDJKyDJKyDJKyDJQDbO////////////////////////////////////6+vr6Ojo//////////// + ////////////////////////////9vb23Nzc/v7+//////////////////////////////////////// + /////////////////////////v7+/Pz8/Pz8/Pz8/f39/Pz8/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////xcXsEhKwAACqAQGqCgqtAACqAQGqbW3O//////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////Pz8t7SvtrOutbKttrGttbGttrGttrGstrGttbGttbCstbGttbGttbGstbGs + tbGstbGstbGstbGstbGstLKstbKstbKttLGstLGstbGttbGttbGttLCstbGttLGttbGstbCstbGstbCs + tbCrtbGstbGstbCrtbGstbCrtLGstLCrtLCss7Css7CstLCss7Crs6+rs7Crs66rs6+rsq6qurayubWx + ubWxubWxubWyubWxubWyubayubayubayubaxubaxurayuraxurayureyubayureyureyureyureyuray + urazurazu7azurazurazurezu7ezu7ezu7ezu7ezu7ezu7izu7ezu7ezu7eyurezurezurezurezubez + urezube0ure0ure0uri0uri0u7i0u7i0u7i0u7i0u7i0u7i02NbU//////////////////////////// + ////////////////////////////////////////////////////////////////////////////3dDF + g1o1eVIwgFYwg1cwhFgwwXc1yns2yns2ynw2ynw2y3w3y3w3y3w3zHw3zH03zH03zX03zX03zX03zn03 + zn43zn43z343z343z3430H430H830H830X830X830n830oA30oA304A304A304A31IE31IE31IE31YE3 + 1YE31oI31oI31oI414I414I42II42IM42IM42YM42YM42oQ42oQ42oQ424Q424Q43IU43IU43YU43YU4 + 3YY43oY43oU33YQ23IM124I02oEz2oAx2X8w3ZBM+/Ho//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + jIbiKyDJKyDJKyDJKyDJQDbO//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////f39/Pz8/Pz8/Pz8/f39/Pz8/Pz8/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+//////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////3t70aGjMKiq4ICC1QkLAo6Pg/f3+//////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////fz8t7OutrKutrOutrKttbGttrGttbGttbGttbGttbGttbCstrGttbGttbGt + tbGstrGstrGstbGstbGstbKttbKttbGstbKttbKttbGttbGttbGttbGttbGttbCttbGstbCstbCstbCs + tbCstbGstbCstbCrtLCrtbCstLCrtLCstLCrtLCss7Crs7Css7Crs6+rs6+rs6+rsq6rs66rurayubWx + ubWxubWxubWyubWxubWyubWyubayubaxubaxubaxuraxubaxurayurayureyureyurezurezurezurez + urazurazu7ezurezure0ure0u7ezu7izu7izu7izu7izvLizu7izu7izu7izu7eyurezure0urezure0 + ubi0ube0ure0ure0uri0uri0u7i0u7i0u7i0u7i0vLm0vLi02dfU//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 0cCyf1UwfVQwhFgwhFgwqGozyns2ynw2ynw2y3w2y3w3y3w3zHw3zHw3zH03zH03zX03zX03zX03zn03 + zn43zn43z343z343z3430H430H830H830X830X830n830oA30oA304A304A304A31IE31IE31IE31YE3 + 1YE31oI31oI31oI414I414I42II42IM42IM42YM42YM42oQ42oQ42oQ424Q424Q43IU43IU43YU43YU4 + 3YU43IQ33IM224I02oEz2YAy2H8w2H4v3ZBN+/Ho//////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + jIbiKyDJKyDJKyDJKyDJQDbO//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+//////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////fz8uLSvtrOutrOutrKttrGttbGttbGttbGttbGttbCstbGttrGttbGttbGt + tbGttbGttrGstbGttbKttbGstbKttbKttbKttbKttbKttbKttbGttLCttbCttbGttbCttbCttbCttbCt + tbCstbCstbCstbCstbCrtbCstbCstbCss7CstLCss7Css7Css7Css7Css7Css6+ss6+ss6+surayubWx + ubSxubWyubWxubWyubayubayubayubayubaxuraxurayubWyurayurayubayubezurezurizurizurez + ure0ure0u7e0ure0u7e0u7e0u7i0u7i0u7m0u7izvLizvLizvLizu7izu7izu7eyurizurezure0ure0 + uri0ure0ure0uri0uri0uri0u7i0vLi0vLm0vLm0vLm0vLm02dfU//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////xbGeflUwg1cxhFgxjFwyyHo2ynw2ynw2y3w2y3w3y3w3zHw3zHw3zH03zH03zX03zX03zX03zn03 + zn43zn43z343z3430H430H830H830H830X830X830n830oA30oA304A304A304A31IE31IE31IE31YE3 + 1YE31oI31oI31oI414I414I42IM42IM42IM42YM42YM42oQ42oQ42oQ424Q424Q43IU43IU43IU43IQ3 + 24M22oI12oE02YAy2H8x134w1n0v3ZNS+/Pr//////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ioTfKyDJKyDJKyDJKyDJQDbO9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39fX19PT09PT09PT09PT09PT09PT09PT09fX19fX19fX19fX1 + 9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1 + 9fX19fX19fX19fX19vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3 + 9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3/Pz8//// + /////////////////////fz8uLWwtrOutrKutrOutrKttbGttbKttbGttbGttbGttbGttbGutbGttbGu + tbGttbGttbGttbGttrKutbKttbKutbKttbKttbKutbKutbKutbKutbKutbGttbCttbCttLCttbCttbCt + tbCttbCstbCstbCstLCstbCstLCstLCstLCstLCss7Css7Css7Css7Css7Cssq+rs7Css7CsurazubWy + ubWyubazubWyubayubayubayubayubayubayubaxuraxubaxubayurayubazubezurezurizurizuriz + ure0ure0ure0u7e0u7i0u7i0vLi0u7i0vLm0vLizvLm0vLizvLizvLizu7izu7izu7izurezurizure0 + ure0ure0ure0uri0uri1u7i0u7i0vLi0vLm0vbm0vLm0vbm02dfU//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////uJ+JgVYwhVgxhVgxrWw0ynw2ynw2y3w2y3w3y3w3zHw3zHw3zH03zH03zX03zX03zX03zn43 + zn43zn43z343z3430H430H830H830H830X830X830n830oA30oA304A304A304A31IE31IE31YE31YE3 + 1YE31oI31oI31oI414I414I42IM42IM42IM42YM42YM42oQ42oQ42oQ424Q424Q43IU43IQ324M22oI1 + 2YE02IAz2H8y134w1n0v1nwu4Jxh/fj0//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + urbnhoDbhoDbhoDbhoDbkYzd8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw6+vr6urq6urq6urq6+vr6urq6+vr6+vr6+vr6+vr6+vr + 6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs + 7Ozs7Ozs7Ozs7Ozs7Ozs7e3t7e3t7e3t7e3t7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7+/v + 7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////fz8t7SvtrOutrKutrKutrKutrKutbKutbKutbKutbKutbGutbKutbGutbKu + tbGutbKutbKutbKutbKutbKttbKttrKutbKttbKutbKutbKutbKutbKttbKutbGttbCttbGttbCttbCt + tLCttbGttLCstbGstLGstLGstLGstLCstLCstLGss7GstLCss7Gss7Css7Css7Css7Css7CsurezuLWy + ubWyubayubayubayuLayubayureyurayuraxuraxuraxurayubayurayurazubezurezuri0urizuri0 + u7e0u7e0u7i0u7i0u7i0vLi0vLi0vLm0vLm0vLm0vLm0vLizvLm0vLm0u7i0u7i0u7izu7e0urizure0 + ure0ure0ure0ure0uri0uri0u7m0u7m0vLm0vLm0vLizvbm02dfU//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////v79rZB3hVgxhlkxjFwxxnk2ynw2y3w2y3w3y3w3zHw3zHw3zH03zH03zX03zX03zn03zn43 + zn43zn43z343z3430H430H830H830X830X830X830n830oA30oA304A304A304A31IE31IE31YE31YE3 + 1YE31oI31oI31oI414I414I42IM42IM42IM42YM42YM42oQ42oQ42oQ424Q424Q42oM32oI22YE02IAz + 138y1n4x1n0v1Xwu1Xwu5a18/vz6//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + +O7q9OLa9OLa9OLa9OLa9eTe+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr69vb28vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz9PT09PT09PT0 + 9PT09PT09fX19fX19fX19fX19vb29vb29vb29vb29vb29vb29/f39/f39/f39/f39/f3+Pj4+Pj4+Pj4 + +fn5+fn5+fn5+fn5+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6/f39//// + /////////////////////fz8uLSwtrOutrKutrOutrKutbOutbOutbOutbKutbKutbKutbGutbKutbKu + trKutbKutbKutbGutrKutrOutbKttrKutbKttbOutbKttbKutbKutbKttbKttbKutbGttbGttbGttLGt + tbCttLGttbGttLCstbGstLCstLGstLGstLCstLGstLGstLCrs7GstLGss7CrtLCss7Css7Csubayubaz + ubayubayubayubayubayubayurayurayuraxuraxuraxuraxurayurayurazurezurezurizure0uri0 + u7e0u7i0u7i0vLi1vLi0u7i0vLi0vLm0vLizvbm0vLm0vLizvLizvLizu7izu7i0u7i0ure0ure0uri0 + uri0ure0ure0ure0ure1u7i0vLm0vLm0vLm0vbm0vbm0vbm02dfU//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////+/r5poVph1kxh1kxomczynw2y3w2y3w3y3w3zHw3zHw3zH03zH03zX03zX03zn03zn43 + zn43zn43z343z3430H430H830H830X830X830X830n830oA30oA304A304A304A31IE31IE31YE31YE3 + 1YE31oI31oI31oI414I414I42IM42IM42IM42YM42YM42oQ42oQ42oQ42oM32YI22IE12IA0138y1n4x + 1X0w1Hwv1Hwu1X4x7MWi//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 3p6DylMhylMhylMhylMhzmM28PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////fz8uLSvt7OutrOutrOutrOutrOutrOutbKutbOutbKutbKutbKutbKutbKu + trKutbKutrKutrKutrKutbKttrKutrKttrOutrKttrOutbKttbKutrOutbKttbKttbKttbKttbGttLGt + tbGttbGttbGttLGstbGstbGstLGstbCstbGstLCrtbGstLCrtLGstLCrtLGstLGstLCrtLCsurazubay + ubazubayubayurayurayurayurayurayuraxuraxuraxuraxuraxuraxurazurezurezurezurezuri0 + u7e0u7i0u7i0vLi0u7i0u7izvLm0vLm0vLizvbm0vLm0vbm0vLi0vLi0u7izu7i0u7i0u7i0uri0uri0 + ure0ure0ure0u7e0u7e1u7i1u7i0vLm0vLi0vLi0vbm1vLm02dfU//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////9/XynXhYiFoxiVoxuHI1y3w2y3w3y3w3zHw3zHw3zH03zH03zX03zX03zn03zn43 + zn43zn43z343z3430H430H830H830X830X830X830n830oA30oA304A304A31IA31IE31IE31YE31YE3 + 1YE31oI31oI31oI414I414I42IM42IM42IM42YM42YM42oQ42oM32YI22IE114A01n8z1n4x1X0w1Hwv + 03su1Hwu2IlD9eDO//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 3pyBylEeylEeylEeylEezmEz8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7+/v7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////fz8uLSvt7OutrOutrOutrOutrOutrOutrOutrOutrKutrOutrOutrKutrKu + trKutrKutrKutrKutrKutrOutrKutrKutrKttrKttrKtt7KttrOutrOutbKttrOutbKttbKttrKttbKt + tbGttbGttbGttbGttbGstbGstbCstbGstbGstbCrtbGstbCrtLGstLCrtLCrtLCstLCrtLCrurezubay + ubayurayurayurayurayurayurayurayuraxuraxuraxuraxuraxurayurazubazurezure0uri0urez + uri0u7i0u7i0u7i0vLi1vLi0vbm0vbm0vbm0vbm0vbm0vLi0vLi0vLi0u7i0u7i0u7i0u7i0uri0uri0 + uri0uri0u7i0u7i0u7i1u7i1vLi0vLm0vLm0vLm1vbm1vLm12dfU//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////9O/smHBMiVoxjl0xxHk2y3w3y3w3zHw3zHw3zH03zH03zX03zX03zn03zn43 + zn43zn43z343z3430H430H830H830X830X830X830n830oA30oA304A304A31IA31IE31IE31YE31YE3 + 1YE31oI31oI31oI414I414I42IM42IM42IM42YM42YM32II22IE114A01n8z1X4y1H0w1Hwv03su03su + 03su4KJq/Pbw//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 3pyBylEeylEeylEeylEezmEz8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7+/v7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw6dzR27aV + 1qh/27SS6dzQ8PDw8PDw8PDw8PDw8PDw8PDw8O/v5dG/2K6I2rGO6NnM8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw7+7u8PDw8PDw8PDw7+3s7+7t8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////fz8ubSvuLOut7Out7Out7Out7Out7OutrOutrOutrOutrOutrOutbOutrKu + trKutrKutrKutrKutrKutrKutrKutrKutrKutrKttrKttrKttrKttrKttbKttbKttbKttbKttbKttbGt + tbGttbGttbCstbGttbGttbCstbGttbGstbCstbCstbGstbGstbCrtLCstLGstLCstLCstLCsurezubay + ubayurayurayurayurayurayuraxurayuraxuraxuraxuraxurayurayubazubezubezubezuri0uri0 + uri0uri0u7i0u7i1vLi1vLi1vbm1vbm1vbm0vbi0vLi1vLi0vLi0u7i1u7i0u7i0u7i0uri0uri0uri0 + u7i0u7i0u7i0u7i0vLi1u7i1vLm1u7m0vLq1vLq0vLm0vbm12dfU//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////7ujilGlDilsxl2EyyHo3y3w3zHw3zHw3zH03zH03zX03zX03zn03zn43 + zn43zn43z343z3430H430H830H830X830X830X830n830oA30oA304A304A31IA31IE31IE31YE31YE3 + 1YE31oI31oI31oI414I414I42IM42IM42IM42II314E21oA01n8z1X4y1H0x03ww0nsv0nsu0nsu1YI5 + 7syv//////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 3pyBylEeylEeylEeylEezmEz8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8O/u2KyFv2YXvWEQ + vWEQvWEQvmUW1qh/8O/u8PDw8PDw8PDw7+7t0ptrvWISvWEQvWEQvmUW2bCM8PDv8PDw8PDw8PDw8PDw + 8PDw1KJ259fJ8PDw3r+jx3w7x34+5dG/8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////fz8uLSwt7Ovt7Out7Out7Out7Out7OutrOutrOutrOutrOutrKttrOutrKu + trOutrKvtrKvtrKutrKutrKutrKutrKutrKutrKutrKutrKttrKttrKutrKutbKttbKttbKttbKttbKt + tbKutbGttLGttbGutbGttLCttbGttbGttbGstbGttbGstbCstbCstbGstLCstLCstLCstLCsurezubay + ubayurayurayurayurayurayurayurayurayurayurayurayurayurayurazubazube0ube0uri0uri0 + uri0uri1u7i1vLi1vLm1vLm1vLm0vLm0vLm0vLm0vLm0vLm0vLm1vLi1vLi0u7m0u7m0u7i0uri0u7i0 + u7i0u7i0u7i0vLi1vLi1vLm1vLm1vLm0vLm1vLm0vLm0vbm12dfV//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////6N/Xk2Y+jFwxnGQyyXs3zHw3zHw3zH03zH03zX03zX03zn03zn43 + zn43zn43z343z3430H430H830H830X830X830X830n830oA30oA304A304A31IA31IE31IE31YE31YE3 + 1YE31oI31oI31oI414I414I42II414I314E21oA11X801H4y1H0x03ww0nsv0Xou0nou0nsu36Bp+vDm + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 3pyBylEeylEeylEeylEezmEz8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7u7ugICAqKio8PDw8PDw8PDw + 8PDwpqamdnZ27u7u8PDw8PDw8PDw4eHhYmJi0tLS8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw4ODgdHR0x8fH8PDw8PDw8PDw8PDw8PDw8PDw8PDw6urqc3NzuLi47u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u0NDQg4ODW1tbUFBQWVlZfHx8xsbG7u7u + 7u7u7+/v7+/v7+/v4+Pj3t7e7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/vycnJbm5u3t7e7+/vqqqq + ZmZm7e3t8PDw8PDw8PDw3t7ej4+PY2NjUlJSUlJSY2Njj4+P3d3d8PDw8PDw8PDw7u7uioqKhoaGhoaG + hoaGhoaGhoaGjY2N7Ozs8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw38CmvWISvmQV0p1u + 3bqb051vvmUWvWER2bCL8PDw8PDw8PDw16mBvWEQv2ca059y0JZjvmMTvmIS38Cl8PDw8PDw8PDw8PDw + 8PDw59fJzpFb7urnxHUu6+HY5M+8yoZL8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////fz8uLSwt7Ovt7Ovt7Kvt7Ovt7Out7OutrOutrKutrOutrKutrOutrOvtrOv + trOutrOvtrOutrKutrKutrKutrKutrKutrKutrKutrKutrKutrKutrKutrKutbKutbKttbKutbKutbKu + tbKutLGttbGutLGttLCutLCttbGutbGttbGttbCttbGttbGttbCstbCstbGttLGstLGstLCsurezubay + ubazubayurayurayurayurayu7eyurayurayurayurayureyurezurayubezube0ube0uri1uri0uri0 + uri1uri1u7i0vLi1vbm1vbm1vbm1vbq0vbm0vbm1vLm1vLm0vLm1vLm1vLi0u7m0vLi0u7m0u7m0u7i0 + vLi0vLi0vLi0vLi1vLi1vLi1vLm1vbm1vbm1vLm1vLq1vbq12dfV//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////6d/XlWhAjVwxnGQyx3o3zHw3zH03zX03zX03zX03zn03zn43 + zn43zn43z343z3430H430H830H830X830X830X830n830oA30oA304A304A31IA31IE31IE31YE31YE3 + 1YE31oI31oI31oI414I414I31oE21YA11X801H4z030y0nww0Xsv0Xou0Xou0Xou1olF79C2//////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 3pyBylEeylEeylEeylEezmEz8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwtra2Pz8/3t7e8PDw8PDw8PDw + 8PDwi4uLSkpK7u7u8PDw8PDw8PDw8PDwfn5+ZmZm7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw2NjYNzc3tLS08PDw8PDw8PDw8PDw8PDw8PDw8PDw6urqODg4np6e7u7uyMjIu7u7u7u7u7u7 + u7u7u7u7u7u7u7u7u7u7u7u7ysrK7u7u7u7u7u7u7u7u0dHRPj4+Y2NjnZ2dqqqqoKCgbm5uOTk5vb29 + 7u7u7u7u7+/v7+/vsbGxSkpK6Ojo7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/vuLi4NTU119fX7+/vlpaW + PDw87Ozs8PDw8PDw7u7uXFxcTU1NlpaWqampqampl5eXTk5OWVlZ7e3t8PDw8PDw7e3tOTk5WFhYd3d3 + d3d3d3d3WFhYPz8/6Ojo8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwyYZKvWEQ0p1u8PDw + 8PDw8PDw3byevWERwGgb7OTc8PDw6uDXvmUXvWEQ4MKn8PDw8PDw1qh/vWEQxHQt7uvo8PDw8PDw8PDw + 8PDw8PDv0Zlo48u2xHQu7urm6NvOyIFC8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////fz8uLSwt7Ovt7Ovt7Kvt7Ovt7Ovt7Ovt7Ovt7OvtrOvtrOvtrOvtrOvtrOv + trOvtrOutrOvtrOvtrKutrKvtrKutrKutrKutrKutrKutrKutrKutbKttrKutrKutbKutbKttbKttbKu + tbKttbKutLGttbGutbKutbGutbKutbGutbKttbGutbGttbGstbGttbKttbKttLKttbGstLGsurezuraz + ubazurazurazurezu7ezureyureyureyureyurezurezureyurezurezurezure0ubi0uri1uri0uri1 + uri0u7i0vLm1vLm1vbm1vbm1vbm1vbm0vbq1vbm1vbm1vbm1vLm1vLm1vLm0vLi0vLm0u7m0vLi0vLi0 + u7i0vLi0vLi0vLm1vLi1vLi1vLi1vLm1vbm1vLm1vbq1vbq22dfV//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////7ufgnnJMj10xmGIyw3g2zH03zX03zX03zX03zn03zn43 + zn43zn43z343z3430H430H830H830X830X830X830n830oA30oA304A304A31IA31IE31IE31YE31YE3 + 1YE31oI31oI31oI31oE21YA11H80034z030y0nwx0Xsv0Hou0Hou0Hou0n825rmS/vv4//////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 3pyBylEeylEeylEeylEezmEz8PDw8PDw8PDw8PDw8PDw8PDw8PDw7u7uYGBgdnZ28PDw8PDw8PDw8PDw + 8PDwi4uLSkpK7u7u8PDw8PDw8PDw8PDwx8fHNjY2yMjI8PDw8PDw8PDw8PDw8PDw7u7uq6urfHx8n5+f + 6+vr8PDw2NjYNzc3tLS08PDwy8vLvr6+vr6+vr6+vr6+1dXV6urqODg4np6e7u7ubW1tQEBAQEBAQEBA + QEBAQEBAQEBAQEBAQEBAQEBAc3Nz7u7u7u7u7u7u7u7usbGxNjY2wsLC7Ozs7e3t7e3t1NTUPj4+kpKS + 7u7u7u7u7u7u7+/v6OjoRkZGr6+v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/vuLi4NTU119fX7+/vlpaW + PDw87Ozs7+/v8PDw7e3tV1dXU1NTmpqatbW1tbW1m5ubU1NTVVVV7e3t8PDw8PDw7e3tOTk5gYGBwMDA + wMDAwMDAgICAPz8/6Ojo8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8O/v3b2h27aU6d3S8PDw + 8PDw8PDw8O/uyIFCvWEQ27WU8PDw2K6IvWEQx34+8O/v8PDw8PDw7unmwWwivWEQ4cau8PDw8PDw8PDw + 8PDw8PDw6dzRzY5X16uEyYJEx30838Gm8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////fz8uLWxt7Owt7Ovt7Ovt7Ovt7Ovt7Ovt7Out7Ovt7OutrOvtrOvt7OvtrOv + trOvtrOvtrOvtrOvtrOvtrOvtrKvtrOvtrKutrKutrOutrOutrKutrOutrKutbKttrKutbKutLKttbKt + tbKutbKttbKttbKutbGttbKutbKutbGttbKttbGttrKttbGttbKttbKttbKttbGstbKttLGsu7i1urez + urezurezurezu7ezu7izureyu7eyu7eyu7izu7eyu7ezu7izu7ezurezurizuri0uri0uri0u7i1u7i0 + u7i1vLm1vLm1vLm1vbm1vbm1vbm1vbm0vbm0vbm1vbm1vbm1vLm1vLm0vLm0vLm0vLm0u7m0u7m0vLi0 + vLi0vLi0vbi0vLi0vbm1vbm1vbm1vbm2vbm2vbm2vbq2vbq22dfV//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////9/Txs5BykV4yk18yt3I1zX03zX03zX03zn03zn43 + zn43zn43z343z3430H430H830H830X830X830X830n830oA30oA304A304A31IA31IE31IE31YE31YE3 + 1YE31oE31YE21IA11H80034z0n0y0Xwx0Hsw0Hovz3ku0Hku0X405LSJ+/Pt//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 3pyBylEeylEeylEeylEezmEz8PDw8PDw8PDw8PDw8PDw8PDw8PDw3NzcNzc3rq6u8PDw6+vr6+vr6+vr + 6+vriYmJSUlJ6enp6+vr6+vr6+vr7u7u6urqRkZGj4+P8PDw8PDw8PDw8PDw8PDwmpqaOzs7cnJyQkJC + fX197+/v2NjYNzc3tLS08PDwZmZmNTU1OTk5OTk5NTU1iYmJ6urqODg4np6e7u7u6+vr6urq6urq6urq + 6urq6urq6urq6urq6urq6urq6+vr7u7u7u7u7u7u7u7u5eXlbm5uOTk5UVFRW1tbVFRUOjo6X19f29vb + 7u7u7u7u7u7u7+/v7+/viYmJZmZm7+/v7+/v7+/v7+/v7+/v7+/v6+vr6urqtLS0NTU10tLS6urqk5OT + PDw86Ojo6urq7Ozs7+/v2traioqKX19fUlJSUlJSX19fiYmJ2dnZ7+/v8PDw8PDw7e3tOTk5NjY2OTk5 + OTk5OTk5NjY2Pz8/6Ojo8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7ejj4cWt + 3LeW4MSr7efi16uEvWEQzpFb8PDwy4dMvWEQ1qh/8PDw8PDw8PDw8PDwzY9YvWEQ1KJ28PDw8PDw7+3s + 1KJ1x3w72bCL0p1u48u26t7U6+Pb8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////fz8uLWxt7Owt7Swt7Ovt7Svt7OvuLSvt7Ovt7Ovt7Sut7Svt7Ovt7OutrSv + trOvt7Svt7SvtrOutrKutrOvtrOvtrKutrKutrOutrKutrOutrKutrKttrKutrOutrKttrKttrOutrKt + tbKttbKutbOutbKttrKutbKutrKutbKutrKutrKttrKttrKttrKttrKstbKttbGstbKttbGsu7i0urez + urezu7ezu7izu7ezu7izu7eyu7izu7ezvLizu7ezu7izu7ezu7ezu7ezurizu7i0uri0uri0u7i1u7i0 + vLi1vLi0vLm1vLm1vbm1vbm1vbm1vbm1vbm1vbm1vbm1vbm1vLm1vLq1vLm1vLm0vLm0u7m0vLm0vLi0 + vLi0vLi1vbi1vLi1vbm1vbm1vbi1vbm1vbm2vbm2vbm2vLq22dfV//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////v791cKwmmpAk18ypGgzxHg2zX03zn03zn43 + zn43zn43z343z3430H430H830H830X830X830X830n830oA30oA304A304A31IA31IE31IE31YE31YE3 + 1IA21IA203800n4z0n0y0Xwx0Hswz3ovznkuz3ku0H4447WN+vLr//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 3pyBylEeylEeylEeylEezmEz8PDw8PDw8PDw8PDw8PDw8PDw8PDwvr6+NDQ0zc3N5OTkQEBAODg4ODg4 + ODg4ODg4Nzc3ODg4ODg4ODg4ODg4qqqq8PDwZGRkZ2dn8PDw8PDw8PDw8PDw4eHhPj4+mZmZ8PDws7Oz + NjY2zc3N2NjYNzc3tLS08PDwZWVlaWlp7Ozs7OzsUlJSiIiI6urqODg4n5+f7u7u7u7uzMzMbGxsbGxs + bGxsbGxsbGxsbGxsbGxsysrK7u7u7u7u7u7u7u7u1dXVxcXFxcXFp6eniIiIdHR0hYWFoKCgxMTExsbG + zs7O7u7u7u7u7u7u7+/vzs7OOjo61dXV7+/v7+/v7+/v7+/v7OzsUVFRNjY2NTU1NDQ0NjY2NjY2NTU1 + NDQ0NjY2NjY2cnJyYWFhYWFhYWFhYGBgYGBgYGBgYGBgYWFhYWFhYWFh0dHR8PDw7e3tPz8/nZ2d7u7u + 7u7u7u7unJycRUVF6enp8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw + 8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw4cWswnAnvWEQ + vWEQvWEQw3Eo16uDvWEQyYNG8O/vxHQtvWEQ38Gm8PDw8PDw8PDw8PDw1aZ8vWEQzIxU8PDw8PDw3bqb + z5Jd7ObgyYRG3ryfy4lP7+7t8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw+vr6//// + /////////////////////fz8uLSxt7Swt7Swt7OvuLSvuLSwuLSvt7SvuLSvt7Svt7Out7Sut7Out7Sv + trSvt7Svt7Out7Out7OutrOutrOvtrOvtrOutrOutrKutrOvtrKut7OutrKutrKutrKttrKttrOutrKu + trKutrKttrKutbKttrOutrKutrKutrKutrKutrKutrKttrGttrKttbKttbKttrGstrKttbGsu7e0urez + u7ezurezu7ezu7ezu7eyu7izu7eyvLeyu7ezvLi0u7ezu7izu7ezurizurizurizu7i0u7i0u7i0vLi1 + vLi0vLi1vLm1vbm1vLm1vbm1vbm1vrq2vbq1vbm1vbq2vbm1vLm1vLm1vLq1vLm1vLm0vLm1vLm1vLi0 + vLi1vLi1vbi1vbi1vLi1vbm1vbm2vbm3vbm3vbm2vbm3vbq32dfW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////9fDswaOImGQ3l2Eyrm00x3o2zn43 + zn43zn43z343z3430H430H830H830X830X830X830n830oA30oA304A304A304A31IE31IE31IA30382 + 0n400n400X0y0Hwxz3swz3ovznkuzXgt045P58Oj/Pf0//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 3pyBylEeylEeylEeylEezmEz7+/v7+/v7+/v7+/v7+/v7+/v7+/vra2tNzc32dnZ7u7u1tbWxsbG0NDQ + 1NTU1NTU1NTU1NTU09PTxcXF0tLS5eXl7+/vc3NzW1tb7+/v7+/v7+/v7+/vtra2Nzc31tbW7+/v5ubm + Pz8/nJyc19fXNzc3s7Oz7+/vZWVla2tr7+/v7+/vUlJSiIiI6enpODg4lpaW4ODg6+vrvLy8MzMzfX19 + i4uLi4uLi4uLi4uLi4uL0tLS7e3t7e3t7e3t7e3tf39/OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5 + XFxc7e3t7e3t7e3t7e3t7OzsYmJijIyM7u7u7u7u7u7u7u7u7u7uxsbGwMDAv7+/t7e3nJyckpKSqKio + vLy8wMDAwMDAxcXFmZmZlJSUlJSUlJSUUVFRTk5OlJSUlJSUlJSUmZmZ3d3d7u7uxMTEhISEkpKS1tbW + 7+/v7+/vq6urZWVl6enp7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v + 7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v5dHAv2YYvWEQyIBA + 1KR5zY5WvmMTv2cZvWEQw3Qt7+7tvmMTvWEQ48y37+/v7+/v7+/v7+/v16yGvWEQyYNF7+/v7+/v1qd+ + 2bCM7+/v1KJ33bqc1KN44MWt7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v+vr6//// + /////////////////////fz8ubaxuLSwuLSwuLSwuLSwuLSvuLSvuLSvuLSvuLSvuLSvuLSvt7Svt7Su + t7Svt7Sut7Out7Sut7Out7Ovt7Out7Out7OutrKutrOvt7Ovt7OutrKvt7Out7Out7OutrKutrOutrKu + trKttrOutrOutrKutrOttrKutrKutrKutrKutrKutrKutrKttrKttrGstrGstbGstrKttbGtu7ezu7ez + u7ezu7ezu7ezu7ezu7eyvLizu7eyvLizu7ezu7ezu7ezvLi0u7i0u7izuri0u7i0u7i0u7i0vLi0vLi1 + vLi1vLi1vLi2vLm1vbm1vbm2vrm1vrm2vrm2vbq2vbq2vbq2vbq2vLq2vLq2vLq1vLm1vLm1vLm1vLm1 + vLi1vLi1vLm1vbm1vbm1vbi2vbi2vLm2vbm2vLm2vbq3vbq32dfW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////8+znw6SInms9mmMyrGw0 + wHc2zn43z343z3430H430H830H830X830X830X830n830oA30oA304A304A304A304A303820n410X00 + 0Hwy0Hwxz3owznovzHguzYE/3q6E8N3M//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4aCEylEeylEeylEeylEez2I0/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8urq6NjY24ODg/Pz82dnZREREUFBQ + p6en9vb2+/v7ysrKaGhoOjo6oqKi+/v7/Pz8cnJyYWFh/Pz8/Pz8/Pz8/Pz8rq6uOjo68vLy/Pz8+fn5 + Tk5OlJSU4uLiNzc3u7u7/Pz8aGhobm5u/Pz8/Pz8VVVVjo6O9fX1ODg4MzMzNjY23t7excXFMzMzq6ur + wsLCwsLCwsLCwsLCwsLC8vLy+fn5+vr6+vr6+vr67u7u2trarq6urq6urq6urq6urq6urq6urq6u0NDQ + 6+vr+vr6+vr6+vr6+vr6+vr6srKySkpK8/Pz+vr6+vr6+vr6+vr6+vr69vb2lJSUQUFBOjo6PDw8Nzc3 + VlZWxMTE+vr6+vr6+vr6ampqRkZGRkZGOTk5ODg4RkZGRkZGWVlZ9/f3/Pz8oKCgOTk5YmJiWFhYPj4+ + y8vL/Pz8n5+fQEBA8/Pz/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz80JNdvWEQ0ZBY+vj3 + /Pz8+/v75MGivWIRvWEQxHMs+/r5wGgavWEQ69O+/Pz8/Pz8/Pz8/Pz83bCJvWEQzYlM/Pz8/Pz88uLV + x3s42KZ6yHw69+/o9u7nzotR+/n4/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/v7+//// + /////////////////////f38urayuLSwuLSwuLSwuLSwuLSwubSwuLSwuLSwuLSvuLSvuLOvuLSvt7Ou + t7Out7Svt7Svt7SvtrOut7Ovt7OvtrOut7KvtrOut7OvtrKut7OvtrKutrKut7Ovt7Out7OutrKtt7Ou + t7OutrKutrKttrOutrOttrKutrKutrKutrKut7KutrKutrGttrKutrGttrKttbGstrKttbGtu7ezu7ez + urayu7ezu7ayu7ezu7ezu7eyu7ezu7ezvLezu7ezu7e0u7i0u7i0u7izu7izu7i0u7i0vLi1vLi1vLi1 + vLi2vLi1vLi1vLm1vbm2vbm2vbm2vbq2vbm2vbq2vbq2vLq2vLq2vLq2vLq2vLq1vLm1vLm1vLm1vLi1 + vLi1vbi1vbm2vbm2vbm1vLm1vbq2vbq2vbq1vbq2vLm2vbq22dfW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////+vj118Gtto1p + nmc2omczsm81wHY2zHw30H830H830X830X830X830n830oA30oA304A304A30n820X410H000Hwyz3sy + zXkwx3YuzYlO3LGK7tvK/v38//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4qGFylEeylEeylEeylEe0GI1////////////////////////////1dXVMzMzzc3N////////6enpmZmZ + QEBAaGhonJycODg4dXV109PT/Pz8/////f39W1tbenp6////////////////wMDANzc35OTk////9vb2 + QkJCpKSk5eXlNzc3vr6+////aWlpb29v////////VVVVj4+P+Pj4ODg4ioqKzMzM9vb2x8fHMzMzRUVF + SUlJSUlJSUlJSUlJSUlJ5eXl/Pz8/f39/f39/f39/f390NDQMzMzSkpKT09PT09PT09PT09PT09Ptra2 + /f39/f39/f39/f39/f39/f398fHxQ0NDv7+//f39/f39/f39/f39/f39rq6uOTk5rKys7e3t8vLy4eHh + eXl5Pz8/6enp/v7+/v7+XFxcY2NjsLCwsLCwsbGxsbGxsbGxv7+//v7+9fX1QEBAlJSU////+/v7ZmZm + UlJSmZmZaWlpQEBA9/f3//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////Pv5wXIsvWEQ69C4//// + //////////79y4NEvWEQy4NE///+yoA+vWEQ5cCf////////////////2qV3vWEQ1Jll//////////// + 9+3k68+3+vLs////////9ObZ/fr4//////////////////////////////////////////////////// + /////////////////////f38urezuLSwuLSwuLSwuLSwuLSwuLOwuLSwuLSwuLSvuLOvuLSvuLOvuLOv + uLSvt7Out7Svt7SvtrOut7SvtrOvt7Out7Ovt7Ovt7Ovt7Ovt7Ovt7Ovt7OutrKut7Out7Out7Out7Ou + t7OutrOutrOutrOutrOutrOutrKutrKutrKutrKutrKutrKutrGutrGutrKutrKttbGttrKuvLi0u7ez + urayu7ezu7ezu7ezu7ayu7eyu7ezu7ezu7ezu7ezu7izu7izu7izu7izuri0u7i0u7i0u7i0vLi0vLi1 + vLm2vLm1vLm2vLm1vLm1vbq2vbq2vbq2vbq2vbq2vbq2vLu2vLq2vLu2vLq1vbq1vbm1vbm1vbm1vLm1 + vbm1vbm1vbm2vbm1vbm2vrm1vbm1vbm1vbq1vbq2vbq2vbq22dfV//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + +PTx4M6+yKeJtolhpm07qWszsnA0unM1v3Y2xHg2x3o2yHs2yXs2yHo1x3k0xHczwXQxxH9Czpdm2bGO + 5s66+PHr//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4qGFylEeylEeylEeylEe0GI1////////////////////////////9PT0QkJCnp6e//////////////// + 3t7eR0dHNTU1q6ur/v7+////////////7+/vOjo6ra2t////////////////7e3tPT09oaGh////vb29 + NjY22dnZ5eXlNzc3vr6+////aWlpbGxs9fX19fX1U1NTj4+P+Pj4ODg4qKio////////x8fHMzMz1dXV + 9PT09PT09PT09PT09PT0+/v7/f39/f39/f39/f39/f390NDQMzMz29vb/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39iIiIcHBw/Pz8/f39/f39/f39/f39jIyMTExM+vr6/v7+/v7+/v7+ + ycnJNTU1z8/P/v7+/v7+XFxcODg4QEBAQEBAQEBAQEBAQEBAcnJy////8vLyPT09oaGh/////f39cHBw + RkZGdHR0VlZWQEBA9/f3//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////+vj1vmwkvWEQ8NrH//// + ////////////1ZpmvWEQ0ZJa////1JhkvWEQ2KN0////////////////zYZIvWEQ4LaQ//////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f38ureyuLSwuLSwuLSwuLSwuLSwuLSwuLSwuLSwuLOvuLOwt7OvuLOvt7Ov + t7Ovt7Ovt7Swt7OvtrOvt7SwtrSvt7Svt7Swt7Ovt7Ovt7Ovt7Ovt7Owt7Ovt7Owt7Ovt7Ovt7Out7Ou + t7Ovt7Ovt7Out7OvtrSutrOutrOvtrKutrKutrKvtrKutrKvtrKutrKutrKttbKttrKutrKtu7ezuray + u7ezu7ezurezu7ezu7ayu7ezu7azu7e0u7ezu7i0u7i0u7izu7izu7izu7i0u7i0u7i0vLi0vLi0vLi1 + vLi1vLi2vLm2vLq2vLm2vLq1vbq2vbq2vbq2vbq2vbu2vbq1vLq1vbq1vbq1vbq1vbm1vbm1vbm1vbm1 + vbm1vbm2vbm2vbm1vbm1vbm1vrm1vbm1vbm1vrq2vrq2vrq22tfV//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////v799O3n6tzP48++3cSu28Co2byj27+m3sOs4sq16tjI8ebb+/j1//////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4qGFylEeylEeylEeylEe0GI1////////////////////////////////h4eHW1tb/Pz8////k5OTbW1t + bW1tSkpKODg4a2trbW1tbW1t8PDw////sbGxQEBA7u7u////////////////////nJycPDw8dXV1QUFB + g4OD/v7+5eXlNzc3vr6+////aWlpNzc3Pz8/Pz8/NTU1j4+P+Pj4ODg4qKio////////ycnJMzMzRUVF + SUlJSUlJSUlJSUlJSUlJ2NjY/Pz8/Pz8/f39/f39/f390NDQMzMzgICAkJCQkJCQkJCQkJCQkJCQ19fX + /f39/f39/f39/f39/f39/f39/f3919fXOzs75OTk/f39/f39/f39/f3909PTPT09YmJipKSksLCwk5OT + R0dHYGBg+Pj4/v7+/v7+XFxcXFxcnZ2dnZ2dnZ2dnZ2dnp6esbGx////////jo6OPDw8fn5+bW1tOTk5 + vb29////oaGhQEBA9/f3//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////v79xnw7vWEQ47yZ//// + /////////v38yHw5vWEQ47uZ////6MisvWEQw3An/Pj1////////9ejcv2UWvmIS8+PU//////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39urezuLWxuLWxuLSwuLSxubSxuLSxuLSxuLSwuLSwuLOwuLSwt7Owt7Ov + uLOvt7Ovt7Ovt7Swt7Swt7Svt7Ovt7Swt7Owt7Svt7Owt7Owt7OwtrOwt7Owt7Owt7Ovt7Ovt7Ovt7Ou + t7Ovt7Ovt7OvtrOvt7OvtrOvtrKutrOutrKvtrKvtrKutrKutrKutrKutrKutrKutrKutbKtvLi1urez + u7e0urezurezu7ezurezu7ezu7izu7i0u7ezu7m0u7izu7m0u7i0u7m0vLm0u7i0u7i0vLi0vLi0vLi0 + vLi1vLi2vbi2vLm2vbm1vLq1vbq2vrq2vru2vru2vru2vbq1vrq1vbu2vbq1vrq1vbm1vbm1vbm1vbm1 + vbm2vbm2vbm2vbm2vbm2vbm2vbm1vbq1vbq1vbq1vbq1vbq22tfV//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4qGFylEeylEeylEeylEe0GI1////////////////////////////////5ubmQkJCzMzM////sLCwlJSU + lJSUlJSUlJSUlJSUlJSUlJSU9PT0/Pz8W1tbmpqa/////////////////////////f39uLi4hoaGrKys + +fn5////5ubmPj4+wMDA////3Nzcz8/Pz8/Pz8/Pz8/P5eXl+Pj4Pz8/q6ur////////8PDwxMTExMTE + xMTExMTExMTExMTExMTE8fHx/Pz8/Pz8/Pz8/f39/f3939/fdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2zs7O + /f39/f39/f39/f39/f39/f39/f39+/v7hoaGwMDA/f39/f39/f39/f39/f393NzchoaGXV1dVVVVaGho + oqKi8/Pz/v7+/v7+/v7+hoaGaGhoaGhoaGhoaGhoaGhoaGhohoaG/////////Pz8vLy8gYGBiYmJ0tLS + ////////pKSkR0dH9/f3//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////4LWQvWEQxHIp8+PV + ///+/vv537KLvWEQwWoe+fHq/////vz6xngzvWEQ16Bv/fn3+vTuzopOvWEQ0I5V/v79//////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39urezubWxuLWxubWxubWxubSxuLWxuLSxuLSxuLSxt7SwuLSwt7Swt7Sv + t7Svt7Svt7Svt7Svt7Svt7SvtrSwt7Swt7Svt7SwtrSvt7Swt7Ovt7Swt7OvtrOwt7Ovt7Ovt7Svt7Ov + t7SvtrSut7Svt7Svt7SvtrOut7SutrOvtrOvtrKutrOutrKvtrKutrOvtrKutbKut7OutrKtu7i1u7ez + u7e0u7izu7ezu7e0u7ezu7i0vLezu7ezvLi0u7izu7m0u7i0u7m0vLizvLm0vLizvLizvLi0vLizvLi0 + vLi1vLi2vLi1vLi1vbm1vbq2vbq2vbq1vrq1vru2vrq1vru2vrq2vrq1vbq1vrq1vrq2vbm1vbm2vbm2 + vbm2vbm2vbm2vbm2vbm2vbm2vbq1vbq2vbq1vbq2vrq2vrq22tfW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4qGFylEeylEeylEeylEe0GI1////////////////////////////////////0dHR09PT//////////// + ////////////////////////////8vLyuLi4+fn5//////////////////////////////////////// + /////////f398vLy+/v7/////////////////////////////v7+8vLy+fn5/////////////v7+/Pz8 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/f39/Pz8/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/Pz8+/v7/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+//////////////////////////// + ////////+fn58vLy/v7+//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////Pj1zIZHvWEQv2YY + y4FBxnYvvWEQvmMU5sSm////////////8NrIv2YYvWEQw3AnwWwgvWEQw3An9une//////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f38urizubaxubaxubayubWyuLWxuLWxuLWxuLWxubSxuLSwuLSwt7Swt7Sw + uLSvt7Svt7SvuLSvt7Svt7Swt7Wwt7Svt7Svt7Swt7Svt7Svt7Ovt7Svt7Swt7Ovt7Ovt7Swt7OvuLSv + t7Svt7Ovt7Svt7Out7OutrSutrSvtrOutrOut7OutrKut7Ovt7Kut7Ovt7KvtrKutrOutrKuvLm1u7ez + u7ezu7ezu7izvLi0u7ezu7i0vLe0vLizvLi0u7izu7izvLm0vLizvLizvLizvLizvLi0u7i0vLi0u7i0 + vLi1vLi1vLi2vLi2vbm1vbq1vbq2vbq2vrq2vru2vrq2vru2vrq2vrq2vrq1vrq1vrq2vrm2vrm2vbm2 + vbm2vbm2vbm2vbm2vbq2vbq2vbq2vbq2vbq2vbq2vrq2vrq22tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4qGFylEeylEeylEeylEe0GI1//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////f39 + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/f39/Pz8/f39/Pz8/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/v7+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////+/Tv2KNzwm0i + vmUWv2YYyX486861////////////////////79jDyX48v2YXv2YYzolN9ObZ//////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f38u7izubaxubaxubaxubWxubayubWxubWxubWxubWxuLSxuLSwuLSwuLSw + uLSwuLSvuLSvuLSvuLSwuLSvt7Svt7Svt7Svt7Svt7Svt7Svt7Ovt7Ovt7Ovt7Ovt7OvuLOvt7OvuLSv + t7OuuLSvt7Out7Out7Out7Out7Svt7Out7Kut7Out7Kut7Ovt7Kut7KutrKutrKut7Kut7Ktvbm0vLi0 + u7ezu7izvLizu7ezu7izu7izvLi0vLi0vLi0vLm0u7izvLi0vLi0u7izvLizvLizvLi0u7i0vLi0u7i0 + u7i0vLe1vLi2vLi1vbm1vLm1vbq2vbq2vbq2vrq2vrq2vrq2vru2vru2vbq2vrq2vrm2vrm2vrm3vbm3 + vbm3vbq2vbm2vbq2vbq2vbq2vbq2vbq2vrq2vbq2vrq2vrq22tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4qGFylEeylEeylEeylEe0GI1//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////v7+ + /Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/f39/Pz8/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////fv4 + 9+3k+fHq///+//////////////////////////////7++O/n+fLr//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vLizubaxubaxubaxubaxubayurayubWxubWxubWxuLSwuLSwuLSwuLSw + uLSwuLSvuLSvuLSvuLSvuLSvuLWvt7Svt7Svt7Svt7SvuLSvuLSvt7SvuLOvt7Ovt7Ovt7OvuLSwt7Ov + t7Ovt7Out7OuuLSut7Svt7Out7OutrOut7OutrKut7OutrKut7KutrKut7Kut7Kut7Kut7Ouvbi0vLi0 + vLizu7ezu7ezvLi0vLi0vLi0vLm0vLi0vLi0vLm0vLi0vLi0vLm0vLi0vLi0vLi0u7i0u7i0vLi0vLi1 + u7e2vLe1vLi1vLm1vLm1vLm1vLq2vbq2vbq2vbq2vbq2vbu2vbq2vbq2vru3vbq2vbq3vrq3vrq3vrm3 + vbq2vbm2vbq2vbq2vbq2vbq2vru2vru2vru2vru2vru2vru22tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 4aCEylEeylEeylEeylEez2I0+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +Pj49/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4 + +Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4 + +Pj4+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6 + +vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6/f39//// + /////////////////////f39vLizuraxuraxurayurayuraxurayurayubWxubWxubWxuLSwubWxuLSw + uLSwuLSwuLSwubWwuLSwuLSvuLSvuLSvuLSvuLSvuLSvuLSvt7Svt7Svt7Svt7Ovt7Ovt7OvuLSvuLSw + t7Ovt7Out7Out7OuuLOvt7Out7Out7OutrOut7OutrKutrOutrKut7Kut7Kut7KutrKut7KuvLi0vLi0 + u7e0vLi0vLi0u7ezvLi0u7izvLizvLi0vLm0vLm0vLm0vLm0vLi0vLi0vLi0vLi0vLi1vLi0vLi0vLe0 + u7i1u7i1u7i1vLi1vLm1vLm1vbq1vLq2vbq2vrq2vbu2vbu2vbu2vru2vru3vrq3vrq3vrq3vrq3vrq3 + vrq2vrq2vrq2vru2vbu2vru2vru2vru2vru2vru2v7u2vru22tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 5LSf1HtV1HtV1HtV1HtV14dl8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8PDw7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u + 7u7u7+/v7+/v7+/v7+/v8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx+vr6//// + /////////////////////f39u7izuraxurayurayurayurayubaxubaxubWxubaxubWxuLWxuLSwuLSw + uLSwuLSwubWxubWwuLSvuLSvuLSvuLSvuLSvt7Svt7SvuLSvt7SvuLSvt7Svt7Svt7Owt7Ovt7Owt7Ov + t7Ovt7Ovt7Ovt7Out7Out7Out7OutrOut7Out7OutrOutrKutrKut7KutrKutrGut7KutrKuvbm1vLi0 + u7ezu7ezu7e0u7i0vLi0vLi0vLm0vLm0vLi0vLm0vLi0vLm0vLi0vLi0vLi0vLi1vLi1vLi1vLi1vLi1 + u7i1u7i1u7m1vLm1vLm1vbq1vbq1vbq2vbq2vbq2vbu2vbu2vbu3vru3vru3vru3vrq3vrq3vrq3vrq3 + vru2vru2vru2vru2vru2vru2vru2vru2v7u2v7u2vru2vru22tjV//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f399vb28PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8fHx8fHx8fHx8fHx8fHx8fHx + 8fHx8fHx8fHx8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8/Pz8/Pz8/Pz8/Pz9PT09PT09PT09PT09PT09fX1 + 9fX19fX19vb29vb29vb29/f39/f39/f3+Pj4+Pj4+Pj4+Pj4+fn5+fn5+vr6+vr6+vr6+/v7+/v7+/v7 + /Pz8/Pz8/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39 + /f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/v7+//// + /////////////////////f38u7izuraxurayubaxurayurayurayurayubayubWxubWyubWxubSxubWx + uLSxubSwuLSwubSxubSwuLSwuLWxuLSvuLSwuLSvuLSvt7SwuLSwt7Swt7Swt7OwuLOwt7OwuLOwuLOw + t7OwuLOvt7Ovt7Ovt7Out7Kut7Out7OutrOvt7OutrOutrOutrOvtrOvtrKvtrKut7Kut7Kvvbi1u7e0 + vLi0u7e0u7e0u7i0u7i0vLm1vLq1vLq1vLm0vLm0vLi0vLm1vLm1vLi0vLm1vLm0vLi1vLe1u7i0vLi1 + vLi1vLm1vLm1vLm1vLm1vbm1vbq1vrq1vrq2vrq2vbq2vbu2vbu2vbu2vru3vru3vrq3v7q3vrq3vrq3 + vru2vru2vru2vru2vru2vrq1vru2v7u2vrq2v7u2vru2vru32tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////v7+8/Pz8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8vLy8/Pz8vLy8/Pz8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz9PT09PT09PT09PT09PT09PT09PT09PT09fX19fX19fX19fX19vb29vb29vb29vb29vb29/f3 + 9/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr6+/v7+/v7+/v7/Pz8/Pz8/f39/f39/f39 + /v7+/v7+/v7+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f38vLizurayurayuraxurayubayurayurayubayubWxubWxubWyubWyubSy + ubWxuLSxuLWyubSxubSwubWxubSxubSvubSwuLSvuLSwt7Wwt7SwuLSwuLSwuLSxuLOwt7OwuLOwuLOw + uLOwt7OwuLOwt7Owt7Ovt7Out7Kut7Out7OvtrKut7OvtrOvtrKvt7OutrKvtrKutrKutrKvvLi1u7e0 + u7i0u7i0u7i0vLi0u7m0vLm1vLm1vLm0vLm1vLm1vLq1vLm0vbm1vLm1vLm0vbm1vLi1vLi1vLi1vLm1 + vLi1vLm1vLi0vLm1vbm1vbm1vrq1vrq1vbq2vrq2vbq2vbq3vbu3vru3vbu3vru3vrq3vrq3vru3vrq3 + vru2vrq2vru2vru2vru2vru2v7u2v7u2v7u2vru2v7u2vru32tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////+fn58vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8vLy8vLy8/Pz8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz9PT09PT09PT09PT09PT09PT09PT09fX19fX19fX19fX19fX19vb29vb29vb29vb29vb2 + 9/f39/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr6+/v7+/v7+/v7/Pz8/Pz8/f39/f39 + /f39/v7+/v7+/v7+//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f38u7ezurayubayurayurayurayubayurazubayurazubWyurWyubWyubWy + ubWyubWyubWyubWxuLWxubWxuLWxubSwuLSwuLSwuLSwuLSwt7Wwt7SwuLWwt7Swt7SwuLSwt7Swt7Sw + uLSwt7Owt7Owt7Ovt7Swt7Ovt7Out7Ovt7OvtrOut7OutrOutrOutrSvt7OvtrKut7Kvt7KvvLm1u7i0 + u7i0u7i0u7i0vLm1vLm0vLm0vbq1vLq1vLq1vbm0vbq1vbq1vbm0vbm1vbm2vbi1vbi1vLm1vbi1vbm1 + vLm1vbm1vLm1vLm1vbm1vbq1vbq1vrq1vrq1vrq2vrq3vbq3vbu3vbu3vru3vru3vrq3vrq3vru3vru3 + vru3vru2vrq2vru2v7u3vru2v7u3vrq2v7u3v7q2vru3vru32tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////9PT08vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8vLy8vLy8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz9PT09PT09PT09PT09PT09PT09fX19fX19fX19fX19fX19vb29vb29vb29vb2 + 9vb29/f39/f39/f39/f3+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr6+vr6+/v7+/v7/Pz8/Pz8/Pz8/f39 + /f39/f39/v7+/v7+//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////9/f35OTk////6enp2dnZ2dnZ2dnZ2dnZ9vb2//////////// + /////////////////////f39u7izubaxurayurayurayureyureyurezubayubayubayubayubayubay + ubayubWxubSyubWyubWxubaxuLaxubWxubWwuLawuLWwuLWwuLWwt7SwuLWwt7WwuLWwuLSwuLSwuLSw + uLSwt7Swt7SwuLSwt7Ovt7Svt7Svt7Svt7Out7Svt7Svt7Out7Out7Sut7Svt7Out7Ovt7KvvLm1u7i0 + vLm0vLi0vLi0vLm0vLq0vLm0vLq0vbq1vbq0vbq1vbm1vbm0vbm1vbm1vbm1vbm1vbm2vbm1vbm1vLm1 + vLm1vLm1vLm1vLm1vbm1vbm0vrq1vrq1vrq1vbq2vbq3vbq3vbq3vbq3vbq3vbq3vrq4vrq3vrq3vru3 + vru3vru2vru2vru2v7u2vru2v7u3v7u3v7u3vru3vru3vrq32tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////+/v78vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8vLy8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz9PT08/Pz9PT09PT09PT09PT09PT09PT09fX19fX19fX19fX19fX19vb29vb29vb2 + 9vb29vb29/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr6+/v7+/v7+/v7/Pz8/Pz8/Pz8 + /f39/f39/f39/v7+/v7+//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////+vr6lpaWk5OTk5OTvb29/Pz8paWllZWV6enp//// + ////1tbW2tra////4eHhlpaWmZmZ6+vr1NTUyMjI////////////+vr6tra2////6Ojok5OTk5OTk5OT + 0tLS////////////////////////////4+Pjpqam////o6Ojq6ururq6urq6urq67+/v//////////// + /////////////////////f39u7i0urayuraxuraxureyureyubeyubeyubeyubayubayubayubayubax + ubayubWyubWyubayubWxubayurWxubaxubWxubWwuLWwubWwuLWwuLWwuLWwuLWwuLWwuLSwuLWwuLWx + uLSwuLSwuLSwuLSwuLSwuLOvuLSvuLSvuLSvt7Out7Svt7Svt7Svt7Svt7Ovt7Ovt7Ovt7Ovvbm1vLi0 + vLi0vLi0vLm0vLm0vLm0vLq0vLm0vLm0vbm0vbq1vbm0vbm1vbm2vbm1vbm1vbm1vLm2vLi1vbm2vLm1 + vLm1vLm1vbm1vbm1vbm1vbm1vbm1vrq2vbq2vbq2vbq2vbq3vbq4vbq4vbq4vbq3vbu4vbq4vru4vru3 + vru3vru2vru2vru3v7u3v7u3v7u3v7u3v7u3vru3vru4vru32tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////9fX18vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8vLy8/Pz8vLy8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz9PT08/Pz9PT09PT09PT09PT09PT09PT09fX19fX19fX19fX19vb29vb29vb2 + 9vb29vb29vb29/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr6+/v7+/v7+/v7/Pz8/Pz8 + /Pz8/f39/f39/v7+/v7+/v7+//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////rq6uvr6+/f39/v7+wMDAwMDA6+vrlZWV//// + ////wsLCyMjI////r6+v8fHx6urqlpaW+vr6m5ub////////////+Pj4k5OT/////Pz8l5eX19fX/f39 + /v7+/////////f39m5ub1dXV////////4+Pjpqam////rKys5+fns7Oz5+fn//////////////////// + /////////////////////f39vLezurayurayurayubaxurayureyureyureyubeyureyubaxurayubax + ubayubWxurayubaxubayubWxurWxubWyubWxubWwubWwubWwubWwubaxubWwuLWwubWwubWwubSwubWw + uLSwubSwuLSwuLSwuLSwuLSwuLSvuLSvuLSvuLSvt7Svt7Out7Svt7SvuLSvt7SuuLOvuLOvvbm1u7iz + vLm0u7izvLm0vLizvLm0vLm0vLm0vLm0vbq1vbm0vbm1vbm1vbm2vbm1vbm2vbi2vbm2vLm2vLm2vLi1 + vbm1vLm1vbm1vbm0vbm1vbm1vrq2vrq2vrm1vrq2vbq2vbq3vbq4vbq4vbq4vbq3vbu4vbu3vrq3vbu2 + vru2vru2vru3vru2v7y3v7y3v7u3v7u3v7u4vry4vru3vru42tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////f398vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8vLy8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz9PT09PT09PT05eXlk5OTfX19fHx8fHx8fHx8fHx8fHx8fHx8fX19fn5+ + hISEmJiYwcHB8vLy9/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr6+/v7+/v7+/v7/Pz8 + /Pz8/f39/f39/f39/v7+/v7+/v7+////////////////////////////////////9fX1sbGxdXV1XFxc + XV1deHh4tra2+Pj4//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////f39mpqa19fX////mJiY8fHx////kZGR+fn5 + ////wsLCyMjI////9PT0rq6utbW1j4+P+/v7qqqq6+vr////////+Pj4k5OT////////9/f3jY2N6urq + ////////////////9vb2kJCQ2dnZ////4+Pjpqam2trasLCwsbGxg4ODoqKisbGxtLS0/Pz8//////// + /////////////////////f39vLi0urayuraxurayurayuraxurayuraxureyuraxurexurayuraxurax + urayurayubWxurWxubWxuraxuraxuraxubaxubaxuLWwubWwubaxuLawubWwubWwubWwubWwubWwuLSx + ubSwuLSwuLSwuLSwubSwuLSwuLSwuLSvuLSvuLSvt7OvuLSvt7Svt7Svt7OuuLOvuLSvuLOvvLm0u7i0 + u7izvLizvLi0vLm0vLi0vLm0vLm0vbq1vLm1vbq1vbm1vbm1vbm2vbm2vbm2vbm2vbm2vLm2vLm2vLm2 + vLm1vLm1vLm1vbm1vbq1vbm1vbq2vbm2vrq2vbq2vLq2vbq3vbu3vbu3vbu3vbu3vbq3vbu3vbu3vru3 + v7u2v7u2v7y3v7u2v7y3v7y3v7y3v7y4v7y4v7y4vry4vry32tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////v7++fn5+fn5+fn5/v7+//////////////////////////////////////////////// + ////+/v7+fn5+fn5+/v7//////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////1tbWgICA + gICAgYGB9vb2//////////////////////////////////////////////////////////////////// + ////////////////////9/f38vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8vLy8vLy8/Pz + 8/Pz8/Pz8vLy7u7u7u7u7u7u8/Pz9PT09PT0iYmJMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzNTU109PT9/f39/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+vr6+vr6+vr6+vr66+vrgYGBf39/ + f39/29vb/f39/f39/f39/v7+/v7+/v7+////////////////////////////3d3dU1NTMzMzMzMzMzMz + MzMzMzMzMzMzXFxc5ubm//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////9/f3jIyM7+/vk5OT9/f3////lpaW9PT0 + ////wsLCyMjI////np6e0tLS0NDQa2tr9vb24uLis7Oz////////+Pj4k5OT////////////6urqjo6O + +/v7////////////////9fX1iIiI+fn54+Pjpqam8PDws7Oz1NTU4uLi4eHhu7u7zc3N/v7+//////// + /////////////////////f39vLi0urayurayurayurayuraxu7eyureyuraxuraxureyureyurayurax + uraxuraxurayurWxurayurWxubWxubWxubWxubaxubWwubWwubaxubWwubWwubWwubWwubWwubWxubWw + ubSxubSwubSwubSwuLSwubSwubSwuLSvuLSvuLOuuLSvuLSvuLSvt7Svt7SvuLSvt7SvuLOvvLm0vLi0 + vLm0vLi0vbm0vLm0vLm0vLm0vLq1vbq1vLm1vLm1vbq2vLm2vLm2vbm3vbm2vbm2vbm2vLm2vLm2vLq2 + vbm1vbq1vbq1vbq1vbm1vbm1vbq1vbq2vbq2vbq2vbq2vLu3vbq3vbu3vbu3vbu3vbu3vbu3vbu3vru3 + v7u3v7u2v7y3v7y3wLy3wLy3v7y4v7y4v7y4v7u3vry4vry32tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////19fXPj4+PT09PT0939/f//////////////////////////////////////////////// + ////iIiIPT09PT09b29v//////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////vr6+MzMz + MzMzNDQ08PDw//////////////////////////////////////////////////////////////////// + /////////////////////v7+8/Pz8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyp6eniYmJ + iYmJx8fH0dHRPDw8PDw8R0dH7+/v8/Pz8/PzcXFxMzMzMzMzPT09XFxcW1tbWlpaWVlZWFhYVlZWVlZW + VVVVQ0NDT09P8vLy9vb29/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr64eHhNjY2MzMz + MzMzyMjI/Pz8/f39/f39/f39/v7+/v7+////////////////////////8vLyUFBQMzMzMzMzNTU1SEhI + R0dHNDQ0MzMzMzMzXFxc+Pj4//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////+vr6tbW1////zMzMuLi4paWl5OTk/v7+jY2N/Pz8 + sbGxubm5yMjI////jIyM/v7+/v7+h4eH/f39/v7+mZmZ/v7+yMjI1tbWk5OT////6OjoyMjI////rq6u + 1tbW////////////////////u7u7ycnJ4+Pjpqam/v7+1NTUkZGRw8PDmJiYsbGx7+/v//////////// + /////////////////////f39vLi0urWyurayurWxurayu7ayureyureyuraxuraxuraxurayurayuray + ubaxurWyurayurayurWxurayurayubWyuraxurWxubWxubaxubaxurWwubaxubWxubWxubWwubWwubWw + ubSxuLSxuLSxubSwubWxubSxuLSvubSwuLSwubSvuLSwuLSvt7Svt7Ovt7Swt7Swt7Ovt7OwvLm1u7i0 + vLm0vLm1vLm0vLm1vLm1vLm1vLm1vLm1vLm2vLm2vLm2vLm2vLm2vbq3vLm2vbq2vbq2vbq2vbq2vbq2 + vbq1vrq1vbq1vbm1vbq1vrq1vrq2vbq2vbq2vbq2vbq2vbu3vbu2vru3vrq3vrq3vbu3vru3vru2v7u2 + v7u2wLy3wLu3wLy3wLy3wLy3wLy4v7y4v7y4v7y4v7y3v7y32tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////1NTUNDQ0MzMzMzMz3d3d//////////////////////////////////////////////// + ////goKCMzMzMzMzaGho////////+Pj46urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6+vr/f39////////////////////////////////////////////////vr6+MzMz + MzMzNDQ08PDw/////////////////////////v7+6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq + 6urq6urq6urq6urq6urq6urq5OTk6+vr8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyaWlpMzMz + MzMzo6Ojz8/PMzMzMzMzPj4+7+/v8/Pz9PT0dHR0MzMzMzMzRUVFenp6enp6eXl5eXl5eHh4d3d3dnZ2 + dXV1eHh4zc3N9vb29vb29vb29/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr64eHhNjY2MzMz + MzMzx8fH/Pz8/Pz8/f39/f39/f39/v7+/v7+////////////////////ra2tMzMzMzMzNDQ0rq6u/Pz8 + /Pz8oqKiNDQ0MzMzMzMzu7u7//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////v7+kpKSxsbGmZmZ0tLS4ODglJSUs7OzsbGx//// + 39/feXl5yMjI////tbW1sLCwurq6qKio////////vLy82dnZ9fX1nJyckJCQ////9/f3iYmJzMzMioqK + 6urq////////////09PTu7u7pqamqKio4+Pjpqam////8vLy6enpf39/wMDA7Ozs/Pz8//////////// + /////////////////////f39vLi0urWxurayurayurayurayurayurayurayuraxurayurayurayuray + urayurayubayurayubWyurayurayurayurayubayubWxuraxubWxubWxubWxubaxubWxubWxubWxubay + ubWxubSxubSxuLSxubSxubSwubSwuLSwubSwubSwuLSwuLSwuLSwuLSwt7SwuLSwt7Owt7OwvLm2u7i1 + vLm1vbm1vLm1vLm1vLm1vLq1vLm1vLq1vLm1vbq2vLm2vrq3vbq3vbq3vbq3vbq2vbq2vbq2vrq2vrq1 + vrq1vrq1vbm0vrq1vrq1vrq1vrq2vbq2vbq2vbq2vbq2vbq2vbu2vru2vbq3vbq2vrq3vrq3vru2v7u2 + v7y3wLy3wLy4wLy3wLy3wLy4wLy4v7y4v7y4v7y3v7y4v7y42tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////1NTUNDQ0MzMzMzMz3d3d//////////////////////////////////////////////// + ////goKCMzMzMzMzaGho////////v7+/ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4 + ODg4ODg4ODg4ODg4Pz8/7Ozs////////////////////////////////////////////////vr6+MzMz + MzMzNDQ08PDw////////////////////////9PT0PDw8ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4 + ODg4ODg4ODg4ODg4ODg4ODg4ODg4tLS08vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyaWlpMzMz + MzMzo6Ojz8/PMzMzMzMzPj4+7+/v8/Pz8/PzeHh4MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzmZmZ9vb29vb29vb29/f39/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr64eHhNjY2MzMz + MzMzx8fH/Pz8/Pz8/f39/f39/f39/v7+/v7+/v7+////////////////hoaGMzMzMzMzUFBQ/Pz8//// + /////Pz8QEBAMzMzMzMzkJCQ//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////9/f3xsbG2tra////////4ODgzc3N/f39//// + ////6+vr6enp/////v7+0dHRzs7O/f39////////8/Pzz8/P/////Pz82NjY////////7u7uw8PD5eXl + ////////////////5OTk1dXV1dXV5ubm6enpuLi4////xsbGqampqKioqampqqqq8PDw//////////// + /////////////////////f39vLi0urWyurayu7azu7ayu7ayu7ayu7eyurayureyurayurayurayurez + ubayurayubayurazubayubWyurazubWyubWyurayurayurayubWxubayubayubayubayubayubayubay + ubWxubWxubWxubWyubWxubWxubWxuLSwuLSwuLSwuLSwuLSvuLSwuLSwt7SwuLSwt7Swt7OvvLm2vLi1 + vLm1vLm1vLm1vLm1vLm1vLm1vLq1vbq1vbq2vbm2vbm2vbq2vbm2vbq2vbq2vbq2vbq2vrq2vrq2vrq1 + vrq1vrq1vrq2vrq1vrq1vbm1vrq1vbq2vbq2vbq2vbq2vbq2vbq2vrq2vrq3vrq2vrq3v7q3vru2vru3 + v7u2v7u3wLy3wLy4wLy4wLy4v7y4v7y4v7y4v7y4v7y4v7y42tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////1NTUNDQ0MzMzMzMz3d3d/////v7+3t7exsbGxMTExMTEzs7O5eXl/Pz8//////////// + ////goKCMzMzMzMzaGho////////vb29MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMzMzMzOTk56+vr////////////////////////////////////////////////vr6+MzMz + MzMzNDQ08PDw////////////////////////9PT0NjY2MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMzMzMzMzMzMzMzMzMzt7e38vLy4+PjwsLCurq6urq6xMTE4uLi8vLy8vLy8vLyaWlpMzMz + MzMzo6Ojz8/PMzMzMzMzPj4+7+/v8/Pz8/PzsrKyjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2Njo6OVlZW + MzMzMzMzgICA9vb29vb29vb29vb29/f39/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn54eHhNjY2MzMz + MzMzx8fH+/v7/Pz8/Pz8/f39/f39/f39/v7+/v7+/v7+////////////ioqKMzMzMzMzSUlJ+vr6//// + ////9/f3PDw8MzMzMzMzlZWV//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vLe0urayurazurayu7azurazu7ayu7ayurayurezurayurayurayuray + urayurayureyurezurazurazubayubayubayurayurayurayuraxubayubWxubayubaxubaxubayubWx + ubWxubayubSxubSxubWyubWxuLWwubWxuLWwuLWwuLWwuLSvuLSwuLWwt7Swt7Wwt7Swt7Swvbq2vLm1 + vLq1vLm1vLm0vLm0vLm0vbq1vbq1vLq2vbq2vbq2vbm2vrm2vbq2vbq2vbq2vrq2vbq2vru2vbq1vrq1 + vrq2vrq2vrq2vrq1vrq2vbq1vrq2vbq2vru2vbq2vbq2vbq2vbu2vrq2vrq2vrq3vrq3v7u2v7u3v7q2 + v7u3v7y3wLu4wLy4wLy4v7y4v7y4wLy4v7y4v7y5v724v7y42tjW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////Pz84uLiwcHBvb2919fX+fn5//// + ////////////1NTUNDQ0MzMzMzMz3d3d+/v7eXl5NjY2MzMzMzMzMzMzMzMzNzc3SkpKhoaG2dnZ//// + ////goKCMzMzMzMzaGho////////3d3dlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaW + lpaWlpaWlpaWlpaWmZmZ9fX1////////////////////6urqurq6urq6urq6urq6urq6urq6j4+PMzMz + MzMzNDQ0sLCwurq6urq6urq6urq6urq6u7u78fHxmJiYlpaWlpaWenp6MzMzMzMzOzs7kpKSlpaWkpKS + NTU1MzMzMzMzgYGBlpaWlpaWlpaW3Nzczc3NQkJCMzMzMzMzMzMzMzMzOzs7d3d31dXV8vLyaWlpMzMz + MzMzo6Ojz8/PMzMzMzMzPj4+7+/v8/Pz8/PzhoaGRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRkZGOjo6 + MzMzMzMzaWlp9vb29vb29vb29vb29vb29/f39/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn54eHhNjY2MzMz + MzMzx8fH+/v7/Pz8/Pz8/Pz8/f39/f39/f39/v7+/v7+////////////u7u7MzMzMzMzMzMzjo6O7e3t + 7OzshISEMzMzMzMzNDQ0ycnJ//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vLi1urayurayurayu7ezu7azurayu7ayureyureyureyurezurayuriy + urezureyubezurayurezubayurazurayurazubayureyurayureyuraxubayuraxubeyubayubaxubax + ubayuraxurayubayubWxubayubWxubWxuLSwuLWwuLWwuLWwuLSwuLWwt7SwuLSvuLWwt7Svvbq2vLm1 + vLm1vbq1vbm1vbq1vLq1vbq1vbq2vbq2vbm2vbm2vbm2vrm2vbq2vbq2vrq2vbq2vrq2vru2vrq2vrq1 + vrq1vrq1vbm1vrq1vrq2vrq2vbq2vbq2vbq2vbq2vbq2vbu2vbu2vrq2vrq2vrq3vrq3vrq3v7q3v7u3 + v7u3v7u4v7y4wLy4wLy4v7y4v7y4v7y4v725v7y5v7y4v7y52tjX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////0tLSYGBgNDQ0MzMzMzMzMzMzTExMsLCw + /v7+////////1NTUNDQ0MzMzMzMz3d3d1tbWNDQ0MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzODg45ubm + ////goKCMzMzMzMzaGho//////////////////////////////////////////////////////////// + ////////////////////////////////////////////w8PDMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzODg46Ojo////////////xcXFMzMzMzMzQ0ND9/f3////9/f3 + Nzc3MzMzMzMz1NTU////////////////hoaGMzMzMzMzMzMzMzMzMzMzMzMzMzMzPj4+39/faWlpMzMz + MzMzo6Ojz8/PMzMzMzMzPj4+7+/v8/Pz8/Pzenp6MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzfn5+9fX19vb29vb29vb29vb29vb29/f39/f3kZGRYmJiYmJiYmJiYmJiYmJiXFxcNDQ0MzMz + MzMzVlZWY2NjY2NjY2NjY2NjY2NjY2Njj4+P/f39/v7+/v7+////////+fn5YmJiMzMzMzMzMzMzNTU1 + NTU1MzMzMzMzMzMzUlJS+vr6//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vLi0u7ayu7azurezurezu7ezu7ezu7eyu7eyurezureyureyurizurey + urezureyurezureyurezurezubayurayubayureyurayureyuraxurayuraxubayubaxuraxureyubay + uraxubayubWxubayubWxuLWxubWxubWxubWwuLWwubWwuLWwuLWwuLWwuLWwt7WvuLWwt7Swvbq2vLm1 + vLm1vLq1vbq1vbq1vbq1vLm1vbq2vbq2vbm2vbm2vbm2vrm2vrq2vrq2vrq2vrq2vru2vru2vrq2vrq2 + vrq2vrq2vrq2vrq2vrq2vrq2vbq2vbq2vbu2vbq2vbq2vbu3vrq3vrq3vrq3v7q3vrq3vrq3v7q3v7u3 + v7u3v7u4v7y4v7y4v7y4v7y4v7y5v725v725v7y4v725v7y529nX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////yMjIPDw8MzMzMzMzMzMzMzMzMzMzMzMzNDQ0 + l5eX/v7+////1NTUNDQ0MzMzMzMz3d3dyMjIMzMzMzMzNDQ0ioqKl5eXjIyMVVVVMzMzMzMzMzMz4eHh + ////goKCMzMzMzMzaGho////////////////////7e3toqKigICAfn5+fn5+fn5+fn5+gICAiIiIm5ub + sLCw0NDQ9/f3////////////////////////////////w8PDMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzODg46Ojo////////////w8PDMzMzMzMzQUFBzMzMyMjIysrK + NjY2MzMzMzMz0tLS////////////////eHh4MzMzMzMzV1dXkZGRbGxsMzMzMzMzNjY22traaWlpMzMz + MzMzo6Ojzs7OMzMzMzMzPj4+7+/v7Ozs6enpsLCwjo6Ojo6Oj4+Pj4+PQ0NDMzMzMzMzX19fi4uLiIiI + h4eHlpaW3t7e6urq7u7u9vb29vb29vb29vb29vb29/f3cXFxMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzbW1t/f39/v7+/v7+/v7+////////7e3tbm5uNTU1MzMzMzMz + MzMzMzMzMzMzMzMzNDQ0kpKS//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vbm0u7ezu7ayu7ezu7ezvLezu7izu7ezu7ezu7izu7izu7izureyurey + ureyurezurezurayurezurayurayurayurayu7ezurayurayureyurayuraxurayuraxuraxurayurax + ubaxubaxurWxubWxurWxubWxurWxubWxubWxubWwuLWwuLWwubWwuLSvuLWwuLWwuLWwt7Swvbq2vLm1 + vLm1vbq1vLm1vbq1vbq1vbq1vbm2vbm2vbm2vbm2vrq2vbm2vrq2vrq2vrq2vrq2vrq2vru2vrq2vrq2 + vrq1vrq2vrq2vrq2vrq2vbq2vbu2vbu3vbq3vbu3vbu3vrq3vru3vru4vru3v7u3v7u3v7u3v7q3v7u4 + v7u4v7y4v7y4vry4v7y4v7y4v724v725v725v725v724v7y529nX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////9vb2T09PMzMzMzMzPT09hoaGkZGRTExMMzMzMzMz + Nzc31tbW////1NTUNDQ0MzMzMzMz3d3dycnJMzMzMzMzNTU16+vr////////09PTNDQ0MzMzMzMz4uLi + ////goKCMzMzMzMzaGho////////////////+Pj4UlJSMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzQUFB4+Pj////////////////////////////7e3txMTEw8PDtbW1w8PDxMTExMTExMTExMTE + xMTExMTExMTExMTExMTEtLS0wsLCxMTExcXF+Pj4////////////wcHBMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMz0NDQ////////////////eXl5MzMzMzMzgoKC8vLy4eHhNjY2MzMzNjY22traaWlpMzMz + MzMzoqKiz8/PMzMzMzMzPj4+7+/va2trNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0MzMzMzMzMzMzNDQ0NDQ0NDQ0 + NDQ0NDQ0NDQ0NDQ0cXFx9vb29vb29vb29vb29vb29/f3fn5+RkZGRkZGRkZGRkZGRkZGR0dHR0dHR0dH + R0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHe3t7/f39ysrKwsLC/f39/v7+/////////v7+zc3NbGxsdHR0 + dHR0kJCQf39/MzMzMzMzOTk58PDw//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vbm0vLezvLezvLezvLezvLezvLezvLezu7ezu7eyu7ezu7izu7izu7iz + u7eyu7izu7ezu7ezu7ezu7ayu7ezu7ayu7ezurayu7eyu7ayurayurexurayuraxureyuraxureyurax + ubaxuraxurWxubWxurWxurWxubWxubWxurWwubWwubWwubWwubWwuLWwuLWwuLWwuLSwuLSvvbq2vLm1 + vLm1vLm1vbq1vbq1vLq1vbq2vbq2vbm2vbm2vrq2vbq2vbq2vbq2vrq2vrq2vrq2vru2v7u2vrq2vru2 + vrq2vrq2vru3vru3vrq3vru3vbu3vby3vbu3vru3vru3vru4v7u4vru4v7u3v7u3v7u3v7u3v7u3v7u4 + v7u4v7u4v7y4v7y4v7y4v724v725v724v724v725wL25wL2529nX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////wMDAMzMzMzMzNDQ0tra2////////5eXlPz8/MzMz + MzMzh4eH////1NTUNDQ0MzMzMzMz3d3dysrKMzMzMzMzNTU17Ozs////////1NTUNDQ0MzMzNDQ04uLi + ////goKCMzMzMzMzWlpax8fHx8fH5+fn////zc3NNDQ0MzMzMzMzNzc3ODg4ODg4ODg4ODg4Nzc3NDQ0 + MzMzMzMzQkJC9PT0////////////////////////////////////3d3dPT09YGBgoaGh5eXl/v7+//// + ////////////////2NjYTExMkpKS/v7+/////////////////f39iYmJMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMzhYWF/f39////////////enp6MzMzMzMzg4OD8vLy4uLiNjY2MzMzNzc32traaWlpMzMz + MzMzfX19mpqaMzMzMzMzPj4+7+/vampqMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMzMzMzcHBw9fX19vb29vb29vb29vb29vb28/Pz8fHx8fHx8fHx8vLy8vLy8vLy8/Pz8/Pz + 9PT09PT0vb29n5+fh4eH09PT9fX19vb2+Pj46enpSEhINTU1fX198fHx/v7+////////wsLCOTk5h4eH + 8fHx////y8vLMzMzMzMzMzMz19fX//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vbm0vLezvLezvLezvLezvLi0vLezvLi0vLizvLizvLezu7eyu7eyu7ey + u7eyu7eyu7eyu7ezu7ayu7eyu7ezurayurayu7ayurayu7ayu7ayurexuraxurayuraxuraxubaxurax + uraxubaxubWxurWxurWxubWxubWxurWxubWxurWxubWwubWxubWwubWwuLWwuLSwuLWwuLWwvbq2vbm1 + vLm1vbq1vLm1vLm1vLm1vbm1vLq1vbm2vbm2vrm3vbq3vrq2vrq2vrq2vru3vru2vru3v7u3vrq2vru2 + vru3vru3vrq2vru3vrq3vru3vru3vbu4vru4vru3vru3v7y4v7y4v7y4wLu3wLy3wLu4v7u3wLu4wLu4 + v7u4v7u4v7y4v7y4v724v724vr24vr24v7y4v725wL25wL2529nW//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////lJSUMzMzMzMzRUVF+/v7////////////f39/MzMz + MzMzWFhY/v7+1NTUNDQ0MzMzMzMz3d3dysrKMzMzMzMzNTU17u7u////////1NTUNDQ0MzMzNDQ04uLi + ////goKCMzMzMzMzMzMzMzMzMzMzpqam////xMTEMzMzMzMzMzMzy8vL6urq6urq6urq6urq5+fn1dXV + wsLCn5+fk5OT////////////////////////////////////////mZmZMzMzMzMzMzMzODg4cXFxzs7O + /v7+////////yMjIQUFBMzMzNDQ0qamp////////////////vLy8NDQ0MzMzMzMzPT09enp6lJSUfHx8 + Pz8/MzMzMzMzMzMztLS0////////////e3t7MzMzMzMzhYWF8vLy4uLiNjY2MzMzNzc32traaWlpMzMz + MzMzMzMzMzMzMzMzMzMzPj4+7u7uv7+/qqqqfHx8e3t7lpaWqKioqqqqqqqqqqqqq6urq6urq6urq6ur + p6encHBwpqamrKysw8PD9fX19fX19vb29vb29vb29vb29vb29/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5 + +fn5+vr6W1tbMzMzMzMznZ2d+/v7/Pz8/Pz8hoaGMzMzMzMzMzMzWlpa6urq////9fX1U1NTMzMzMzMz + m5ub////0dHRMzMzMzMzMzMz1tbW//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vbq0vLezvLizvLi0vLezvLi0vLi0vLi0vLizvLizvLizvLiyu7izu7ey + u7iyu7eyureyu7ezu7ezureyu7ayureyurayu7ezurayurayurayu7eyurayuraxurayuraxuraxubax + ubaxuraxuraxurSxurWxubWxurWxurWxubWxurWxurWxubWxubWwubWwubWwubWwuLSwt7Swvrq2vLm1 + vLm1vLm1vLm1vLm2vLm2vLm2vbm3vbm2vbm3vbq3vrq3vrq3vrq2vru2vru2v7u3v7u3v7u3v7u3vru2 + vru3vru2vru3vru3vru3vbu3vru3vru3vry4vru3v7y4v7y4v7y4wLy4v7u3wLy3wLy3wLu3wLu4v7u3 + wLu4v7u4v7y4v7y4v7y4v724v724v724v725v7y4wLy4wLy429nX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////g4ODMzMzMzMzX19f/v7+////////////nJycMzMz + MzMzR0dH/f391NTUNDQ0MzMzMzMz3d3dy8vLMzMzMzMzNTU17+/v////////1dXVNDQ0MzMzNDQ04+Pj + ////goKCMzMzMzMzMzMzMzMzMzMzpqam////xcXFMzMzMzMzNDQ0jY2Nm5ubm5ubm5ubm5ubm5ubm5ub + m5ubm5ubzMzM////////////////////////////////////////hoaGOTk5MzMzMzMzMzMzMzMzNTU1 + bW1tzs7OmZmZOjo6MzMzMzMzSEhI1dXV////////////////ZWVlMzMzMzMzQ0ND3Nzc//////////// + 4ODgR0dHMzMzMzMzXl5e/v7+////////fHx8MzMzMzMzh4eH8/Pz5OTkNjY2MzMzNzc329vbaWlpMzMz + MzMzMzMzMzMzMzMzMzMzPj4+7+/v8vLy8fHxUlJSMzMzOTk5SEhIbW1tnJyc1NTU8fHx9PT08fHxubm5 + WlpaNDQ0n5+f9fX19fX19fX19fX19fX19vb29vb29vb29vb29vb29/f39/f39/f3+Pj4+Pj4+Pj4+fn5 + +fn5+fn5fn5+MzMzMzMzdnZ2+/v7+/v7/Pz87+/vfn5+NDQ0MzMzMzMzXl5e9PT0mJiYMzMzMzMzSUlJ + 8fHx////1NTUMzMzMzMzMzMz2NjY//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vrq2vLi0vLezvLezvLi0vLi0vLi0vLi0vLizvLizvLezu7izu7eyu7ey + u7eyu7eyu7ezu7izureyu7ezu7azu7azurazu7ayu7ayu7ayu7ayu7ayurayurayuraxurayubaxubax + ubayubaxubaxubaxubaxurWyubWxurWyurWxurWyubWxurWxubWxubWwuLWwubWxuLWwuLWwvbq1vLm1 + vLm1vLm2vLm2vLi2vbq2vLm3vbm3vLm2vbq3vbq3vbq3vbq2vru2vru3v7u2v7u3vry2v7y3v7u3v7u2 + vru3vru3vry3vry3vru3vru3vry3vby3vru3v7y4v7u4v7y4wLy4wLu3wLy3wLy3wby3wLy3wLu2v7u4 + wLu4v7u4v7u4v7y4v7y4v724vr24v724v725v7y4wLy4wLy429nX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////i4uLMzMzMzMzVFRU/v7+////////////kZGRMzMz + MzMzT09P/v7+1NTUNDQ0MzMzMzMz3d3dzMzMMzMzMzMzNTU18PDw////////1tbWNDQ0MzMzNDQ04+Pj + ////goKCMzMzMzMzT09PoKCgoKCg1dXV////xsbGMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzmJiY////////////////////////////////////////////7e3tra2tYmJiNTU1MzMzMzMz + MzMzMzMzMzMzMzMzMzMzV1dX4+Pj/////////////////v7+PT09MzMzMzMzjY2N//////////////// + ////k5OTMzMzMzMzQEBA9PT0////////fX19MzMzMzMzjIyM9fX15eXlNjY2MzMzNzc329vbaWlpMzMz + MzMzd3d3kpKSMzMzMzMzPj4+7u7u8/Pz5OTkOzs7MzMzMzMzMzMzMzMzMzMzMzMzXFxckZGRVlZWMzMz + MzMzMzMzRkZG6urq9fX19fX19fX19fX19vb29vb29vb29vb29vb29/f39/f39/f39/f3+Pj4+Pj4+Pj4 + +fn5+fn5np6eMzMzMzMzUlJS+Pj4+/v7+/v7/Pz8+/v7n5+fNTU1MzMzMzMzZ2dnODg4MzMzNDQ0kpKS + vLy8vLy8oaGhMzMzMzMzMzMz2dnZ//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vrm1vLizvLi0vLe0vLe0vLi0vLi0vLe0vLe0u7i0u7ezvLizu7izu7ey + u7ezu7ezu7ezu7eyurezu7ezurezu7azurazurazu7azu7azurazu7ayu7ayu7ayurayurayurayuray + ubayubWxurayubWyurWyurWyurWyurWyurWyurWyubWyubWxubWxubWxubWxubWxuLWxuLWxvrq2vLm2 + vLm1vLm2u7m2vLm2vLq2vLm2vbq3vbq3vbq3vbu3vbu3vru3vru3vru2vru2v7u2v7y3v7u2v7u3vry3 + vru3vru3vru4vru3vru3vru3vry3vry3v7y4v7u3v7u3wLy4wLy4wLy4wLy3wLu3wLu3wLu3wLu3wLu3 + v7u3v7u4v7u3v7y4v7y4vry4vr24vr25v7y4v7y4v725wL2529nX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////rKysMzMzMzMzNjY24eHh/////////Pz8V1dXMzMz + MzMzcHBw////1NTUNDQ0MzMzMzMz3d3dzc3NMzMzMzMzNTU18vLy////////19fXNDQ0MzMzNDQ04+Pj + ////goKCMzMzMzMzaGho////////////////yMjIMzMzMzMzMzMzNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3 + Nzc3Nzc3mpqa/////////////////////////////////////////////////////f391tbWeHh4NjY2 + MzMzMzMzMzMzMzMzenp68fHx/////////////////////Pz8ODg4MzMzMzMzmZmZ//////////////// + ////n5+fMzMzMzMzPT098vLy////////fn5+MzMzMzMzjo6O/Pz85eXlNjY2MzMzODg43NzcaWlpMzMz + MzMzoqKizs7OMzMzMzMzPj4+7+/v8vLy7Ozsr6+vioqKZWVlPz8/NTU1MzMzMzMzMzMzMzMzMzMzMzMz + Nzc3bW1ty8vL8/Pz9PT09fX19fX19fX19fX19vb29vb29vb29vb29vb29/f39/f39/f39/f3+Pj4+Pj4 + +Pj4+fn5tra2MzMzMzMzODg48/Pz+/v7+/v7+/v7/Pz8+/v7hYWFMzMzMzMzMzMzMzMzMzMzcnJyiYmJ + MzMzMzMzMzMzMzMzMzMzMzMz2tra//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vrq2vLi0vLi0vLi0vLi0vLi0vLi0vLi0vLe0vLe0vLezu7ezu7ezu7ez + u7ezu7ezu7ezu7ezu7ezu7ezu7ezu7azu7azu7azu7azu7azu7ayurayurayu7ayurayurayurayuray + ubayuraxubayubayubWyurayubWyurayurWyurWyurWyurWxubWxubWxubWxubWxuLWxuLWwvru2vLq1 + vLq1vLq2vLq2vLm2vLq3vbm2vbq3vbq3vrq3vrq3vru2vbu2vru2vru2v7u2v7u2v7u2v7u2v7u2v7y3 + v7u3vry3vru3vru3vry4v7y4vry3vru3v7u3v7y4v7y4v7y4wLy4wLy3wLu3wby3wLy4wLu4wLu3wLu3 + v7u4v7u3v7y4v7y4vry3vr24v725vr25v7y5vry4v7y5wLy529jX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////5ubmOzs7MzMzMzMzaGho4eHh6+vrkZGRMzMzMzMz + MzMztLS0////1NTUNDQ0MzMzMzMz3d3dzs7OMzMzMzMzNTU18/Pz////////2NjYNDQ0MzMzNTU15OTk + ////goKCMzMzMzMzaGho////////////////ycnJMzMzMzMzNjY20tLS6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo + 6Ojo6Ojo9PT0////////////////////////////////////////////////////////////////zMzM + UVFRMzMzMzMzMzMzb29v+vr6////////////////////////UFBQMzMzMzMzZWVl/Pz8//////////// + /Pz8ampqMzMzMzMzTExM+/v7////////gICAMzMzMzMzj4+P////6urqNzc3MzMzODg43NzcaWlpMzMz + MzMzoqKizs7OMzMzMzMzPj4+7u7u8/Pz8vLy8vLy8/Pz8/Pz7u7uysrKlJSUU1NTNDQ0MzMzMzMzMzMz + hYWF8/Pz9PT09PT09PT09fX19fX19fX19fX19fX19vb29vb29vb29vb29vb29/f39/f39/f39/f3+Pj4 + +Pj4+Pj4xMTEMzMzMzMzMzMz4uLi+vr6+/v7+/v7+/v7/Pz85ubmOzs7MzMzMzMzRUVFjo6O8/Pzi4uL + MzMzMzMzMzMzMzMzMzMzMzMz29vb//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vbq2vLi1vLi0vLi0vLi0vLi0vLi0vLe0vLi0vLe0u7ezvLezu7izu7ez + u7ezu7ezu7ezurayurezu7ezurezu7ezu7azu7azurazu7azurazurezu7azu7eyurayurayurayubWy + ubayuraxubaxurayubayubayubWyurayubWyurWyubWyubayubWyubWyuraxubWxubWxuLWwvbq2vLq1 + vbq2vLq2vLm2vLm2vbm3vbm3vbq3vrq3vrq3vrq2vru2vru2vru2vru2v7u2wLu2v7u2v7u3v7u2v7u3 + vru3vru3vru3vru3vry3vry3vru3vru3v7u3v7u3wLu4wLu4wLy4wLy3wLy3wby4wLu3wLy4wLu4wLu3 + wLu4wLy4v7y4v7y4v7y5v7y5vry5v7y5v7y5wLy6wLy6v7y52tnX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////kJCQMzMzMzMzMzMzNzc3Ojo6MzMzMzMzMzMz + Xl5e+Pj4////1NTUNDQ0MzMzMzMz3d3dz8/PMzMzMzMzMzMzSkpKTExMTExMR0dHMzMzMzMzNTU15OTk + ////goKCMzMzMzMzaGho////////////////ysrKMzMzMzMzNTU1iYmJlZWVlZWVlZWVlZWVlZWVlZWV + lZWVlZWVtLS0////////////////////////////////////////8PDwvLy8vb29vr6+vr6+wMDAwsLC + s7OzSEhIMzMzMzMzMzMzpKSk////////////////////////kpKSMzMzMzMzMzMzfX1929vb9PT03Nzc + f39/NDQ0MzMzMzMzioqK////////////gICAMzMzMzMzPj4+TExMSkpKMzMzMzMzODg43NzcaWlpMzMz + MzMzoqKizs7OMzMzMzMzPj4+7u7u8vLy8vLy3Nzcenp6enp6fHx8fX19fn5+e3t7TU1NMzMzMzMzMzMz + NTU1ra2t9PT09PT09PT09PT09fX19fX19fX19fX19fX19vb29fX1w8PDu7u7urq6ubm5ubm5uLi4uLi4 + t7e3t7e3i4uLMzMzMzMzMzMz1dXV+vr6+/v7+/v7+/v7/Pz8+/v7XFxcMzMzMzMzenp6/v7+/v7+3t7e + xsbGxsbGqampMzMzMzMzMzMz3Nzc//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vbq2vLi0vLi0vLi0vLi0vLi0vLi0u7i0u7i0vLi0vLe0u7izvLe0vLez + u7izu7ezu7ezu7ezuriyurizurizu7ezu7ezurezu7ezu7azu7azu7azu7ezurayu7ayurayurayuray + ubaxubayurayubeyureyubayubayubayubWxurayubayurayubayuraxubaxurWwubWxuLaxvbu2vLq1 + vbq1vbm2vbm2vbq2vbm3vbq3vrq3vrq2vru3vrq2vru3vru2vru2v7u2v7u2v7u2v7u2v7u2v7u2vru3 + vru3vru3vru4vru4v7y4v7y4v7y3vru4v7u4wLy4wLy3wLu4wLu3wLy4wLu3wLy4wLy4wLu4wLu4wLu3 + v7y4v7y4v7y4v7y4v7y5v7y5vry5v7y5wLy6wL26v7y6wL262tnX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////+vr6g4ODNTU1MzMzMzMzMzMzMzMzMzMzXl5e + 5+fn////////1NTUNDQ0MzMzMzMz3d3d0NDQMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzNTU15OTk + ////goKCMzMzMzMzaGho////////////////y8vLMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzbm5u////////////////////////////////////////0tLSNDQ0MzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMzMzMzMzMzS0tL/Pz8////////////////////7+/vUlJSMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMzT09P7e3t////////////goKCMzMzMzMzMzMzMzMzMzMzMzMzMzMzODg43d3daWlpMzMz + MzMzoqKizs7OMzMzMzMzPj4+7u7u8vLy8/Pz0NDQNTU1MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz + MzMzYmJi8/Pz9PT09PT09PT09PT09fX19fX19fX19fX19fX18vLyS0tLMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMzMzMzMzMzMzMz2tra+vr6+vr6+/v7+/v7+/v7/Pz8a2trMzMzMzMzZ2dn/v7+/v7+/v7+ + ////////19fXMzMzMzMzMzMz3d3d//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vru3vLi0vLi0u7i0vLi0vLi0u7i0vLe0vLi0u7i0vLi0vLi0u7izu7iz + u7izu7izu7izu7izu7izurezu7i0u7ezurezu7ezurezurezu7ezurezu7ezu7ezu7eyureyuraxurey + ureyurayubayubeyureyurayubayurayubWxurWyubayubayubayubWxurayubaxubWwubaxvbu2vbq1 + vbq1vbq2vbm2vbm3vbm3vbm3vbq3vrq2vrq3vru2vru2vru2vru2v7u2wLu2v7u2v7u2v7u2v7u3v7u4 + vru3vru4v7u4vry4vru3vru3v7u4v7u3v7u4v7u4wLu4wLu4wLu3wLu3wLu4wLu4wLu4wLy4v7y4v7y4 + v7u4v7y4v7y4vry4v7y5v7y5v7y5wLy5wLy5wLy5v7y6wLy529nX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////v7+0NDQi4uLaGhoZGRkfn5+ubm5+fn5 + ////////////1NTUNDQ0MzMzMzMz3d3d2traXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXl5e6urq + ////goKCMzMzMzMzaGho////////////////zc3NNzc3NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2 + NjY2NjY2cHBw////////////////////////////////////////0tLSNDQ0MzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMzMzMzMzMzXV1d/f39////////////////////////5+fnbGxsNTU1MzMzMzMzMzMzMzMz + MzMzNTU1a2tr5ubm////////////////m5ubXFxcXFxcXFxcXFxcXFxcXFxcWlpaXV1d4uLiaWlpMzMz + MzMzoqKizs7OMzMzMzMzPj4+7u7u8vLy8vLy1dXVTk5OTExMS0tLRkZGMzMzMzMzNTU1Tk5OSkpKRUVF + R0dHo6Oj9PT09PT09PT09PT09PT09PT09fX19fX19fX19fX18vLyS0tLMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMzMzMzMzMzYGBg9vb2+vr6+vr6+vr6+/v7+/v7+Pj4VFRUMzMzMzMzdXV1/f39/v7+/v7+ + /v7+////19fXMzMzMzMzMzMz3t7e//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vrq2vLm0vLm0vLi0vLi0vLi0vLi0vLi0vLizvLi0vLe0vLizvLi0vLiz + vLizu7izu7izu7izu7izu7izu7izu7izurizu7ezu7ezu7ezu7ezu7azurezu7ezureyurayu7eyurey + ureyureyuraxuraxureyureyurayurayurWxurayurayurayurayurayuraxurWwubaxubaxvru2vbq1 + vbm1vbm2vbm1vrm2vbm3vbm3vbm3vbq3vbq2vru2vru2vru2vru2v7u2v7u2v7u2v7u3v7u3v7u3vru4 + v7u4vru4v7u4vru4v7y4v7u4v7u4v7u4v7u4wLu4wLu4wLu4wLu4wLy4wLy4wLy4wLy4wLy4wLy4wLy4 + wLy4v7y4v724v724v725v725v7y5wLy5wL25wLy5wL26wLy529nX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////6OjokpKSkZGRkZGR7e3t//////////////////////////////////////////////// + ////vLy8kZGRkZGRrq6u////////////////+vr66enp6enp6enp6enp6enp6enp6enp6enp6enp6enp + 6enp6enp8PDw////////////////////////////////////////7+/vubm5uLi4t7e3tbW1tbW1tLS0 + s7OzsrKysrKysbGxtra27+/v/////////////////////////////////v7+09PTmZmZdnZ2a2trdXV1 + mJiY0tLS/v7+////////////////////////////////////////////////+vr68/Pz8vLyqampi4uL + i4uLx8fH39/fi4uLi4uLkZGR8PDw8vLy8vLy8vLy8/Pz8vLy8/Pzz8/PNTU1MzMzOTk54ODg8/Pz8/Pz + 8/Pz9PT09PT09PT09PT09PT09PT09PT09fX19fX19fX19fX19PT0u7u7srKysbGxsLCwr6+vr6+vrq6u + rq6ura2tra2trKysubm58PDw+fn5+fn5+vr6+vr6+vr6+/v7+Pj4urq6eHh4QkJCr6+v/f39/f39/v7+ + /v7+/v7+4ODgYmJiYmJiYmJi5ubm//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vru2vLm0vLm0vLizvLi0vLi0vLizu7izvLizvLizu7i0vLi0vLi0vLiz + vLizvLizu7izu7izu7izu7izu7izu7ezu7ezu7ezu7ezu7ezu7ezu7ezu7ezu7eyu7eyu7eyureyurey + ureyureyurayureyurayuraxuraxurayuraxurayurWxurayurayuraxurWxurWwubaxubawvru2vrm1 + vbm1vbm2vbm3vbm2vbm3vrm3vbq3vbq2vru2vrq2vrq2vru2vru2v7u2v7u3v7u3v7u3v7u4vru4v7u4 + v7y4v7y4v7u4v7y4vru4v7u4v7u4v7u4v7u4v7y4wLy4wLu4wLy4wLy4wLy4wLy4wLy4wLy4wLy4wLy4 + wLy4v724v724v724v724wLy5wL25wL25wL25wL25wL25wL2529nX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////9PT08vLy8vLy8vLy + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLywsLCSEhINTU1PT095ubm8/Pz8/Pz + 8/Pz8/Pz8/Pz9PT09PT09PT09PT09PT09PT09fX19fX19fX19fX19fX19vb29vb29vb29vb29vb29/f3 + 9/f39/f39/f3+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr6+vr6+/v7+/v7/Pz88PDw+Pj4/f39/f39/f39 + /v7+/v7+//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vru2vLm0vLm0vLm0vLi0vLi0vLizvbi0vLezvLi0vLizvLi0vLizvLi0 + vLezvLizvLizu7izu7izu7izu7iyu7izvLizu7ezu7ezu7ezu7ezvLezu7ayu7ayvLezu7ayureyuray + u7eyureyu7eyuraxuraxuraxuraxurayurWxurWxurayurayurayuraxurWxuraxubawuraxv7u2vbm1 + vbm2vbm2vbm2vbm2vbi2vrm3vrm3vrq2vbq2vrq2vru3vbq3vru3vry3v7u3v7u3v7u4v7u4v7y4vru4 + v7y4v7y4v7y4v7y4v7y5v7y4v7y4v7y4wLy4v7u4wLy4wLy4wLy4wLy4wLy4wLy4wL25wL24wL24wL24 + wL24v724v724v724v724wLy4wLy5wL25wL26wby5wL25wL2529nX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////+/v78vLy8vLy8/Pz + 8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8fHx0dHRsbGx8/Pz8/Pz8/Pz + 8/Pz8/Pz9PT08/Pz9PT09PT09PT09PT09PT09PT09fX19fX19fX19fX19fX19vb29vb29vb29vb29vb2 + 9/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr6+/v7+/v7+/v7/Pz8/Pz8/Pz8/f39/f39 + /f39/v7+/v7+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39vru2vbm0vLm0vLizvLi0vLizvLi0vLizvLezvLezvLi0vLezvLi0vLi0 + vLizvLizvLizvLizvLizvLizu7izvLizu7iyu7ezvLezvLezu7ayu7ayu7ezu7ezvLezu7ayu7eyu7ey + u7eyu7eyureyurayuraxuraxureyurayurWyurayurWyurayurayurayurWxuraxuraxubWwv7q2vbm2 + vrm2vbm2vrm2vbq3vrq3vbq3vbq3vrq2vrq3vbq2vrq2vru3v7u3vru2vru3vru4vry4v7y4vru4v7u4 + v7y4v7y5vru5v7y4v725v7y5wLy4wLy5wLy4wLy4wLy4wby4wLy4wLy4wby4wLy4wLy4wL25v7y4wL24 + v724v724v724wL24v7y4wLy4wL24wb25wb25wby6wb26wb253NnX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////9fX18/Pz8vLy + 8/Pz8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8vLy8/Pz8vLy8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz9PT08/Pz9PT09PT09PT09PT09PT09PT09fX19fX19fX19fX19vb29vb29vb29vb29vb2 + 9vb29/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr6+/v7+/v7+/v7/Pz8/Pz8/Pz8/f39 + /f39/v7+/v7+/v7+//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39v7u2vbm0vLm0vLizvLizvLizvLizvLizvLizvLe0vLi0vLezvLi0vLi0 + vLezvLizu7izvLizu7izvLizvLizvLizvLizvLezu7ezvLezvLezvLayvLayvLezu7ayu7ayu7ezurey + u7eyureyuraxurayurayuraxureyuraxurWxurayurayu7ayurayurWxurWxuraxurWwubWwvrq3vbm2 + vbm2vbm2vbm2vrm3vrm3vbq3vrq2vrq2vrq3vru3vru3vrq3vru3v7u3v7u3v7y3vru3v7y4v7y4v7y4 + v7y4v7y5v7y5v7y4v7y4v7y4wLy4wLy4wLy4wLy4wby4wLy4wby4wb25wb25wby4wLy4wLy4wL24wL24 + wL24wL24v724wL25wL24wLy4wLy4wLy5wby5wb25wb25wb2529nX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////f398vLy8/Pz + 8vLy8/Pz8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8vLy8/Pz8/Pz8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz9PT09PT09PT09PT09PT09PT09PT09PT09fX19fX19fX19fX19vb29vb29vb29vb2 + 9vb29/f39/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr6+/v7+/v7+/v7/Pz8/Pz8/f39 + /f39/f39/v7+/v7+/v7+//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39v7u2vbm0vbm0vLi0vLm0vLizvLi0vLizvLi0vLe0vLe0vLi0vLezvLiz + vLi0vLizvLi0vLizvLizvLizu7izu7izvLizvLezu7ezu7ezvLezu7azu7ezu7ayvLezu7ayu7eyu7ay + urayurexureyurayureyurayurayurayurayurayurayurWxurayurWyurayurWxuraxurWxv7q3vrq3 + vbm3vbm3vrq4vrq3vrq2vrq2vrq2vrq3vrq3vru3vrq3vru3v7u3v7y3v7y3vry3v7y4vry4v724wLy5 + v7y5v7y4v725v725v7y4wL25wLy4wLy4wby4wby4wL25wby4wby4wby4wb25wb25wLy4wLy4wL24wL65 + wL25wL65v724wL24wL24wLy4wby5wby5wby5wLy5wb25wb253NnX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////9/f38vLy + 8/Pz8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8vLy8vLy8/Pz8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz9PT09PT09PT09PT09PT09PT09PT09fX19fX19fX19fX19fX19vb29vb29vb2 + 9vb29vb29/f39/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+vr6+vr6+vr6+vr6+/v7+/v7+/v7/Pz8/Pz8 + /f39/f39/f39/v7+/v7+/v7+//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39v7y2vrq1vLm0vLi0vLm0vLm0vLizvLizvLi0vLe0vLi0vLe0vLi0vLe0 + vLi0vLi0vLi0vLi0vLm0vLizvLizu7izvLizvLizu7ezvLezu7ezvLazu7azu7azu7azvLezvLazu7ez + u7eyureyu7eyureyurayureyurayurayurayurayurWyurayurWyurWyubWyurayurWxubaxvrq3vbm3 + vrq3vrq3vrq3vrq2vrq3vbu3vru3vru3vru3vru3v7u3v7y3v7y3v7y3v7y3vry4vry4v7y5v7y4v7y4 + wLy4wLy4v7y4v7y4wLy4wLy4wLy4wby4wLy4wb24wby4wb24wr24wr25wb25wby4wL25wL25wL25wL24 + wL25wL24wL25wLy4wLy4wLy5wLy5wby5wby5wLy5wLy5wby53NnX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////v7+8/Pz + 8vLy8vLy8/Pz8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz9PT09PT09PT09PT09PT09PT09fX19fX19fX19fX19fX19vb29vb2 + 9vb29vb29vb29/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr6+vr6+/v7+/v7/Pz8/Pz8 + /Pz8/f39/f39/f39/v7+/v7+//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39v7u3vbm0vbm0vLm0vbm0vbm0vLi0vLi0vLi0vLi0vLe0vLi0vLe0vLi0 + vLi0vLi0vLi0vLi0vLi0vLi0vLizvLizvLi0u7i0u7e0u7ezvLe0u7ezu7e0u7azu7azu7ezu7ezu7ey + u7eyureyureyureyureyureyureyurayurayurazurazurWyurayurayurayurayurayubayv7u4vrq3 + vrq2vrq3vrq2vrq2vrq2vru2vru2vru3vru3vru2vry3v7u3v7y3vry3v7y4vry4v7y4v7y4v7y4wLy5 + wLy4wLy4wL24wLy4wLy4wLy4wby4wL24wby4wby4wby4wr25wb25wb24wby5wb25wL25wb25wL65wL65 + wL25wL25wLy4wLy5wLy5wLy5wLy5wLy5wLy5wby5wLy5wby529nX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////+fn5 + 8vLy8vLy8vLy8/Pz8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8vLy8/Pz + 8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz9PT08/Pz9PT09PT09PT09PT09PT09PT09fX19fX19fX19fX19fX19vb2 + 9vb29vb29vb29vb29/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr6+/v7+/v7+/v7/Pz8 + /Pz8/Pz8/f39/f39/f39/v7+/v7+//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39v7u2vbm1vbm1vLm0vLm0vLm1vLi0vLm0vLi0vbi1vLi0vLi0vLi0vLi0 + vbi1vLi0vLi0vLm1vLm0vLi0vLi0vLi0u7i0vLi0u7e0vLe0u7e0vLa0u7ezu7ezu7azu7azu7ezu7ez + u7eyureyurezureyureyureyurayurazurayurayurayurayurazurayurayuraxurayurayvru4vrq3 + vru3vrq2vrq2vru2v7q2vry3v7u2vry3v7u3vry3v7u3v7y3v7y3vry3vry3v7y4v7y4v7y5v7y5wLy5 + v7y4wLy4v7y5wL25wLy4wLy4wLy4wL24wby4wby4wb24wb25wby6wb25wL25wLy5wL25wL25wL66wL25 + wL25wL25wLy5wLy5wLy5wLy5wLy6wLy6wLy5wLu4wby5wb2529nX//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + 9PT08vLy8/Pz8vLy8/Pz8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8/Pz8vLy8/Pz8vLy + 8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz9PT08/Pz9PT09PT09PT09PT09PT09PT09fX19fX19fX19fX19vb2 + 9vb29vb29vb29vb29/f39/f39/f39/f3+Pj4+Pj4+Pj4+fn5+fn5+fn5+vr6+vr6+vr6+/v7+/v7+/v7 + /Pz8/Pz8/f39/f39/f39/v7+/v7+/v7+//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////f39wLy3vbm1vbm1vbm1vbm1vbm1vLm0vLm0vLi0vbi1vLi0vbi1vLi0vbi0 + vLm0vLi0vbm1vLi1vLm0vLm0vLm0vLi0u7i0u7izu7i0u7e0u7e0u7ezu7e0u7ezu7e0u7ezvLezu7i0 + u7eyurezu7ezu7ezu7eyurezureyureyu7ezurazurazurWyurazurayurazubayurayurayv7u4vrq2 + vrq2vrq2vru3vrq2vru2vru2vru3v7u3v7u3v7y3v7y3v7u3v7u3v7y4v7y4v7y4v7y4v7u4v7y5v7y5 + wLy4wLy4wL25wLy4wLy4wby4wb24wb24wby4wb24wby5wb25wb26wb26wb26wb26wL26wL26wL66wL26 + wL25wL25wLy5wby6wLy5wLy5wLy5wLy5wLy5wL25wby5wL2509HO7ezr7ezr7ezr7ezr7u3s7u3s7u3s + 7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s + 7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s7u3s + 7u3s7u3s7u3s7u3s7u7t7u7t7u7t7u3s7u7t7u7t7u7t7u3s7u3s7u3t7u3t7u3s7u7s7u3s7u7s7u3s + 7u7t7u7s7u7s7u7s7u7s7+7s7u7s7u3s7u7s7u3s7+7s7u7s7+3s7+7s7+7s7+7s7u7s7+7s7+7s7+7s + 7+7s7+7s7+7s7+7s7u7s7u7s7u7s7u7s7+7s7+7s7+7s7+7s7+7s7+7s7u7t7+7t7+7t7+7s7+7t7+7t + 7+7t7+7t7+7t7+7t7+7t7+7s7+7t7+7t7+7t7+7t7+7t7+7t7+7t7+7s7+7t7+7t7+7t7+7t7+7t7+7t + 7+7t7+7t7+7t7+7s7+7t7+7s7+7t7+7t8O/u8O/u8O/u8O/u8O/u8O/u8O/u8O/u8O/u8O/u8O/u8O/u + 8O/u8O/u8O/u8O/u8O/u8O/t8O/t8O/t8O/t8O/t8O/t8O/t8O/u8O/u7+/t8O/u8O/u8O/u8O/u7+/u + 8O/u8O/t7+/t7+/t7+/t7+/t7+/t7+/t7+/t7+/t7+7t7+7t7+7u7+7t7+7t7+7t7+7t7+7t7+7t8O7t + 7+7t7+7t7+/t8O7t7+7t7+/t7+/t7+7t7+/t7+/t7+7t7+7t7+7t7+7t8O7t7+7t7+/t7+7t7+7t7+/t + 7u3r7Ovq7Ovq7Ovq7Ozq7Ozq7Ovq7Ovq7Ovq7Ovq7Ovq7Ovq7Ovq7Ovq7Ovq7Ovq7Ovq7Ovq7Ovq7Ovq + 7Ovq7Ovq7Ovq7Ovq7Ovq7Ovq7Ovq7Ovq7Ovq7Ozq7Ovq7Ovq7Ozq7Ovq7Ovq7ezr7ezq7ezq7ezq7ezr + 7ezr7ezr7ezr7ezr7ezr7ezr7ezr7ezr7ezr7uzr7uzr7u3s7uzs7u3s7u3s7u3s7u3s7u3s7u3s7u3s + 7u3s7u3s7u3s7u7t7+7u7+7t8O7u8O7u8O/u8O/u8O7u8O/u8O/u8O/u8O7u8O7u8O7u8O7u8O7u8O/u + 8O/u8O7u8O7u8O/u8O/u8O/u8O/u8O/u8O/u8O/u8O7u8O7u8O/u8O7u7+7u7+7u8O/u7+7u7+7u8O7u + 8O/u8O/u8O/u8O/u8O/u8O/u8O7u8O/u8O7u8O7t8O/t8O7u8O7u7+7t7+7t8O7u7+7t7+7t7+7t8O7u + 8O7t8O7u8O7u8O7u8O7u8O7u8O7t8O7u7+7t7+7t8O7u7+7u7+7t7+7t7+7u7+7u7+7t7+7t7+7t7+7t + 7+7t7+7t7+7t7+7t7+7t7+7t7+7t7+7t7+7t7+7t7+7t7+7t7+7t7+7t7+7t7+7t7+7t7+7t7+7t7+7t + 7+7t7+7t7+7t7+7t7+7t7ezrv7u3vbm1vbm1vbm1vbq1vLm0vbm1vbm1vLi0vLi0vLi0vbi1vbi1vbi1 + vLi0vLi0vLm0vLm0vLm1vLm1vLi0vLi0vLi0u7i0vLi0u7i0vLi0u7ezu7ezu7i0u7e0u7ezu7e0u7ez + u7ezurizureyuriyuriyuriyurizurezurezureyurazurayurayurezurayurayurayuraxv7u3vrq2 + vru3vru2vrq2vru2v7u2v7u2v7y3v7y3v7u2v7u3v7u3v7u3v7y3v7y3v7y4v7y4v7y5v7y5v7y5v7y4 + v7y5wLy4wL25wL25wb25wby4wby4wb24wb25wby5wby5wb25wL26wb26wL26wL26wL26wL66wL25wL26 + wL26wL26wLy5wLy5wLy5wby6wb25wLy5wL25wL25wby5wb25wL25wL65wb65wb65wb65wb65wb66wb66 + wL+6wb66wb67wb67wb68wb68wb67wb67wb+7wr+7wr+7wr+7w7+7wr+7wr+7w7+7wsC6w8C6wsC7w7+6 + w7+6wsC7wsC7wsC7w7+7wr+7w7+8w7+8w767wr67w767w766w7+7w766w767w766w7+7w7+7w7+7w7+6 + w8C7w7+7w8C8w8C8w8C8w8C9w8G8w8C8w8C8w8G9w8C8wsC8wr+8w7+9wr+8wr+8w8C8w8C8w8C8w8C8 + w8C8w8C8w8C8xMC8xMC8xMC8w8C8w7+7w8C8xMC8xMC7xMC7xMC7xMC8xMC8xMC7xMG8xcG8xcG8xMC8 + xMG8xMG8xMG8xMG8xMG8xMG8xMG8xMC8xMC8xMC8xMG8xMG8xMC8xMG8xMG8xMC8xMG8xMC8xMC8xMC8 + xMG8xMC8xMG9xMG9xMC8xMC8xMC9xMG9xMC8xMC8xcC8xcC8xMG9xcC8xcG9xcC8xcG9xcG9xcG9xcG9 + xcC8xcC8xcC8xcC8xcC8xcC8xcG9xcC8xcG9xcG9xcG9xcG9xcG9xsG9xcG9xcG8xcC8xcC8xcC8xcC8 + xcC8xcC8xcC8xcC8xcC8xL+7xcC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMG8xMC8xMC8xMG8 + xMC8xMC8w8C7w8C7w8C8w8C7w8C7w7+7w7+7w8C7w7+7w7+7w8C7w7+8w7+8w7+8w7+7xMC8w7+7xL+7 + xMC7w7+7xMC7w7+7xMC7xMC7xMC7xMC7xMC7xMC7xMC7xMC7w7+7xL+7xL+7w7+7xL+7w8C7w7+7xMC7 + w7+7xMC7xMC7xMC7xMC7xMC7xMC7xMC7xMC7xMC7w8C7w8C7w8C7w8C7w7+7w8C7w8C7wr+7w8C7wr+7 + w7+7w7+8w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7wr+7wr66wr+6wr66wr66w766wr+6w7+6wr66wr+6 + wr66wr66wr65wr66wr66w766w766w7+7w7+6w767w767w7+7w767w7+7w767w766wr66wr66wr66wr66 + wr66wr66wr66wr66wr67wb26wr26wby6wr26wby6wby6wb26wr26wby5wby5wby5wby5wby5wby5wby4 + wby5wby5wby5wb26wby5wb26wb26wb25wb25wb25wLy5wL25wLy5wLy5wLy5wLy4wLy5v7y5v7y5wLy5 + wL25wLy5wL25wL25wL25wL25wb25wL24wLy4wLy4wLy4wLy4wLy4wLy4v7y4wLy3wLy4v7y4wLy4wLy4 + wLy4wLu4wLu4wbu4wLy5wLu4wLy5wLu4wLy5wLy4wLu4v7u4v7u4v7u4v7u4v7y4v7u4vru4vru3vru3 + vru3vru3vru3vru2vru2vrq2vbq2vbq2vbq2vbq2vbm2vrm2vrm2vbm2vrm2vbm1vrm2vrm2vbq2vrq2 + vrm2vbm1vbq1vbq1vbm1vbq1vrq2vbq1vbq1vbq1vbq1vbq1vbm1vbi1vbi1vbm1vbi1vbm1vbi1vbm1 + vbm1vLm0vLm0vLm0vLm0vLm0vLm0vLi0vLm0vLi0u7i0u7i0vLi0u7izvLe0vLi0vLi0u7ezvLi0u7ez + u7ezu7iyuriyurizurizuriyurezurezurezu7eyurayurezurayurayurayubayurayuraxv7u3v7q2 + vrq2v7q2v7u3v7u2v7u3v7u3v7u2v7u2v7u3v7u2v7y3v7y3v7u3wLy3v7y4v7u4v7y5v7y5v7y5wLy6 + v7y5v7y5wL25wL25wb25wby4wb25wby5wby5wb25wb25wb26wb26wL26wL26wL66wb66wL66wL66wL26 + wL25wL26wL25wb26wL26wb26wL25wLy5wby5wb25wb25wb25wb65wb65wb65wb65wb65wb65wb65wL66 + wb66wb67wb67wr67wr68wr67wr67wr67wb67wr+7wr+7wb67wr+7wr+7wr+6w7+6w8C7w8C7wr+6w8C7 + wsC7wsC7wsC7w8C7wr+8w7+7w7+8w7+7w767w767w7+7w7+7w766w766w766w7+7w7+7w7+7w7+6w7+6 + w8C7w8C7w8C7w8C7xMC8xMC8w8C8w8C8w8C9w8C8wsC9w7+9wr+8w7+8w8C9wr+8w7+8w7+8w7+8xMC8 + xMC8xMC8xMC8xMC8w8C8xMC8w8C8w8C8w8C7xMC8w8C8xMC8xMG8xMC8xMG8xMG8xMG8xMG8xcG8xcG8 + xcG8xMG8xMG8xMG9xMG8w8G8w8C8xMC8xMC8xMG8xMG8xMG8xMG8xMG8xMC9xMG9xcG9xMG9xMG9xMC8 + xcG9xMC9xMC8xMC8xMC8xMC9xMC8xcC8xcC8xcG9xcC9xcG9xcC8xcG9xcG9xcC8xcC9xcC8xcC8xcG9 + xcG9xcC9xcC9xcC8xcG9xcC8xcG9xcG9xcG9xcG9xsG9xcG9xsG9xsG9xcG8xcC8xcG9xcC8xcC8xMC8 + xcC8xMC8xMC8xMC8xcC8xcC8xMG8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMG8xMG9xMC8xMG8xMG8 + xMC8xMC8xMC8w8C7w8C8w7+8w8C7w7+8w8C8w7+8w7+8w7+7w7+8w8C8w7+8w7+8w8C8w8C8xL+8w7+8 + xMC7xMC7w7+7xMC8xMC7xMC7xMC8xMC8xMC8xMC7xMC8xMC7xMC7xMC7xMC7w7+7xMC7w7+7xL+7w8C8 + w8C7xMC8xMC7xMC7xMC8xMC8xMC8xMC8xMC8w8C7w8C7w7+7wsC7w8C7w8C7wr+7w8C8w8C8w7+8w7+8 + wr+7w7+7wr+7w7+7w7+7wr+7w7+7w7+7w7+7w7+7wr+7w7+7w7+7w7+6w7+7w7+7w7+6wr66w766w767 + w766w767w766wr+6wr+6w7+6w7+7w7+7w767w7+7w767w7+7w7+7w767w7+7w7+6w767w767w767w767 + wr66wr67wb26wb66wr27wb26wby6wr26wb26wb26wb25wby5wb26wby5wby5wby5wby5wLy5wby5wby5 + wLy5wby5wby6wb25wby5wby6wb26wb26wb66wb26wLy5wLy5wL25wLy5wLy5v7y5wL25v725wLy5wLy5 + wL25wL25wL25wL25wL25wb25wL25wb25wL24wL24wLy4wLy4wLy4wL24v7y3wLy4wLy4v7y3wLy4wLy4 + wLy4wLy4wLy4wLy5wL24wLy4wLy5wLy5wLy5wLy5wLy5wLy5v7y5v7y4v7u4v7u4v7y4v7y4vru4v7y3 + vru4vru3vru3vrq2vrq2vbq1vbu2vbq1vbq1vrq2vrq2vrq2vrq2vrq2vrq2vrq2vrq2vrq2vrq2vrq2 + vrq2vrq2vbq2vbq1vbu1vru1vrq2vbq1vrq2vrq2vbq1vrq1vbq1vbm1vbm1vbm1vbm1vbm1vbm1vbm1 + vbm1vLm0vbm1vLm0vLq1vLm0vLm0u7m0vLi0vLm0u7i0vLi0u7i0vLi0vLi0vLezu7i0u7i0vLi0u7i0 + u7izu7izu7iyu7izuriyurizurizurezurizurezu7ezurezurayurezurayurezureyuraxv7u3vrq2 + v7q2v7q3v7q2v7u3vrq2v7y2v7u2v7y3v7y3v7y3v7y4v7u3v7u3wLy4v7u4v7u4v7u5wLy5v7y5v725 + v7y5wL26wLy5wL25wb25wb24wb24wb25wb25wb25wb26wL25wL66wL25wL66wL25wL66wL66wL66wL25 + wL66wL66wb66wb25wb25wb25wby5wb25wby4wb25wb25wb25wb65wr66wb65wr65wL65wb65wb65wb65 + wb66wb67wr67wr68wr68wr67wb67wr+7wr67wb66wr+7wb67wr+6wr+6w7+7w7+6w8C7w8C7w8C7wr+7 + wr+6wsC6w7+8w8C8w7+8w7+8w7+8w7+8w7+8w767w766w766w766w766w7+6w7+6w7+7w7+7w8C7w7+7 + w8C7w8C7w8C7xMG8xMC7w8C8w8C7w8C8w8C8wsC8w7+8wr+8w7+8w7+9w7+9w7+8w7+8w7+8xL+8xMC8 + xMC8xMC8w8C8w8C8w8C8w8C8w8C8xMG8xMC8xMG8w8G8xMG8w8C8xMG8xMG8xMG8xMG8xMG8xMG8xMG8 + xMG8xMG8xMG8xMG9xMG9w8C8w8G9xMC8xMG8xMC8xMC9xMG8xcG8xcC8xMC9xMC8xMG9xMG9xMC8xcC9 + xcC9xcC9xMG9xcG9xMC8xMG9xcC9xcC8xcC9xcG9xcG9xcG9xcG9xcC9xcG9xcG9xcG9xcC9xcG+xcC8 + xcC8xcC9xcC9xcC9xsG9xcC8xsG+xsG9xcC9xsG8xcG9xsG9xcG9xcC9xcG8xsG9xcG8xcC8xcC9xcG8 + xMC8xcC8xcC8xMG8xMC8xMC8xMC9xMC8w8C8xMC8w8C8xMC8xMG9xMG9xMC8xcG9xcG9xMC9xMC8xMC9 + xMC9xMC9xMC9xMC8w8C8w7+8xMC8w7+8w7+8w7+8w7+8w7+8w7+8xMC8w8C8w8C8w7+7w7+7xMC7w7+7 + xMC8xMC7xMC8xMG8xMC8xMC8xMC8xMC8xMC8xMC8xMC8w8C7w8C8xMC8w7+7w7+7w8C8w8C8w7+7xMC7 + xMC7w7+8xMC8xMC8xMC8xMC8xMC8w8C8w8C8w7+8w8C7w8C8w8C8wsC7wsC8wr+7wr+8w7+8wr67w7+7 + w7+7w7+7wr66w7+7w7+7w7+7w7+7w8C7w7+7w7+8w7+7wr+7w7+7w7+7w7+7w7+7wr+6w767w7+7w7+7 + w7+7w767w7+7wr+6w7+7wr66w7+7w7+7w7+7w7+7w7+7w7+7w767w7+7wr+7w7+7w7+7wr66wr67wr66 + wb66wb67wb66wb66wr26wb26wb26wr26wb26wb26wb26wb25wb25wby5wb25wby5wLy4wby5wby5wLy4 + wby5wby5wby5wb25wb26wb66wb26wb26wb26wby5wb25wb25wL25wL25wLy4wLy5wby5wLy5v7y5v7y5 + wLy5wLy4wL25wb25wb25wL24wLy4wb25wL24wL24wL24wLy4wL24v7y4wL24v7y3wLy4wLy4wLy4wLy4 + wLy4wLy4wLy4wb25wLy4wLy4wLy5wLy5v7y4wLy5wLy5v7y5v7y5v7y5v7y5v7y4v7y4v7y4v7y4vry3 + v7y3vru2vry3vru2vru2vrq2vru2vbq1vrq1vrq2vbq2vbq2vrq2vrq2vrq2vrq2vrq2vrq2vrq2vrq2 + vrq2vrq2vbq1vbq1vbq1vrq1vbq1vbq1vbq1vru2vrq2vbq1vrm1vbq1vbm1vrm1vbm1vbm1vbm1vbm1 + vbm1vbm0vbq1vbm0vLm0vLq1vLm0vLm0vbm0vLm0vLi0vLi0vLi0vLezvLi0vLezu7i0vLi0vLi0u7ez + u7izu7izu7izu7izu7izu7izu7izu7izurezurezu7eyu7azurayu7ezurayureyurayureyv7u3v7q2 + vrq2v7q2v7u2vru2v7u2v7u2vry3vru2v7y3v7y4v7u3v7y3v7u3v7y4v7y4v7u4v7y5v7y6v7y5v7y5 + v726wL25wL24wL24wL25wb25wb25wb25wb65wL25wL25wL25wL25wL66wL66wL65wL66wb25wL25wL25 + wL66wb66wr26wb26wr25wb25wb25wb25wb24wr25wb25wr65wr65wr65wr65wr65wb65wb65wb65wb66 + wb66wr67wb27wr67wr68wr67wr+8wr67wr67wr67wr+7wr+6wr+7wsC7wr+6wr+6w8C6w8C6w7+6w8C7 + wr+7wsC7wsC7wsC7w7+8w7+8xL+8w767w7+8w767w766w766w767w766w766w7+7xL+6wr+7w8C6wr+7 + w7+6w8C7w8C7w8C7w8C7xMG8w8C7w8C7w8C7wr+8w8C8w7+9wr+8wr69w7+8w7+8w768w7+8xL+9xL+8 + xL+8xL+8xMC8w7+8w8C8w7+8w8C8w8C8w8C8w8C8xMG8xMG8xMG8w8C8xMG8w8G9xMG8xMG9xMG8xMG9 + xMK9xMG9w8G9w8G9w8G9xMG9w8C8w8G8xMC8xMC8xMC8xMC9xMC8xMC8xcG9xMC9xMC8xcC9xcG9xMC9 + xcG9xcC9xcC8xcG9xcC9xMC9xcG9xcG9xcG9xcC9xcG9xcG9xcG9xcG9xcG+xcG9xcC9xcC9xcC9xcC9 + xcC9xcC9xcC9xcC9xsG+xcC9xcG9xcC9xcC9xsG+xcG9xcG9xsG9xcC9xsG+xcG9xcG8xcC9xcG8xcG8 + xMG8xcC9xMC8xMC8xMC9w8C8w8G8xMC9xMC8xMC8w8C8xMG9xMC8xMC9xMG9xMC9xMC9xMC9xMC9xMC9 + xMC9xMC9w8C9xMC9w8C8xMC9w7+8w7+8w7+8w7+8w7+8w7+8w8C8w7+8w7+7w8C8w8C7xMC8w8C8xMC8 + xL+7xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xL+8w8C8xMC8w8C8xMC8w8C8w8C8w8C8 + xMC8xMC8xMC8xMC8xMC8xMC8w8C8w8C8xMC8w8C8w8C8w8C8w7+8wr+7w8C8w8C8w7+8w7+8w7+8w8C8 + w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w8C7w8C7w7+7w7+7wr+7w7+7wr+7w7+7w7+7 + w7+7w7+7wr+6wr+6wr+6wr+6wr+6w7+7wr+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7wr+7wr+7wr+7wb67 + wr66wb66wr66wr26wr67wb26wb26wr66wb25wr66wb25wb25wby5wby5wb25wLy4wby5wb25wby5wb25 + wb25wb25wb26wb26wb26wb66wb66wb66wb26wb26wb25wL26wL25wL25wL25wL25wLy4wLy4wLy5wL25 + wL25wL25wL25wb25wL65wL25wL25wL65wL24wL24wL24wL24v7y3wL24wLy3wLy3v7y3v7y4wLy4wL24 + wLy4wLy4wL25wL24wby4wb25wLy5wLy5wLy4wL25wL25wLy5v7y5v7y5v725v7y5v7y4v7y4v7y3vry4 + v7y4vry3vru3v7u2vru2vru2vru2vrq2vrq2vrq2vrq2vrq2vrq2v7q2vrq2vrq2vrq2v7q2vrq2vrq2 + vrq2vrq2vrq2vru2vrq1vrq1vrq1vbu2vbq2vru2vrq2vrq2vbq1vrq1vbm1vbm1vrm1vbm1vrm1vbm1 + vbm1vbm1vbm1vLm0vLm0vLm0vLm0vLm0vLm0vbm0u7m0vLi0vLi0vLi0vLi0vLezvLi0vLezvLi0vLiz + u7ezvLizu7izu7izu7izu7izvLizu7ezu7ezu7ezu7ezureyurayurayu7ayu7eyu7eyuraxv7u3vrq2 + vru2vru2vrq2v7u3v7u2vry3v7u2v7u3v7y4v7u3v7y3v7y4v7u4v7u4v7u4v7u4v7u4wLy4v7y5v725 + v726v725wL24wb25wb25wb65wr66wb65wb25wLy5wL26wL25wL25wL25wL65wL66wL66wb66wb66wL66 + wL66wL25wr26wb66wr25wb25wr25wry4wb25wb25wr25wr65wr65wr65wr+6wb66wb65wb+6wb+6wb66 + wb+6wr66wr67wr27wr67wr67wr67w7+8w767wr67wr+7wr+7wr+7wr+7wsC7wr+6w7+6wsC7w8C7w8C7 + w8C8wr+7w7+8w7+8w7+8w7+8xL+8w767xL+8w7+8w7+7w767wr+6w7+6w767xL+7w766w7+7wr+7w7+7 + w8C7w8C7w8C7xMC8w8C7w8C7w8C7w8C7wsC8w8C7wsC8w8C8w8C8w7+9w7+9xL+8xL+8xL+8xL+8xL+8 + xL+8xL+8xL68xMC8xMC8xMC8xMC8xMC8xMC8w8C9w8C8xMC9w8C8xMC8xMG9xMG8xMK9xMK9xMK9xMK9 + xMK9xMG9w8G+w8G8w8C9w8G9xMC9xMC9xMC9xMC8xMC9xMG9xMG8xcG9xMC9xcG9xMG9xcC9xMC9xcG+ + xcC9xMG+xcC9xcC9xcG9xcG9xcC9xcG+xcC+xcG+xcC9xcC9xcG+xcG9xcC9xcG9xcG9xcC9xcG+xcC9 + xcG+xcC9xsG9xsG9xcG9xsG9xcG+xcC+xcG+xcC+xcG9xcC+xcG9xcC9xcG8xcC8xMG9xcC9xMG9xMC8 + xMC8xMG8xMG9xMC8xMK9xMG9xMG9xMG9w8C8xMG9w8C8xMC8xMC9xMC9xcG+xMC9xMC+xMC9xMC9xMC9 + xMG+xMG9xMC9xMC9xMC9w8C8xMC9w8C8w7+8w7+8w8C8xMC8w8C8xMC8xMG8xMG8w8C7xMC8w8C7xMC8 + xMC8xMC8xMC8xcG9xMC8xMG8xMC8xMC8xMC8xMC8xL+8w8C8xMC8w8C7w8C8xMC8w7+8xMC8w8C8xMC8 + xMC8xMC8xMC8xMC9w8C8w8C8w8C8w8G8w8C8wsC8w8C8wsC8w8C8w7+8wr+8w7+8w8C8wr+8w8C8w7+8 + w7+7w7+7wsC7w7+7w8C7w8C7wr+7w8C7w8C7w8C7w8C7w8C8w8C8w7+7wr+7w7+7w7+7w7+7w7+7w8C8 + w8C7w7+7w7+7wr+7w7+7wr+6w8C6w7+6w7+7wr+7wsC7w7+7w7+7wr+7wr+7w7+6wr+6wsC7wb+7wb+6 + wr+7wr67wb67wb66wr27wb26wr67wb26wby6wr66wb25wr26wby5wb25wb65wb25wb25wby5wby5wL25 + wL24wb25wb25wb66wb65wr66wb66wb66wb66wb66wb66wb25wb26wb25wL25wby5v724wLy4wL25wL26 + wL25wL65wb65wb65wL25wL25wL24wL24wb65wL24wLy4wL24wLy3wLy3wL24wL24wLy3v723wLy3wLy3 + wL24wb24wb25wLy4wL25wb25wL25wb25wLy6wL25wL25wL25v7y5v7y5v7y5v7y5v7y5v724v7y4v7y3 + vry4v7y3vry3vru2v7u2v7u2v7u2vru2vru2vru2vrq2v7q2v7q2vrq2vrq2v7q2vrq2vrq2vrq2vrq2 + vrq2vrq2vrq2vrq2vrq2vbu2vrq1vrq1vrq1vru2vrq2vbq1vrq1vrq1vbq2vbq2vbm1vrm1vrm1vbm1 + vbm1vbi0vbm1vLm0vLm0vLi0vLm0vLm0vLm0vLizvLmzvLi0u7i0vbizvLi0vLi0vLi0vLi0vLi0u7i0 + vLizvLizu7izu7izu7izvLizvLizu7izu7izu7ezu7ezu7eyu7ayu7ayu7ezu7eyu7ayureyv7u3vrq2 + v7q2vru2v7u2vru2v7u3vru3vru3vru3v7u3v7y4v7u3v7u3v7u4v7u4v7u4v7u4v7u4v7y5v7y5v7y5 + v725v725wL24wL25wb25wb25wb25wb25wb25wb25wL25wL25wL25wL25wL65wL25wL25wL66wL25wb66 + wb25wb66wb66wb25wb25wb25wb25wb25wb25wb25wr25wb65wr65wr65wr65wb+6wb66wb65wb66wr66 + wr66wr66wr67wr67wr67wr67wr67wr67wr67wr67wr67wr+7wr+7wr+7w7+7wr+7wr+6wr+7wr+6wsC7 + w8C7w7+8wr+8w7+8w7+8w7+8xL+8w768w7+7w7+7w7+7w767w767w7+6w7+7w7+7w7+7wr+7w7+6wr+7 + wr+7w7+7xMC8xMC8w8C7w8C7w8C8w7+8w8C8w7+8w7+8w7+8w7+8xL+8w7+8xL+8xL+8xL+8xL+9xL+8 + xL+8xL+8xL+8xL+9w7+9w7+8w7+8w8C8xMC8w8C9w8C8xMC8xMC9xMC9xMG9xMC9xMG9xMG9xMG9xMG9 + w8G9w8K9w8G9w8G9w8G9w8C8w8G9w8G9w8G9w8G9w8C9xMG9xMC9xMG9xMG+xcG9xMG9xMG+xcC9xcG9 + xMG9xMG9xcC9xcC9xcC9xMG+xcC9xcG9xcG+xcC9xcG+xcG9xcC9xcG9xcG+xcG+xcG9xcG9xcG9xcC9 + xcG9xcG9xcG9xcC9xcG+xcG9xcG+xcG+xcG9xcC9xcG9xcG9xcG9xcG9xcK9xMG9xMG8xMG8xMG8xMG9 + xMG9xMG8xMG9xMG9w8G8w8G9w8C8w8C8xMC9xMC9xMC9xMC8xMC9xMC9xMC9xcC+xMC9xMC9xMC9xMG9 + xMC9xMC9xMC9xMC8xMC8xMG8xMC8w8G8xMC8w8C8w8C8w8C8xMC8xMC8w8C8w8C8xMC8xMG8xMC8xMG8 + xMG8xMG8xMC8xMG8xMC8xMG9xMC8xMG8xMC8xMC8xMC8xMC8w8C7xMC8xMC8w8C8xMC8xMC8xMC8xMG8 + xMG8xMC8xMG8xMG8w8C8w8G8w8G8w8C8w8C8w8C8wsC8wsC8wsC8wr+8wr+8w7+8w7+8w7+8w8C7w8C7 + w8C7w8C7w7+7wsC7w8C7w7+7w8C7w8C7w8C7w8C7w8C7xMC8w8C7w8C7w8C7w8C7w8C7w8C7w8C7xMC8 + w8C7w8C7w8C7w7+7w8C7w7+7w8C7w8C7w7+7w7+7w7+7w8C7w7+7w8C7wr+7wr+7wr+6wr+7wb66wb66 + wr66wb66wb66wr66wb26wr66wr26wb66wr66wb65wr66wb25wb25wb25wb25wb25wb25wb25wb25wb25 + wb25wby5wb25wb66wb66wb66wb66wb66wr66wb66wb66wb66wb25wb25wb25wL25wL25wb25wL25wb25 + wb65wb65wL25wL25wb65wL25wb65wL25wb24wL24wL24wL24wL24wL24wLy3wLy3wL24wb24wL24wL24 + wL24wL24wb24wb25wb25wby4wb25wb25wL25wL25wLy5v7y5v7y5v7y5v7y5v7y5v7y4v7y4v7y4v7y4 + v7y4v7y4v7y3v7u2v7u2vru2vru2v7u2vrq2v7q2v7u2v7q2v7q2v7q2v7u3vru3v7q2v7q2v7q2vrq2 + vrq2vrq2vrq2vrq2vrq1vrq2vrq1vrq1vrq1vrq2vrq2vrq1vrq2vrm1vrq2vrm1vrm1vrm1vrm1vbm1 + vbm1vbm1vLm0vbm0vLm0vLm0vbm0vbm0vbm0vbm0vLm0vbi0vLi0vLi0vbi0vLizvLizvLi0vbi0vLi0 + vLi0vLizvLizvLizvLizvLizvLizu7iyu7ezu7eyu7ayu7ezu7ezu7ayu7ezu7ayu7eyu7eyv7u3v7q2 + vrq2vrq3vru3vru2vru3vru3vry4v7y4v7u3v7y3v7y4v7y3v7u4v7u4v7u5v7u4v7u4v7y4v7y4v724 + wL24wL25wL25wL24wL25wb65wb65wb25wb25wL25wL25wL25wL25wb25wL25wL25wL25wb25wL25wb25 + wb66wb25wb25wb25wr25wb25wb25wr25wr25wb26wb66wr66wr65wr+6wb+6wb66wb+6wb65wb+6wr66 + wr67wr66wr67wr67w767wr67wr67wr67wr67wr+7w767wr+8wr+7wr+7w7+7wr+7w8C7wr+7wr+7wsC7 + wsC8w8C8w7+8w768xL+8xL68xL+8xL+8w7+7xL+8w767xL+8w7+7w767w767w7+8w7+7w7+7w7+7w7+7 + xMC8w7+7xMC8xMC8w8C8w8C7w8C7w7+8wsC8w8C8w8C9w7+9w7+8xMC8xL+8xL+8xL+8xL+8xL+8xL+8 + xL+8xL+8xL+8xL+8xL+8w7+8w8C8w8C8xMC9xMC8w8C9xMC8xMC8xMC9xMC9xMG9xMG9xMG9xMG+xMG9 + xMK+w8G9w8G9w8G+wsG9wsG9w8G9w8G8w8G9xMG9w8G9w8C9w8G9xMC9w8G9xMG+xMG+xMG+xMG+xMG+ + xMG+xMG+xMG9xcG+xcG+xMG9xMG+xcG+xcG9xcG+xMG+xcG+xMG+xcG+xcG+xMG9xMG+xcG+xcG+xMK9 + xcG+xcG9xcK9xcG+xcG9xcG9xcK+xMG9xcK9xMK9xMG8xMG9xMG9xMK9xMG9xMK9xMK9xMG9xMG8w8C8 + w8K9xMG9xMC9xMG9w8C8w8C8xMC8w8C8xMC9xMG9xMC9xMC9xMG9xMG9xMC9xMC9xMG9xMC9xMG9xMG9 + xMC9xMG8xMG9xMC8xMC8xMC8xMG8xMG8xMC8xMC8w8C8xMC8xMG8xMG8w8C7xMG8xMG8xMG8xMG8xMG8 + xMG8xMG8xMC8xMC8xMG8xMG8xMG8w8G8w8C8xMC8xMC8xMC8xMC8xMG8xMC8xMG8xMG8w8G8xMC8xMC8 + xMG9xMG9xMG9xMG9w8G8w8G8w8G8w8C8w8C8w8C8w8C8wr+8wr+8wr+8wsC8wsC8wr+7wr+7w8C7w8C7 + w8C7w8C7w8C7w8C7w8C7w8C7w8C7w8C7w8C7w8C7w8C7w8C7xMC8w8C7w8C7w8C7w8C7wsC7w8C7w8C7 + w8C8w8C7xMC7w8C7w8C7wsC7wsC7wr+7w7+7w8C7wr+7w7+7wsC7w8C7wr+6wr+6wb+6wb+6wb+7wr+6 + wr66wr+6wb66wb66wr65wb65wr65wb65wr66wr65wr66wb25wb65wb25wr65wb25wr65wr25wb24wb25 + wb25wr25wb25wr65wb66wb66wb66wb66wb66wb66wb66wb26wb66wb25wb25wb25wb25wb25wb66wb25 + wb65wL26wb66wb65wb65wb25wb65wL65wb24wb24wLy4wL24wL24wb24wLy4wLy4wLy4wL24wL24wb24 + wb25wb25wby4wb25wb25wb25wLy5wb25wL25v7y5wL25wL26v7y5wLy5wLy4v7y5v7y4v7y4v7y4v7y3 + v7y3v7y4v7y3vru2v7y3v7u2v7u2v7u2v7u2v7q2v7q2vru2v7u2v7u3v7q2v7u3v7q2v7q2v7q2v7q2 + vrq2vrq2vrq2vrq2vru2vrq1vru2vru2vru2vrq2vrq2vru2vrq2vrq1vrq1vbm1vrm2vrq2vbm1vbm1 + vbm1vbm1vbm0vLm0vbm0vLm0vLm0vbm0vLm0vLm0vLm0vbi0vLizvLe0vLi0vLi0vbi0vbi0vbi0vLi0 + vLi0vLi0vLizvLizvLizvLizu7eyu7izu7eyu7eyu7eyu7ezu7ezu7ayvLezu7ezu7izu7eyv7q2vbm1 + vbm1vrq2vrq2vrq2vrq2vrq2v7u3vrq2vru2vru3v7u3v7u3vrq3v7u3v7u3vru3v7u4vru3vru3v7u3 + v7u3v7y3wLy3wLy4wLy4wLy4wLy4wby4wLy4wLy4wLy4wLy4v724v724wL24wL24v7y4wLy4wLy4wby5 + wby5wb25wby5wby5wby4wLy4wLy4wby4wb24wb24wb25wb25wb65wb24wb25wb25wb65wb66wb66wr66 + wr26wb26wr67wb26wr26wr66wr67wr67wr66wr67wb67wr67wr67wr67wb+7wr+7wr66wb+7wr+7wb+7 + wr+8wr67wr+8wr67wr68wr68w767w767wr66w7+7w767w7+7wr66wr66wr66wr66wr+7wr+6wr+7wr+7 + w7+7w7+7w7+7w8C8w7+7wr+7w8C7wsC8wr+7w7+8wr+8w768w7+7w7+8w768w767w767w7+7w7+8w7+8 + w7+8w7+8wr+8w7+8w8C8wr+8w7+8wr+7w8C8w8C8wr+7w7+8w8C8w8C8w8C8w8C8w8C8w8C9w8C8w8C9 + w8C8wsC9wsG9wsC9wsC9wsC9wsC8w8C9w8C9w8C8w8C8w8C8w8C9w8C8w8C9w8C8w8C9xMC8w8C8w8C8 + w8C8xMC9w8C8xMG9xMG9w8C8xMC8xMC8xMG9xMG9xMG9xMG9xMG8xMG9xMG9xMG9xMG9xMG9xMG9xMG9 + w8G8xMG8w8G8xMG8w8G8w8G8w8G8w8G8w8G8xMG8w8G8w8C8w8G8xMG8w8G8w8G8w8G8w8G9w8G8w8C8 + wsC8w8C8w8C8w8C8wsC8w8C8wsC8wsC8w8C8w8C8w8C8w8C8wsC8w8C8w8C8xMC9w8C8w8C8w8C8w8C8 + w8C8w8C8w8C8w8C8w8C8w8C8w8C8w8C8w8C7w8C8w8C7w8C7w8C8w8C8wsC7w8C8w8C7w8C8w8C8w8C8 + w8C8xMG8xMC8w8C7w8C8w8C8w8C8w8C8w8C8w7+7w8C8w7+7wr+7w7+7wr+7w8C7w8C8w8C8w8C8xMC8 + w8C8xMG8w8G8w8G8w8C8w8C8w8C8w8C8wsC8wr+8wr+8wr67wr67wr67wr67wr+7wr+7wr+7wr+7w7+7 + wr+7wr+7wr+7wr+7wr+7wr+7w7+7wr+7wr+7w7+7wr+6w8C7w7+7w7+7w7+7wr+7w7+7wr+7wr+7w7+7 + w7+7w7+7wsC6wr+6wr+6wr+6wr+6wr+6wr+6wr+6wr+6wr+7wr+6wr66wr+6wr+6wr+6wb+6wr66wr66 + wr66wb66wb66wb65wr25wb65wb65wb25wb24wb24wb24wb24wb24wb24wb24wL24wby4wb24wb24wb24 + wby4wb24wb24wby4wb25wb25wb25wb25wb25wb25wb25wb25wb25wb25wby4wby4wby4wb25wby4wLy4 + wb25wb25wL25wLy4wL25wL24wL24wLy4wLy4wL24wLy4v7y4wLy4wLy4wLy4wLy3wLy3wLy3wLy3wb24 + wb24wLy4wb24wb24wby4wby4wby4wLy4wby4wLy4wLu4wLy4v7u4v7u4v7u4v7u4v7u3v7u4v7u4v7u3 + vru3vru3vru2v7u2vru2vru2vrq2vrq2vrq1vrq2vrq1vru2vrq2vrq1vrq1vrm1vrm1vrm1vrq2vrq2 + vrq2vrq1vrq1vrq1vrq2vrq1vbm0vbq1vbq0vbq1vbm1vbq1vbm0vrq1vbm0vbm0vbm1vbi0vbi0vbi0 + vbi1vbi0vbi0vbi0vLi0vLi0vLi0vLi0vLizvLizvLizvLizvLizvLizvLezvLezvLezvLezvLezvLez + vLezvLezvLezu7eyu7ayu7eyurayurayureyurayurayurayurayurayu7ayu7ayu7eyu7ayvrq2vbm1 + vbm1vrq2vrq2vrq2vbq2vru2vrq2vru2vru2v7u2v7u3v7u3v7u3vrq3vrq3v7u3vrq2vru3v7u3v7u3 + v7u2v7u2v7y3wLy3wLy4v7y4wLy4wLy4wLy4v7y4v7y4v7y4v7y3wLy4wL24wLy4wLy4wLy4wLy5wLy4 + wLy5wby5wby5wby5wby5wLy4wLy4wLy4wL24wb24wb25wb25wb25wb25wb66wb25wb66wb26wb26wb26 + wb26wr27wb26wr26wb26wr66wr66wr66wb66wr67wr67wr67wb66wb66wb66wb66wb66wr+7wb67wb67 + wb67wb67wb67wr67wr67wr67w767wr67w7+7wr+7wr66wr+6wr+6wr66wr+6wr+6wr+6w7+7wr+6wsC7 + wr+6wsC7w767w8C7w8C7w7+7w7+7wr+7wr+7wr+8wr67w7+8w7+7w767w7+7w7+7w7+7w7+7w7+7w7+7 + w7+7wr+7w7+8wr+7w8C7wr+7wsC7wr+7wsC7wr+8wsC8wr+8wsC8wsC8w8C8w8C8w8C8w8C8wsC8wsC8 + wsC9wsC9wsC9wsC9wsC8w8C8wsC8wsC8w8C8w8C8w8C8w8C8w8C8w8C8w8C8w8G8w8G8w8C8w8C8w8C8 + w8C8w8C8w8C8xMC8w8C8w8C8w8C8w8C8w8C8w8C8w8C8w8C8xMG9xMG8xMG8xMG8xMC8w8G8xMC9xMC8 + w8G8w8G8w8G8w8G8w8G8w8G8w8C8w8G8w8C8w8G8w8C8w8C8w8C8w8G8w8G8xMG9w8G9xMG8w8C8w8C9 + w8C8wsC8wr+7w8C8wsC7wr+8wr+8wr+8wr+8wr+8w7+8w7+8w7+8w7+8w8C8w8C8w8C8w8C8w8C8w8C8 + w7+8wr+8w7+8wr+8w8C8xMC8w8C7xMC8wsC8w8C8wsC8xMC8xMC7w8C8w8C8w8C7w8C7xMC8w8C7wsC8 + wsC7w8C8xMC7w8C8w8C8w8C8wsC7w8C7w8C7w8C7w8C7w7+7wr+7wr+7w7+7w7+7w7+7w7+7w7+7w8C8 + w8C8w8C8w8C8w8C8w8C8wsC8wsC8wsC8wr+7wr67wr+7wr67wr66wr67wr66wr66wr67wr66wr+7wr+7 + wr+7w7+7wr+7w7+6wr66wr+7wr+7wr+6wr66wr66wr66wr+7w7+6w7+6wr66wr+6wr66wr66wr+6wr66 + wr66w7+6w7+6wr66wr+6wr66wr66wr+6wr66wr66wr66wr66wr66wr+6wb66wr+6wr+6wb66wr66wr66 + wb66wr26wb25wb25wL25wb25wb24wb24wb24wb24wb24wb24wby4wb24wb24wb24wb24wb24wL24wLy4 + wby4wL24wby4wby4wby4wby4wby4wby4wb25wb25wby4wb25wby4wby4wby4wby4wby4wby4wLy4wLy4 + wLy4wLy4wLy4wLy4wLy4wLy4wLy4wLy4wLy4wLy4wLy4wLy3wLy4v7u4wLy4wLy3wLy3v7u3wLy3wLy3 + wLy4wL24wLy3wby4wLy4wLu4wLy4wLu4wLy4wLu4wby4v7u4v7u3v7u3v7u3v7u3v7u3v7q3vru3vru2 + vrq2vrq2vrq2vrq2vrq2vrq1vrq1vrq1vrq1vrq2vrq1vrq1vrq1vrm1vrm1vrm1vrm1vrm1vrm1vrm1 + vrm1vrm2vrq2vrm1vrq1vrq1vbq1vbm1vbm0vbm0vbq0vLm0vbm1vbq1vbm0vLm0vbi0vLi0vLi0vbi1 + vbi1vbi0vbi0vLi0vLi0vLizvLizvLizvLizvLizvLizvLizvLezu7ezu7eyvLezu7ezu7ezvLezvLez + u7ezu7ezu7eyu7ayu7ayurayurayurayurayurayurayureyurayurWyurWyurWyu7ayuraxv7u3vrq2 + vbq2vbu2vbq1vru2vru1vru2vru2v7u2vru3v7u2v7q3v7u3v7u3v7q3vrq3vrq2vru2vrq3v7u3v7u2 + v7u2v7y3wLu3wLu3v7y3wLu3wLy4wLy4v7y4v7y3wL24wL24wL24v7y3v7y3wLy4wLy4wLy4wLy4wLy5 + wby5wLy5wLy5wby5wLy5wLy5wby4wby5wb25wL24wL25wb25wL25wb25wb25wL65wb26wb26wb26wr66 + wr66wb66wr26wr26wr26wr66wr66wb66wr67wr66wb67wr67wb66wr67wb+7wb66wb+6wr+7wb+7wb67 + wb+7wr68wr67wr67wr67wb67w767w7+7wr+6w7+7wr66wr+6wr+6wr66wr+6wr+6wr+6wr+6w8C7w7+7 + w8C7w7+7w8C7wr+7w8C8w7+7w8C8w7+8wr+7wr+7wr67wr+8w7+8w767w7+7w7+7w7+7w7+7w7+7w7+7 + w8C7w7+7wr+7wr+7wsC7wr+6wr+7w8C7wr+7w8C7wr+7wsC8wsC8w8C8wsC8wsC8w8C9w8G8w8C9wsC9 + wsC9wsC9wsC9wsC9wsC9wr+8w7+8wsC8w8C8w8C8w8C8wsC8xMC8w8C8w8C8w8C8xMC8w8C8w8C8w8C8 + w8C8w8C7w8C8w8C7w8C8w8C7w8C8w8C8w8G8w8G8w8C8xMG8w8G8xMG9w8G8xMG9xMG9xMG9w8G8w8K8 + xMG8w8G8xMG8w8G8xMG8xMC8xMG8w8G8xMG8xMG8xMC8w8C8w8C8xMG8xMG9w8G8xMG8w8G8xMC9w8G9 + wsC8wr+8wsC8wsC8wr+8w7+8w7+8w7+8wr+8wr+8w7+8w8C8w8C8wr+8wsC8w7+8w7+8w8C8w7+7w7+8 + w7+7w7+8w7+7w7+7xMC8w7+7w8C8w8C7w8C8xMC8xMC8w8C7xMC8w8C8xMC7w8C8xMC8xMC8w8C8w8C8 + w8C7w8C8w8C8w7+7w8C7xMC7w8C7wsC7w7+7wr+6wsC7w8C7wr+6w7+7w7+7w8C7w7+7w7+7w8C8w7+7 + w8C8w8C8w8C8w8C8wsC8wsC8wsC8wsC7wr+7wr67wr+7wr66wr66wr66wr67wr66wr66wr66wr+7wr+7 + wr+7wr+7wr+7wr+7w7+7w7+7w7+7wr66w7+7w7+7wr+6w7+6wr+7wr+6wr66wr66wr66wr+6wr67wr66 + wr66w7+7wr66wr66wr66wr66wr66wr66wr+6wr66wr+6wr66wr+6wr+6wb66wb+6wr66wr66wr66wr66 + wb25wb26wb65wr65wb25wb64wb24wb64wb64wb64wb24wL24wb24wb65wb24wby4wb24wLy4wb24wb24 + wb24wL24wby4wby4wby4wby4wby4wby4wb25wr25wb25wb25wby4wby4wb25wby4wLy4wby4wLy4wL25 + wLy4wb25wb25wLy4wLy4wLy4wL24wLy5wLy4v7y4wLy4wLu4wLu3v7u3v7u3wLy4wLy3wLy4wb24wLy3 + wLy3wLy3wb24wby3wLy4wby4wLy3wLy4wLu4v7u4v7u3v7u4v7u3v7u3v7u4v7q4v7q3v7u3vru3vru3 + vrq2v7q3vrq2v7u2vrq2vrq1vrq1vrq1vrq2vrq2vrq2vrq1vbq1vrq1vrm1vrm1vrm1vrm1vrm1vrm2 + vrm1vrm1vrm1vbq2vbm1vrm1vrm1vbm1vbm1vbm0vbm0vbm0vbm1vbm0vLm0vbm0vbm1vLi0vbi0vbi0 + vbi0vbm1vbm1vLi0vLi0vLi0vLi0vLizvLizvLizvLizvLi0u7ezu7izvLezvLe0u7ezvLezu7a0vLez + vLezu7eyurayurayurayurayurayurayureyurayurayurayurayurWyurayurayu7ayu7ayv7q3vrq2 + vru2vru2vru2vbu1vru2v7u2v7u2v7u2v7u2v7u3v7u3v7q3v7q3v7q3v7q3vru3vru3vrq2vrq2vrq2 + v7u2v7u2v7y3v7u3v7u3v7y4v7u3v7y4wLy4v7y4v7y4v724v724wLy4v7y4wLy4wLy4wLy5wLy5wLy5 + wby5wby5wby5wby5wLy5wby5wby5wL25wb25wb25wL25wL25wb25wL25wb65wb65wb66wb66wb26wb26 + wr27wb27wr66wr66wr66wr66wr66wb66wr66wr+6wb66wb66wb67wr+7wb66wr67wr67wr67wb+7wb67 + wb67wb67wb67wb67wr67wr67wr66wr66wr+6wr66wr+7w7+7wr+6wr+6w7+6wr+6wr+7w8C7w8C7w8C7 + w8C7w8C7w8C7w7+7w7+7wsC8wr+7wr+7wr+8wr+8wr+8w7+8wr67w7+7w766w7+7w7+7w7+7w7+7w7+7 + wr+6w7+7w7+6wr+6xL+7w7+7w7+6w7+6wsC7w8C8w7+8w8C8w8C8w8C8w8C8w8C8w8C8w8C9wsC8w8C9 + wsC9wsC9wsC8wsC9wsC9wr+8w7+8w7+8w7+8w7+8w7+8xL+8w8C8w8C8w7+8w8C8w8C8w7+8xMC8w8C8 + xMC8w8C8w7+8w8C8w8C8w8C8w8C8w8C8xMC8w8C8w8C8xMC8xMG8xMG8xMG9xMG8xMG8xMG8xMG8xMG8 + xMG8xMG8xMG8xMG8xMG8xMG8xMG8xMG8xMG8xMG8w8G9xMG8xcG9xMG8w8C8xMG8xMC9xMC9w8C9xMC9 + w8C8xL+8wr+8w7+8wr67w7+8wr+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8wr+8w7+8w7+8w7+8w7+7xMC7 + w8C8w7+7xMC8w8C8w8C8w7+7xMC8w7+7w8C8w8C8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8w8C7w7+8 + w8C8w8C7w8C7xMC8w8C7w7+7w8C7w8C7wsC7wr+7w7+6w7+7wr+6w7+7w7+7w7+7w7+7w7+7w8C8w7+7 + wr+7w8C8w8C8w8C8w8C8wr+8w7+8w7+8wr67wr+7wr+7wr67wr66wr+7wr+6wr66wr66wr66wr66wr66 + wr+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7wr66wr66wr66wr66wr66wr66wr+6wr66wr66wr66wr66 + wr66wr66wr66wr66wr66wr66wr66wr66wr66wr66wr66wr+6wr+6wr66wr+7wr66wb66wr+6wr66wb26 + wr66wr66wr65wb65wb65wb64wb24wb24wb24wb24wb24wb24wr24wb24wb24wr25wb24wb24wb24wr24 + wb24wb24wby4wb24wby4wby4wby4wby4wb25wby4wby4wby4wby4wby4wby4wby4wby4wby4wby4wLy4 + wLy4wLy4wLy4wLy4wLy4wLy4wLy4wLy4wLy4wLy4v7u4wLy4wLy4v7y4v7u4wLy4wLy3wLy4wLy3wLy4 + wLy4wLy4wLy4wLy3wLy4wLy4wLy4wLu4v7u5wLu4wLu4v7u3v7u4v7u3v7u3v7u4v7u3v7u3v7q3v7q2 + vrq3vru3vrq2vrq2vrq2vrq2vrq2vrq2vrq2vrq1vrq1vrq2vrq1vrm2vrm1vrm2vrm1vrm2vrm1vrm2 + vrm2vrm2vrm2vrm1vbm1vrq2vbm1vbm1vbm1vbm1vbm1vbm1vbm1vbm1vbm1vbm0vbi1vbm1vbm1vbi1 + vbi1vLi0vbi1vbi1vLi0vLi0vLi0vLi0vLi0vLi0vLi0vLizu7izu7izu7ezu7ezvLezvLe0u7azvLez + vLezu7azu7eyurayu7ayurayurayureyureyureyurayurayurWyurayurazurazu7ayu7ayv7u3vru2 + vbq2vru2vbu1vru2vru2vru2v7u2v7u3v7u3v7u3v7u3v7q3v7q3v7u3vru3vru3vrq3vru3vrq2vrq2 + v7q2v7u2v7u3v7u3v7u3wLy3v7y4v7y4v7y4v7y5v725v7y4v7y4v7y4v7y5wLy5wLy5wLy5wLy5wLy5 + wby5wby5wLy5wby5wby5wL25wb25wL25wb25wL25wb25wb65wb65wL65wb66wb65wb66wb66wr66wr67 + wr67wr67wb66wr66wr66wr26wr66wr66wr+6wr66wr66wr+6wb66wb67wr66wr+7wr67wr67wb67wr68 + wr+7wb+8wb67wb67wb67wr66wr66wr+6wr66wr+6w7+6wr+7w8C7wr+6w7+6wr+6w7+6w8C7wsC7w8C7 + w7+7w8C7w7+7w7+7wsC7wr+7w7+7w8C8w7+8w7+8w7+8w7+8w7+7w7+7xL+7w7+7w7+7w7+7w7+7w7+7 + w7+7w7+6w7+6w8C6w8C7wsC7wr+6w7+7w8C8w8C8wr+7w8C8w8C8w8C8w8C8w8C8w8C8w8C8w8C8w8C9 + wsC8w8C9w8C9wsC9wr+8wr+8w7+8w7+8w8C8w8C9w7+8xL+8w8C8w7+8w7+8xL+8xL+8xL+8w7+8xL+8 + w7+8w7+8xL+8w7+8xL+8xMC8w8C8xMC8xMC8xMC8xMC8xMC8xMG8xMG8xMC9xMG8xcG9xMG8xMG9xMG9 + xMG9xMC9xMC8xMG8xMG9xMG8xMC8xMG8xcG9xcG9xMG9xMC9xMC8xMC9xMC8xMC9xMC9xMC9xMG9w8C8 + xMC8w7+8w7+8wr+8w7+8w7+8wr+8w7+8w7+8w7+8wr+8w7+8w7+8w7+8wr+7w7+7w7+8w7+7w8C7w7+7 + w7+7w7+7w7+7w7+7xMC8xMC8xMC8xMC8xMC8xMC8xMG9xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8 + w7+7xMC8xMC8w8C7w8C7w8C7w8C7w7+7w7+7w7+7wr+6w7+7w7+7w7+7w7+7w8C7w7+7w7+8w7+7w8C7 + w8C8w8C8w8C8w7+8w7+8w8C8w7+8w7+7w7+8w7+8w7+7wr+6w7+7w7+7w7+6wr66wr67wr+7wr66wr+7 + wr66wr66w7+7w7+7w7+7w7+7w7+7w7+7wr66wr66wr66wr66wr66wr66wr66wr66wr66wr66wr66wr66 + wr66wr66wr66wr66wr66wr66wr66wr66w7+7wr66wr+6wr66wr+7wr+7wr66wr66wr66wb26wr66wb26 + wr66wb25wr65wb65wr64wb24wb64wb64wb24wb64wb24wb25wb64wr25wb24wr65wr24wr24wb24wby4 + wby5wr25wby5wb24wb24wby4wby4wby4wr25wb25wby4wby4wby5wby4wby4wby4wby4wby4wby4wby5 + wby4wLy4wLy5wLy4wLy4wLy4wLy5wLy4wLy4wLy5v7u4wLy4wLy4wLy4wLy4wLy4v7y4wLy4wLy4wLy4 + wLy4wLy4wLy4wLy4wby4wLy4wLu4wLu4wLu4wLu4wLu4v7u4v7u3v7u4v7u4v7u4v7u3v7u4v7u3vrq3 + vrq4vrq3vrq3vrq2vrq3vrq2vrq2vrq1vrq1vrq2vrq2vrq2vrq2vrq2vrm2vrm2vrm1vrm1vrm2vrm2 + vrm2vrq3vrq2vrq2vrq2vrq1vrq2vbm1vbm1vbm1vbm1vbm1vbm1vbm0vLm1vbm1vbm1vbm1vbi1vbi1 + vbi0vbi1vbm1vbi1vLi0vLi0vLi0vLi0vLi0vLi0vLi0vLi0vLi0u7izvLezu7izu7ezvLe0vLe0vLe0 + vLe0u7ezu7eyu7ezureyurayureyureyureyurayurayurayurWyurWyurWyurazu7ayu7ayv7u3vru2 + vru2vru2vbu2vru2vru2vru2v7u2v7u2v7u3v7u3v7q3v7q3v7q3v7u4v7u3vrq2vru2vrq2vru2v7u2 + v7q2v7q2v7u2v7u3v7u3v7u4v7y4v7y5v7y4v7y5v725v725v7y4wLy5v7y4wLy5wLy5wLy5wLy5wLy5 + wLy5wby5wby5wLy5wb25wb25wb25wb25wb65wL65wb65wb65wb65wL65wb66wb66wb66wb66wb66wr67 + wb26wr66wr66wr66wr66wr66wr65wr66wb66wb65wr66wb66wr66wr66wr66wr+7wr67wb+7wb+7wb67 + wb67wb67wb67wb67wr67wb67wr66wr+6wr66wr+7wr+6w7+7wsC6w7+6wr+6w7+7wr+6w7+7w7+7w7+7 + w8C7w7+7w7+7w8C8w7+7w7+7wr+7wr+7w7+7w7+8w768w7+7w767w7+7w767w7+7w7+7xL+7xL+7w7+7 + xL+7w8C7xMC7xMC7w7+6w7+6w8C7w7+7w8C7xMC8w7+7w8C8w7+7w8C8w8C8w8C8xMC8w8C8w8C8w8C8 + w8C8wsC8w8C9w8C8w8C8w7+8w8C8w7+8xL+8w7+8w7+8w7+8xL+8xL+8xL+8xL+8xL+8xL+8w7+8xL+8 + xL+8xL+8w7+8w7+7xL+8xL+8xMC8w7+7xMC8xMC8xMC8xL+8xMC8xMC9xMC8xMC8xMC8xcC9xcG9xcC9 + xMC8xMC8xcG9xMC8xMG9xMG9xMC9xMC8xcC9xcG9xcG9xcG9xMG9xcG9xMG9xcG9xcG9xMC9xMC9xMC8 + w7+8xMC8w7+8w7+8w7+8w7+8w7+8w7+8w7+7w7+7w7+7w7+8w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7 + w7+7w7+7w7+7w7+7xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8w7+8w8C8 + xMC8w8C7w8C7w7+7w8C7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7wr+7wr+7wsC7 + wsC8w8C8w8C8w8C8w8C8w7+8w7+8w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7 + w7+7w7+7w7+7w7+7w7+7wr67w7+7w7+7w7+7wr66wr66wr66wr66wr66wr67wr66wr66wr66wr66wr66 + wr66wr66wr66wr66wr67wr66wr67wr66wr67wr+7wb66wr66wr66wr66wr67wb66wb26wr66wr66wr66 + wr65wb26wr66wr65wb25wb65wb65wb65wb65wb65wb65wb65wb24wr25wr25wr65wr25wr25wr25wr25 + wb25wr25wb25wb24wb24wby5wby5wby4wby4wby4wb25wby5wby4wby4wby4wby5wLy4wby5wby4wby4 + wLy5wby4wLy4wLy5wLy4wLy5wLy4wLy5wLy5wLy4wLy4wLy4wLy4v7y4wLy4wLy4wLy4wLy4wLy4wLy4 + wLy3wLy4wLy4wLy4v7u3wLy4wLu4wLu4wLu4v7u4v7u4v7u4v7u4v7u4v7u4v7q3v7u3v7u4v7u4vrq3 + v7u3vrq2vrq2vrq2v7u3vrq3vrq2vrq2vru2vrq2vrq2vrq2vbq2vrq2vrm2vbq1vbq2vrm2vrm2vrm2 + vrm2vrm2vrm2vrm2vrm2vrq2vrm2vbm1vbm1vbm1vbm1vbm1vbm1vbm1vbm1vbm1vLm1vLi1vLi1vbi1 + vbi1vbi1vbi2vbm1vLi0vLm1vLm0vLm1vLm1vLi0vLi0vLi0vLi0vLi0vLe0vLe0vLe0vLe0vLe0vLe0 + vLezu7e0u7ezureyu7ayureyureyureyureyureyureyurayurayurayurayu7azurayurayv7u3vru2 + vbu2vru2vbq1vru2vru2v7u2v7u3v7u3v7q3v7q3v7u4wLu4v7u3v7u3v7u3vru2vru3vrq3v7u2v7u2 + v7q2v7u3v7u2v7u3v7u4wLu4v7y5v7y5v7y4vry4v725v725v7y5v7y5v7y4v7y5wLy5wb25wLy5wby5 + wLy5wby5wby5wb25wL25wb25wb25wb65wb65wb25wb65wb65wL65wL66wL65wb66wb66wb66wr26wb66 + wr67wr66wr66wr66wr65wr66wr66wr66wr+6wr+6wb65wr65wb+6wb66wr66wr67wr+7wr+7wb+7wr67 + wr67wb68wr68wr26wb26wr66wr66wr+6w7+6w7+7wr+6w8C7w8C7w8C7w8C7w8C7w7+7wr+7w7+7w7+7 + w7+7w8C7w7+7w7+7w8C7w7+7w7+7w8C8w7+8xL+8w767xL+7w7+7w766xL+7w7+6w7+6w7+7w7+7w7+6 + xMC7xMC7xMC7xMC7xMC7w7+7w7+7w8C7w8C7w7+7xMC8w7+7xMC8w8C8xMC8w8C8w8C7xMC8w8C8w8C8 + w8C8w8C9w7+8w8C8w8C9xMC8xMC8xL+8xL+8w7+8xL+8xL+8xL+8xL+8xL68w7+8xL68xL+8xL+8xL+8 + w7+8xL+8xL+8xL+8xL+8xL+8xL+8xMC8xL+7xMC8xMC8xMC8xMC8xMC8xMC8xcG9xMC8xMC8xMC8xMC8 + xcC9xMC8xcC9xMG8xcC9xMC8xcC9xMC8xcG9xcG9xcG9xcG9xcG9xcG9xcG9xcG9xMG9xcG9xcG9xMC8 + w8C8xMC9w7+8w7+8w8C7w7+7w7+8w7+7w7+7xMC8w7+8w7+8w7+8w7+7w7+7w7+7w7+7w7+7w7+7w7+7 + w7+7w7+7xMC8w7+7xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8w8C8xMC8xMC8xMC8xMC8xMC8xMC8xMC8 + xMC8xMC8w7+7w7+7w8C7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+8w8C7w7+7wr+7w8C8wr+8wr+8 + wsC7w8C8w7+8wr+8w8C8w7+8w7+7w7+8w7+7w7+7wr67w7+7w7+8w7+8w7+7w7+8w7+7w7+7w7+7w7+7 + w7+7w7+8w7+8w7+7w7+7w7+8w7+8wr67w7+7wr67wr67wr66wr66wr66wr66wr66wr66wr+6wr66wr66 + wr66wr66w7+7wr67wr67wr67wr67wr66w767wb66wr66wr+7wr+8wr67wr66wr27wb26wb26wr67wr66 + wr26wr65wb25wb25wr66wr65wr66wb65wr65wb65wb65wb65wb24wb25wb25wr25wr25wr65wr25wr66 + wr25wb25wb25wb25wb25wby5wby5wby4wby4wby4wb25wby5wby5wby4wby4wby5wLu4wby5wby5wLy5 + wLy5wLy5wby5wby5wby5wLy4wLy5wLy5wLy5wLy5wLy5wLy5v7u4v7y4wLy4v7y4wLy4wLy4wLy4wLy4 + wb25wLy4wLy4v7y4v7u4wLu5wLy5v7u4v7u5v7u4v7u4v7u5v7u4v7u4v7u4v7u4v7q3v7q3v7u4vrq3 + v7u3v7u3v7u3vru2vrq3vrq3vrq2vru2v7u3vrq2vru2vrq2vrq2vbm1vrq2vbm1vrq2vrm2vrm2vrm2 + vrm2vrm2vrq2vrq2vrq2vrm2vrq2vbq2vbq1vbq1vbm1vbm1vbq1vbq2vbm1vbq2vbm2vbm1vbm1vLi1 + vbm2vbm1vLi1vbm1vbm1vLi0vbm1vLi0vLi0vbm1vLi0vLi0vLi0vLe0vLi0vLi0vLe0vLi0vLi0vLi0 + vLezvLezu7ezu7eyureyureyureyureyureyureyureyurayurayurayurayureyurayurayv7y3vru2 + vru2vbu2vbu2vru2vru2v7u2v7q3v7u2v7u3v7q3v7u4wLu4v7u4vru3v7u3v7u2vru2v7q2v7u3v7q2 + v7u3v7u3v7q3v7u3v7u4v7u4v7u4v7y4v7y5vr25v725v7y5v7y5v7y5v7y5wLy5wby5wb25wb25wL25 + wb25wb25wb25wb25wb25wb66wb25wb65wb65wL65wL65wL65wL65wb65wb65wb66wr66wr67wr67wr67 + wr66wr66wr66wr66wr66wr66wr+6wr65wr+6wr+6wr65wr66wr66wr+6wr66wb66wr67wr67wr67wr67 + wr67wr68wr67wr27wb27wr66wr66wr66wr+6w8C7w7+7wr+7w8C7w8C7wr+6w7+7w8C7xL+7w8C7w7+7 + xL+8w8C7w8C8w7+7w7+7w7+7w8C8wr67w767w7+7w767w7+6xL+7w766w7+7xL+7xL+7xL+7w7+6xMC7 + xMC7xMC7xMC7xMC7w7+7w7+7w7+7xMC7xMC7xMC7w7+7w7+7w7+7w8C7xMC8w7+7xMC8xMC8w8C8w8C8 + w8C8w8C8w8G8xMC8w7+8w8C8xL+8xL+8xL+8w7+8xL+8w7+8xL+8xL+8xL+8xL+8xL+8xL+8xL+8w7+8 + w7+8w768xL+8xL+8xL+8xL+8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC9xMC8xMC9xMG9xMC9xMC9 + xcG9xMC8xMC8xMC8xcG9xMG9xcG9xMC9xcG9xcG9xcG9xMC9xMC8xcG9xcG9xMC9xcG9xMC9xMC9xMC9 + xMC8xMC8xMC8xMC8w8C8xMC8xMC8w7+7w7+8w7+7w7+8xMC8w7+7w7+8xMC8w7+7w7+8w7+8w7+7w7+7 + w7+7w7+8w7+8xL+8xMC8xMC8xMC8xMC8xMC8xMC8xMC9xMC8xMC9xMC8xMC8xMC8xMC8w7+7xMC9w8C8 + xMC8w8C8w7+8xMC8w8C8w7+7w7+7w7+8w7+8w8C8w7+7w7+7w7+7w7+7wr+8wr+8wr+7w8C8wsC8w7+8 + wr+8wr+7w7+9w7+8wsC8w7+7w7+7w7+8wr+7w7+7wr67w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+7w7+8 + w7+8w7+7w7+7w7+7w7+8w7+7w7+7w7+7wr67wr67wr67wr67wr66wr67wr66wr+6wr+7wr67wr+7wr67 + wr+7wr67wr67w7+7wr67wr+7wr+7wr+6w7+7wb+7wr67wr+7wb67wb66wb67wb66wr66wb26wb26wr66 + wr66wr66wr65wr66wr25wb65wr66wb25wb65wb65wb65wb65wr66wr66wr26wr65wr66wr25wr66wr65 + wr66wr26wr25wb65wby5wb25wr25wby5wby5wby5wby5wby5wby5wby5wby5wby5wb25wLy4wby5wLy5 + wby5wby5wLy5wLy5wLy5wLy5wLy5wLy5wLy5wLy5wLy5wLy4wLy4wLy4wLy4wLy4wLy4wL24wLy4wLy4 + wLy4wLy4v7y4wLy4wLy4v7u4v7u4v7u4v7u4v7u4v7u4v7u4v7u4v7u4v7u4v7u4v7u4v7u4v7u4v7u3 + v7u4v7u3v7u3v7u3vrq3vru2vrq2vru2vrq2vrq2vrq2vru2vrq2vrq2vrq2vbm1vbm1vrm2vrm2vrm2 + vrq2vrq2vrm2vrq2vrq2vrq2vbm1vrq2vbm1vbq1vbm1vbq1vbm1vbq2vbm1vbm1vbm1vbm2vbi1vbi1 + vbm1vbm1vbq2vLm1vLm1vLm0vLm0vLm0vLm0vLm0vLm0vLm0vLi0vLi0vLi0vLe0vLi0vLe0vLi0vLe0 + vLe0u7ezu7ezu7iyurezureyureyureyureyureyureyureyurayureyurazurayurayurayv7y3vru2 + vru2vbu2vru2vru2v7u2vru3vrq2vrq3wLu4v7u4v7q3v7u4v7u3v7u3v7u3v7u3vry3v7u3vru3v7u2 + v7q2v7q3v7u3v7u3v7u3v7y4v7y4vry4v7y4vr25vr25v7y5v7y5wL25v725wL25wL25wL25wL25wb25 + wb25wb25wb25wb25wb65wb25wb25wb66wb65wb+5wL65wL65wb66wb66wb66wb65wr67wr26wr66wr67 + wr67wr66wr66wr65wr+6wr66wr65w766wr66wr65wr65wr65wr66wr66wr66wr66wb66wr67wr67wr67 + wr67wr27wr67wr26wb27wr67wr66wb66wr+7w7+7wsC7w8C7wsC7w8C7w8C7w7+7w7+6w8C7xL+7xMC7 + w7+7w7+7w8C8w8C8w7+8w8C8w7+7w768w7+8w767w767xL+7xL+7w766xL+7w7+6xL+7xMC6w7+6xMC7 + xMC7xMC7xMC7xMC7xMC6xMC7xMC7w7+7w7+7xMC7xL+8w8C7xMC8xMC8xMC8w8C8w8C7w8C8xMC9xMC8 + xMC8xMC8w8G8w8C8w7+8xMC8xL+8xMC8w7+7xL+7xL+7xL+7xL+8xL+8xL68xL+8w7+8xL+8xL+7xL+8 + xL+8xL+8xL+8xMC8xL+8xMC8xL+8xMC8xMC8xMC8xMC8xMC8xMC8xL+8xMG9xcG8xMC9xMG8xcC8xcC9 + xcC9xMC8xcG9xMC9xcG9xcG9xMC9xMC8xMC8xMC9xcG9xcG9xcG9xcG9xcG8xcG9xMC9xMC8xMG9xMC8 + xcG8w7+8xMC8w7+7xMC8w8C8w7+8xMC8w7+8w7+7w7+7w7+7w7+8xMC8w7+7w7+8w7+7w7+7xMC8w7+8 + w7+8w7+8xMC8w7+8w7+7xMC8xMC8w7+9xMC8xMC9xMC8xMC9xMC9xL+8xMC9w7+8xMC8xMC9xMC8w8C8 + xMC8xMC9xMC8w7+8w8C8xMC8w8C8w8C8w7+7w7+7w7+7w7+8w7+8wr+8w8C9w8C9wr+8wr+9w8C9w7+8 + w8C9w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8 + w7+8w767w7+7wr67wr67w767wr67w7+8wr+7wr67wr+6wb66wr66wr66wr67wr67w7+8wr+7wr67wr+7 + w7+7w7+8wr67wr67wr67wr+7wr+6wr+8wr+8wr+7wb67wb67wb67wb27wb66wr66wr67wr67wr66wb26 + wb66wb65wr66wr66wb25wr66wr66wr66wr66wr26wb65wr66wr+6wr66wr66wr66wr26wr66wr26wb25 + wr26wb25wr26wby5wb25wb25wby4wr26wr26wby5wb25wby5wby5wby5wby5wby5wLy4wby5wby5wLy4 + wby5wL25wby5wby5wb25wLy5wLy5wLy5wLy5wLy4wLy5wLy4wLy4v7y4v7y4v7y4wLy4wLy4wL24wL24 + wLy4wby4wLy4wL24v7y4v7u4v7u4v7u4v7u4v7u4v7q3v7u4v7u4wLy4v7u4v7u4v7u4v7u4v7u4v7u4 + v7u3v7u3vru3v7u3vru2vru2vrq2vru2v7u3vru2vrq2vru3vru2vrq2vrq2vrq2vrm2vrm2vrm2vrm2 + vrq2vrq2vrq2vrm2vrq2vrm2vrq2vbq1vrq2vbq1vbq1vbm1vbq2vLm2vbq1vbq2vbm1vbm1vbm2vbm2 + vbi1vbi1vbm1vbq2vbm1vbm1vLm0vLm1vLm0vbm1vLm1vLm0vLm0vLm1vLi0vLi0vLm1vLe0vLi0vLi0 + vLi0u7izu7izu7eyu7eyureyureyureyu7eyureyu7ezureyureyu7ayu7eyureyurayurayvry3vbu2 + vbu2vbu2vru2vrq2v7u2vrq2v7q3v7q3v7u3v7q4v7q3wLu4v7u3v7y3v7u3vru3v7u3v7u3vru3v7u3 + v7u3v7u3wLu3v7u3v7u3v7u4v7y4v7y4v7y5v7y5v7y5v7y5v7y5v725v726wL25wb25wb25wb25wb25 + wb25wb25wb25wb25wb25wb65wb66wb66wb65wb65wb65wL65wb65wb66wr66wr26wr66wr26wr66wr66 + wr66wr66wr66wr66wr66wr66wr65wr65wr65wr65wr65wr66wr65wr66wr65wb66wr66wr67wr67wr67 + wr67wr27w767wr66wr26wr67wr66wr66wr66wr+7wsC7wsC7w8C7w8C7wr+7w8C7w7+7w8C8w8C7w7+7 + w7+7w7+7w8C8w8C8w8C8w7+8w7+7w7+8w767w767w767w7+6w7+6w7+6w7+7xL+7xL+7xL+7xMC7xMC7 + xMC7xMC7xMC7xMC7xMC7xMC7xMC7xMC8w7+7w7+8w7+8w8C8xMC8xMC8xL+8w8C8xMC8w8C8w8C8w8C8 + w8C8w8C8w8C8w8C8xMC8xMC8xMC8xL+8xL+7xL+8xL+8xL+8xL+7xL+7xL+8xL+7w7+7w7+8w7+7xL+7 + xL+8xL+7xL+8w7+8xMC8xMC8xMC8xMC7xMC8xMC9xMC8xMC8xMC8xMC8xMC8xMC8xMG9xcG9xcC9xcG9 + xMC9xMC8xcG8xcG8xcG9xMC9xMC9xMC9xMC8xcG8xcG9xcG9xcG9xcG9xMC9xMC9xMC8xMC9xcG9xMC8 + xMC8xMC8xMC8xMC8w8C8xMC8w8C8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+7w7+8w7+8w7+8xMC8xMC9 + w7+8xMC8xMC9w7+8xMC8w7+8xMC8xMC8xMC9xMC8xMC9xMC9xMC9xMC9xMC9xMC9w8C8xMC9xMC8xMC9 + xMC8xMC8xMC8xMC9w7+8w8C8w7+8w8C8w7+8w7+8w7+8w8C9wr+8w8C8wsC8wr+9wr+8wr+8w7+8w7+9 + w7+8w7+8w7+8w8C8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8w7+8 + w7+7w7+8w7+8w7+8wr+7w7+7w767wr+7wr+7wr+7wr+7wr+7wr67wr+7wr+7wr+7wr67wr67w7+7w7+7 + wr+7wr+7wr+7w7+7wr+7wr+7wr+7wr+7wr67wb67wb67wb67wb27wr27wb67wr66wr66wr66wr66wb66 + wr66wb66wr66wr66wr66wb66wb65wr66wr66wb25wr66wb65wr66wr66wr66wr26wr66wr66wr66wr26 + wr26wr26wb25wb25wb26wb25wby5wb25wb25wby5wby5wby5wby5wby5wby5wLy4wby5wby5wLy4wby5 + wby5wby5wLy5wb25wL25wL25wLy5wLy5wLy5wLy5wLy5wLy5wLy4wLy5wL24wLy4wLy4wLy4wLy4wLy4 + wLy4v7y4v7y4wLy5v7y4v7y4v7y4v7u4v7u4v7u4v7u3v7u4v7u4v7u4v7u4v7y4v7y4v7y4v7y4v7y3 + v7y3v7u3vry3v7u3vru3v7u3vru2vru2vru2vru2vru2vru2vru2vrq2vrq2vbq1vrq2vrq2vrq2vrq2 + vrq2vrq2vrq2vrq2vrq2vrq2vrq2vrq2vbq1vbq1vbq1vbq1vbq2vrq2vbq1vbq1vbq2vbm1vbm1vbm1 + vbm1vbm1vbq1vbm1vLq1vLm0vLm0vbq1vLm0vLq1vLm1vLm1vLi0vLi0vLi0vLi0vLi0vLi0vLi0vLi0 + vLi0vLi0u7izu7eyu7izureyureyureyu7eyurizureyureyureyurayurezurayu7ayurayv7y3vbu2 + vrq2vbq2vru3vrq2vru3v7q3v7q2v7q3v7q4wLq4v7u4v7u4v7u3v7u4v7u3v7u3v7y3v7y3v7u3v7y3 + v7u3v7y3v7u3v7u4v7u4v7y4v7y4v7y4v7y4vr25v725v7y5v7y5wL25v725wL25wL25wL25wb25wb25 + wb25wb25wb25wb25wb25wb25wb25wb65wb65wL65wb65wL65wb65wb66wr66wr66wr66wr66wr66wr66 + w766wr26wr66wr66wr65wr65w7+6w7+6wr65wr66wr65wr65wr66wr66wb+6wr67wr+6wr66w767wr67 + wr67w767w767wr26wr67wr66wr67wr66wr67wr66w7+7wr+7wsC7w7+7w8C8wsC7w8C7w7+7wr+8w8C8 + w8C8w8C8wr+8wr+7wr+8w7+8wr67w7+7w767w768xL+7w767xL+7w7+7w7+6xMC7xMC8xL+7xMC8xMC7 + xMC7xMC7xMC8xMC7xMC7xMC7xMC8w8C7xMC8xMC8xMC7w7+8xMC8w7+8xMC8w7+8xMC8xMC8xMC9w8C9 + w8C8w8C9xMC8w8C8w8C8xMC7xMC8xL+7xL+8xL+8w7+8xL+8xL+8xL+8xL+7xL+7xL+8w7+8xL+8xL+7 + xL+8xL+8xL+8xL+8xMC8xMC8xMC8xcC9xMG9xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMG9xMC8xcG9 + xcC9xMG8xcG9xcG9xcG9xMC8xcG8xMC9xMG9xMC8xcG8xMC8xcG9xMC9xMG8xMC9xMC9xMC9xMC9xMC8 + xMC9xMC9xMC8w8C8w8C8w8C8xMC8w7+8xMC9xMC9xMC8xMC8xMC9w8C8w8C8xMC8w8C8xMC8w7+8w8C8 + xMC9w7+8xMC9xMC8xMC9xMC8xMC8w8C8xMC9xMC9xMC8xMC9xMC8xMC9xMC9xMC9xMG9xMC9xMC9xMC9 + xMC9xMC9w8C9xMC9xMC9w7+8w8C9wr+8xMC9w8C8wsC9wr+8wsC8wr+8w7+8wr+8w7+8w7+9w7+9w7+8 + w8C8w7+8w7+8w8C7w7+7w7+8w7+8wr+8w7+8w7+8w7+8w7+8wr+8w7+8w7+8w7+8w8C8w7+8w7+8wr67 + w7+8w7+8wr+8wr+8wr+7w7+7w7+8wr+7w7+8wr+7wr+7wr67wr+7w7+8wr+7wr+7w8C8w8C7w7+8w7+8 + w8C8w7+8wsC7wr+7wr+8wb+7wb+7wr+8wr+7wb67wr+7wr67wb67wb27wr67wb66wb26wr26wr66wr+7 + wb66wr66wr65wr66wr66wb65wr66wr66wb25wr66wr66wb65wr66wb65wb25wr66wr66wr66wr66wr26 + wr66wb26wr66wr66wb25wb25wb25wb25wb25wby5wb26wb25wb26wb25wby5wLy5wLy4wb25wby5wby5 + wLy4wby5wby5wby5wL25wb25wLy5wLy5wL25wL25wL24wLy4wLy5wLy5wL24wL25wL24wL24wLy4wLy5 + wL24wL24v7y4v7y4v7y4wLy4v7u3v7u4v7u4v7u4wLu4v7u4v7u4v7u4v7y4v7u4v7y4v7y4v7y4v7u4 + v7y4v7y3v7y3v7y3v7y3vru3v7u3vru2vru2vru2vru2v7y3vru2vrq2vrq2vrq2vrq2vrq2vrq2vrq2 + vrq2vrq2vrq2vrq2vrq2vrq2vbq1vrq2vbq1vbq1vru2vbq2vbq1vbq1vrq1vbq2vbq2vbm1vbm1vbm1 + vbm1vbm1vbm1vbq1vLm0vLq1vLm0vLm0vbq1vLm0vLm0vLm0vLm1vLi0vLi0vLi0vLi0vLi0vLi0vLi0 + vLi0vLi0vLizu7iyurizurizurizu7iyureyu7eyurezu7ezu7ayurezu7ayu7ezurezu7ayv7y3vru2 + vrq2vrq2vrq3vrq3v7q3vrq3v7q3v7u3v7q4v7q4v7q3v7u3wLy4wLy4v7y3v7u4v7y3v7u3v7y3wLy3 + v7u3v7u3v7y4v7y4v7y4v7y4v7y4v7y5v7y4v7y5v7y5v7y5v726wL66wL25wLy5wb25wLy5wb25wb25 + wb25wb25wr25wr25wr25wb65wb66wb+6wb65wb65wb65wb65wb66wr66wr26wr66wr26wr66wr26wr66 + wr66wr66wr66w766w7+6wr65wr65wr65wr66wr65wr66wr65wr66wr66wr66wr67wr67wr67w767wr67 + wr67w767wr67wr66wr26wr66wr67wr66wr+7wr+8wr+7w7+7w8C7w8C7w8C8w8C8w8C8wsC7w7+7w8C8 + w8C8w8C8w7+8w8C8w7+7wr+8wr68wr68w7+7w768w767w7+7w7+7w7+7w7+7xL+7xMC7xMC7xMC7xMC8 + xMC8xMC8xMC7xMC8xMC8xMC7xMC8xMC7xMC8xMC8w8C8xMC8xMC8xL+8w8C8w8C8w8C8w8C8xMC9w8C9 + w8C8w8C9xMC8xMC8xL+8xMC8xL+8xMC8xL+8xL+8xL+8xL+8xL+8xL+8xL+8xL+8xL+8xL+8xL+8w7+7 + xMC8xL+8w7+8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMG9xMC9 + xcG9xMG9xMC9xMC8xMC9xMC9xMC9xcG9xMC8xMC9xMC9xMG9xMG8xcG9xMC9xcG9xMC9xcG9xMC9xMC9 + xMC8xMC9xMC9xMC9xMC8w8C8xMC9xMC8xMC8xMC8xMC9w8C9xMG9w7+8w7+8xMC9xMC9xMC8xMC9xMC8 + xMC9xMC9xMC9xMC9xL+8xMC9xL+8xMC9w8C8xMC9xMC9xMC9xMG9xMC9xMC9xMC9xMC9xMG9w8C9xMC9 + xMC9xMG9w8C9w8C8w8C9w8C8w8C9w8C9wsC9wsC9w7+8wr+9wr+8w7+9wr+9w7+9w7+8w7+8w8C8w8C9 + w7+8w8C8w7+8w8C7w7+8w7+8w7+8w7+8wr+8wr+8wsC7wr+7w7+8w7+8w8C8w8C8w7+8w8C8w7+8w7+8 + w7+8w7+8w8C8w7+8wr+7w7+8wr+8w7+8w7+8wr67wr+7wr+7wr+8wr+7wr+7w7+8w8C8wsC7w8C8w8C8 + w8C8w8C8wsC7wsC7wsC8wb+7wr+7wb+7wr+8wr+7wb67wb67wb66wr67wb66wr67wb66wr66wb66wr66 + wr66wr66wr66wb66wb66wr66wr66wr66wb65wb65wr25wr66wb65wr66wr66wr66wr66wb65wr26wr66 + wb65wr26wb25wb25wb25wr26wb25wb25wr26wb25wb25wb25wb25wb25wL24wb25wb25wLy4wb25wb25 + wb25wLy4wb25wb25wb25wL25wLy5wL25wLy5wL25wL25wL25wL25wLy4wLy4wL24wL24wL24v7y4v7y4 + wL24wLy5v7y4wLy4wLy4v7y4v7y4v7y4v7u4v7u4v7u4v7u3v7u4wLu4v7y4v7y4v7y4v7y4v7y4v7y4 + v7y3v7u3v7y3v7y3v7y3vru2v7u2vru2vru2vru2vru2vru2vru2vrq2vrq2vrq2vrq2vrq2vrq2vrq2 + vrq2vrq2vrq2vrq2vrq2vrq2vru2vbq1vrq2vbq1vrq1vbq1vbq2vbq1vbq2vbq1vbm1vbq2vbq2vbm1 + vrq2vbm1vbm1vbq1vLq1vLq1vLq1vbm0vLm0vLm0vbq1vLm0vLi0vLi0vLi0vLm1vLi0vLi0vLm1vLi0 + vLi0vLizu7izu7izu7eyu7izu7eyu7eyu7izu7ezu7eyu7ezu7ezu7ayu7ezu7ezu7eyu7eyv7u3vbq2 + vrq2vrq2vrq2vrq2vru4vrq2v7u3v7u4v7u4v7u4wLu4v7u3v7u4wLy4v7y3v7y3v7y3v7y3v7y3v7y3 + v7y3v7y3v7y3v7y4v7y4v7y4v7y4v7y4v7y5wLy5wLy4wLy5wL25wL25wL25wL25wL25wb25wby5wby5 + wb25wb25wb25wb25wr25wb65wb65wb65wb65wb65wb65wb65wb65wb25wr66wr66wr26wr26wr66w766 + wr66wr66wr66wr65wr66wr+5wr+6wr65wr65wr65wr65wr66wr66wb66wb66wr67wr67wr67wr67wr67 + wr67w767wr67wr66wr66wr66wr66wr+7wr66wr+7w767w7+7w7+8w7+7w8C8w8C8w7+8wr+7w8C8w7+8 + w8C8w7+8wr+8wr+8wr+8wr+7wr+8w7+8w768wr67w7+7w7+7w7+7xL+7xMC7w7+7xMC8xMC8xMC8xMC8 + xMC8xMC8xMC8xMC8xMC8xMC7xMC8xMC8w8C8xMC8w8C8xMC8xMC8w8C8xMC8w8C8xMC9w8C8xMC9w8C9 + xMC8w8C9w8C8xMC8xMC8xMC8xMC8xMC8xMC8xL+8xL+8xL+8xL+8xL+8xL+8xMC8xL+8xL+8xL+8w8C8 + w8C8xMC8xMC8xMC8xMC8xMC8xMG8xMG8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMG8xMC9xMG8xMG9xMG9 + xMC8xMG8xMC8xMG8xMC8xMG8xMC9xMG8xMG8xMC9xMG9xMC9xcG9xcG9xMG9xMG9xMG9xMG8xMC8xMG9 + w8C9xMC9xMC9xMG9xMG9w8C8xMC9xMC9xMC9w8C8xMC9xMG9xMC9xMC9xMG9xMC9xMC9xMC9xMC9w8C8 + xMC9xMC8xMC9xMC9xMC9xMC9xMC8xMC9w8C8xMC8xMC9xMC9xMC9xMC8xMC9xMC9xMC9w8G9w8C9w8C9 + w8C9w8C9w8G9w8C9w8C8wsC8w8C9wsC8w8C9wsC8w7+9w7+8w7+8w7+9w7+9w8C8w7+8w8C8w7+8w8C8 + w7+8w7+8w7+8w8C8w8C8w8C8w8C8w7+8w7+8w7+8wr+8w7+8w7+8w8C8w8C8w7+8w7+8w7+8w7+8w7+8 + wr67wr+7wr+7wr+7wr+7w8C8wr+7wsC7wr+7w8C8w7+8w7+8wr+7w8C8w7+7w7+8w8C8w8C8w8C8w8C8 + w8C8w8C8wsC8wsC8wsC8wr+7wsC7wr+7wr67wb67wr67wb67wb66wb66wr+6wr66wr66wb66wr+6wb66 + wr+6wr66wr+6wr66wr+6wb+5wb66wr65wb66wr+6wb65wb65wb65wb65wb66wr+6wr66wr66wb65wb65 + wr66wb25wb65wb25wb25wb25wr65wb25wb25wb25wr66wb25wb25wb25wb25wb25wb25wb25wb25wb25 + wb25wb25wb25wb25wL25wb25wL25wb25wL25wL25wL25wL25wL25wL25wL25wL24wL24wLy4wb25wL24 + wL24wL25v7y4wLy5v7y4wLy5v7y4v7y4wLy4v7u3v7u3wLy4v7u4v7y4v7y4v7y4v7y4v7y4v7y4v7y4 + v7y4v7y3v7y3v7y3vru2v7u3v7y2v7u2v7u2v7u2v7u2v7u2vrq2vrq2vrq2vrq2vrq2vrq2vrq2vrq2 + vrq2vrq2vrq2vrq2vrq2vrq1vrq1vrq2vrq1vbq1vrq1vru2vrq1vbq1vbq1vrq2vrm1vrm1vrm1vbm1 + vrm1vbm1vbm1vbm1vLm0vLm0vbm0vbq1vLm0vbm0vbm0vbm1vLm0vbm1vbi0vLi0vbi0vLi0vbi0vLi0 + vLi0vLi0vLi0u7izu7izu7eyu7izu7izu7eyu7eyu7ezu7eyvLezvLezu7ezu7ezu7ayu7eyvru3vrq3 + vrq3vrq3vrq4vru3vrq3v7u4vru3vru2v7q3v7u4v7u4v7y4v7u4wLy4v7y4v7y4v7y4v7u3wLy3v7y3 + v7y3v7y4v7y3v7y4v7y4wLy4v7y4wLy5wLy4wL25wL25wLy4wL26v725wLy4wL24wL25wL25wb25wb25 + wb25wb25wb25wb65wb25wb65wb65wb65wb65wb+6wb65wb66wr66wr26wr26wr67wr26wr26w766w766 + w766w767wr66wr66wr+6wr65w766wr66w7+6wr+6wr66wr66wr66wb66wr66wr67w767wr67wr27w767 + w767w767w766wr66w7+7wr66wr66wr+7wr67w7+7w7+7w7+6w8C8w7+8w7+8w8C8w7+7wr+8w8C9w8C8 + w8C8w8C8wr+8wb+8wsC8wr+8wr+8w7+7w768wr+7wr+7w7+7w7+7xL+8xMC7xMC7xMC8xMC8xMC8xMC8 + xMC8xMC8xMC8w8C7xMC8xMC9xMC8xMC8xMC8xMC9xMC8xMC8xMC8w8C9xMC8xMG9w8C9xMC9w8C9xMC9 + w8C8w8G9xMG8w8C8xMC8xMG8w8C8xMC8xMC8xL+8xL+8xMC8w7+8xMC8xL+8w7+8xL+8xMC8w7+7xL+8 + xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMG8xMC8xMC8xMG8xMC8xMC8xMG8xMG9xMC8xMC8xcG9xMG8xMG8 + xMG8xcG9xMG9xMG9xcG9xMG8xMG9xcG9xMG9xMG9xMG9xcG+xMG9xMG9xMG8xMG9xMC8xcK9xMC9xMC9 + xMC9xMC8xMG9xMC8xMG8xMC9xMC9xMC8xMC8xMC9xMC9w8G8xMC9xMC9xMC9xMG9w8C8xMG9xMC9xMC9 + xMG9w8C8w8C8xMC8xMG9w8C8xMC8w8C8xMC9xL+8w8C8w8C8w8G9xMG9xMC9w8C9w8G9w8C9xMG9xMG9 + xMG9w8C9w8G9wr+8wsC9w8C9w8C9wsC8w8C9w8C8w8C9w8C9w7+8w7+8w7+9wr+8w8C9w8C8w8C8xL+8 + w8C8w8C8wr+7w7+8w8C8w8C8wsC8wr+7wr+7w7+8w8C8w8C8wsC7w8C8w8C8w8C8w8C8w8C8w8C8w7+8 + w7+7wr+7w7+7wr+7wr+7w8C8wr+8wr+7w7+8w7+7wr+7w7+8w7+8w8C8w8C8w8C8w8C8w8C8w8C8w8C8 + wsC8w8C8w8G8wsC8wsC8wsC8wsC8wb67wb67wr+7wr+7wr67wb67wr+6wr66wb66wb+6wr+6wr+6wr+7 + wr+6wr+6wr+5wr+6wr66wb+6wb+5wr66wr66wr+6wr66wb65wr66wr+6wb+6wb65wr66wb65wb25wb25 + wr66wb25wr66wb65wb65wby5wr65wb25wb25wr66wr25wr66wb66wb66wb65wb25wb65wb25wb25wb25 + wb25wb25wb25wb25wL25wb26wL65wL25wb25wL25wb65wL25wb24wL25wb24wL24wL25wb24wL24wL25 + wL24wLy4wLy4wLy5v7y4wLy4wLy4wLy4wLu4v7u3v7y4v7u4wLy4v7y4wLy3v7y4v7y4v7y4v7y4v7y4 + v7y4v7y4v7y3v7y3v7y3v7u2vru2vru2vru2v7u2v7u2v7u2v7u3v7u3v7u3v7u3v7q2vrq2v7q2vrq2 + vrq2vrq2vrq2vrq2vrq2vrq2vbq1vrq1vrq1vbq1vru2vru2vrq2vbq1vbm1vrq2vrq1vrq1vbm1vrq2 + vbm1vbm1vrq2vbm1vbm1vbm0vLq0vLq0vbq1vbm0vLq1vbm1vbi0vbm1vbi0vLi0vbi0vLm1vbi0vbi0 + vLi0vLi0vLi0u7izvLizvLizvLizu7eyu7izvLizu7ezurayu7ezvLezvLezu7ayvLezu7ezv7u4vrq2 + vbu3vbq3v7q3vru3vrq2v7u3v7u3v7q3v7u3wLu4wLy4wLu4v7y3v7y3wLy4v7y3v7y3v7y3v7y3v7y3 + v7y3v7y3wLy4v7u3wLy4v7y4wLy4wLy4wLy4wLy4wL25wL25wL25wb25wL24wL25wb25wb25wb25wb25 + wb25wb25wb25wb65wb25wb66wb66wb65wb66wb65wb66wb66wb66wr26wr26wr66wr26wr26wr26wr26 + w766w766wr66w766w7+6wr66wr66w7+6wr66wr66wr66wr66wb66wr+7wr66wr67wr67wr67w767wr67 + wr67w766w766w766wr66w766w767w766w7+6w7+7w7+7w7+7w8C8w7+8w7+8w7+8w7+8w7+8w8C8w7+8 + w8C8wr+8wsC8wr+8wr+8wsC8wr+8wr+8wr+7w7+8w7+7xMC8w7+7w7+7w7+7xMC7xMC8xMC8xMC8xMC8 + xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC9xMC8w8C8w8C8xMC8xMC8xMC9w8C9w8C8w8C9w8C9xMC9xMC9 + xMC9xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xL+8xL+8xMC8xL+8xMC8w8C8xMC8xMC8xMC8 + xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMG8xMG8xMC8xMG8xMG8xMG8xMG8xMG8xMG8xcG9xcG8xcG9xMG8 + xMG8xMG8xMG9xMG8xcG9xMG9xMG9xMG9xMG9xcG9xcK9xMG9xcG9xMG9xMG9xMG9xMG+xMG9w8G9xMG9 + xMG9xMG9xMC9w8C8w8C8xMC9xMG9xMG9xMC9xMC8xMG9xMC9xMG9xMG9xMC9xMG9xMG9xMC9xMC9xMC8 + xMG9xMC9w8C8xMC9xMC8xMC9xMC8w8C8xMC8xMC9xMC9w8C8xMC9w8G9xMG9w8C9w8G9w8G9w8G9w8C9 + w8C9w8C9w8C9w8G9w8C9w8C8w8C9w8C8w8C8w7+8w7+8w8C8w8C8w7+8w8C8w8C8w8C8w8C8w8C8xMC8 + w8C8w8C8w8C8w7+8w8C8w8C8w7+8w8C8w8C8w8C7w8C8w8C8w8C8w8C8w8C8w8C8w8C8wr+7w7+8w7+7 + w7+7w7+7w7+7w7+7w8C7w7+7w8C8w8C8wr+8w8C8w8C8wsC8w7+7w8C7wr+7w8C8w8C8w8C8w8C8w8G8 + w8C8wsC8wsG8wsC8wsC8wr+8wr+8wr+8wr67wb67wr67wb66wr66wb66wb66wr66wr66wr+6wr66wr+6 + wr66wr+6wr+6wr+6wr+6wr+6wb66wr65wb+6wr+6wr+5wr66wb65wb65wb65wr66wr66wr+6wr66wr66 + wb65wb65wb25wb65wb25wr25wb25wb25wb25wb25wr25wb25wr66wb25wb65wb25wb25wb65wb25wb25 + wb25wb25wb65wb25wL25wb65wL65wb25wb25wb65wL65wL25wb25wL25wL25wb64wL24wb24wL25wL24 + wL24wL25wLy4wLy4wLy4wLy4wLy4v7u4wLy4wLu4wLu3v7u3v7y4wLy4v7y4v7y4v7y4wL24v7y4v7y4 + v7y4v7y3v7y3v7y3v7y3v7y3v7u2v7u2v7u2v7u2v7u2v7u2vru2v7q2v7q2vrq2v7q2v7q2v7q2vrq2 + vrq2v7q2vrq2vrq2vrq2vrq2vbq1vrq1vru2vrq1vrq1vrq1vru2vrq1vrq1vrq1vrm1vbm1vrm1vbm1 + vrm1vbm1vbm1vbm1vbm1vbm0vbq1vbm0vbq1vbq1vbm1vbm0vbm0vbi0vbi0vLi0vbi0vbi0vbi0vLi0 + vLi0vLi0vLizu7izvLizu7izu7izu7izu7izu7eyu7ezu7ezu7ezu7ezvLezvLezvLezu7izv7u4vrq3 + vru3vru4vru3vrq3vrq3v7q2vru3v7u3wLu3v7y4wLu4wLy4v7y3v7y3wLy4v7y4v724v7y4v7y3v7y3 + v7y3v7y3wLy4wLy4wLy4wLy4wLy4v7u4wLy4wb25wb25wL25wL25wb24wb24wb24wb25wb26wby5wb25 + wb26wb26wb26wb26wb65wL66wb66wb66wb66wr66wr66wb26wr66wr66wr66wr66wr66wr66wr66wr26 + w766wr66w766w7+6wr66w766wr+6wr+6wr66wr66wr+6wr+7wr66wr66wr67wr67w768wr67wr27wr67 + w767wr67wr66w766wr67wr66wr66wr66wr67w7+6w7+7wr+7w8C7w7+8w8C8w7+8w7+8w7+8w8C9w8C8 + wsC9wsC8wsC9w8C8wr+8wr+8wr+8w7+8wr+8wr+7w7+8w7+7wr+7w8C8xL+8xMC8xMC8xMC8xMC8w8C7 + xMC8xMC8xMC8xMC8xMC8xMG8xMG8xMC8xMC9xMC8xMC9w8C8w8C9w8C8xMC9xMC9w8G9w8G9w8G9xMC9 + xMC9xMC8xMC8xMC8xMG8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8 + xMC8xMC8xMG8xMG8xMC8xMC8xMG8xMC8xMC8xMC8xMC8xMG8xMC8xMG8xcG9xMK8xMG8xMK8xcK9xMG8 + xMG9xcG9xMG9xMG9xcK9xcG9xMG8xcK9xMG9xMG+xcK+xcK9xcK+xMG9xMG9xMG9xMG9xMG8xMG+xMG9 + xMG9xMG9w8G9w8C8w8C8xMC8xMC9xMC8w8C8xMG8xMC9xMC9xMG9xMG9xMG9xMG9xMG9xMG9xMG9xMG9 + xMG9xMG9xMG9w8C8xMC8xMG9xMC8xMC8xMC8w8C8xMG9w8C8xMG9w8G9w8G9w8G9w8G9w8K9xMG+w8C9 + w8C9w8C9w8C9w8C9w8C9w7+8w8C9w8C9w8C8wsC9w7+8w8C8w8C8w8C8w8C9w8C8w8C8w8C8w8C9w8C8 + w8C8w7+7w8C8w8C8w7+7w8C8w8C8wr+8w8C8w7+7xMC8w8C8w8C8w8C8w8C8w8C8w8C8w8C8w8C7w8C8 + wr+7wr+7wr+7w8C8w8C8w8C8w8C8wsC7w8C8w8C8w8C8w8C8wr+7w7+7w8C8w8C8w8C8w8C8w8C8w8G8 + w8G8wsG8wsC8wsG8wr+8wr+8wr+8wr68wr67wr+7wr+7wr67wr+7wr+6wr+7wr67wr+6wr+6wr+7wr+6 + wr+7wb66wr+6wr66wr+6wr66wr+6wr+6wr+6wb65wr66wr66wr66wb65wb65wr66wr65wr65wr66wb65 + wr65wr66wb65wb25wb25wb25wr25wr25wr66wr66wb25wb25wb65wr65wb25wb66wb65wb66wb25wb65 + wb65wL25wb65wb25wb66wb65wb65wb25wb65wL25wb25wL25wb65wL25wL25wb24wL24wL24wb24wb25 + wLy5wLy4wLy4wLy4wLy5wLy4wLy4wLy4wLu3wLy4wLy4wLu3wLy4v7y4wLy4v7y4v7y4wLy4v7y4wLy4 + v7y4v7y3v7y3v7u3v7y3v7u3v7u2v7u2v7u2v7u2vru2v7u2v7u2v7u2v7q2v7q2v7q2v7q2v7q2vrq2 + vrq2vrq2vrq2vrq2vrq2vrq1vrq2vrq2vrq1vrq1vrq1vru2vrq1vrq2vrq2vbq2vrm1vrm1vrq2vrm1 + vbm1vrm1vbm1vbq1vbq2vbm0vbq0vbm0vbm0vbq1vbm1vLm0vbi0vbi0vLi0vLi0vLi0vbi0vLi0vLi0 + vLi0vLizvLizvLizu7ezvLizu7izvLizu7eyu7eyu7ezvLezvLezvLezvLezu7eyu7ezu7eyv7u4vbq3 + vrq3vrq3vrq3vru3vru2v7u3v7u3v7u3v7u3v7u3wLy4wLy4wLy4wLy4wLy4v7y3v7y3v723v7y3v7y3 + wLy3v7y3wLy4wLy4wLu4wLy4wLy4wLu4wLy5wLy5wL25wb25wb24wb25wL24wL24wb25wb25wb25wby5 + wby5wb26wb26wb26wb66wb66wb66wb66wL66wb66wb66wb66wb66wr66wr66wr66wr66wr66wr26wr66 + w766wr66w766w7+6w7+7wr66wr+6w7+7wr+6wr+6wr+6wr+6wr+7wr67wr67wr68wr68wr68wr68w768 + w767w767wr67w767wr67w7+7wr+7wr+7w7+7wr+7wr+7w7+7w7+6w8C8w7+7w8C8xMC8w7+9w7+9w7+9 + w7+9w8C9wr+8wr+9wr+8w7+9wr+8w7+8wr+8wr+7wr+7w8C8w8C8w8C8w8C7w8C8w8C8xMC8xMG8xMC8 + xMC8xMG8xMG8xMG8xMC8xMG8xMG8xMG9xMG9xMG9xMC9xMC9xMC9xMG9xMC9w8C9xMG9w8G9w8G8w8C8 + xMG9xMG8xMG8xMC8xMC8xMC8xMC9xMG8xMG8xMG8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8xMC8 + xMC8xMC8xMG8xMG8xMG8xMC8xMG8xMC8xMG8xMG8xMG8xMG8xMG8xMG8xMG8xcG9xMG8xMG9xcK9xMK9 + xcK9xcG9xcK9xcK9xcK9xcK9xMG9xMG9xcK9xcK9xcK9xcK9xcK+xMG9xMK9xMG9xMG9xMG9xMG9xMG9 + xMG9xMG9xMG8w8C8xMG9w8C8xMC8xMC8xMG9xMG9xMG9xMG9xMG9xMG9xcK+xMG9xMG9xMG9xMG9xMG9 + xMC9xMG9xMC8xMC8xMC8xMC8xMC8xMC8w8C8xMG9w8C8w8G9w8C8w8G9w8G9w8G9w8G9w8G9w8G9w8C9 + w8C9w8C9w8C9w8C9w8C9w8C9w8C8w7+8w8C8w8C8w8C8w8C8w8C8w8C8w8C8w8C8w8C8w8C8w8C8xMC8 + w8C8w8C8w8C8w8C8w8C8w7+7w8C8w8C8w8C8w8C8w8C8w8C8w8C8w8C8w8C8w8C8w7+7w7+7w7+7w7+7 + w7+7w7+7w7+7w7+7wr+7w7+7w7+7w8C8w7+7w8C8w7+7w7+7w8C7w8C8w8C7w8C8w8C8w8C8wsC8wsC8 + wsC8w8C8wsC8wsC8wsC8wr+8wr+7wr+7wr+7wr+7wr66wr+7wr66wr+6wr66wr+6wr+6wr+6wr+6wr+6 + wr+6wr+6wr+6wr+6wr66wr66wr+5wr+6wr66wr66wr+5wr66wr65wr65wr66wb66wr66wr65wr66wr66 + wr25wb65wr65wr25wb25wr65wb25wb25wr25wr25wb25wr66wb65wr65wb65wb25wb66wb66wb65wb66 + wb65wb65wb25wb65wb65wb65wb65wb25wb25wb65wb65wb25wb65wb25wL24wL25wL24wL24wLy4wLy4 + wLy5wL24wL24wLy4wLy5wby4wLy4wLy4wLy4wLy4wLy4wLu3wLy3wLy4wLy4wLy4wLy4wLy4wLy4wLy4 + wLy4v7y3v7y3v7y3v7y3v7y2v7u2v7u2v7u2v7u2v7u2v7u2v7u2v7q2v7q2v7q2v7q2v7q2v7q2v7q2 + v7q2vrq2vrq2vrq2vrq2vrq2vrq2vrq1vrq1vrq1vrq1vrq1vrq2vrq1vrq1vrq1vrq1vrq1vrm1vrm1 + vrm1vbm1vbm1vbm1vLm1vbm0vbq1vbq1vbm0vbm1vbm1vbm1vbi0vLi0vbi0vbi0vbi0vbi0vbi0vLi0 + vLi0vLi0vLizu7izu7izvLizvLizvLizvLizu7izvLezu7eyvLezu7ezvLezvLeyvLezu7eyvru4vbq3 + v7u2vrq2vru2v7q2vru3v7y3vru2v7u3v7y3v7y3v7y4v7y3wLy4v7y3wLy3v7y3v724v7y3v724v7y3 + wLy4v7y4wLy4wLy4wLu4wLu4wLy4wby5wby5wb25wb25wb24wb24wb24wL24wb24wb25wb24wb25wby5 + wby5wb25wb26wL26wL66wb66wL66wb66wb66wL66wb66wr26wb26wr66wr66wr66wr26wr66wr67wr66 + wr66wr67w766wr+7wr+6wr66wr+6wr+6wr+6wb+7wr+6wr67wr+7wr+7wr67wr67w768wr67wr+7wr67 + wr67w767w7+7wr66wr+7w7+7wr+7w7+7w7+7wr+6w7+7w8C7w7+7w8C7w7+7w7+7w8C8w8C8w8C8wr+9 + w7+9wsC9w7+9wr+9wr+9w768w7+8wr+7w7+8w7+8wr+7wsC8w8C8wsC8w8C8w8C8w8G8w8C8xMC8xMG8 + xMC8xMG8xMG8xMG8xMC8xMG8xMG9xMG9xMG8xMG9xMG9xMG9xMG9xMG9w8G9w8C9xMC8w8G9w8G9w8C9 + xMC8xMC8xMG8xMC8xMG8xMG8xMG8xMC8xMC8xMC8xMC8xcC8xMC8xMC8xMG9xMC8xMC8xMC8xMC8xMC8 + xcC8xMC8xMC8xMC8xMG8xMG8xMG8xMG8xMG8xMG8xMG8xMG8xMG8xMG8xMG9xcK9xcG9xcK9xcK9xcK9 + xcK9xMG9xcK9xcK9xcK9xcK9xMG9xcG9xcK9xMG9xcG9xcG9xcK9xcK9xsK+xMG9xcK+xMC8xMG9xMG9 + w8C8xMG8xMC8xMC8xMC8xMG9xMG9w8C8xMC8xMG9xMG9xMG9xMG9xMG9xcK9xMG9xcK+xcG9xMG9xMG9 + xMG9xMG9xMC8w8G9xMC8w8C8xMC8w8C8w8C8w8C8w8G9w8C8w8G9w8C9xMC+w8C9w8G9w8C9w8G9xMC+ + xMG9w8C9w8C9w8C9w8C9w8C8w8C8w8C8w8C8w8C8w8C7w8C8w8C8w8C8xMC8w8C8xMC8w8C8xMC8xMC8 + w8C8w8C8w8C8w8C8w8C8xMC8w7+7w8C8w8C8wr+7w8C8w8C8w8C8w8C8w7+7wr+7w8C8w8C8w8C8w7+7 + w7+7wsC7w7+7w8C7w7+7w8C8w8C8w8C8w8C7xMC8w8C8w8C8w8C8w7+7wsC8wsC8wsC8w8C8wsC8wsC8 + wsC8wsC8w8C8wr+8wr+8wr+8wr+8wr+7w7+8wr+7wr66wr+6wr66wr+6wr+6wr+6wr+6wr+6wr+6wr+7 + wr+6wr+6wr+6wr+6wb66wr65wr+5wr65wr65wr65wr+6wr65wr+6wr66wr65wr65wr66w766wr65wr65 + wr66w766wr26wr25wr65wb25wr25wr25wr25wr25wr25wr65wr65wr26wr66wr25wb66wr66wb66wb65 + wb25wb26wb66wb25wb25wb65wb65wr66wb66wb25wb66wL25wb65wb25wb65wb24wL24wb24wby5wLy4 + wLy5wLy4wLy4wby5wLy4wLy4wLy5wLy4wLy4wLu3wLu4wLy4wLy4wLy4v7y4wLy4wL24wL24wL24wby4 + wLy4wLy3wLy3v7y3v7y3v7y2v7u2v7u2v7u2v7u2v7u2v7u2v7u2v7u2v7q2v7q2v7q2v7q2v7q2v7q2 + v7u3vrq2vrq2vrq2vrq2vrq1vrq1vrq1vrq1vrq1vrq2vrq1v7u2vrq1vrq1vrq2vrm1vrq2vrm1vbm1 + vbm1vrm1vbm1vbm0vbm0vbm1vbm0vbm0vbq0vbm0vrm0vbm1vbi0vbm0vbi0vLi0vbi0vbi0vbi0vbi0 + vLi0vLi0vLi0vLizvLizvLizvLi0vLizvLizu7izvLezvLezvLezvLezvLezvLezvLezu7eyv7u4vrq3 + vbq2vru2v7q2vru2v7u2vru2v7u3v7u3v7u3wLy4v7y3wLu3v7y3wL24v724v724v724v7y3v724wLy3 + wLy4wLy4wLy4wLu4wLu4wLu4wby5wLy5wLy5wb25wb24wb24wb24wb24wb25wb24wb24wr25wr26wby6 + wby6wb26wL26wL26wL67wL66wL66wL66wL66wL26wb26wb66wb66wr26wr66wr26wr67wr27wr66w767 + wr66wr66wr+6w7+7w7+7w766wr+6wr+7wr+7wsC6wr67wr+7wb66wr68wr68w768wr+7w768w7+7w767 + w767wr67w7+7wr66w767wr67wr+6w7+7wr+7wsC7w8C7w8C7w8C7w8C7w8C8w8C7xMC8w8C8w8C9wsC9 + w8C8wr+9wsC9wr+8wr+9w7+8wr68w7+8wr+7w8C8w7+8w8C7wsC8w8C7wsC7w8C7w8C8w8C7xMG7w8G8 + w8C8xMG8w8G8xMG8xMG8w8G9xMG9xMG9xMG9xcG+xcG9xMG9xMG9xMK9xMG9xMG9xMG9xMG9w8C8w8G8 + xMC8xMC8xMC8xMG8xMG8xcC9xMG8xcG8xMG8xMG8xMC8xMC8xMC8xMG9xMC8xMG9xMC8xMG8xMG8xMG8 + xMG8xMC8xMC8xMG8xMG8xcG8xMG8xMG8xcG8xcG8xMG8xMC8xMG9xMK9xcG8xcG8xcK8xcK9xcK9xcG9 + xcK9xcK9xcK9xcK9xsK9xcK9xcK9xcK9xcG9xMK9xcK+xsK9xcG+xcK+xcK+xMG9xMG9xMG9xMG9xMG9 + xMG8w8G8xMG8w8C8xMG9w8C8xMC8xMC8xMG9xMC8xMG9xMG9xMG9xMG9xcK9xcK+xcG9xMG9xcG9xMG9 + xMG9w8G9xMG9xMG9w8C8w8C8w8C8w8G9w8C9w8C8w8C9w8C9w8C9xMC9w8C9w8C9w8C9w8C9w8C9xMC9 + xMC9w8G9w8C9xMC9w8G9w8C8w8C8xMC8xMC7w8C7w8C7w8C8xMC8w8C8w8C8w8C8xMC8xMC8w8C8w8C8 + w8C8w8C8w8C8w8C8xMC8w7+7w8C8w8C8w8C8w8C8w8C8w7+7w7+7w7+7w7+7w8C8xMC8w7+7w7+7w7+7 + w7+7w7+7w8C7w7+7w8C7w8C8w8C8w8C8w8C8w8C7w8C8xMC8w8C8wr+7wr+7wsC7w8C8wsC7wsC8wr+8 + wsC8wsC8wr+8wsC8w7+7wr+8wr+8wr+7w7+6wr66wr+7wr+7wr+6wr+7wr+7wr+6w7+6wr+7wr+6w7+6 + w7+6wr+6wr+6w7+6wr+6wr+6wr+6wr66wr+6wr+6wr+6wr+6wr65wr+6wr66w766wr66wr66wr66wr65 + w766wr66wr25wr65wr25wr25w766wr65wr25wr25wr25wb26wr65wb66wr66wb25wr66wr65wb66wr66 + wb66wb66wr66wb66wb66wr66wb66wr66wr65wr65wb65wb25wb26wb25wb25wb25wL25wby4wb25wb25 + wLy4wLy4wby5wLy4wLy4wby4wby4wLu4wLy4wbu4wLu3wLy4wLy4wLy3v7y4wLy4wLy4wLy4wLy4wL23 + v7y3wL23v7y3wLy3v7u3v7y2v7u2v7u2v7u2v7u2v7u2v7u3v7u3v7u3v7u3v7q2v7q2v7q2v7u3v7q2 + vrq2v7u3vrq2vrq2vrq2vrq2vbq1vrq1vrq1vrq1vrq1vrq1v7q2vrq2v7q2vrq2vrm1vrm1vrm1vrm1 + vbm1vbm1vbi0vbm1vbm0vLm0vrq1vbm0vbq1vbq1vbm0vbm0vbi0vbi0vbi0vLi0vbi0vbi0vbi0vLi0 + vLezvLizvLizvLizu7izvLizvLizvLizu7izvLezvLezvLezvLezvLizvLezvLizvLezu7eyvru3vrq2 + vbq2vrq2vrq2vru2vru2v7u3v7u3v7u3v7u3v7u3wLy4v724v7y4v7y3v7y4v724wL24wL24v7y4wLy4 + wLy4wLy4wLy4wLy4wLu5wLy5wLy5wby5wby4wb25wb24wb25wb65wb65wb24wb24wb25wb25wb25wb26 + wb26wb26wb26wL26wL26wL26wL66wb67wL66wL26wb67wb26wb66wr66wr66wr66wr67w767wr67wr66 + w7+7wr66wr66wr+6wr+7w7+7wr+7wr+6wr+7wsC7wsC7wr+7wr+7wr67wr+7w768wr68w7+8w767w7+7 + w767w767w7+7w7+7w7+7w7+7w7+6wsC6w7+7w8C7w8C7w8C7w7+7w8C7xMC8w8C8xMC8w8C8w7+8wsC8 + w8C9w7+8w7+9w7+8w7+9w7+8w7+8w7+8w7+8xL+8w7+8w7+8w7+8w7+8w8C7w8C8w8C8w8C8w8G8w8G7 + w8G9w8G8xMG8w8G8xMG9xMK8xMG8xMG9xMG8xMG9xMG9xMK9xMG+xMG9xMG9xMG9w8G9w8G9xMC8xMC8 + xMG9xMG8xMG8xMG9xMG8xMG9xMC9xcG8xMG8xMC8xcC8xcG9xMG9xMG9xcC8xcG9xMC8xcC9xcC8xcG8 + xcG8xcG8xcC8xcC8xcG8xcG8xMG8xcG8xMK9xMG8xMG8xcG8xcK8xMG9xcG8xcK9xcK9xsK9xcK9xcK9 + xsK9xcK9xcK9xcK9xcK+xcK9xcG9xcK+xcG9xcG+xcK9xcG9xcK+xcG9xcK+xcG9xMG9xMG9xcG9xMG9 + xMC8xMG9xMC8xMC8xMC8xMC8xMC8xMC8xMG9xMG9xMC8xcG9xMG9xcK+xMG9xcK+xMK+xMG9w8G9w8G9 + xMG9w8C8xMG9xMG9w8G9w8G9w8C8xMG9xMC9w8C9w8C9w8C9w8C9xMG9w8G9xMG9xMG9xMG9xMG+xMG9 + xMG9xMG9xMG9xMC9w8C8xMC8xMC8xMC8xMC7w8C8w8C8w8C8xMC8xMC8xMC8xMC8w8C8xMG9xMC8xMC8 + xMC8xMC8w8C8xMC8w8C8xMC8w8C8w7+7w7+7w7+7w8C8w8C8w8C8w8C8xL+7w7+7w7+7w8C8w8C8w7+7 + w7+7xMC8w7+7w8C7w8C7w8C8w8C8w8C8w8C8xMC8w8C8w7+8w8C7w8C8w7+7wsC8wsC8wsC8wr+8w8C8 + wsC8w7+8w8C8w7+8w7+8wr+7w7+7w7+8w7+8wr+7wr+7w7+6wr+6w7+7wr+6w7+6w7+7w7+6w7+7xL+7 + w7+6w7+6w7+6wr66w7+6wr+6wr65wr65w7+6wr+6wr65wr65w766wr66wr+6wr66w766wr66w766w766 + wr66wr66wr25wr65wr25wr65wr25wr25wr25wr66wr65wr66wr26wr66wr66wr66wr66wr66wr66wr66 + wb25wr26wb25wr66wr66wr66wr66wr66wr66wr66wr65wr25wb25wb65wb25wb65wb25wLy5wLy5wLy4 + wby4wLy5wLy4wLy4wby4wby4wLy4wLy4wLu4wLy4wLy3wLu3wLy4wLy4wLy4v7y4wLy4wLy4wLy4wL24 + wL24v7y3v7y3wLy3v7u2v7u3v7u2v7u2v7u2v7u2v7u2v7u2v7u2v7q2v7q2v7q2v7q2wLu3v7u3v7u3 + v7q2vrq2vrq2vrq2vrq2vrq2vrq2vrq1vrq1vrq1v7u2v7q2vrq2vrq1vrq2vrq1vrm1vrq2vrm1vrq2 + vrm1vbm1vbm1vbm0vLm0vbm0vbq1vbq1vbm0vbm1vbm0vbm0vbi0vbm1vbi0vbi0vbi0vbi0vbi0vbi0 + vLi0vLizvLizvLi0vLizvLi0vLm0vLizvLezvbi0vLezvLezvLezvLezvbi0vLezvLezu7iyvru3vrq2 + vrq2vbq2v7u2v7u2v7q2v7u2v7u2v7u3v7u3wLy4wLy4v7y4v7y4wLy4v724wL24v7y4wLy3wLy4wLy4 + wLy4wLy5wLu4wLu4wLu4wLy5wby5wb25wb24wby4wb24wb24wb24wb24wb24wb24wb24wb24wb26wb26 + wb26wb26wb27wb26wL26wb67wb66wb26wL66wL66wb66wb66wb66wr66wr66wr66wr66wr67wr66wr66 + w767wr66wr+7wr+7wr+7wr+6wr+7wr+7wr+7wcC6wr+7wr67wr67wr+8wr+7w7+7w7+8wr68w767w7+7 + w7+7w7+7w7+7w7+7wr+7w7+7w7+7w8C7wsC7w7+7w7+7w8C7w8C7w8C7w8C7w8C8w8C8w8C8wsC8w8C8 + w8C8w7+8w7+9w7+9w7+8w7+8w7+8w7+8w7+8xL+8w7+8w7+8w7+8w8C8w8C8w8C8w8C8w8C8w8C8w8G8 + w8G8w8G8w8G8xMG8w8K8xMK8w8K9xMK9xMG9xcK9xMG9xMG+xMG9xMG9xMG9w8G9xMG9xMG9xMC8xMC8 + xMC8xMC8xMG8xMC8xMG8xMG8xMG8xcG8xMG9xcG9xcG9xcG9xcG9xcG9xcG9xcG8xcC8xcG8xcG8xcG8 + xcG9xcG9xcG9xcC8xcG8xcG8xcG8xcG8xcG8xcG8xcG8xcG9xcG9xcK9xcG9xsK9xsK9xcK9xsK9xsK+ + xsK+xcK9xcK9xcK9xcK+xcK9xcK9xcK9xcK+xsK+xcK9xcK+xcK+xcG9xcG8xMC8xMC8xcG9xMG8xMC8 + xMC8xMC8xMC8xMC8xMC8xMG9xMC8xMC8xMC8xMG9xMG9xMG9xMG9xMG9xMG9xMK+xMK+xMG9xMG9w8G9 + xMG9w8C8xMC9xMC8xMC9w8C8w8C8xMC9w8C9w8C9w8C9xMC9xMC9xMC9xMG9xMC9xMG9xMG9xMG9xMG9 + xMG9xMG8xMC9xMG8w8G8xMC8w8C8w8C8xMC8xMC8w8C8xMC8w8C7w8C7w8C8w8C8xMC8xMC8xMC8xMC8 + w8C8w8C8w8C8xMC8xMC8w8C8xMC8w8C8w8C8w8C8w7+7w8C8w8C8w7+7w8C8w8C8xMC8w7+7w7+7w7+7 + w7+7xMC8xMC8xMC8w8C7w8C8w8C8xMC8xMC8w8C8w7+8w8C8w8C8w8C8wsC7wsC8wr+7w7+8w8C8w7+8 + w7+8w7+8xMC8w7+8w7+7wr+8wr+7w7+7w7+7w7+7w8C7w7+7w7+7w8C6w7+7w8C7w7+6xL+7xL+7w7+6 + w7+7w7+7w7+6w7+6w7+6wr66w766wr66wr66w7+6wr66wr+6wr66wr66w766w766wr66w766w766w766 + wr+6w766wr66wr65wr66wr66wr26wr25wr66wr66wr66wr66wr66wr65wr66wr66wr66wr66wr66wr66 + wr66wr66wr66wr66wb66wr66wb66wr66wr66wb66wr65wb65wb25wb65wb65wb25wb25wb25wLy4wL24 + wby5wLy4wLy5wLy4wLy4wLy4wby4wLy4wLy4wLy4wLu4wLy3wLy4wLy4wLy4wLy4wLy4wLy4wLy4wL24 + wL24wLy3wLy3wLy3v7y2v7y3v7u2v7u2v7u2v7u2v7u2v7u3v7u3wLu3v7q3wLu3v7u3v7u3v7q3v7q3 + v7q2v7q2vrq2vrq2vrq2vrq2vrq2vrq1vrq1vrq1v7u2v7u2v7q2v7q2v7q2v7q2vrq2vrm1vrm1vrm1 + vrm1vbm1vbm1vbm1vbm0vbm0vbm0vbq1vbm1vbq1vbq1vbm1vbi0vbi0vLi0vbi0vbi0vbi0vbi0vLi0 + vLi0vLi0vLi0vLm0vLmzvLi0vLi0vLi0vbi0vbe0vLi0vLi0vLezvLezvLizvLizvLizu7iyvru3vru2 + vru2vru2vru2v7u2v7u2v7u2v7u3wLu3v7y4v7y4v7y4v7y4v7y4wLy4v724wL24wLy4wLy4v7y4wLy4 + wLy4wLu4wby5wby5wLy5wLy5wby5wby4wb24wb25wb24wb25wb25wb25wb65wb24wb25wb25wb26wb26 + wb26wb26wb27wL26wL67wb27wb27wb67wb27wb66wb66wb66wb66wr66wr66wr66wr66wr67wr67wr67 + wr+7wr+7w7+7wr+7w7+7wr+6wr+6wsC7wr+7wsC7wr+7wsC7wr+7wr+7wr+7w7+8w7+7w7+7w7+7w766 + w7+7w7+7w7+7w7+7w7+7w7+7w8C7w7+6w8C7w8C7w7+7w8C7w8C7w8C7w8C7w8C7w8C8w8C8wsC7wsC8 + w8C8w8C8w7+8w8C8w7+7w7+7xL+8w7+8xMC8w7+8xL+8w7+8xMC8xMC8w8C8w8C8w8C8xMC8w8C8w8C8 + w8C8xMG8w8G8xMG8w8G8xMG8xMK9xMG9xMG9xMG9xMG9xMK9xMG9xMG+xMG9xMG9xMG9xMC9xMC8xMC8 + xMC8xMC8xMC8xMG8xMG8xMG8xMG8xMG9xcG9xcG9xcG8xcG9xcG9xcG9xcG9xcG9xcG9xcG9xcG9xcG9 + xcG8xcG9xcG8xcG8xcG8xcG8xcG8xcK8xcG8xcG8xcG8xcG8xcG8xcG9xcG9xsK9xsK9xcK9xsK9xsK9 + xsK9xcK9xsK9xcK9xcK9xcK+xcK9xsK+xcG9xcG9xcK9xcK9xcG9xcG9xcG9xcG9xcG9xMG9xMG9xMG9 + xMC8xMG9xMC8xMC8xMC8w8C8xMC8xMC8xMC8w8C8xMG9xMG9xMG9w8G9xMG9xMG9xMG9xMG9xMG9xMG9 + xMG9xMG9w8C9xMC9xMC9w8C9xMC9w8C9xMC9xMC9xMC9w8C9xMC9xMG9xMG9xcG9xMG9xMG9xMG9xMG9 + xMC8xMC8xMG8xMC8xMC8xMC8w8C8xMC8xMC8xMC8xMC8xMC8xMC8xMC8w8C8xMC8xMC8xMC8xMC8xMC8 + xMC8xMC8xMC8w8C8xMC8xMC8xMC8w7+7xMC8xMC8xMC8w8C8xMC8xMC8xMC8xMC8xMC8w7+7w8C8w7+7 + w7+7xMC8xMC8xMC8xMC8w8C7xMC8xMC8xMC8w8C8w8C7w8C8w8C7wsC7wsC8wr+8wr+7wsC8wr+8wr+7 + w7+8w7+8w7+7w7+8w7+7w7+7w7+7wr+7w8C7w7+7w7+7w7+7w7+7w8C7w8C7w7+7xL+7wr+7w8C7w7+7 + xMC7w7+7w7+6w7+6wr+6w7+6w7+6wr+6wr66w7+6wr66w7+6w7+6w766wr66w766w766w766w7+6w766 + wr66wr66w766w766w766wr26wr65wr26wr66wr66wr66wr65wr66wr66wr66wr66wr66wr66wr66wr66 + wr66wr25wr66wb25wr66wr66wr66wr66wr66wr66wb25wr66wb65wr65wr65wb25wb24wby5wby5wLy4 + wby5wLy4wby5wby5wLy4wLy4wLy4wLy4wLu4wLy4wLy4wLy4wLy4wLy4wLy4wLy4wLy4wLy4wLy4wLy4 + wLy4v7y3v7y3v7y3v7u3v7u2v7u2v7u3v7u3v7u2v7u2v7u3v7u3v7u3v7u3wLu3v7q3v7q3v7u3vrq3 + v7q3vrq2vrq3vrq2vrq2vrq2vrq1vrq1vrq1vrq2vrq2v7q1vrq2vrq2v7q2vrq2v7q2vrm1vrm2vrq2 + vrq2vbm1vrm1vbm0vbm1vbm0vbm1vbm0vbm1vbm0vbm0vbm1vbi1vbi1vbi0vbi1vbi0vbi0vbi0vLi0 + vLi0vLi0vLi0vLizvLi0vLi0vLizvLizvLi0vLi0vLi0vLezvLizvLezvLezu7izu7ezu7iz + + + + 1335, 115 + + + 17, 154 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAmdEVYdFRpdGxlAEZpbmQ7QmFycztSaWJib247U3Rh + bmRhcmQ7U2VhcmNou2WcCAAAALlJREFUOE+lktsRgjAQRaEdakgpFGEFoj3QBaM1+SNtxHuY3QyziegM + Hydk9j4gQJdzPsW2pJSgF6NYxGqwZ4ZWhWFbzHAT+QtofQyDF3AXjG8xicFgzwxtjGHwAh4V0xQNzExb + ogZu4ryYhmhgZtoaNXDT6YLTRzh6iczhIfAW9gW/PqNzFc0CL2n9SE/RLCkFR5j5LqoS9CoQwWjEkhm9 + GdojY7mKfcmLeRVoYWFnJiwuaM3A/+TuA3z+LAyTGFNzAAAAAElFTkSuQmCC + + + \ No newline at end of file diff --git a/MBN_STOCK_N/Form/PList.Designer.cs b/MBN_STOCK_N/Form/PList.Designer.cs new file mode 100644 index 0000000..05de539 --- /dev/null +++ b/MBN_STOCK_N/Form/PList.Designer.cs @@ -0,0 +1,153 @@ + +namespace MBN_STOCK_N +{ + partial class PList + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.btnadd = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.listBox = new System.Windows.Forms.ListBox(); + this.btncn = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // btnadd + // + this.btnadd.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnadd.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btnadd.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnadd.ForeColor = System.Drawing.Color.Black; + this.btnadd.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnadd.Location = new System.Drawing.Point(3, 5); + this.btnadd.Name = "btnadd"; + this.btnadd.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnadd.Size = new System.Drawing.Size(93, 30); + this.btnadd.TabIndex = 591; + this.btnadd.Text = "추가"; + this.btnadd.UseVisualStyleBackColor = true; + this.btnadd.Click += new System.EventHandler(this.btnadd_Click); + // + // panel1 + // + this.panel1.Controls.Add(this.listBox); + this.panel1.Controls.Add(this.btncn); + this.panel1.Controls.Add(this.button3); + this.panel1.Controls.Add(this.btnadd); + this.panel1.Controls.Add(this.button1); + this.panel1.Location = new System.Drawing.Point(3, 2); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(247, 374); + this.panel1.TabIndex = 593; + // + // listBox + // + this.listBox.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.listBox.FormattingEnabled = true; + this.listBox.ItemHeight = 17; + this.listBox.Location = new System.Drawing.Point(3, 41); + this.listBox.Name = "listBox"; + this.listBox.Size = new System.Drawing.Size(239, 293); + this.listBox.TabIndex = 597; + this.listBox.SelectedIndexChanged += new System.EventHandler(this.listBox_SelectedIndexChanged); + this.listBox.DoubleClick += new System.EventHandler(this.listBox_DoubleClick); + // + // btncn + // + this.btncn.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btncn.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btncn.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btncn.ForeColor = System.Drawing.Color.Black; + this.btncn.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btncn.Location = new System.Drawing.Point(149, 340); + this.btncn.Name = "btncn"; + this.btncn.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btncn.Size = new System.Drawing.Size(93, 30); + this.btncn.TabIndex = 596; + this.btncn.Text = "취소"; + this.btncn.UseVisualStyleBackColor = true; + this.btncn.Click += new System.EventHandler(this.btncn_Click); + // + // button3 + // + this.button3.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.button3.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button3.ForeColor = System.Drawing.Color.Black; + this.button3.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.button3.Location = new System.Drawing.Point(3, 340); + this.button3.Name = "button3"; + this.button3.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.button3.Size = new System.Drawing.Size(93, 30); + this.button3.TabIndex = 595; + this.button3.Text = "확인"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // button1 + // + this.button1.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.button1.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button1.ForeColor = System.Drawing.Color.Black; + this.button1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.button1.Location = new System.Drawing.Point(149, 5); + this.button1.Name = "button1"; + this.button1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.button1.Size = new System.Drawing.Size(93, 30); + this.button1.TabIndex = 594; + this.button1.Text = "삭제"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // PList + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(253, 381); + this.Controls.Add(this.panel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "PList"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "편성선택"; + this.Load += new System.EventHandler(this.PList_Load); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Button btnadd; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button btncn; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.ListBox listBox; + } +} \ No newline at end of file diff --git a/MBN_STOCK_N/Form/PList.cs b/MBN_STOCK_N/Form/PList.cs new file mode 100644 index 0000000..30da8ff --- /dev/null +++ b/MBN_STOCK_N/Form/PList.cs @@ -0,0 +1,258 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; + +namespace MBN_STOCK_N +{ + public partial class PList : Form + { + MainForm mf = null; + int m_idx = 0; + public string m_FileName = string.Empty; + + public PList() + { + + InitializeComponent(); + } + + public PList(Form frm, int idx) + { + mf = (MainForm)frm; + m_idx = idx; + InitializeComponent(); + } + + private void PList_Load(object sender, EventArgs e) + { + + Get_FileName_Folder(); + } + + public void Get_FileName_Folder() + { + try + { + mf.m_db.ViewQuery(mf.dataGridView1, "SELECT DC_TITLE, DC_CODE FROM DC_LIST order by dc_title "); + //listBox.Items.Clear(); + //DirectoryInfo d = new DirectoryInfo(mf.m_Path); + //FileInfo[] infos = d.GetFiles("*.*"); + + //foreach (FileInfo file in infos) + //{ + // listBox.Items.Add(file.Name.Substring(0, file.Name.Length-4)); + //} + + List myLIstBox = new List(); + + for (int i = 0; i < mf.dataGridView1.RowCount - 1; i++) + { + myLIstBox.Add(new MyListBoxClass { ListBox_Text = mf.dataGridView1.Rows[i].Cells[0].Value.ToString(), ListBox_Value = mf.dataGridView1.Rows[i].Cells[1].Value.ToString() }); + } + + listBox.DataSource = myLIstBox; + listBox.DisplayMember = "ListBox_Text"; + listBox.ValueMember = "ListBox_Value"; + } + catch(Exception) + { + + } + } + + private void btnadd_Click(object sender, EventArgs e) + { + AList fm = new AList(this, mf); + fm.Owner = this; + fm.ShowDialog(); + + Get_FileName_Folder(); + //if (m_FileName != "") + //{ + // StreamWriter sw = new StreamWriter(mf.m_Path + m_FileName + ".csv", true, Encoding.UTF8); + // sw.WriteLine(""); + // sw.Close(); + + //} + + } + + + private void data_load() + { + try + { + int row = 0; + string[] rs = null; + + MyListBoxClass myLIstBox = new MyListBoxClass(); + myLIstBox = (MyListBoxClass)this.listBox.SelectedItem; + + mf.m_newrow = -1; mf.m_rowidx = -1; + mf.PlayList.ActiveSheet.ClearRange(0, 0, mf.PlayList.ActiveSheet.RowCount, mf.PlayList.ActiveSheet.ColumnCount, true); + + if (mf.PlayList.ActiveSheet.RowCount != 0) + mf.PlayList.ActiveSheet.RemoveRows(0, mf.PlayList.ActiveSheet.RowCount); + + + //불러오기 + mf.m_db.ViewQuery(mf.dataGridView2, "SELECT* FROM PLAY_LIST WHERE PG_CODE = '" + myLIstBox.ListBox_Value + "' ORDER BY ITEM_INDEX"); + + + //int nrow = 0; + for (int i = 0; i < mf.dataGridView2.RowCount - 1; i++) + { + + //row = mf.PlayList.ActiveSheet.RowCount + 1; + row = row + 1; + + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + rs = mf.dataGridView2.Rows[i].Cells[1].Value.ToString().Split('^'); + + for (int j = 0; j < rs.Length; j++) + { + if (j == 0) + { + if (rs[0] == "1") + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + else + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, false); + } + else if (j == 5) + { + mf.PlayList.ActiveSheet.SetValue(row - 1, j, rs[j].Replace(" ", "")); + } + else + { + mf.PlayList.ActiveSheet.SetValue(row - 1, j, rs[j]); + } + } + + } + } + catch(Exception) + { + + } + } + + private void data_save() + { + //PlayList 저장 + try + { + string data = string.Empty; + MyListBoxClass myLIstBox = new MyListBoxClass(); + myLIstBox = (MyListBoxClass)this.listBox.SelectedItem; + + mf.m_db.ExecuteQuery("DELETE FROM PLAY_LIST WHERE PG_CODE = '" + myLIstBox.ListBox_Value + "'"); + + for (int i = 0; i < mf.PlayList.ActiveSheet.RowCount; i++) + { + data = ""; + if (mf.PlayList.ActiveSheet.GetText(i, 0) == "True") + data = data + "1^"; + else + data = data + "0^"; + + data = data + mf.PlayList.ActiveSheet.GetText(i, 1) + "^"; + data = data + mf.PlayList.ActiveSheet.GetText(i, 2) + "^"; + data = data + mf.PlayList.ActiveSheet.GetText(i, 3) + "^"; + data = data + mf.PlayList.ActiveSheet.GetText(i, 4) + "^"; + data = data + mf.PlayList.ActiveSheet.GetText(i, 5) + "^"; + data = data + mf.PlayList.ActiveSheet.GetText(i, 6); + mf.m_db.ExecuteQuery("INSERT INTO PLAY_LIST(PG_CODE, LIST_TEXT, ITEM_NAME, ITEM_CODE, ITEM_DETAIL, ITEM_TYPE, ITEM_ECUT, ITEM_ESTOCK, ITEM_COUNT, ITEM_INPUT, ITEM_INDEX)VALUES('" + myLIstBox.ListBox_Value + "', '" + data + "', '', '', '', '', '', '', '', '', '" + i.ToString() + "')"); + + } + } + catch(Exception) + { + + } + } + private void listBox_DoubleClick(object sender, EventArgs e) + { + try + { + if (m_idx == 1) + { + data_load(); + } + + else + { + if (MessageBox.Show("저장하겠습니까?", "MmoneyCoder", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + data_save(); + } + } + + Close(); + } + catch(Exception) + { + + } + } + + private void button1_Click(object sender, EventArgs e) + { + + if (listBox.SelectedIndex == -1) return; + if (MessageBox.Show("프로그램이 삭제됩니다. 계속 하시겠습니까?", "MmoneyCoder", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + MyListBoxClass myLIstBox = new MyListBoxClass(); + myLIstBox = (MyListBoxClass)this.listBox.SelectedItem; + + mf.m_db.ExecuteQuery("DELETE FROM DC_LIST WHERE DC_CODE = '" + myLIstBox.ListBox_Value + "'"); + Get_FileName_Folder(); + } + } + + + //취소 + private void btncn_Click(object sender, EventArgs e) + { + mf.m_PlayLsit = ""; + Close(); + } + + + //확인 + private void button3_Click(object sender, EventArgs e) + { + if (m_idx == 0) + { + if (MessageBox.Show("저장하겠습니까?", "MmoneyCoder", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + data_save(); + MessageBox.Show("저장되었습니다"); + } + } + else + { + data_load(); + } + Close(); + } + + private void listBox_SelectedIndexChanged(object sender, EventArgs e) + { + + } + + public class MyListBoxClass + { + public string ListBox_Value { get; set; } + public string ListBox_Text { get; set; } + + // Instance Constructor. + public MyListBoxClass() + { + ListBox_Value = string.Empty; + ListBox_Text = string.Empty; + } + } + + } +} diff --git a/MBN_STOCK_N/Form/PList.resx b/MBN_STOCK_N/Form/PList.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/MBN_STOCK_N/Form/PList.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MBN_STOCK_N/Form/ThemeA.Designer.cs b/MBN_STOCK_N/Form/ThemeA.Designer.cs new file mode 100644 index 0000000..31e617a --- /dev/null +++ b/MBN_STOCK_N/Form/ThemeA.Designer.cs @@ -0,0 +1,611 @@ + +namespace MBN_STOCK_N +{ + partial class Theme + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer2 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer2 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer3 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer3 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer4 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer4 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer1 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer1 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer8 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer8 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer9 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer9 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer5 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer5 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer6 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer6 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer7 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer7 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer10 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer10 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer11 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer11 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer1 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle1 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType1 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.NamedStyle namedStyle2 = new FarPoint.Win.Spread.NamedStyle("CornerDefault"); + FarPoint.Win.Spread.CellType.CornerRenderer cornerRenderer1 = new FarPoint.Win.Spread.CellType.CornerRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle3 = new FarPoint.Win.Spread.NamedStyle("ColumnHeaderEnhanced"); + FarPoint.Win.Spread.NamedStyle namedStyle4 = new FarPoint.Win.Spread.NamedStyle("RowHeaderDefault"); + FarPoint.Win.Spread.SpreadSkin spreadSkin1 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer2 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer3 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.EmptyBorder emptyBorder3 = new FarPoint.Win.EmptyBorder(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Theme)); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.RB_NXT = new System.Windows.Forms.RadioButton(); + this.RB_KRX = new System.Windows.Forms.RadioButton(); + this.btncancel = new System.Windows.Forms.Button(); + this.btnok = new System.Windows.Forms.Button(); + this.gb2 = new System.Windows.Forms.GroupBox(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.FpSpread = new FarPoint.Win.Spread.FpSpread(); + this.FpSpread_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread_Sheet2 = new FarPoint.Win.Spread.SheetView(); + this.btn4 = new System.Windows.Forms.Button(); + this.btn3 = new System.Windows.Forms.Button(); + this.btn2 = new System.Windows.Forms.Button(); + this.btn1 = new System.Windows.Forms.Button(); + this.btnC = new System.Windows.Forms.Button(); + this.txt1 = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.gb1 = new System.Windows.Forms.GroupBox(); + this.listBox = new System.Windows.Forms.ListBox(); + this.txtSearch = new System.Windows.Forms.TextBox(); + this.btnsearch = new System.Windows.Forms.Button(); + this.panel3 = new System.Windows.Forms.Panel(); + this.panel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.gb2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet2)).BeginInit(); + this.gb1.SuspendLayout(); + this.SuspendLayout(); + enhancedColumnHeaderRenderer2.Name = "enhancedColumnHeaderRenderer2"; + enhancedColumnHeaderRenderer2.TextRotationAngle = 0D; + rowHeaderRenderer2.Name = "rowHeaderRenderer2"; + rowHeaderRenderer2.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer3.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer3.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer3.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer3.Name = "enhancedColumnHeaderRenderer3"; + enhancedColumnHeaderRenderer3.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer3.TextRotationAngle = 0D; + rowHeaderRenderer3.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer3.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer3.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer3.Name = "rowHeaderRenderer3"; + rowHeaderRenderer3.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer3.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer4.Name = "enhancedColumnHeaderRenderer4"; + enhancedColumnHeaderRenderer4.TextRotationAngle = 0D; + rowHeaderRenderer4.Name = "rowHeaderRenderer4"; + rowHeaderRenderer4.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer1.Name = "enhancedColumnHeaderRenderer1"; + enhancedColumnHeaderRenderer1.TextRotationAngle = 0D; + rowHeaderRenderer1.Name = "rowHeaderRenderer1"; + rowHeaderRenderer1.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer8.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer8.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer8.Name = "enhancedColumnHeaderRenderer8"; + enhancedColumnHeaderRenderer8.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer8.TextRotationAngle = 0D; + rowHeaderRenderer8.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer8.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer8.Name = "rowHeaderRenderer8"; + rowHeaderRenderer8.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer8.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer9.Name = "enhancedColumnHeaderRenderer9"; + enhancedColumnHeaderRenderer9.TextRotationAngle = 0D; + rowHeaderRenderer9.Name = "rowHeaderRenderer9"; + rowHeaderRenderer9.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer5.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer5.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer5.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer5.Name = "enhancedColumnHeaderRenderer5"; + enhancedColumnHeaderRenderer5.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer5.TextRotationAngle = 0D; + rowHeaderRenderer5.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer5.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer5.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer5.Name = "rowHeaderRenderer5"; + rowHeaderRenderer5.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer5.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer6.Name = "enhancedColumnHeaderRenderer6"; + enhancedColumnHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer6.TextRotationAngle = 0D; + rowHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer6.Name = "rowHeaderRenderer6"; + rowHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer6.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer7.Name = "enhancedColumnHeaderRenderer7"; + enhancedColumnHeaderRenderer7.TextRotationAngle = 0D; + rowHeaderRenderer7.Name = "rowHeaderRenderer7"; + rowHeaderRenderer7.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer10.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer10.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer10.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer10.Name = "enhancedColumnHeaderRenderer10"; + enhancedColumnHeaderRenderer10.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer10.TextRotationAngle = 0D; + rowHeaderRenderer10.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer10.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer10.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer10.Name = "rowHeaderRenderer10"; + rowHeaderRenderer10.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer10.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer11.Name = "enhancedColumnHeaderRenderer11"; + enhancedColumnHeaderRenderer11.TextRotationAngle = 0D; + rowHeaderRenderer11.Name = "rowHeaderRenderer11"; + rowHeaderRenderer11.TextRotationAngle = 0D; + // + // panel1 + // + this.panel1.Controls.Add(this.panel3); + this.panel1.Controls.Add(this.panel2); + this.panel1.Controls.Add(this.btncancel); + this.panel1.Controls.Add(this.btnok); + this.panel1.Controls.Add(this.gb2); + this.panel1.Controls.Add(this.btnC); + this.panel1.Controls.Add(this.txt1); + this.panel1.Controls.Add(this.label5); + this.panel1.Controls.Add(this.gb1); + this.panel1.Location = new System.Drawing.Point(0, 1); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(393, 639); + this.panel1.TabIndex = 0; + // + // panel2 + // + this.panel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel2.Controls.Add(this.RB_NXT); + this.panel2.Controls.Add(this.RB_KRX); + this.panel2.Location = new System.Drawing.Point(108, 8); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(166, 28); + this.panel2.TabIndex = 608; + // + // RB_NXT + // + this.RB_NXT.AutoSize = true; + this.RB_NXT.Font = new System.Drawing.Font("굴림", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.RB_NXT.Location = new System.Drawing.Point(89, 5); + this.RB_NXT.Name = "RB_NXT"; + this.RB_NXT.Size = new System.Drawing.Size(53, 17); + this.RB_NXT.TabIndex = 1; + this.RB_NXT.Text = "NXT"; + this.RB_NXT.UseVisualStyleBackColor = true; + // + // RB_KRX + // + this.RB_KRX.AutoSize = true; + this.RB_KRX.Checked = true; + this.RB_KRX.Font = new System.Drawing.Font("굴림", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.RB_KRX.Location = new System.Drawing.Point(22, 5); + this.RB_KRX.Name = "RB_KRX"; + this.RB_KRX.Size = new System.Drawing.Size(53, 17); + this.RB_KRX.TabIndex = 0; + this.RB_KRX.TabStop = true; + this.RB_KRX.Text = "KRX"; + this.RB_KRX.UseVisualStyleBackColor = true; + // + // btncancel + // + this.btncancel.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btncancel.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btncancel.ForeColor = System.Drawing.Color.Black; + this.btncancel.Location = new System.Drawing.Point(286, 593); + this.btncancel.Name = "btncancel"; + this.btncancel.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btncancel.Size = new System.Drawing.Size(93, 36); + this.btncancel.TabIndex = 607; + this.btncancel.Text = "취소"; + this.btncancel.UseVisualStyleBackColor = true; + this.btncancel.Click += new System.EventHandler(this.btncancel_Click); + // + // btnok + // + this.btnok.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnok.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnok.ForeColor = System.Drawing.Color.Black; + this.btnok.Location = new System.Drawing.Point(180, 593); + this.btnok.Name = "btnok"; + this.btnok.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnok.Size = new System.Drawing.Size(100, 36); + this.btnok.TabIndex = 606; + this.btnok.Text = "확인"; + this.btnok.UseVisualStyleBackColor = true; + this.btnok.Click += new System.EventHandler(this.btnok_Click); + // + // gb2 + // + this.gb2.Controls.Add(this.dataGridView1); + this.gb2.Controls.Add(this.FpSpread); + this.gb2.Controls.Add(this.btn4); + this.gb2.Controls.Add(this.btn3); + this.gb2.Controls.Add(this.btn2); + this.gb2.Controls.Add(this.btn1); + this.gb2.Location = new System.Drawing.Point(15, 320); + this.gb2.Name = "gb2"; + this.gb2.Size = new System.Drawing.Size(364, 266); + this.gb2.TabIndex = 605; + this.gb2.TabStop = false; + this.gb2.Text = "설정"; + // + // dataGridView1 + // + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Location = new System.Drawing.Point(265, 146); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowTemplate.Height = 23; + this.dataGridView1.Size = new System.Drawing.Size(80, 59); + this.dataGridView1.TabIndex = 616; + this.dataGridView1.Visible = false; + // + // FpSpread + // + this.FpSpread.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, "; + this.FpSpread.AutoClipboard = false; + this.FpSpread.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.FpSpread.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FpSpread.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders; + this.FpSpread.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + this.FpSpread.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread.HorizontalScrollBar.Name = ""; + this.FpSpread.HorizontalScrollBar.Renderer = defaultScrollBarRenderer1; + this.FpSpread.HorizontalScrollBar.TabIndex = 347; + this.FpSpread.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.FpSpread.Location = new System.Drawing.Point(6, 16); + this.FpSpread.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.FpSpread.MoveActiveOnFocus = false; + this.FpSpread.Name = "FpSpread"; + namedStyle1.BackColor = System.Drawing.SystemColors.Window; + namedStyle1.CellType = generalCellType1; + namedStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle1.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle1.Renderer = generalCellType1; + namedStyle2.BackColor = System.Drawing.SystemColors.Control; + namedStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle2.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle2.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle2.Renderer = cornerRenderer1; + namedStyle2.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(211)))), ((int)(((byte)(220)))), ((int)(((byte)(233))))); + namedStyle3.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle3.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle3.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle3.Renderer = enhancedColumnHeaderRenderer11; + namedStyle3.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle4.BackColor = System.Drawing.SystemColors.Control; + namedStyle4.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle4.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle4.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle4.Renderer = rowHeaderRenderer11; + namedStyle4.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.FpSpread.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle1, + namedStyle2, + namedStyle3, + namedStyle4}); + this.FpSpread.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.FpSpread.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.FpSpread_Sheet1, + this.FpSpread_Sheet2}); + this.FpSpread.Size = new System.Drawing.Size(352, 207); + spreadSkin1.ColumnHeaderDefaultStyle = namedStyle3; + spreadSkin1.DefaultStyle = namedStyle4; + spreadSkin1.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + spreadSkin1.Name = "CustomSkin1"; + spreadSkin1.RowHeaderDefaultStyle = namedStyle3; + spreadSkin1.ScrollBarRenderer = defaultScrollBarRenderer2; + spreadSkin1.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(60)))), ((int)(((byte)(97))))), System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(110)))), ((int)(((byte)(170))))), System.Drawing.Drawing2D.LinearGradientMode.Vertical, 30); + this.FpSpread.Skin = spreadSkin1; + this.FpSpread.TabIndex = 600; + this.FpSpread.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.Never; + this.FpSpread.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Never; + this.FpSpread.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread.VerticalScrollBar.Name = ""; + this.FpSpread.VerticalScrollBar.Renderer = defaultScrollBarRenderer3; + this.FpSpread.VerticalScrollBar.TabIndex = 348; + this.FpSpread.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; + this.FpSpread.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FpSpread_KeyDown); + // + // FpSpread_Sheet1 + // + this.FpSpread_Sheet1.Reset(); + this.FpSpread_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread_Sheet1.ColumnCount = 8; + this.FpSpread_Sheet1.RowCount = 0; + this.FpSpread_Sheet1.RowHeader.ColumnCount = 0; + this.FpSpread_Sheet1.ActiveRowIndex = -1; + this.FpSpread_Sheet1.ActiveSkin = FarPoint.Win.Spread.DefaultSkins.Classic; + this.FpSpread_Sheet1.ColumnHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers; + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).BackColor = System.Drawing.SystemColors.ActiveCaption; + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).Border = emptyBorder3; + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "Set List"; + this.FpSpread_Sheet1.ColumnHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread_Sheet1.ColumnHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.FpSpread_Sheet1.Columns.Get(0).Visible = false; + this.FpSpread_Sheet1.Columns.Get(1).Label = "Set List"; + this.FpSpread_Sheet1.Columns.Get(1).Width = 328F; + this.FpSpread_Sheet1.Columns.Get(2).Visible = false; + this.FpSpread_Sheet1.Columns.Get(3).Visible = false; + this.FpSpread_Sheet1.Columns.Get(4).Visible = false; + this.FpSpread_Sheet1.Columns.Get(5).Visible = false; + this.FpSpread_Sheet1.Columns.Get(6).Visible = false; + this.FpSpread_Sheet1.Columns.Get(7).Visible = false; + this.FpSpread_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.RowMode; + this.FpSpread_Sheet1.RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; + this.FpSpread_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.FpSpread_Sheet1.RowHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet1.RowHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread_Sheet1.RowHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet1.SheetCornerStyle.Parent = "HeaderDefault"; + this.FpSpread_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.FpSpread.SetActiveViewport(0, -1, 0); + // + // FpSpread_Sheet2 + // + this.FpSpread_Sheet2.Reset(); + this.FpSpread_Sheet2.SheetName = "Sheet2"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread_Sheet2.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet2.DefaultStyle.Parent = "RowHeaderDefault"; + this.FpSpread_Sheet2.RowHeader.Columns.Default.Resizable = false; + this.FpSpread_Sheet2.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet2.RowHeader.DefaultStyle.Parent = "ColumnHeaderEnhanced"; + this.FpSpread_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + // + // btn4 + // + this.btn4.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn4.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn4.ForeColor = System.Drawing.Color.Black; + this.btn4.Location = new System.Drawing.Point(276, 228); + this.btn4.Name = "btn4"; + this.btn4.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn4.Size = new System.Drawing.Size(84, 29); + this.btn4.TabIndex = 599; + this.btn4.Text = "Down"; + this.btn4.UseVisualStyleBackColor = true; + this.btn4.Click += new System.EventHandler(this.btn4_Click); + // + // btn3 + // + this.btn3.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn3.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn3.ForeColor = System.Drawing.Color.Black; + this.btn3.Location = new System.Drawing.Point(186, 228); + this.btn3.Name = "btn3"; + this.btn3.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn3.Size = new System.Drawing.Size(84, 29); + this.btn3.TabIndex = 598; + this.btn3.Text = "Up"; + this.btn3.UseVisualStyleBackColor = true; + this.btn3.Click += new System.EventHandler(this.btn3_Click); + // + // btn2 + // + this.btn2.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn2.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn2.ForeColor = System.Drawing.Color.Black; + this.btn2.Location = new System.Drawing.Point(96, 228); + this.btn2.Name = "btn2"; + this.btn2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn2.Size = new System.Drawing.Size(84, 29); + this.btn2.TabIndex = 597; + this.btn2.Text = "Delete All"; + this.btn2.UseVisualStyleBackColor = true; + this.btn2.Click += new System.EventHandler(this.btn2_Click); + // + // btn1 + // + this.btn1.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn1.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn1.ForeColor = System.Drawing.Color.Black; + this.btn1.Location = new System.Drawing.Point(6, 228); + this.btn1.Name = "btn1"; + this.btn1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn1.Size = new System.Drawing.Size(84, 29); + this.btn1.TabIndex = 596; + this.btn1.Text = "Delete"; + this.btn1.UseVisualStyleBackColor = true; + this.btn1.Click += new System.EventHandler(this.btn1_Click); + // + // btnC + // + this.btnC.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnC.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btnC.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnC.ForeColor = System.Drawing.Color.Black; + this.btnC.Location = new System.Drawing.Point(280, 41); + this.btnC.Name = "btnC"; + this.btnC.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnC.Size = new System.Drawing.Size(93, 27); + this.btnC.TabIndex = 604; + this.btnC.Text = "중복확인"; + this.btnC.UseVisualStyleBackColor = true; + this.btnC.Click += new System.EventHandler(this.btnC_Click); + // + // txt1 + // + this.txt1.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txt1.Location = new System.Drawing.Point(21, 41); + this.txt1.Name = "txt1"; + this.txt1.Size = new System.Drawing.Size(253, 25); + this.txt1.TabIndex = 0; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label5.Location = new System.Drawing.Point(21, 23); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(43, 15); + this.label5.TabIndex = 602; + this.label5.Text = "테마명"; + // + // gb1 + // + this.gb1.Controls.Add(this.listBox); + this.gb1.Controls.Add(this.txtSearch); + this.gb1.Controls.Add(this.btnsearch); + this.gb1.Location = new System.Drawing.Point(15, 72); + this.gb1.Name = "gb1"; + this.gb1.Size = new System.Drawing.Size(364, 247); + this.gb1.TabIndex = 601; + this.gb1.TabStop = false; + this.gb1.Text = "종목(같은 시장종목을 선택해야합니다.)"; + // + // listBox + // + this.listBox.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.listBox.FormattingEnabled = true; + this.listBox.ItemHeight = 17; + this.listBox.Location = new System.Drawing.Point(6, 50); + this.listBox.Name = "listBox"; + this.listBox.Size = new System.Drawing.Size(351, 191); + this.listBox.TabIndex = 595; + this.listBox.SelectedIndexChanged += new System.EventHandler(this.listBox_SelectedIndexChanged); + this.listBox.DoubleClick += new System.EventHandler(this.listBox_DoubleClick); + // + // txtSearch + // + this.txtSearch.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txtSearch.Location = new System.Drawing.Point(6, 18); + this.txtSearch.Name = "txtSearch"; + this.txtSearch.Size = new System.Drawing.Size(253, 25); + this.txtSearch.TabIndex = 591; + this.txtSearch.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtSearch_KeyPress); + // + // btnsearch + // + this.btnsearch.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnsearch.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnsearch.ForeColor = System.Drawing.Color.Black; + this.btnsearch.Image = ((System.Drawing.Image)(resources.GetObject("btnsearch.Image"))); + this.btnsearch.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnsearch.Location = new System.Drawing.Point(265, 15); + this.btnsearch.Name = "btnsearch"; + this.btnsearch.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnsearch.Size = new System.Drawing.Size(93, 30); + this.btnsearch.TabIndex = 592; + this.btnsearch.Text = " 종목검색"; + this.btnsearch.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnsearch.UseVisualStyleBackColor = true; + this.btnsearch.Click += new System.EventHandler(this.btnsearch_Click); + // + // panel3 + // + this.panel3.BackColor = System.Drawing.Color.White; + this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel3.ForeColor = System.Drawing.SystemColors.ButtonShadow; + this.panel3.Location = new System.Drawing.Point(23, 360); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(349, 1); + this.panel3.TabIndex = 617; + // + // Theme + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(396, 642); + this.Controls.Add(this.panel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "Theme"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "테마추가"; + this.Load += new System.EventHandler(this.Theme_Load); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.gb2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet2)).EndInit(); + this.gb1.ResumeLayout(false); + this.gb1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.GroupBox gb1; + private System.Windows.Forms.TextBox txtSearch; + private System.Windows.Forms.Button btnsearch; + private System.Windows.Forms.TextBox txt1; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Button btnC; + private System.Windows.Forms.GroupBox gb2; + private System.Windows.Forms.Button btncancel; + private System.Windows.Forms.Button btnok; + private System.Windows.Forms.Button btn4; + private System.Windows.Forms.Button btn3; + private System.Windows.Forms.Button btn2; + private System.Windows.Forms.Button btn1; + public FarPoint.Win.Spread.FpSpread FpSpread; + public FarPoint.Win.Spread.SheetView FpSpread_Sheet1; + public FarPoint.Win.Spread.SheetView FpSpread_Sheet2; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.ListBox listBox; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.RadioButton RB_NXT; + private System.Windows.Forms.RadioButton RB_KRX; + private System.Windows.Forms.Panel panel3; + } +} \ No newline at end of file diff --git a/MBN_STOCK_N/Form/ThemeA.cs b/MBN_STOCK_N/Form/ThemeA.cs new file mode 100644 index 0000000..3bf6680 --- /dev/null +++ b/MBN_STOCK_N/Form/ThemeA.cs @@ -0,0 +1,308 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics.Eventing.Reader; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MBN_STOCK_N +{ + public partial class Theme : Form + { + string m_code = string.Empty; + string m_name = string.Empty; + //DBCon m_db = new DBCon(); + MainForm mf = null; + //int m_exist = false; + + public Theme() + { + InitializeComponent(); + } + + public Theme(Form frm, string code, string tname) + { + m_code = code; + m_name = tname; + mf = (MainForm)frm; + InitializeComponent(); + } + + private void Theme_Load(object sender, EventArgs e) + { + string query = string.Empty; + + if ((m_code != "")||(m_code == null)) //편집 + { + if (m_name.Contains("(NXT)")) + { + RB_NXT.Checked = true; + + query = "SELECT CONCAT(a.SB_I_NAME,'(NXT)') , a.SB_I_CODE, a.sb_m_code, a.sb_i_index " + + "FROM SB_ITEM a, v_all_stock b " + + "WHERE a.SB_M_CODE = '" + m_code + "' " + + "and substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + "and b.f_stop_gubun = 'N' ORDER BY a.SB_I_INDEX"; + + mf.m_db.Nxt_ViewQuery(dataGridView1, query); + } + else + { + RB_KRX.Checked = true; + + query = "SELECT a.SB_I_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index " + + "FROM SB_ITEM a, v_all_stock b " + + "WHERE a.SB_M_CODE = '" + m_code + "' " + + "and substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + "and b.f_mkt_halt = 'N' ORDER BY a.SB_I_INDEX"; + + mf.m_db.ViewQuery(dataGridView1, query); + } + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + mf.InsertRow(FpSpread, FpSpread.ActiveSheet, FpSpread.ActiveSheet.RowCount + 1, 1, 0); + FpSpread.ActiveSheet.SetText(i, 1, dataGridView1.Rows[i].Cells[0].Value.ToString()); + FpSpread.ActiveSheet.SetText(i, 0, dataGridView1.Rows[i].Cells[1].Value.ToString()); + } + + txt1.Text = m_name; + } + else + { + txt1.Focus(); + } + + FpSpread.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + } + + //중복확인 + private void btnC_Click(object sender, EventArgs e) + { + string market = null; + + if (txt1.Text == "") return; + + if (RB_KRX.Checked) + { + market = "KRX"; + mf.m_db.ViewQuery(dataGridView1, "SELECT SB_TITLE, SB_CODE FROM SB_LIST WHERE SB_TITLE LIKE '" + txt1.Text + "'" + " AND SB_MARKET = '" + market + "'"); + } + else + { + market = "NXT"; + mf.m_db.Nxt_ViewQuery(dataGridView1, "SELECT SB_TITLE, SB_CODE FROM SB_LIST WHERE SB_TITLE LIKE '" + txt1.Text + "'" + " AND SB_MARKET = '" + market + "'"); + } + + if (dataGridView1.RowCount > 1) + { + MessageBox.Show("이미 사용중인 테마명입니다."); + } + else + { + MessageBox.Show("사용 가능한 테마명입니다."); + } + } + + //종목검색 + private void btnsearch_Click(object sender, EventArgs e) + { + if (txtSearch.Text == "") return; + + mf.searchStock(listBox, txtSearch); + } + + + //Delete + private void btn1_Click(object sender, EventArgs e) + { + //"DELETE FROM SB_ITEM WHERE SB_M_CODE = '%s'" + //"DELETE FROM SB_LIST WHERE SB_CODE = '%s'" + + if (FpSpread.ActiveSheet.ActiveRowIndex + 1 > 0) + { + FpSpread.ActiveSheet.RemoveRows(FpSpread.ActiveSheet.ActiveRowIndex, 1); + } + + } + + + //Delete All + private void btn2_Click(object sender, EventArgs e) + { + if (MessageBox.Show("모두 삭제하겠습니까?", "MmoneyCoder", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + FpSpread.ActiveSheet.ClearRange(0, 0, FpSpread.ActiveSheet.RowCount, FpSpread.ActiveSheet.ColumnCount, true); + if (FpSpread.ActiveSheet.RowCount != 0) + FpSpread.ActiveSheet.RemoveRows(0, FpSpread.ActiveSheet.RowCount); + } + } + + //up + private void btn3_Click(object sender, EventArgs e) + { + mf.Spd_UpDown(FpSpread, FpSpread.ActiveSheet, 0, 0); + } + + + //Down + private void btn4_Click(object sender, EventArgs e) + { + mf.Spd_UpDown(FpSpread, FpSpread.ActiveSheet, 1, 0); + } + + + //확인 + private void btnok_Click(object sender, EventArgs e) + { + string code = string.Empty; + string market = string.Empty; + + if (RB_KRX.Checked) + market = "KRX"; + else + market = "NXT"; + + if (m_code == "") + { + if (market == "KRX") + mf.m_db.ViewQuery(dataGridView1, "SELECT SB_TITLE, SB_CODE FROM SB_LIST WHERE SB_TITLE LIKE '" + txt1.Text + "' AND SB_MARKET = '" + market + "' "); + else + mf.m_db.Nxt_ViewQuery(dataGridView1, "SELECT SB_TITLE, SB_CODE FROM SB_LIST WHERE SB_TITLE LIKE '" + txt1.Text + "' AND SB_MARKET = '" + market + "' "); + + if (dataGridView1.RowCount > 1) + { + MessageBox.Show("이미 사용중인 테마명입니다."); + return; + } + code = GetNextCode("Select * From SB_List Order by SB_CODE", market); + } + else + { + //기존테마 삭제 + if (market == "KRX") + { + mf.m_db.ExecuteQuery("DELETE FROM SB_ITEM WHERE SB_M_CODE = '" + m_code + "'"); + mf.m_db.ExecuteQuery("DELETE FROM SB_LIST WHERE SB_CODE = '" + m_code + "'"); + } + else + { + mf.m_db.Nxt_ExecuteQuery("DELETE FROM SB_ITEM WHERE SB_M_CODE = '" + m_code + "'"); + mf.m_db.Nxt_ExecuteQuery("DELETE FROM SB_LIST WHERE SB_CODE = '" + m_code + "'"); + } + + code = m_code; + } + + //테마 입력 + if (market == "KRX") + mf.m_db.ExecuteQuery("INSERT INTO SB_LIST(SB_CODE, SB_TITLE, SB_MARKET) VALUES ('" + code + "', '" + txt1.Text + "', '" + market + "')"); + else + mf.m_db.Nxt_ExecuteQuery("INSERT INTO SB_LIST(SB_CODE, SB_TITLE, SB_MARKET) VALUES ('" + code + "', '" + txt1.Text.Replace("(NXT)", "") + "', '" + market + "')"); + + if (FpSpread.ActiveSheet.RowCount > 0) + { + for (int i = 0; i < FpSpread.ActiveSheet.RowCount; i++) + { + //테마 상세종목 입력 + if (market == "KRX") + mf.m_db.ExecuteQuery("INSERT INTO SB_ITEM (SB_M_CODE, SB_I_CODE, SB_I_NAME, SB_I_INDEX) VALUES('" + + code + "', '" + FpSpread.ActiveSheet.GetText(i, 0) + "', '" + FpSpread.ActiveSheet.GetText(i, 1) + "', '" + i.ToString() + "')"); + else + mf.m_db.Nxt_ExecuteQuery("INSERT INTO SB_ITEM (SB_M_CODE, SB_I_CODE, SB_I_NAME, SB_I_INDEX) VALUES('" + + code + "', '" + FpSpread.ActiveSheet.GetText(i, 0) + "', '" + + FpSpread.ActiveSheet.GetText(i, 1).Replace("(NXT)", "") + "', '" + i.ToString() + "')"); + + } + + } + //MessageBox.Show("추가되었습니다."); + Close(); + } + + public string GetNextCode(string query, string mart) + { + string code = string.Empty; + + if (mart == "KRX") + mf.m_db.ViewQuery(dataGridView1, query); + else + mf.m_db.Nxt_ViewQuery(dataGridView1, query); + + if (dataGridView1.RowCount > 0) + { + int lastcode = Convert.ToInt32(dataGridView1.Rows[dataGridView1.RowCount - 2].Cells[0].Value.ToString()) + 1; + code = string.Format("{0:D8}", lastcode); + } + + return code; + } + + //취소 + private void btncancel_Click(object sender, EventArgs e) + { + Close(); + } + + private void FpSpread1_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e) + { + + } + + private void FpSpread1_DoubleClick(object sender, EventArgs e) + { + + } + + private void listBox_DoubleClick(object sender, EventArgs e) + { + string str = mf.jongmokCode((string)listBox.SelectedItem); + + string data3 = str.Substring(0, str.IndexOf('/')); //종목코드 + string data4 = str.Substring(str.IndexOf('/') + 1, str.Length - str.IndexOf('/') - 1); //코스피, 코스닥체크 + string jcode = string.Empty; + + if (data4 == "코스피") + jcode = "P" + data3; + else if (data4 == "코스닥") + jcode = "D" + data3; + else if (data4 == "코스피_NXT") + jcode = "X" + data3; + else if (data4 == "코스닥_NXT") + jcode = "T" + data3; + + //열추가 + int row = FpSpread.ActiveSheet.RowCount+1; + mf.InsertRow(FpSpread, FpSpread.ActiveSheet, row, 1, 0); + + FpSpread.ActiveSheet.SetText(row - 1, 1, (string)listBox.SelectedItem); + FpSpread.ActiveSheet.SetText(row - 1, 0, jcode); + } + + private void listBox_SelectedIndexChanged(object sender, EventArgs e) + { + + } + + private void txtSearch_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == (char)Keys.Enter) + { + e.Handled = true; + mf.searchStock(listBox, txtSearch); + } + } + + private void FpSpread_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Delete) + { + btn1_Click(null, null); + } + } + } +} diff --git a/MBN_STOCK_N/Form/ThemeA.resx b/MBN_STOCK_N/Form/ThemeA.resx new file mode 100644 index 0000000..7ec583b --- /dev/null +++ b/MBN_STOCK_N/Form/ThemeA.resx @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1073, 115 + + + 1188, 115 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAmdEVYdFRpdGxlAEZpbmQ7QmFycztSaWJib247U3Rh + bmRhcmQ7U2VhcmNou2WcCAAAALlJREFUOE+lktsRgjAQRaEdakgpFGEFoj3QBaM1+SNtxHuY3QyziegM + Hydk9j4gQJdzPsW2pJSgF6NYxGqwZ4ZWhWFbzHAT+QtofQyDF3AXjG8xicFgzwxtjGHwAh4V0xQNzExb + ogZu4ryYhmhgZtoaNXDT6YLTRzh6iczhIfAW9gW/PqNzFc0CL2n9SE/RLCkFR5j5LqoS9CoQwWjEkhm9 + GdojY7mKfcmLeRVoYWFnJiwuaM3A/+TuA3z+LAyTGFNzAAAAAElFTkSuQmCC + + + \ No newline at end of file diff --git a/MBN_STOCK_N/Form/VIList.Designer.cs b/MBN_STOCK_N/Form/VIList.Designer.cs new file mode 100644 index 0000000..a24131e --- /dev/null +++ b/MBN_STOCK_N/Form/VIList.Designer.cs @@ -0,0 +1,560 @@ + +namespace MBN_STOCK_N +{ + partial class VILIST + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer12 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer12 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer13 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer13 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer7 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer7 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer2 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer2 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer3 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer3 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer4 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer4 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer1 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer1 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer8 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer8 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer9 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer9 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer5 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer5 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer6 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer6 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer1 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle1 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType1 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.NamedStyle namedStyle2 = new FarPoint.Win.Spread.NamedStyle("CornerDefault"); + FarPoint.Win.Spread.CellType.CornerRenderer cornerRenderer1 = new FarPoint.Win.Spread.CellType.CornerRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle3 = new FarPoint.Win.Spread.NamedStyle("ColumnHeaderEnhanced"); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer10 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle4 = new FarPoint.Win.Spread.NamedStyle("RowHeaderDefault"); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer10 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.SpreadSkin spreadSkin1 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.NamedStyle namedStyle5 = new FarPoint.Win.Spread.NamedStyle("ColumnHeaderEnhanced"); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer11 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle6 = new FarPoint.Win.Spread.NamedStyle("RowHeaderDefault"); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer11 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer2 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer3 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.EmptyBorder emptyBorder1 = new FarPoint.Win.EmptyBorder(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(VILIST)); + this.txtSearch = new System.Windows.Forms.TextBox(); + this.btnok = new System.Windows.Forms.Button(); + this.gb2 = new System.Windows.Forms.GroupBox(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.FpSpread = new FarPoint.Win.Spread.FpSpread(); + this.FpSpread_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread_Sheet2 = new FarPoint.Win.Spread.SheetView(); + this.btn4 = new System.Windows.Forms.Button(); + this.btn3 = new System.Windows.Forms.Button(); + this.btn2 = new System.Windows.Forms.Button(); + this.btn1 = new System.Windows.Forms.Button(); + this.gb1 = new System.Windows.Forms.GroupBox(); + this.listBox = new System.Windows.Forms.ListBox(); + this.btnsearch = new System.Windows.Forms.Button(); + this.btncancel = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.gb2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet2)).BeginInit(); + this.gb1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + enhancedColumnHeaderRenderer12.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer12.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer12.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer12.Name = "enhancedColumnHeaderRenderer12"; + enhancedColumnHeaderRenderer12.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer12.TextRotationAngle = 0D; + rowHeaderRenderer12.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer12.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer12.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer12.Name = "rowHeaderRenderer12"; + rowHeaderRenderer12.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer12.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer13.Name = "enhancedColumnHeaderRenderer13"; + enhancedColumnHeaderRenderer13.TextRotationAngle = 0D; + rowHeaderRenderer13.Name = "rowHeaderRenderer13"; + rowHeaderRenderer13.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer7.Name = "enhancedColumnHeaderRenderer7"; + enhancedColumnHeaderRenderer7.TextRotationAngle = 0D; + rowHeaderRenderer7.Name = "rowHeaderRenderer7"; + rowHeaderRenderer7.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer2.Name = "enhancedColumnHeaderRenderer2"; + enhancedColumnHeaderRenderer2.TextRotationAngle = 0D; + rowHeaderRenderer2.Name = "rowHeaderRenderer2"; + rowHeaderRenderer2.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer3.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer3.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer3.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer3.Name = "enhancedColumnHeaderRenderer3"; + enhancedColumnHeaderRenderer3.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer3.TextRotationAngle = 0D; + rowHeaderRenderer3.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer3.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer3.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer3.Name = "rowHeaderRenderer3"; + rowHeaderRenderer3.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer3.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer4.Name = "enhancedColumnHeaderRenderer4"; + enhancedColumnHeaderRenderer4.TextRotationAngle = 0D; + rowHeaderRenderer4.Name = "rowHeaderRenderer4"; + rowHeaderRenderer4.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer1.Name = "enhancedColumnHeaderRenderer1"; + enhancedColumnHeaderRenderer1.TextRotationAngle = 0D; + rowHeaderRenderer1.Name = "rowHeaderRenderer1"; + rowHeaderRenderer1.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer8.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer8.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer8.Name = "enhancedColumnHeaderRenderer8"; + enhancedColumnHeaderRenderer8.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer8.TextRotationAngle = 0D; + rowHeaderRenderer8.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer8.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer8.Name = "rowHeaderRenderer8"; + rowHeaderRenderer8.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer8.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer9.Name = "enhancedColumnHeaderRenderer9"; + enhancedColumnHeaderRenderer9.TextRotationAngle = 0D; + rowHeaderRenderer9.Name = "rowHeaderRenderer9"; + rowHeaderRenderer9.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer5.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer5.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer5.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer5.Name = "enhancedColumnHeaderRenderer5"; + enhancedColumnHeaderRenderer5.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer5.TextRotationAngle = 0D; + rowHeaderRenderer5.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer5.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer5.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer5.Name = "rowHeaderRenderer5"; + rowHeaderRenderer5.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer5.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer6.Name = "enhancedColumnHeaderRenderer6"; + enhancedColumnHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer6.TextRotationAngle = 0D; + rowHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer6.Name = "rowHeaderRenderer6"; + rowHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer6.TextRotationAngle = 0D; + // + // txtSearch + // + this.txtSearch.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txtSearch.Location = new System.Drawing.Point(6, 18); + this.txtSearch.Name = "txtSearch"; + this.txtSearch.Size = new System.Drawing.Size(221, 25); + this.txtSearch.TabIndex = 591; + this.txtSearch.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtSearch_KeyPress); + // + // btnok + // + this.btnok.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnok.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnok.ForeColor = System.Drawing.Color.Black; + this.btnok.Location = new System.Drawing.Point(172, 495); + this.btnok.Name = "btnok"; + this.btnok.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnok.Size = new System.Drawing.Size(100, 27); + this.btnok.TabIndex = 606; + this.btnok.Text = "확인"; + this.btnok.UseVisualStyleBackColor = true; + this.btnok.Click += new System.EventHandler(this.btnok_Click); + // + // gb2 + // + this.gb2.Controls.Add(this.dataGridView1); + this.gb2.Controls.Add(this.FpSpread); + this.gb2.Controls.Add(this.btn4); + this.gb2.Controls.Add(this.btn3); + this.gb2.Controls.Add(this.btn2); + this.gb2.Controls.Add(this.btn1); + this.gb2.Location = new System.Drawing.Point(7, 249); + this.gb2.Name = "gb2"; + this.gb2.Size = new System.Drawing.Size(364, 233); + this.gb2.TabIndex = 605; + this.gb2.TabStop = false; + this.gb2.Text = "VI 리스트"; + // + // dataGridView1 + // + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Location = new System.Drawing.Point(108, 149); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowTemplate.Height = 23; + this.dataGridView1.Size = new System.Drawing.Size(80, 59); + this.dataGridView1.TabIndex = 616; + this.dataGridView1.Visible = false; + // + // FpSpread + // + this.FpSpread.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, "; + this.FpSpread.AutoClipboard = false; + this.FpSpread.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.FpSpread.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FpSpread.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders; + this.FpSpread.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + this.FpSpread.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread.HorizontalScrollBar.Name = ""; + this.FpSpread.HorizontalScrollBar.Renderer = defaultScrollBarRenderer1; + this.FpSpread.HorizontalScrollBar.TabIndex = 349; + this.FpSpread.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.FpSpread.Location = new System.Drawing.Point(6, 16); + this.FpSpread.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.FpSpread.MoveActiveOnFocus = false; + this.FpSpread.Name = "FpSpread"; + namedStyle1.BackColor = System.Drawing.SystemColors.Window; + namedStyle1.CellType = generalCellType1; + namedStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle1.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle1.Renderer = generalCellType1; + namedStyle2.BackColor = System.Drawing.SystemColors.Control; + namedStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle2.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle2.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle2.Renderer = cornerRenderer1; + namedStyle2.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(211)))), ((int)(((byte)(220)))), ((int)(((byte)(233))))); + namedStyle3.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle3.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle3.NoteIndicatorColor = System.Drawing.Color.Red; + enhancedColumnHeaderRenderer10.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer10.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer10.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer10.Name = ""; + enhancedColumnHeaderRenderer10.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer10.TextRotationAngle = 0D; + namedStyle3.Renderer = enhancedColumnHeaderRenderer10; + namedStyle3.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle4.BackColor = System.Drawing.SystemColors.Control; + namedStyle4.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle4.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle4.NoteIndicatorColor = System.Drawing.Color.Red; + rowHeaderRenderer10.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer10.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer10.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer10.Name = ""; + rowHeaderRenderer10.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer10.TextRotationAngle = 0D; + namedStyle4.Renderer = rowHeaderRenderer10; + namedStyle4.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.FpSpread.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle1, + namedStyle2, + namedStyle3, + namedStyle4}); + this.FpSpread.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.FpSpread.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.FpSpread_Sheet1, + this.FpSpread_Sheet2}); + this.FpSpread.Size = new System.Drawing.Size(259, 207); + namedStyle5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(211)))), ((int)(((byte)(220)))), ((int)(((byte)(233))))); + namedStyle5.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle5.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle5.NoteIndicatorColor = System.Drawing.Color.Red; + enhancedColumnHeaderRenderer11.Name = ""; + enhancedColumnHeaderRenderer11.TextRotationAngle = 0D; + namedStyle5.Renderer = enhancedColumnHeaderRenderer11; + namedStyle5.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + spreadSkin1.ColumnHeaderDefaultStyle = namedStyle5; + namedStyle6.BackColor = System.Drawing.SystemColors.Control; + namedStyle6.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle6.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle6.NoteIndicatorColor = System.Drawing.Color.Red; + rowHeaderRenderer11.Name = ""; + rowHeaderRenderer11.TextRotationAngle = 0D; + namedStyle6.Renderer = rowHeaderRenderer11; + namedStyle6.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + spreadSkin1.DefaultStyle = namedStyle6; + spreadSkin1.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + spreadSkin1.Name = "CustomSkin1"; + spreadSkin1.RowHeaderDefaultStyle = namedStyle5; + spreadSkin1.ScrollBarRenderer = defaultScrollBarRenderer2; + spreadSkin1.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(60)))), ((int)(((byte)(97))))), System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(110)))), ((int)(((byte)(170))))), System.Drawing.Drawing2D.LinearGradientMode.Vertical, 30); + this.FpSpread.Skin = spreadSkin1; + this.FpSpread.TabIndex = 600; + this.FpSpread.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.Never; + this.FpSpread.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Never; + this.FpSpread.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread.VerticalScrollBar.Name = ""; + this.FpSpread.VerticalScrollBar.Renderer = defaultScrollBarRenderer3; + this.FpSpread.VerticalScrollBar.TabIndex = 350; + this.FpSpread.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; + // + // FpSpread_Sheet1 + // + this.FpSpread_Sheet1.Reset(); + this.FpSpread_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread_Sheet1.ColumnCount = 8; + this.FpSpread_Sheet1.RowCount = 0; + this.FpSpread_Sheet1.RowHeader.ColumnCount = 0; + this.FpSpread_Sheet1.ActiveRowIndex = -1; + this.FpSpread_Sheet1.ActiveSkin = FarPoint.Win.Spread.DefaultSkins.Classic; + this.FpSpread_Sheet1.ColumnHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers; + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).BackColor = System.Drawing.SystemColors.ActiveCaption; + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).Border = emptyBorder1; + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "Set List"; + this.FpSpread_Sheet1.ColumnHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread_Sheet1.ColumnHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.FpSpread_Sheet1.Columns.Get(0).Visible = false; + this.FpSpread_Sheet1.Columns.Get(1).Label = "Set List"; + this.FpSpread_Sheet1.Columns.Get(1).Width = 237F; + this.FpSpread_Sheet1.Columns.Get(2).Visible = false; + this.FpSpread_Sheet1.Columns.Get(3).Visible = false; + this.FpSpread_Sheet1.Columns.Get(4).Visible = false; + this.FpSpread_Sheet1.Columns.Get(5).Visible = false; + this.FpSpread_Sheet1.Columns.Get(6).Visible = false; + this.FpSpread_Sheet1.Columns.Get(7).Visible = false; + this.FpSpread_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.RowMode; + this.FpSpread_Sheet1.RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; + this.FpSpread_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.FpSpread_Sheet1.RowHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet1.RowHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread_Sheet1.RowHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet1.SheetCornerStyle.Parent = "HeaderDefault"; + this.FpSpread_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.FpSpread.SetActiveViewport(0, -1, 0); + // + // FpSpread_Sheet2 + // + this.FpSpread_Sheet2.Reset(); + this.FpSpread_Sheet2.SheetName = "Sheet2"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread_Sheet2.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet2.DefaultStyle.Parent = "RowHeaderDefault"; + this.FpSpread_Sheet2.RowHeader.Columns.Default.Resizable = false; + this.FpSpread_Sheet2.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread_Sheet2.RowHeader.DefaultStyle.Parent = "ColumnHeaderEnhanced"; + this.FpSpread_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + // + // btn4 + // + this.btn4.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn4.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn4.ForeColor = System.Drawing.Color.Black; + this.btn4.Location = new System.Drawing.Point(271, 115); + this.btn4.Name = "btn4"; + this.btn4.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn4.Size = new System.Drawing.Size(84, 27); + this.btn4.TabIndex = 599; + this.btn4.Text = "Down"; + this.btn4.UseVisualStyleBackColor = true; + this.btn4.Click += new System.EventHandler(this.btn4_Click); + // + // btn3 + // + this.btn3.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn3.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn3.ForeColor = System.Drawing.Color.Black; + this.btn3.Location = new System.Drawing.Point(271, 82); + this.btn3.Name = "btn3"; + this.btn3.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn3.Size = new System.Drawing.Size(84, 27); + this.btn3.TabIndex = 598; + this.btn3.Text = "Up"; + this.btn3.UseVisualStyleBackColor = true; + this.btn3.Click += new System.EventHandler(this.btn3_Click); + // + // btn2 + // + this.btn2.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn2.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn2.ForeColor = System.Drawing.Color.Black; + this.btn2.Location = new System.Drawing.Point(271, 49); + this.btn2.Name = "btn2"; + this.btn2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn2.Size = new System.Drawing.Size(84, 27); + this.btn2.TabIndex = 597; + this.btn2.Text = "Delete All"; + this.btn2.UseVisualStyleBackColor = true; + this.btn2.Click += new System.EventHandler(this.btn2_Click); + // + // btn1 + // + this.btn1.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btn1.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btn1.ForeColor = System.Drawing.Color.Black; + this.btn1.Location = new System.Drawing.Point(271, 16); + this.btn1.Name = "btn1"; + this.btn1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btn1.Size = new System.Drawing.Size(84, 27); + this.btn1.TabIndex = 596; + this.btn1.Text = "Delete"; + this.btn1.UseVisualStyleBackColor = true; + this.btn1.Click += new System.EventHandler(this.btn1_Click); + // + // gb1 + // + this.gb1.Controls.Add(this.listBox); + this.gb1.Controls.Add(this.txtSearch); + this.gb1.Controls.Add(this.btnsearch); + this.gb1.Location = new System.Drawing.Point(7, 1); + this.gb1.Name = "gb1"; + this.gb1.Size = new System.Drawing.Size(364, 247); + this.gb1.TabIndex = 601; + this.gb1.TabStop = false; + this.gb1.Text = "종목"; + // + // listBox + // + this.listBox.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.listBox.FormattingEnabled = true; + this.listBox.ItemHeight = 17; + this.listBox.Location = new System.Drawing.Point(6, 50); + this.listBox.Name = "listBox"; + this.listBox.Size = new System.Drawing.Size(351, 191); + this.listBox.TabIndex = 595; + this.listBox.DoubleClick += new System.EventHandler(this.listBox_DoubleClick); + // + // btnsearch + // + this.btnsearch.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnsearch.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnsearch.ForeColor = System.Drawing.Color.Black; + this.btnsearch.Image = ((System.Drawing.Image)(resources.GetObject("btnsearch.Image"))); + this.btnsearch.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnsearch.Location = new System.Drawing.Point(265, 15); + this.btnsearch.Name = "btnsearch"; + this.btnsearch.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnsearch.Size = new System.Drawing.Size(93, 30); + this.btnsearch.TabIndex = 592; + this.btnsearch.Text = " 종목검색"; + this.btnsearch.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnsearch.UseVisualStyleBackColor = true; + this.btnsearch.Click += new System.EventHandler(this.btnsearch_Click); + // + // btncancel + // + this.btncancel.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btncancel.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btncancel.ForeColor = System.Drawing.Color.Black; + this.btncancel.Location = new System.Drawing.Point(278, 495); + this.btncancel.Name = "btncancel"; + this.btncancel.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btncancel.Size = new System.Drawing.Size(93, 27); + this.btncancel.TabIndex = 607; + this.btncancel.Text = "취소"; + this.btncancel.UseVisualStyleBackColor = true; + this.btncancel.Click += new System.EventHandler(this.btncancel_Click); + // + // panel1 + // + this.panel1.Controls.Add(this.btncancel); + this.panel1.Controls.Add(this.gb2); + this.panel1.Controls.Add(this.btnok); + this.panel1.Controls.Add(this.gb1); + this.panel1.Location = new System.Drawing.Point(1, 3); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(378, 528); + this.panel1.TabIndex = 19; + // + // VILIST + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(380, 533); + this.Controls.Add(this.panel1); + this.Controls.Add(enhancedColumnHeaderRenderer2); + this.Controls.Add(rowHeaderRenderer2); + this.Controls.Add(enhancedColumnHeaderRenderer3); + this.Controls.Add(rowHeaderRenderer3); + this.Controls.Add(enhancedColumnHeaderRenderer4); + this.Controls.Add(rowHeaderRenderer4); + this.Controls.Add(enhancedColumnHeaderRenderer1); + this.Controls.Add(rowHeaderRenderer1); + this.Controls.Add(enhancedColumnHeaderRenderer8); + this.Controls.Add(rowHeaderRenderer8); + this.Controls.Add(enhancedColumnHeaderRenderer9); + this.Controls.Add(rowHeaderRenderer9); + this.Controls.Add(enhancedColumnHeaderRenderer5); + this.Controls.Add(rowHeaderRenderer5); + this.Controls.Add(enhancedColumnHeaderRenderer6); + this.Controls.Add(rowHeaderRenderer6); + this.Controls.Add(rowHeaderRenderer7); + this.Controls.Add(enhancedColumnHeaderRenderer7); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "VILIST"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "VI 설정"; + this.Load += new System.EventHandler(this.VILIST_Load); + this.gb2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread_Sheet2)).EndInit(); + this.gb1.ResumeLayout(false); + this.gb1.PerformLayout(); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TextBox txtSearch; + private System.Windows.Forms.Button btnok; + private System.Windows.Forms.GroupBox gb2; + private System.Windows.Forms.DataGridView dataGridView1; + public FarPoint.Win.Spread.FpSpread FpSpread; + public FarPoint.Win.Spread.SheetView FpSpread_Sheet1; + public FarPoint.Win.Spread.SheetView FpSpread_Sheet2; + private System.Windows.Forms.Button btn4; + private System.Windows.Forms.Button btn3; + private System.Windows.Forms.Button btn2; + private System.Windows.Forms.Button btn1; + private System.Windows.Forms.GroupBox gb1; + private System.Windows.Forms.ListBox listBox; + private System.Windows.Forms.Button btnsearch; + private System.Windows.Forms.Button btncancel; + private System.Windows.Forms.Panel panel1; + } +} \ No newline at end of file diff --git a/MBN_STOCK_N/Form/VIList.cs b/MBN_STOCK_N/Form/VIList.cs new file mode 100644 index 0000000..d28de87 --- /dev/null +++ b/MBN_STOCK_N/Form/VIList.cs @@ -0,0 +1,148 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MBN_STOCK_N +{ + public partial class VILIST : Form + { + MainForm mf = null; + //int m_exist = false; + + public VILIST() + { + InitializeComponent(); + } + + public VILIST(Form frm) + { + //m_code = code; + //m_name = tname; + mf = (MainForm)frm; + InitializeComponent(); + } + + private void VILIST_Load(object sender, EventArgs e) + { + //파일로드 + mf.ReadListFile(mf.m_DataPath + "VI발동.dat", '^', FpSpread.ActiveSheet, mf.m_DataPath, FpSpread, 0); + } + + private void btnsearch_Click(object sender, EventArgs e) + { + if (txtSearch.Text == "") return; + + mf.searchStock(listBox, txtSearch); + } + + private void btn1_Click(object sender, EventArgs e) + { + if (FpSpread.ActiveSheet.ActiveRowIndex + 1 > 0) + { + FpSpread.ActiveSheet.RemoveRows(FpSpread.ActiveSheet.ActiveRowIndex, 1); + } + } + + private void btn2_Click(object sender, EventArgs e) + { + if (MessageBox.Show("모두 삭제하겠습니까?", "MmoneyCoder", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + FpSpread.ActiveSheet.ClearRange(0, 0, FpSpread.ActiveSheet.RowCount, FpSpread.ActiveSheet.ColumnCount, true); + if (FpSpread.ActiveSheet.RowCount != 0) + FpSpread.ActiveSheet.RemoveRows(0, FpSpread.ActiveSheet.RowCount); + } + } + + private void btn3_Click(object sender, EventArgs e) + { + mf.Spd_UpDown(FpSpread, FpSpread.ActiveSheet, 0, 0); + } + + private void btn4_Click(object sender, EventArgs e) + { + mf.Spd_UpDown(FpSpread, FpSpread.ActiveSheet, 1, 0); + } + + private void listBox_DoubleClick(object sender, EventArgs e) + { + string str = mf.jongmokCode((string)listBox.SelectedItem); + + string data3 = str.Substring(0, str.IndexOf('/')); //종목코드 + string data4 = str.Substring(str.IndexOf('/') + 1, str.Length - str.IndexOf('/') - 1); //코스피, 코스닥체크 + string jcode = string.Empty; + + if (data4 == "코스피") + jcode = "P" + data3; + else + jcode = "D" + data3; + + + //열추가 + int row = FpSpread.ActiveSheet.RowCount + 1; + mf.InsertRow(FpSpread, FpSpread.ActiveSheet, row, 1, 0); + + FpSpread.ActiveSheet.SetText(row - 1, 1, (string)listBox.SelectedItem); + FpSpread.ActiveSheet.SetText(row - 1, 0, jcode); + } + + private void txtSearch_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == (char)Keys.Enter) + { + e.Handled = true; + mf.searchStock(listBox, txtSearch); + } + } + + private void btnok_Click(object sender, EventArgs e) + { + + //PlayList에 추가 + string s = string.Empty; + + for (int i = 0; i< FpSpread.ActiveSheet.RowCount; i++) + { + if (i > 0) + { + s = s + ","; + } + s = s + FpSpread.ActiveSheet.GetText(i, 1); + } + + int row = mf.PlayList.ActiveSheet.RowCount + 1; + mf.InsertRow(mf.PlayList, mf.PlayList.ActiveSheet, row, 1, 1); + mf.PlayList.ActiveSheet.SetValue(row - 1, 0, true); + + mf.PlayList.ActiveSheet.SetText(row - 1, 2, s); + mf.PlayList.ActiveSheet.SetText(row - 1, 3, "5단 표그래프"); + mf.PlayList.ActiveSheet.SetText(row - 1, 4, "VI 발동(수동)"); + + + int cnt = FpSpread.ActiveSheet.RowCount; + int lcnt = 0; + + if ((cnt % 5) != 0) + lcnt = 1; + + lcnt = (cnt / 5) + lcnt; + + mf.PlayList.ActiveSheet.SetValue(row - 1, 5, "1/" + lcnt.ToString()); + + //파일저장 + if (FpSpread.ActiveSheet.RowCount != 0) + mf.WriteListFile(mf.m_DataPath + "VI발동.dat", FpSpread.ActiveSheet, "^"); + Close(); + } + + private void btncancel_Click(object sender, EventArgs e) + { + Close(); + } + } +} diff --git a/MBN_STOCK_N/Form/VIList.resx b/MBN_STOCK_N/Form/VIList.resx new file mode 100644 index 0000000..3661bde --- /dev/null +++ b/MBN_STOCK_N/Form/VIList.resx @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1335, 115 + + + 17, 154 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAmdEVYdFRpdGxlAEZpbmQ7QmFycztSaWJib247U3Rh + bmRhcmQ7U2VhcmNou2WcCAAAALlJREFUOE+lktsRgjAQRaEdakgpFGEFoj3QBaM1+SNtxHuY3QyziegM + Hydk9j4gQJdzPsW2pJSgF6NYxGqwZ4ZWhWFbzHAT+QtofQyDF3AXjG8xicFgzwxtjGHwAh4V0xQNzExb + ogZu4ryYhmhgZtoaNXDT6YLTRzh6iczhIfAW9gW/PqNzFc0CL2n9SE/RLCkFR5j5LqoS9CoQwWjEkhm9 + GdojY7mKfcmLeRVoYWFnJiwuaM3A/+TuA3z+LAyTGFNzAAAAAElFTkSuQmCC + + + \ No newline at end of file diff --git a/MBN_STOCK_N/MBN_STOCK_N.csproj b/MBN_STOCK_N/MBN_STOCK_N.csproj new file mode 100644 index 0000000..3a2dced --- /dev/null +++ b/MBN_STOCK_N/MBN_STOCK_N.csproj @@ -0,0 +1,393 @@ + + + + + Debug + AnyCPU + {79711222-87A1-432B-A122-C67AB0E7237B} + WinExe + MBN_STOCK_N + 매일경제TV + v4.8 + 512 + true + true + + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + RES\MmoneyCoder.ico + + + + bin\x64\ + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + 7.3 + prompt + true + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + 7.3 + prompt + true + + + bin\x64\x64\ + x64 + + + + False + ..\..\..\..\..\Program Files (x86)\FarPoint Technologies\Spread.WinForms.4.dotNet35\v4.0.3512\Bin\FarPoint.Win.dll + + + False + ..\..\..\..\..\Program Files (x86)\FarPoint Technologies\Spread.WinForms.4.dotNet35\v4.0.3512\Bin\FarPoint.Win.Spread.dll + + + False + ..\..\..\..\..\Program Files (x86)\FarPoint Technologies\Spread.WinForms.4.dotNet35\v4.0.3512\Bin\FarPoint.Win.Spread.Design.dll + + + obj\Debug\Interop.K3DAsyncEngineLib.dll + True + + + False + bin\Debug\MySql.Data.dll + + + False + bin\Debug\Oracle.ManagedDataAccess.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Form + + + FSell.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UserControl + + + UC2.cs + + + Form + + + EList.cs + + + Form + + + AList.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Form + + + GraphE.cs + + + Form + + + MainForm.cs + + + Form + + + PList.cs + + + + + UserControl + + + UC1.cs + + + UserControl + + + UC3.cs + + + UserControl + + + UC4.cs + + + Form + + + ThemeA.cs + + + UserControl + + + UC5.cs + + + UserControl + + + UC6.cs + + + + + + UserControl + + + UC7.cs + + + + + + + Form + + + VIList.cs + + + UC2.cs + + + UC3.cs + + + UC5.cs + + + UC6.cs + + + AList.cs + + + EList.cs + + + FSell.cs + + + ThemeA.cs + + + GraphE.cs + + + VIList.cs + + + MainForm.cs + Designer + + + PList.cs + + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + UC1.cs + + + UC4.cs + + + UC7.cs + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + + \ No newline at end of file diff --git a/MBN_STOCK_N/MainForm.Designer.cs b/MBN_STOCK_N/MainForm.Designer.cs new file mode 100644 index 0000000..5c2ad9a --- /dev/null +++ b/MBN_STOCK_N/MainForm.Designer.cs @@ -0,0 +1,2630 @@ + +namespace MBN_STOCK_N +{ + partial class MainForm + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer1 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer1 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer3 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer3 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer2 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer2 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer10 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer10 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer11 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer11 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer13 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer13 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer4 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer4 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer5 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer5 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer12 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer12 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer6 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer6 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer7 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer7 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer8 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer8 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer9 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer9 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer14 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer14 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer15 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer15 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer16 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer16 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer17 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer17 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer18 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer18 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer19 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer19 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer20 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer20 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer21 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer21 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer22 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer22 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer23 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer23 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer24 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer24 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer25 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer25 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer26 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer26 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer27 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer27 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer28 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer28 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer29 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer29 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer30 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer30 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer33 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer33 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer34 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer34 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer31 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer31 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer32 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer32 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer35 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer35 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer36 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer36 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer37 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer37 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer38 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer38 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer41 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer41 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer42 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer42 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer43 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer43 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer44 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer44 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer39 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer39 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer40 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer40 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer45 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer45 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer46 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer46 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer47 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer47 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer48 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer48 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer49 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer49 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer50 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer50 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer51 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer51 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer52 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer52 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer53 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer53 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer54 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer54 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer55 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer55 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer56 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer56 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer57 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer57 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer58 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer58 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer59 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer59 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer60 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer60 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer61 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer61 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer62 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer63 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedRowHeaderRenderer enhancedRowHeaderRenderer1 = new FarPoint.Win.Spread.CellType.EnhancedRowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer64 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer62 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer65 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer63 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer70 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedRowHeaderRenderer enhancedRowHeaderRenderer4 = new FarPoint.Win.Spread.CellType.EnhancedRowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer71 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedRowHeaderRenderer enhancedRowHeaderRenderer5 = new FarPoint.Win.Spread.CellType.EnhancedRowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer66 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer66 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer67 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer67 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer68 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer64 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer69 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer65 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer72 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer68 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer73 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer69 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer74 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer70 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer75 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.RowHeaderRenderer rowHeaderRenderer71 = new FarPoint.Win.Spread.CellType.RowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer78 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedRowHeaderRenderer enhancedRowHeaderRenderer6 = new FarPoint.Win.Spread.CellType.EnhancedRowHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer enhancedColumnHeaderRenderer79 = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer(); + FarPoint.Win.Spread.CellType.EnhancedRowHeaderRenderer enhancedRowHeaderRenderer7 = new FarPoint.Win.Spread.CellType.EnhancedRowHeaderRenderer(); + FarPoint.Win.Spread.EnhancedScrollBarRenderer enhancedScrollBarRenderer4 = new FarPoint.Win.Spread.EnhancedScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle9 = new FarPoint.Win.Spread.NamedStyle("ColumnHeaderMetallic"); + FarPoint.Win.Spread.NamedStyle namedStyle10 = new FarPoint.Win.Spread.NamedStyle("RowHeaderMetallic"); + FarPoint.Win.Spread.NamedStyle namedStyle11 = new FarPoint.Win.Spread.NamedStyle("CornerMetallic"); + FarPoint.Win.Spread.CellType.EnhancedCornerRenderer enhancedCornerRenderer2 = new FarPoint.Win.Spread.CellType.EnhancedCornerRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle12 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType3 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.SpreadSkin spreadSkin3 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.EnhancedFocusIndicatorRenderer enhancedFocusIndicatorRenderer2 = new FarPoint.Win.Spread.EnhancedFocusIndicatorRenderer(); + FarPoint.Win.Spread.EnhancedInterfaceRenderer enhancedInterfaceRenderer2 = new FarPoint.Win.Spread.EnhancedInterfaceRenderer(); + FarPoint.Win.Spread.EnhancedScrollBarRenderer enhancedScrollBarRenderer5 = new FarPoint.Win.Spread.EnhancedScrollBarRenderer(); + FarPoint.Win.Spread.EnhancedScrollBarRenderer enhancedScrollBarRenderer6 = new FarPoint.Win.Spread.EnhancedScrollBarRenderer(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer4 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle1 = new FarPoint.Win.Spread.NamedStyle("DataAreaDefault"); + FarPoint.Win.Spread.CellType.GeneralCellType generalCellType1 = new FarPoint.Win.Spread.CellType.GeneralCellType(); + FarPoint.Win.Spread.NamedStyle namedStyle2 = new FarPoint.Win.Spread.NamedStyle("CornerDefault"); + FarPoint.Win.Spread.CellType.CornerRenderer cornerRenderer2 = new FarPoint.Win.Spread.CellType.CornerRenderer(); + FarPoint.Win.Spread.NamedStyle namedStyle3 = new FarPoint.Win.Spread.NamedStyle("ColumnHeaderEnhanced"); + FarPoint.Win.Spread.NamedStyle namedStyle4 = new FarPoint.Win.Spread.NamedStyle("RowHeaderDefault"); + FarPoint.Win.Spread.SpreadSkin spreadSkin1 = new FarPoint.Win.Spread.SpreadSkin(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer5 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.Spread.DefaultScrollBarRenderer defaultScrollBarRenderer6 = new FarPoint.Win.Spread.DefaultScrollBarRenderer(); + FarPoint.Win.EmptyBorder emptyBorder2 = new FarPoint.Win.EmptyBorder(); + this.panelC = new System.Windows.Forms.Panel(); + this.lables = new System.Windows.Forms.Label(); + this.tab = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.tabp1 = new System.Windows.Forms.Panel(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.tabp2 = new System.Windows.Forms.Panel(); + this.tabPage3 = new System.Windows.Forms.TabPage(); + this.tabp3 = new System.Windows.Forms.Panel(); + this.tabPage4 = new System.Windows.Forms.TabPage(); + this.tabp4_1 = new System.Windows.Forms.Panel(); + this.tabp4 = new System.Windows.Forms.Panel(); + this.tabPage5 = new System.Windows.Forms.TabPage(); + this.tabp5_1 = new System.Windows.Forms.Panel(); + this.tabp5 = new System.Windows.Forms.Panel(); + this.tabPage6 = new System.Windows.Forms.TabPage(); + this.tabp6_1 = new System.Windows.Forms.Panel(); + this.tabp6 = new System.Windows.Forms.Panel(); + this.tabPage7 = new System.Windows.Forms.TabPage(); + this.tabp7 = new System.Windows.Forms.Panel(); + this.tabPage8 = new System.Windows.Forms.TabPage(); + this.tabp8 = new System.Windows.Forms.Panel(); + this.tabPage9 = new System.Windows.Forms.TabPage(); + this.tabp9 = new System.Windows.Forms.Panel(); + this.tabPage10 = new System.Windows.Forms.TabPage(); + this.tabp10 = new System.Windows.Forms.Panel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.dataGridView3 = new System.Windows.Forms.DataGridView(); + this.panel15 = new System.Windows.Forms.Panel(); + this.label12 = new System.Windows.Forms.Label(); + this.dataGridView2 = new System.Windows.Forms.DataGridView(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.panel10 = new System.Windows.Forms.Panel(); + this.panel14 = new System.Windows.Forms.Panel(); + this.label11 = new System.Windows.Forms.Label(); + this.panel13 = new System.Windows.Forms.Panel(); + this.label10 = new System.Windows.Forms.Label(); + this.panel12 = new System.Windows.Forms.Panel(); + this.label9 = new System.Windows.Forms.Label(); + this.panel3 = new System.Windows.Forms.Panel(); + this.picBoxPreview = new System.Windows.Forms.PictureBox(); + this.panel6 = new System.Windows.Forms.Panel(); + this.label4 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.btnPrepare = new System.Windows.Forms.Button(); + this.ComboDi = new System.Windows.Forms.ComboBox(); + this.comboA = new System.Windows.Forms.ComboBox(); + this.txt2 = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.panel11 = new System.Windows.Forms.Panel(); + this.label8 = new System.Windows.Forms.Label(); + this.panel8 = new System.Windows.Forms.Panel(); + this.label7 = new System.Windows.Forms.Label(); + this.PlayList = new FarPoint.Win.Spread.FpSpread(); + this.PlayList_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.panel7 = new System.Windows.Forms.Panel(); + this.ckback = new System.Windows.Forms.CheckBox(); + this.lblbackfile = new System.Windows.Forms.Label(); + this.lblbackfile_full = new System.Windows.Forms.Label(); + this.btnback = new System.Windows.Forms.Button(); + this.btntdelete = new System.Windows.Forms.Button(); + this.btndelete = new System.Windows.Forms.Button(); + this.btnload = new System.Windows.Forms.Button(); + this.btnsave = new System.Windows.Forms.Button(); + this.btndown = new System.Windows.Forms.Button(); + this.btnup = new System.Windows.Forms.Button(); + this.ck2 = new System.Windows.Forms.CheckBox(); + this.ck1 = new System.Windows.Forms.CheckBox(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.txt1 = new System.Windows.Forms.TextBox(); + this.btnTake = new System.Windows.Forms.Button(); + this.panel4 = new System.Windows.Forms.Panel(); + this.txtSearch = new System.Windows.Forms.TextBox(); + this.GridView1 = new System.Windows.Forms.DataGridView(); + this.label14 = new System.Windows.Forms.Label(); + this.b4 = new System.Windows.Forms.Button(); + this.b3 = new System.Windows.Forms.Button(); + this.b2 = new System.Windows.Forms.Button(); + this.b1 = new System.Windows.Forms.Button(); + this.panel9 = new System.Windows.Forms.Panel(); + this.label6 = new System.Windows.Forms.Label(); + this.listBox = new System.Windows.Forms.ListBox(); + this.button9 = new System.Windows.Forms.Button(); + this.FpSpread2 = new FarPoint.Win.Spread.FpSpread(); + this.FpSpread2_Sheet1 = new FarPoint.Win.Spread.SheetView(); + this.FpSpread2_Sheet2 = new FarPoint.Win.Spread.SheetView(); + this.listView1 = new MBN_STOCK_N.MainForm.ListViewEx(); + this.label5 = new System.Windows.Forms.Label(); + this.panel5 = new System.Windows.Forms.Panel(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.picLogo = new System.Windows.Forms.PictureBox(); + this.btnNext = new System.Windows.Forms.Button(); + this.btnTakeout = new System.Windows.Forms.Button(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.timer2 = new System.Windows.Forms.Timer(this.components); + this.timer3 = new System.Windows.Forms.Timer(this.components); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.panelC.SuspendLayout(); + this.tab.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.tabPage3.SuspendLayout(); + this.tabPage4.SuspendLayout(); + this.tabPage5.SuspendLayout(); + this.tabPage6.SuspendLayout(); + this.tabPage7.SuspendLayout(); + this.tabPage8.SuspendLayout(); + this.tabPage9.SuspendLayout(); + this.tabPage10.SuspendLayout(); + this.panel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView3)).BeginInit(); + this.panel15.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.panel14.SuspendLayout(); + this.panel13.SuspendLayout(); + this.panel12.SuspendLayout(); + this.panel3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picBoxPreview)).BeginInit(); + this.panel6.SuspendLayout(); + this.panel11.SuspendLayout(); + this.panel8.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.PlayList)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.PlayList_Sheet1)).BeginInit(); + this.panel7.SuspendLayout(); + this.panel4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.GridView1)).BeginInit(); + this.panel9.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet2)).BeginInit(); + this.panel5.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.picLogo)).BeginInit(); + this.SuspendLayout(); + enhancedColumnHeaderRenderer1.Name = "enhancedColumnHeaderRenderer1"; + enhancedColumnHeaderRenderer1.TextRotationAngle = 0D; + rowHeaderRenderer1.Name = "rowHeaderRenderer1"; + rowHeaderRenderer1.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer3.Name = "enhancedColumnHeaderRenderer3"; + enhancedColumnHeaderRenderer3.TextRotationAngle = 0D; + rowHeaderRenderer3.Name = "rowHeaderRenderer3"; + rowHeaderRenderer3.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer2.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer2.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer2.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer2.Name = "enhancedColumnHeaderRenderer2"; + enhancedColumnHeaderRenderer2.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer2.TextRotationAngle = 0D; + rowHeaderRenderer2.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer2.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer2.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer2.Name = "rowHeaderRenderer2"; + rowHeaderRenderer2.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer2.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer10.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer10.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer10.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer10.Name = "enhancedColumnHeaderRenderer10"; + enhancedColumnHeaderRenderer10.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer10.TextRotationAngle = 0D; + rowHeaderRenderer10.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer10.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer10.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer10.Name = "rowHeaderRenderer10"; + rowHeaderRenderer10.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer10.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer11.Name = "enhancedColumnHeaderRenderer11"; + enhancedColumnHeaderRenderer11.TextRotationAngle = 0D; + rowHeaderRenderer11.Name = "rowHeaderRenderer11"; + rowHeaderRenderer11.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer13.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer13.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer13.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer13.Name = "enhancedColumnHeaderRenderer13"; + enhancedColumnHeaderRenderer13.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer13.TextRotationAngle = 0D; + rowHeaderRenderer13.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer13.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer13.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer13.Name = "rowHeaderRenderer13"; + rowHeaderRenderer13.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer13.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer4.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer4.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer4.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer4.Name = "enhancedColumnHeaderRenderer4"; + enhancedColumnHeaderRenderer4.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer4.TextRotationAngle = 0D; + rowHeaderRenderer4.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer4.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer4.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer4.Name = "rowHeaderRenderer4"; + rowHeaderRenderer4.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer4.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer5.Name = "enhancedColumnHeaderRenderer5"; + enhancedColumnHeaderRenderer5.TextRotationAngle = 0D; + rowHeaderRenderer5.Name = "rowHeaderRenderer5"; + rowHeaderRenderer5.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer12.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer12.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer12.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer12.Name = "enhancedColumnHeaderRenderer12"; + enhancedColumnHeaderRenderer12.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer12.TextRotationAngle = 0D; + rowHeaderRenderer12.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer12.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer12.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer12.Name = "rowHeaderRenderer12"; + rowHeaderRenderer12.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer12.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer6.Name = "enhancedColumnHeaderRenderer6"; + enhancedColumnHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer6.TextRotationAngle = 0D; + rowHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer6.Name = "rowHeaderRenderer6"; + rowHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer6.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer7.Name = "enhancedColumnHeaderRenderer7"; + enhancedColumnHeaderRenderer7.TextRotationAngle = 0D; + rowHeaderRenderer7.Name = "rowHeaderRenderer7"; + rowHeaderRenderer7.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer8.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer8.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer8.Name = "enhancedColumnHeaderRenderer8"; + enhancedColumnHeaderRenderer8.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer8.TextRotationAngle = 0D; + rowHeaderRenderer8.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer8.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer8.Name = "rowHeaderRenderer8"; + rowHeaderRenderer8.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer8.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer9.Name = "enhancedColumnHeaderRenderer9"; + enhancedColumnHeaderRenderer9.TextRotationAngle = 0D; + rowHeaderRenderer9.Name = "rowHeaderRenderer9"; + rowHeaderRenderer9.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer14.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer14.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer14.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer14.Name = "enhancedColumnHeaderRenderer14"; + enhancedColumnHeaderRenderer14.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer14.TextRotationAngle = 0D; + rowHeaderRenderer14.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer14.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer14.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer14.Name = "rowHeaderRenderer14"; + rowHeaderRenderer14.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer14.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer15.Name = "enhancedColumnHeaderRenderer15"; + enhancedColumnHeaderRenderer15.TextRotationAngle = 0D; + rowHeaderRenderer15.Name = "rowHeaderRenderer15"; + rowHeaderRenderer15.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer16.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer16.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer16.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer16.Name = "enhancedColumnHeaderRenderer16"; + enhancedColumnHeaderRenderer16.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer16.TextRotationAngle = 0D; + rowHeaderRenderer16.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer16.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer16.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer16.Name = "rowHeaderRenderer16"; + rowHeaderRenderer16.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer16.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer17.Name = "enhancedColumnHeaderRenderer17"; + enhancedColumnHeaderRenderer17.TextRotationAngle = 0D; + rowHeaderRenderer17.Name = "rowHeaderRenderer17"; + rowHeaderRenderer17.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer18.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer18.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer18.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer18.Name = "enhancedColumnHeaderRenderer18"; + enhancedColumnHeaderRenderer18.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer18.TextRotationAngle = 0D; + rowHeaderRenderer18.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer18.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer18.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer18.Name = "rowHeaderRenderer18"; + rowHeaderRenderer18.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer18.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer19.Name = "enhancedColumnHeaderRenderer19"; + enhancedColumnHeaderRenderer19.TextRotationAngle = 0D; + rowHeaderRenderer19.Name = "rowHeaderRenderer19"; + rowHeaderRenderer19.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer20.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer20.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer20.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer20.Name = "enhancedColumnHeaderRenderer20"; + enhancedColumnHeaderRenderer20.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer20.TextRotationAngle = 0D; + rowHeaderRenderer20.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer20.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer20.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer20.Name = "rowHeaderRenderer20"; + rowHeaderRenderer20.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer20.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer21.Name = "enhancedColumnHeaderRenderer21"; + enhancedColumnHeaderRenderer21.TextRotationAngle = 0D; + rowHeaderRenderer21.Name = "rowHeaderRenderer21"; + rowHeaderRenderer21.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer22.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer22.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer22.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer22.Name = "enhancedColumnHeaderRenderer22"; + enhancedColumnHeaderRenderer22.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer22.TextRotationAngle = 0D; + rowHeaderRenderer22.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer22.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer22.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer22.Name = "rowHeaderRenderer22"; + rowHeaderRenderer22.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer22.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer23.Name = "enhancedColumnHeaderRenderer23"; + enhancedColumnHeaderRenderer23.TextRotationAngle = 0D; + rowHeaderRenderer23.Name = "rowHeaderRenderer23"; + rowHeaderRenderer23.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer24.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer24.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer24.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer24.Name = "enhancedColumnHeaderRenderer24"; + enhancedColumnHeaderRenderer24.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer24.TextRotationAngle = 0D; + rowHeaderRenderer24.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer24.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer24.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer24.Name = "rowHeaderRenderer24"; + rowHeaderRenderer24.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer24.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer25.Name = "enhancedColumnHeaderRenderer25"; + enhancedColumnHeaderRenderer25.TextRotationAngle = 0D; + rowHeaderRenderer25.Name = "rowHeaderRenderer25"; + rowHeaderRenderer25.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer26.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer26.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer26.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer26.Name = "enhancedColumnHeaderRenderer26"; + enhancedColumnHeaderRenderer26.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer26.TextRotationAngle = 0D; + rowHeaderRenderer26.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer26.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer26.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer26.Name = "rowHeaderRenderer26"; + rowHeaderRenderer26.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer26.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer27.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer27.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer27.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer27.Name = "enhancedColumnHeaderRenderer27"; + enhancedColumnHeaderRenderer27.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer27.TextRotationAngle = 0D; + rowHeaderRenderer27.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer27.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer27.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer27.Name = "rowHeaderRenderer27"; + rowHeaderRenderer27.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer27.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer28.Name = "enhancedColumnHeaderRenderer28"; + enhancedColumnHeaderRenderer28.TextRotationAngle = 0D; + rowHeaderRenderer28.Name = "rowHeaderRenderer28"; + rowHeaderRenderer28.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer29.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer29.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer29.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer29.Name = "enhancedColumnHeaderRenderer29"; + enhancedColumnHeaderRenderer29.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer29.TextRotationAngle = 0D; + rowHeaderRenderer29.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer29.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer29.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer29.Name = "rowHeaderRenderer29"; + rowHeaderRenderer29.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer29.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer30.Name = "enhancedColumnHeaderRenderer30"; + enhancedColumnHeaderRenderer30.TextRotationAngle = 0D; + rowHeaderRenderer30.Name = "rowHeaderRenderer30"; + rowHeaderRenderer30.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer33.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer33.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer33.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer33.Name = "enhancedColumnHeaderRenderer33"; + enhancedColumnHeaderRenderer33.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer33.TextRotationAngle = 0D; + rowHeaderRenderer33.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer33.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer33.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer33.Name = "rowHeaderRenderer33"; + rowHeaderRenderer33.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer33.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer34.Name = "enhancedColumnHeaderRenderer34"; + enhancedColumnHeaderRenderer34.TextRotationAngle = 0D; + rowHeaderRenderer34.Name = "rowHeaderRenderer34"; + rowHeaderRenderer34.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer31.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer31.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer31.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer31.Name = "enhancedColumnHeaderRenderer31"; + enhancedColumnHeaderRenderer31.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer31.TextRotationAngle = 0D; + rowHeaderRenderer31.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer31.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer31.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer31.Name = "rowHeaderRenderer31"; + rowHeaderRenderer31.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer31.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer32.Name = "enhancedColumnHeaderRenderer32"; + enhancedColumnHeaderRenderer32.TextRotationAngle = 0D; + rowHeaderRenderer32.Name = "rowHeaderRenderer32"; + rowHeaderRenderer32.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer35.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer35.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer35.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer35.Name = "enhancedColumnHeaderRenderer35"; + enhancedColumnHeaderRenderer35.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer35.TextRotationAngle = 0D; + rowHeaderRenderer35.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer35.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer35.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer35.Name = "rowHeaderRenderer35"; + rowHeaderRenderer35.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer35.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer36.Name = "enhancedColumnHeaderRenderer36"; + enhancedColumnHeaderRenderer36.TextRotationAngle = 0D; + rowHeaderRenderer36.Name = "rowHeaderRenderer36"; + rowHeaderRenderer36.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer37.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer37.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer37.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer37.Name = "enhancedColumnHeaderRenderer37"; + enhancedColumnHeaderRenderer37.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer37.TextRotationAngle = 0D; + rowHeaderRenderer37.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer37.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer37.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer37.Name = "rowHeaderRenderer37"; + rowHeaderRenderer37.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer37.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer38.Name = "enhancedColumnHeaderRenderer38"; + enhancedColumnHeaderRenderer38.TextRotationAngle = 0D; + rowHeaderRenderer38.Name = "rowHeaderRenderer38"; + rowHeaderRenderer38.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer41.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer41.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer41.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer41.Name = "enhancedColumnHeaderRenderer41"; + enhancedColumnHeaderRenderer41.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer41.TextRotationAngle = 0D; + rowHeaderRenderer41.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer41.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer41.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer41.Name = "rowHeaderRenderer41"; + rowHeaderRenderer41.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer41.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer42.Name = "enhancedColumnHeaderRenderer42"; + enhancedColumnHeaderRenderer42.TextRotationAngle = 0D; + rowHeaderRenderer42.Name = "rowHeaderRenderer42"; + rowHeaderRenderer42.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer43.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer43.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer43.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer43.Name = "enhancedColumnHeaderRenderer43"; + enhancedColumnHeaderRenderer43.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer43.TextRotationAngle = 0D; + rowHeaderRenderer43.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer43.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer43.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer43.Name = "rowHeaderRenderer43"; + rowHeaderRenderer43.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer43.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer44.Name = "enhancedColumnHeaderRenderer44"; + enhancedColumnHeaderRenderer44.TextRotationAngle = 0D; + rowHeaderRenderer44.Name = "rowHeaderRenderer44"; + rowHeaderRenderer44.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer39.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer39.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer39.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer39.Name = "enhancedColumnHeaderRenderer39"; + enhancedColumnHeaderRenderer39.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer39.TextRotationAngle = 0D; + rowHeaderRenderer39.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer39.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer39.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer39.Name = "rowHeaderRenderer39"; + rowHeaderRenderer39.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer39.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer40.Name = "enhancedColumnHeaderRenderer40"; + enhancedColumnHeaderRenderer40.TextRotationAngle = 0D; + rowHeaderRenderer40.Name = "rowHeaderRenderer40"; + rowHeaderRenderer40.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer45.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer45.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer45.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer45.Name = "enhancedColumnHeaderRenderer45"; + enhancedColumnHeaderRenderer45.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer45.TextRotationAngle = 0D; + rowHeaderRenderer45.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer45.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer45.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer45.Name = "rowHeaderRenderer45"; + rowHeaderRenderer45.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer45.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer46.Name = "enhancedColumnHeaderRenderer46"; + enhancedColumnHeaderRenderer46.TextRotationAngle = 0D; + rowHeaderRenderer46.Name = "rowHeaderRenderer46"; + rowHeaderRenderer46.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer47.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer47.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer47.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer47.Name = "enhancedColumnHeaderRenderer47"; + enhancedColumnHeaderRenderer47.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer47.TextRotationAngle = 0D; + rowHeaderRenderer47.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer47.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer47.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer47.Name = "rowHeaderRenderer47"; + rowHeaderRenderer47.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer47.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer48.Name = "enhancedColumnHeaderRenderer48"; + enhancedColumnHeaderRenderer48.TextRotationAngle = 0D; + rowHeaderRenderer48.Name = "rowHeaderRenderer48"; + rowHeaderRenderer48.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer49.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer49.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer49.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer49.Name = "enhancedColumnHeaderRenderer49"; + enhancedColumnHeaderRenderer49.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer49.TextRotationAngle = 0D; + rowHeaderRenderer49.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer49.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer49.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer49.Name = "rowHeaderRenderer49"; + rowHeaderRenderer49.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer49.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer50.Name = "enhancedColumnHeaderRenderer50"; + enhancedColumnHeaderRenderer50.TextRotationAngle = 0D; + rowHeaderRenderer50.Name = "rowHeaderRenderer50"; + rowHeaderRenderer50.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer51.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer51.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer51.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer51.Name = "enhancedColumnHeaderRenderer51"; + enhancedColumnHeaderRenderer51.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer51.TextRotationAngle = 0D; + rowHeaderRenderer51.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer51.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer51.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer51.Name = "rowHeaderRenderer51"; + rowHeaderRenderer51.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer51.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer52.Name = "enhancedColumnHeaderRenderer52"; + enhancedColumnHeaderRenderer52.TextRotationAngle = 0D; + rowHeaderRenderer52.Name = "rowHeaderRenderer52"; + rowHeaderRenderer52.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer53.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer53.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer53.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer53.Name = "enhancedColumnHeaderRenderer53"; + enhancedColumnHeaderRenderer53.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer53.TextRotationAngle = 0D; + rowHeaderRenderer53.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer53.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer53.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer53.Name = "rowHeaderRenderer53"; + rowHeaderRenderer53.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer53.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer54.Name = "enhancedColumnHeaderRenderer54"; + enhancedColumnHeaderRenderer54.TextRotationAngle = 0D; + rowHeaderRenderer54.Name = "rowHeaderRenderer54"; + rowHeaderRenderer54.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer55.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer55.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer55.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer55.Name = "enhancedColumnHeaderRenderer55"; + enhancedColumnHeaderRenderer55.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer55.TextRotationAngle = 0D; + rowHeaderRenderer55.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer55.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer55.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer55.Name = "rowHeaderRenderer55"; + rowHeaderRenderer55.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer55.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer56.Name = "enhancedColumnHeaderRenderer56"; + enhancedColumnHeaderRenderer56.TextRotationAngle = 0D; + rowHeaderRenderer56.Name = "rowHeaderRenderer56"; + rowHeaderRenderer56.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer57.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer57.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer57.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer57.Name = "enhancedColumnHeaderRenderer57"; + enhancedColumnHeaderRenderer57.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer57.TextRotationAngle = 0D; + rowHeaderRenderer57.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer57.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer57.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer57.Name = "rowHeaderRenderer57"; + rowHeaderRenderer57.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer57.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer58.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer58.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer58.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer58.Name = "enhancedColumnHeaderRenderer58"; + enhancedColumnHeaderRenderer58.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer58.TextRotationAngle = 0D; + rowHeaderRenderer58.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer58.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer58.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer58.Name = "rowHeaderRenderer58"; + rowHeaderRenderer58.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer58.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer59.Name = "enhancedColumnHeaderRenderer59"; + enhancedColumnHeaderRenderer59.TextRotationAngle = 0D; + rowHeaderRenderer59.Name = "rowHeaderRenderer59"; + rowHeaderRenderer59.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer60.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer60.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer60.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer60.Name = "enhancedColumnHeaderRenderer60"; + enhancedColumnHeaderRenderer60.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer60.TextRotationAngle = 0D; + rowHeaderRenderer60.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer60.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer60.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer60.Name = "rowHeaderRenderer60"; + rowHeaderRenderer60.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer60.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer61.Name = "enhancedColumnHeaderRenderer61"; + enhancedColumnHeaderRenderer61.TextRotationAngle = 0D; + rowHeaderRenderer61.Name = "rowHeaderRenderer61"; + rowHeaderRenderer61.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer62.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer62.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer62.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer62.Name = "enhancedColumnHeaderRenderer62"; + enhancedColumnHeaderRenderer62.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer62.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer63.ActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer63.Name = "enhancedColumnHeaderRenderer63"; + enhancedColumnHeaderRenderer63.NormalGridLineColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer63.SelectedActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer63.SelectedBackgroundColor = System.Drawing.Color.Gray; + enhancedColumnHeaderRenderer63.SelectedGridLineColor = System.Drawing.Color.DimGray; + enhancedColumnHeaderRenderer63.TextRotationAngle = 0D; + enhancedRowHeaderRenderer1.ActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer1.Name = "enhancedRowHeaderRenderer1"; + enhancedRowHeaderRenderer1.NormalGridLineColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer1.SelectedActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer1.SelectedBackgroundColor = System.Drawing.Color.Gray; + enhancedRowHeaderRenderer1.SelectedGridLineColor = System.Drawing.Color.DimGray; + enhancedRowHeaderRenderer1.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer64.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer64.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer64.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer64.Name = "enhancedColumnHeaderRenderer64"; + enhancedColumnHeaderRenderer64.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer64.TextRotationAngle = 0D; + rowHeaderRenderer62.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer62.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer62.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer62.Name = "rowHeaderRenderer62"; + rowHeaderRenderer62.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer62.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer65.Name = "enhancedColumnHeaderRenderer65"; + enhancedColumnHeaderRenderer65.TextRotationAngle = 0D; + rowHeaderRenderer63.Name = "rowHeaderRenderer63"; + rowHeaderRenderer63.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer70.ActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer70.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer70.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer70.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer70.Name = "enhancedColumnHeaderRenderer70"; + enhancedColumnHeaderRenderer70.NormalGridLineColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer70.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer70.SelectedActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer70.SelectedBackgroundColor = System.Drawing.Color.Gray; + enhancedColumnHeaderRenderer70.SelectedGridLineColor = System.Drawing.Color.DimGray; + enhancedColumnHeaderRenderer70.TextRotationAngle = 0D; + enhancedRowHeaderRenderer4.ActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer4.BackColor = System.Drawing.SystemColors.Control; + enhancedRowHeaderRenderer4.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedRowHeaderRenderer4.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedRowHeaderRenderer4.Name = "enhancedRowHeaderRenderer4"; + enhancedRowHeaderRenderer4.NormalGridLineColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer4.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedRowHeaderRenderer4.SelectedActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer4.SelectedBackgroundColor = System.Drawing.Color.Gray; + enhancedRowHeaderRenderer4.SelectedGridLineColor = System.Drawing.Color.DimGray; + enhancedRowHeaderRenderer4.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer71.ActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer71.Name = "enhancedColumnHeaderRenderer71"; + enhancedColumnHeaderRenderer71.NormalGridLineColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer71.SelectedActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer71.SelectedBackgroundColor = System.Drawing.Color.Gray; + enhancedColumnHeaderRenderer71.SelectedGridLineColor = System.Drawing.Color.DimGray; + enhancedColumnHeaderRenderer71.TextRotationAngle = 0D; + enhancedRowHeaderRenderer5.ActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer5.Name = "enhancedRowHeaderRenderer5"; + enhancedRowHeaderRenderer5.NormalGridLineColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer5.SelectedActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer5.SelectedBackgroundColor = System.Drawing.Color.Gray; + enhancedRowHeaderRenderer5.SelectedGridLineColor = System.Drawing.Color.DimGray; + enhancedRowHeaderRenderer5.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer66.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer66.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer66.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer66.Name = "enhancedColumnHeaderRenderer66"; + enhancedColumnHeaderRenderer66.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer66.TextRotationAngle = 0D; + rowHeaderRenderer66.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer66.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer66.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer66.Name = "rowHeaderRenderer66"; + rowHeaderRenderer66.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer66.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer67.Name = "enhancedColumnHeaderRenderer67"; + enhancedColumnHeaderRenderer67.TextRotationAngle = 0D; + rowHeaderRenderer67.Name = "rowHeaderRenderer67"; + rowHeaderRenderer67.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer68.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer68.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer68.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer68.Name = "enhancedColumnHeaderRenderer68"; + enhancedColumnHeaderRenderer68.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer68.TextRotationAngle = 0D; + rowHeaderRenderer64.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer64.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer64.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer64.Name = "rowHeaderRenderer64"; + rowHeaderRenderer64.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer64.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer69.Name = "enhancedColumnHeaderRenderer69"; + enhancedColumnHeaderRenderer69.TextRotationAngle = 0D; + rowHeaderRenderer65.Name = "rowHeaderRenderer65"; + rowHeaderRenderer65.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer72.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer72.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer72.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer72.Name = "enhancedColumnHeaderRenderer72"; + enhancedColumnHeaderRenderer72.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer72.TextRotationAngle = 0D; + rowHeaderRenderer68.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer68.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer68.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer68.Name = "rowHeaderRenderer68"; + rowHeaderRenderer68.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer68.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer73.Name = "enhancedColumnHeaderRenderer73"; + enhancedColumnHeaderRenderer73.TextRotationAngle = 0D; + rowHeaderRenderer69.Name = "rowHeaderRenderer69"; + rowHeaderRenderer69.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer74.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer74.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer74.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer74.Name = "enhancedColumnHeaderRenderer74"; + enhancedColumnHeaderRenderer74.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer74.TextRotationAngle = 0D; + rowHeaderRenderer70.BackColor = System.Drawing.SystemColors.Control; + rowHeaderRenderer70.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + rowHeaderRenderer70.ForeColor = System.Drawing.SystemColors.ControlText; + rowHeaderRenderer70.Name = "rowHeaderRenderer70"; + rowHeaderRenderer70.RightToLeft = System.Windows.Forms.RightToLeft.No; + rowHeaderRenderer70.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer75.Name = "enhancedColumnHeaderRenderer75"; + enhancedColumnHeaderRenderer75.TextRotationAngle = 0D; + rowHeaderRenderer71.Name = "rowHeaderRenderer71"; + rowHeaderRenderer71.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer78.ActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer78.BackColor = System.Drawing.SystemColors.Control; + enhancedColumnHeaderRenderer78.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedColumnHeaderRenderer78.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedColumnHeaderRenderer78.Name = "enhancedColumnHeaderRenderer78"; + enhancedColumnHeaderRenderer78.NormalGridLineColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer78.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedColumnHeaderRenderer78.SelectedActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer78.SelectedBackgroundColor = System.Drawing.Color.Gray; + enhancedColumnHeaderRenderer78.SelectedGridLineColor = System.Drawing.Color.DimGray; + enhancedColumnHeaderRenderer78.TextRotationAngle = 0D; + enhancedRowHeaderRenderer6.ActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer6.BackColor = System.Drawing.SystemColors.Control; + enhancedRowHeaderRenderer6.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + enhancedRowHeaderRenderer6.ForeColor = System.Drawing.SystemColors.ControlText; + enhancedRowHeaderRenderer6.Name = "enhancedRowHeaderRenderer6"; + enhancedRowHeaderRenderer6.NormalGridLineColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer6.RightToLeft = System.Windows.Forms.RightToLeft.No; + enhancedRowHeaderRenderer6.SelectedActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer6.SelectedBackgroundColor = System.Drawing.Color.Gray; + enhancedRowHeaderRenderer6.SelectedGridLineColor = System.Drawing.Color.DimGray; + enhancedRowHeaderRenderer6.TextRotationAngle = 0D; + enhancedColumnHeaderRenderer79.ActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer79.Name = "enhancedColumnHeaderRenderer79"; + enhancedColumnHeaderRenderer79.NormalGridLineColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer79.SelectedActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedColumnHeaderRenderer79.SelectedBackgroundColor = System.Drawing.Color.Gray; + enhancedColumnHeaderRenderer79.SelectedGridLineColor = System.Drawing.Color.DimGray; + enhancedColumnHeaderRenderer79.TextRotationAngle = 0D; + enhancedRowHeaderRenderer7.ActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer7.Name = "enhancedRowHeaderRenderer7"; + enhancedRowHeaderRenderer7.NormalGridLineColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer7.SelectedActiveBackgroundColor = System.Drawing.Color.DarkGray; + enhancedRowHeaderRenderer7.SelectedBackgroundColor = System.Drawing.Color.Gray; + enhancedRowHeaderRenderer7.SelectedGridLineColor = System.Drawing.Color.DimGray; + enhancedRowHeaderRenderer7.TextRotationAngle = 0D; + // + // panelC + // + this.panelC.BackColor = System.Drawing.Color.DimGray; + this.panelC.Controls.Add(this.lables); + this.panelC.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.panelC.Location = new System.Drawing.Point(277, 5); + this.panelC.Name = "panelC"; + this.panelC.Size = new System.Drawing.Size(144, 37); + this.panelC.TabIndex = 6; + // + // lables + // + this.lables.AutoSize = true; + this.lables.BackColor = System.Drawing.Color.Transparent; + this.lables.Font = new System.Drawing.Font("나눔고딕", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lables.ForeColor = System.Drawing.Color.White; + this.lables.Location = new System.Drawing.Point(4, 8); + this.lables.Name = "lables"; + this.lables.Size = new System.Drawing.Size(144, 21); + this.lables.TabIndex = 583; + this.lables.Text = "Reconnecting.."; + this.lables.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tab + // + this.tab.Controls.Add(this.tabPage1); + this.tab.Controls.Add(this.tabPage2); + this.tab.Controls.Add(this.tabPage3); + this.tab.Controls.Add(this.tabPage4); + this.tab.Controls.Add(this.tabPage5); + this.tab.Controls.Add(this.tabPage6); + this.tab.Controls.Add(this.tabPage7); + this.tab.Controls.Add(this.tabPage8); + this.tab.Controls.Add(this.tabPage9); + this.tab.Controls.Add(this.tabPage10); + this.tab.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tab.Location = new System.Drawing.Point(437, 3); + this.tab.Name = "tab"; + this.tab.SelectedIndex = 0; + this.tab.Size = new System.Drawing.Size(496, 1060); + this.tab.TabIndex = 3; + this.tab.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged); + this.tab.DragOver += new System.Windows.Forms.DragEventHandler(this.tab_DragOver); + this.tab.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tab_MouseDown); + this.tab.MouseMove += new System.Windows.Forms.MouseEventHandler(this.tab_MouseMove); + this.tab.MouseUp += new System.Windows.Forms.MouseEventHandler(this.tab_MouseUp); + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.tabp1); + this.tabPage1.Location = new System.Drawing.Point(4, 24); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(488, 1032); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "해외"; + // + // tabp1 + // + this.tabp1.Location = new System.Drawing.Point(4, 3); + this.tabp1.Name = "tabp1"; + this.tabp1.Size = new System.Drawing.Size(481, 1026); + this.tabp1.TabIndex = 4; + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.tabp2); + this.tabPage2.Location = new System.Drawing.Point(4, 24); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(488, 1032); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "환율"; + // + // tabp2 + // + this.tabp2.Location = new System.Drawing.Point(4, 3); + this.tabp2.Name = "tabp2"; + this.tabp2.Size = new System.Drawing.Size(481, 1027); + this.tabp2.TabIndex = 3; + // + // tabPage3 + // + this.tabPage3.Controls.Add(this.tabp3); + this.tabPage3.Location = new System.Drawing.Point(4, 24); + this.tabPage3.Name = "tabPage3"; + this.tabPage3.Padding = new System.Windows.Forms.Padding(3); + this.tabPage3.Size = new System.Drawing.Size(488, 1032); + this.tabPage3.TabIndex = 2; + this.tabPage3.Text = "지수"; + // + // tabp3 + // + this.tabp3.Location = new System.Drawing.Point(4, 3); + this.tabp3.Name = "tabp3"; + this.tabp3.Size = new System.Drawing.Size(484, 1027); + this.tabp3.TabIndex = 3; + // + // tabPage4 + // + this.tabPage4.Controls.Add(this.tabp4_1); + this.tabPage4.Controls.Add(this.tabp4); + this.tabPage4.Location = new System.Drawing.Point(4, 24); + this.tabPage4.Name = "tabPage4"; + this.tabPage4.Padding = new System.Windows.Forms.Padding(3); + this.tabPage4.Size = new System.Drawing.Size(488, 1032); + this.tabPage4.TabIndex = 3; + this.tabPage4.Text = "코스피"; + // + // tabp4_1 + // + this.tabp4_1.Location = new System.Drawing.Point(4, 3); + this.tabp4_1.Name = "tabp4_1"; + this.tabp4_1.Size = new System.Drawing.Size(481, 443); + this.tabp4_1.TabIndex = 591; + // + // tabp4 + // + this.tabp4.Location = new System.Drawing.Point(4, 450); + this.tabp4.Name = "tabp4"; + this.tabp4.Size = new System.Drawing.Size(481, 580); + this.tabp4.TabIndex = 4; + // + // tabPage5 + // + this.tabPage5.Controls.Add(this.tabp5_1); + this.tabPage5.Controls.Add(this.tabp5); + this.tabPage5.Location = new System.Drawing.Point(4, 24); + this.tabPage5.Name = "tabPage5"; + this.tabPage5.Padding = new System.Windows.Forms.Padding(3); + this.tabPage5.Size = new System.Drawing.Size(488, 1032); + this.tabPage5.TabIndex = 4; + this.tabPage5.Text = "코스닥"; + // + // tabp5_1 + // + this.tabp5_1.Location = new System.Drawing.Point(4, 3); + this.tabp5_1.Name = "tabp5_1"; + this.tabp5_1.Size = new System.Drawing.Size(481, 443); + this.tabp5_1.TabIndex = 592; + // + // tabp5 + // + this.tabp5.Location = new System.Drawing.Point(4, 450); + this.tabp5.Name = "tabp5"; + this.tabp5.Size = new System.Drawing.Size(481, 580); + this.tabp5.TabIndex = 4; + // + // tabPage6 + // + this.tabPage6.Controls.Add(this.tabp6_1); + this.tabPage6.Controls.Add(this.tabp6); + this.tabPage6.Location = new System.Drawing.Point(4, 24); + this.tabPage6.Name = "tabPage6"; + this.tabPage6.Padding = new System.Windows.Forms.Padding(3); + this.tabPage6.Size = new System.Drawing.Size(488, 1032); + this.tabPage6.TabIndex = 5; + this.tabPage6.Text = "비교"; + // + // tabp6_1 + // + this.tabp6_1.Location = new System.Drawing.Point(4, 3); + this.tabp6_1.Name = "tabp6_1"; + this.tabp6_1.Size = new System.Drawing.Size(481, 748); + this.tabp6_1.TabIndex = 5; + // + // tabp6 + // + this.tabp6.Location = new System.Drawing.Point(4, 752); + this.tabp6.Name = "tabp6"; + this.tabp6.Size = new System.Drawing.Size(481, 278); + this.tabp6.TabIndex = 4; + // + // tabPage7 + // + this.tabPage7.Controls.Add(this.tabp7); + this.tabPage7.Location = new System.Drawing.Point(4, 24); + this.tabPage7.Name = "tabPage7"; + this.tabPage7.Padding = new System.Windows.Forms.Padding(3); + this.tabPage7.Size = new System.Drawing.Size(488, 1032); + this.tabPage7.TabIndex = 6; + this.tabPage7.Text = "테마"; + // + // tabp7 + // + this.tabp7.Location = new System.Drawing.Point(4, 3); + this.tabp7.Name = "tabp7"; + this.tabp7.Size = new System.Drawing.Size(481, 1027); + this.tabp7.TabIndex = 4; + // + // tabPage8 + // + this.tabPage8.Controls.Add(this.tabp8); + this.tabPage8.Location = new System.Drawing.Point(4, 24); + this.tabPage8.Name = "tabPage8"; + this.tabPage8.Padding = new System.Windows.Forms.Padding(3); + this.tabPage8.Size = new System.Drawing.Size(488, 1032); + this.tabPage8.TabIndex = 7; + this.tabPage8.Text = "해외종목"; + // + // tabp8 + // + this.tabp8.Location = new System.Drawing.Point(4, 3); + this.tabp8.Name = "tabp8"; + this.tabp8.Size = new System.Drawing.Size(484, 1027); + this.tabp8.TabIndex = 4; + // + // tabPage9 + // + this.tabPage9.Controls.Add(this.tabp9); + this.tabPage9.Location = new System.Drawing.Point(4, 24); + this.tabPage9.Name = "tabPage9"; + this.tabPage9.Padding = new System.Windows.Forms.Padding(3); + this.tabPage9.Size = new System.Drawing.Size(488, 1032); + this.tabPage9.TabIndex = 8; + this.tabPage9.Text = "전문가"; + // + // tabp9 + // + this.tabp9.Location = new System.Drawing.Point(4, 3); + this.tabp9.Name = "tabp9"; + this.tabp9.Size = new System.Drawing.Size(481, 1027); + this.tabp9.TabIndex = 4; + // + // tabPage10 + // + this.tabPage10.Controls.Add(this.tabp10); + this.tabPage10.Location = new System.Drawing.Point(4, 24); + this.tabPage10.Name = "tabPage10"; + this.tabPage10.Padding = new System.Windows.Forms.Padding(3); + this.tabPage10.Size = new System.Drawing.Size(488, 1032); + this.tabPage10.TabIndex = 9; + this.tabPage10.Text = "정지"; + // + // tabp10 + // + this.tabp10.Location = new System.Drawing.Point(4, 3); + this.tabp10.Name = "tabp10"; + this.tabp10.Size = new System.Drawing.Size(481, 1027); + this.tabp10.TabIndex = 4; + // + // panel2 + // + this.panel2.Controls.Add(this.dataGridView3); + this.panel2.Controls.Add(this.panel15); + this.panel2.Controls.Add(this.dataGridView2); + this.panel2.Controls.Add(this.dataGridView1); + this.panel2.Controls.Add(this.panel10); + this.panel2.Controls.Add(this.panel14); + this.panel2.Controls.Add(this.panel13); + this.panel2.Controls.Add(this.panel12); + this.panel2.Controls.Add(this.panel3); + this.panel2.Controls.Add(this.panel11); + this.panel2.Controls.Add(this.panel8); + this.panel2.Controls.Add(this.PlayList); + this.panel2.Controls.Add(this.panel7); + this.panel2.Location = new System.Drawing.Point(935, 5); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(966, 948); + this.panel2.TabIndex = 3; + // + // dataGridView3 + // + this.dataGridView3.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView3.Location = new System.Drawing.Point(10, 265); + this.dataGridView3.Name = "dataGridView3"; + this.dataGridView3.RowTemplate.Height = 23; + this.dataGridView3.Size = new System.Drawing.Size(924, 106); + this.dataGridView3.TabIndex = 619; + this.dataGridView3.Visible = false; + // + // panel15 + // + this.panel15.Controls.Add(this.label12); + this.panel15.Location = new System.Drawing.Point(892, 31); + this.panel15.Name = "panel15"; + this.panel15.Size = new System.Drawing.Size(53, 24); + this.panel15.TabIndex = 626; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label12.Location = new System.Drawing.Point(6, 3); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(42, 17); + this.label12.TabIndex = 594; + this.label12.Text = "Page"; + // + // dataGridView2 + // + this.dataGridView2.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView2.Location = new System.Drawing.Point(10, 377); + this.dataGridView2.Name = "dataGridView2"; + this.dataGridView2.RowTemplate.Height = 23; + this.dataGridView2.Size = new System.Drawing.Size(924, 215); + this.dataGridView2.TabIndex = 618; + this.dataGridView2.Visible = false; + // + // dataGridView1 + // + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Location = new System.Drawing.Point(10, 598); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowTemplate.Height = 23; + this.dataGridView1.Size = new System.Drawing.Size(924, 300); + this.dataGridView1.TabIndex = 617; + this.dataGridView1.Visible = false; + // + // panel10 + // + this.panel10.Location = new System.Drawing.Point(7, 31); + this.panel10.Name = "panel10"; + this.panel10.Size = new System.Drawing.Size(29, 24); + this.panel10.TabIndex = 622; + // + // panel14 + // + this.panel14.Controls.Add(this.label11); + this.panel14.Location = new System.Drawing.Point(637, 31); + this.panel14.Name = "panel14"; + this.panel14.Size = new System.Drawing.Size(254, 24); + this.panel14.TabIndex = 625; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label11.Location = new System.Drawing.Point(102, 4); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(64, 17); + this.label11.TabIndex = 593; + this.label11.Text = "세부사항"; + // + // panel13 + // + this.panel13.Controls.Add(this.label10); + this.panel13.Location = new System.Drawing.Point(437, 31); + this.panel13.Name = "panel13"; + this.panel13.Size = new System.Drawing.Size(199, 24); + this.panel13.TabIndex = 624; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label10.Location = new System.Drawing.Point(78, 4); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(50, 17); + this.label10.TabIndex = 592; + this.label10.Text = "컷파일"; + // + // panel12 + // + this.panel12.Controls.Add(this.label9); + this.panel12.Location = new System.Drawing.Point(177, 31); + this.panel12.Name = "panel12"; + this.panel12.Size = new System.Drawing.Size(259, 24); + this.panel12.TabIndex = 623; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label9.Location = new System.Drawing.Point(114, 4); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(36, 17); + this.label9.TabIndex = 591; + this.label9.Text = "종목"; + // + // panel3 + // + this.panel3.Controls.Add(this.picBoxPreview); + this.panel3.Controls.Add(this.panel6); + this.panel3.Location = new System.Drawing.Point(19, 799); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(879, 51); + this.panel3.TabIndex = 0; + this.panel3.Visible = false; + // + // picBoxPreview + // + this.picBoxPreview.ErrorImage = null; + this.picBoxPreview.InitialImage = null; + this.picBoxPreview.Location = new System.Drawing.Point(3, 4); + this.picBoxPreview.Name = "picBoxPreview"; + this.picBoxPreview.Size = new System.Drawing.Size(457, 257); + this.picBoxPreview.TabIndex = 0; + this.picBoxPreview.TabStop = false; + // + // panel6 + // + this.panel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel6.Controls.Add(this.label4); + this.panel6.Controls.Add(this.label1); + this.panel6.Controls.Add(this.btnPrepare); + this.panel6.Controls.Add(this.ComboDi); + this.panel6.Controls.Add(this.comboA); + this.panel6.Controls.Add(this.txt2); + this.panel6.Controls.Add(this.label3); + this.panel6.Controls.Add(this.label2); + this.panel6.Location = new System.Drawing.Point(468, -1); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(497, 274); + this.panel6.TabIndex = 1; + this.panel6.Paint += new System.Windows.Forms.PaintEventHandler(this.panel6_Paint); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label4.ForeColor = System.Drawing.Color.Green; + this.label4.Location = new System.Drawing.Point(16, 208); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(48, 17); + this.label4.TabIndex = 589; + this.label4.Text = "On-Air"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.ForeColor = System.Drawing.Color.Red; + this.label1.Location = new System.Drawing.Point(16, 146); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(55, 17); + this.label1.TabIndex = 588; + this.label1.Text = "PreView"; + // + // btnPrepare + // + this.btnPrepare.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnPrepare.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnPrepare.Font = new System.Drawing.Font("나눔고딕", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnPrepare.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.btnPrepare.Location = new System.Drawing.Point(58, 81); + this.btnPrepare.Name = "btnPrepare"; + this.btnPrepare.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnPrepare.Size = new System.Drawing.Size(388, 41); + this.btnPrepare.TabIndex = 587; + this.btnPrepare.Text = "PREPARE [F2]"; + this.btnPrepare.UseVisualStyleBackColor = true; + this.btnPrepare.Click += new System.EventHandler(this.btnPrepare_Click); + // + // ComboDi + // + this.ComboDi.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.ComboDi.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ComboDi.FormattingEnabled = true; + this.ComboDi.Items.AddRange(new object[] { + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20"}); + this.ComboDi.Location = new System.Drawing.Point(350, 21); + this.ComboDi.Name = "ComboDi"; + this.ComboDi.Size = new System.Drawing.Size(96, 23); + this.ComboDi.TabIndex = 586; + // + // comboA + // + this.comboA.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboA.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.comboA.FormattingEnabled = true; + this.comboA.Items.AddRange(new object[] { + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10"}); + this.comboA.Location = new System.Drawing.Point(138, 21); + this.comboA.Name = "comboA"; + this.comboA.Size = new System.Drawing.Size(96, 23); + this.comboA.TabIndex = 585; + // + // txt2 + // + this.txt2.BackColor = System.Drawing.SystemColors.Control; + this.txt2.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.txt2.Font = new System.Drawing.Font("나눔고딕", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.txt2.ForeColor = System.Drawing.Color.Red; + this.txt2.Location = new System.Drawing.Point(2, 166); + this.txt2.Name = "txt2"; + this.txt2.ReadOnly = true; + this.txt2.Size = new System.Drawing.Size(483, 25); + this.txt2.TabIndex = 580; + this.txt2.TabStop = false; + this.txt2.Text = "LG전자 1열판 기본 현재가"; + this.txt2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.label3.Location = new System.Drawing.Point(260, 26); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(84, 17); + this.label3.TabIndex = 583; + this.label3.Text = "DissolveTime"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.label2.Location = new System.Drawing.Point(53, 26); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(79, 17); + this.label2.TabIndex = 582; + this.label2.Text = "UpdataTime"; + // + // panel11 + // + this.panel11.Controls.Add(this.label8); + this.panel11.Location = new System.Drawing.Point(77, 31); + this.panel11.Name = "panel11"; + this.panel11.Size = new System.Drawing.Size(99, 24); + this.panel11.TabIndex = 622; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label8.Location = new System.Drawing.Point(34, 4); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(36, 17); + this.label8.TabIndex = 590; + this.label8.Text = "종류"; + // + // panel8 + // + this.panel8.Controls.Add(this.label7); + this.panel8.Location = new System.Drawing.Point(37, 31); + this.panel8.Name = "panel8"; + this.panel8.Size = new System.Drawing.Size(39, 24); + this.panel8.TabIndex = 621; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label7.Location = new System.Drawing.Point(4, 4); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(36, 17); + this.label7.TabIndex = 589; + this.label7.Text = "송출"; + // + // PlayList + // + this.PlayList.AccessibleDescription = "spdList, Sheet1, Row 0, Column 0, "; + this.PlayList.AllowDragFill = true; + this.PlayList.AllowRowMove = true; + this.PlayList.AutoClipboard = false; + this.PlayList.BackColor = System.Drawing.Color.LightSteelBlue; + this.PlayList.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders; + this.PlayList.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.PlayList.HorizontalScrollBar.Name = ""; + enhancedScrollBarRenderer4.ArrowColor = System.Drawing.Color.Black; + enhancedScrollBarRenderer4.ArrowHoveredColor = System.Drawing.Color.Black; + enhancedScrollBarRenderer4.ArrowSelectedColor = System.Drawing.Color.Black; + enhancedScrollBarRenderer4.ButtonBackgroundColor = System.Drawing.Color.Silver; + enhancedScrollBarRenderer4.ButtonBorderColor = System.Drawing.Color.DarkGray; + enhancedScrollBarRenderer4.ButtonHoveredBackgroundColor = System.Drawing.Color.DarkGray; + enhancedScrollBarRenderer4.ButtonHoveredBorderColor = System.Drawing.Color.DimGray; + enhancedScrollBarRenderer4.ButtonSelectedBackgroundColor = System.Drawing.Color.DimGray; + enhancedScrollBarRenderer4.ButtonSelectedBorderColor = System.Drawing.Color.Gray; + enhancedScrollBarRenderer4.TrackBarBackgroundColor = System.Drawing.Color.DarkGray; + enhancedScrollBarRenderer4.TrackBarSelectedBackgroundColor = System.Drawing.Color.Gray; + this.PlayList.HorizontalScrollBar.Renderer = enhancedScrollBarRenderer4; + this.PlayList.HorizontalScrollBar.TabIndex = 264; + this.PlayList.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.PlayList.Location = new System.Drawing.Point(5, 29); + this.PlayList.Name = "PlayList"; + namedStyle9.BackColor = System.Drawing.Color.Silver; + namedStyle9.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle9.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle9.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle9.Renderer = enhancedColumnHeaderRenderer79; + namedStyle9.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle10.BackColor = System.Drawing.Color.Silver; + namedStyle10.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle10.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle10.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle10.Renderer = enhancedRowHeaderRenderer7; + namedStyle10.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle11.BackColor = System.Drawing.Color.DimGray; + namedStyle11.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle11.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle11.NoteIndicatorColor = System.Drawing.Color.Red; + enhancedCornerRenderer2.ActiveBackgroundColor = System.Drawing.Color.Gray; + enhancedCornerRenderer2.GridLineColor = System.Drawing.Color.Empty; + enhancedCornerRenderer2.NormalBackgroundColor = System.Drawing.Color.DarkGray; + namedStyle11.Renderer = enhancedCornerRenderer2; + namedStyle11.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle12.BackColor = System.Drawing.SystemColors.Window; + namedStyle12.CellType = generalCellType3; + namedStyle12.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle12.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle12.Renderer = generalCellType3; + this.PlayList.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle9, + namedStyle10, + namedStyle11, + namedStyle12}); + this.PlayList.RetainSelectionBlock = false; + this.PlayList.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.PlayList.RowSplitBoxPolicy = FarPoint.Win.Spread.SplitBoxPolicy.Never; + this.PlayList.ScrollBarTrackPolicy = FarPoint.Win.Spread.ScrollBarTrackPolicy.Vertical; + this.PlayList.ScrollTipPolicy = FarPoint.Win.Spread.ScrollTipPolicy.Vertical; + this.PlayList.SelectionBlockOptions = ((FarPoint.Win.Spread.SelectionBlockOptions)(((FarPoint.Win.Spread.SelectionBlockOptions.Cells | FarPoint.Win.Spread.SelectionBlockOptions.Rows) + | FarPoint.Win.Spread.SelectionBlockOptions.Sheet))); + this.PlayList.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.PlayList_Sheet1}); + this.PlayList.Size = new System.Drawing.Size(960, 908); + spreadSkin3.ColumnHeaderDefaultStyle = namedStyle9; + spreadSkin3.CornerDefaultStyle = namedStyle11; + spreadSkin3.DefaultStyle = namedStyle12; + spreadSkin3.FocusRenderer = enhancedFocusIndicatorRenderer2; + enhancedInterfaceRenderer2.ArrowColorEnabled = System.Drawing.Color.Black; + enhancedInterfaceRenderer2.GrayAreaColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(101))))); + enhancedInterfaceRenderer2.RangeGroupBackgroundColor = System.Drawing.Color.LightGray; + enhancedInterfaceRenderer2.RangeGroupButtonBorderColor = System.Drawing.Color.DarkGray; + enhancedInterfaceRenderer2.ScrollBoxBackgroundColor = System.Drawing.Color.DarkGray; + enhancedInterfaceRenderer2.SheetTabBorderColor = System.Drawing.Color.DarkGray; + enhancedInterfaceRenderer2.SheetTabLowerActiveColor = System.Drawing.Color.DarkGray; + enhancedInterfaceRenderer2.SheetTabLowerNormalColor = System.Drawing.Color.Silver; + enhancedInterfaceRenderer2.SheetTabUpperActiveColor = System.Drawing.Color.White; + enhancedInterfaceRenderer2.SheetTabUpperNormalColor = System.Drawing.Color.LightGray; + enhancedInterfaceRenderer2.SplitBarBackgroundColor = System.Drawing.Color.Silver; + enhancedInterfaceRenderer2.SplitBarDarkColor = System.Drawing.Color.DarkGray; + enhancedInterfaceRenderer2.SplitBoxBackgroundColor = System.Drawing.Color.Silver; + enhancedInterfaceRenderer2.SplitBoxBorderColor = System.Drawing.Color.DarkGray; + enhancedInterfaceRenderer2.TabStripBackgroundColor = System.Drawing.Color.DarkGray; + enhancedInterfaceRenderer2.TabStripButtonBorderColor = System.Drawing.Color.White; + enhancedInterfaceRenderer2.TabStripButtonFlatStyle = System.Windows.Forms.FlatStyle.Flat; + enhancedInterfaceRenderer2.TabStripButtonLowerActiveColor = System.Drawing.Color.DarkGray; + enhancedInterfaceRenderer2.TabStripButtonLowerNormalColor = System.Drawing.Color.Silver; + enhancedInterfaceRenderer2.TabStripButtonLowerPressedColor = System.Drawing.Color.DarkGray; + enhancedInterfaceRenderer2.TabStripButtonUpperActiveColor = System.Drawing.Color.LightGray; + enhancedInterfaceRenderer2.TabStripButtonUpperNormalColor = System.Drawing.Color.LightGray; + enhancedInterfaceRenderer2.TabStripButtonUpperPressedColor = System.Drawing.Color.DarkGray; + spreadSkin3.InterfaceRenderer = enhancedInterfaceRenderer2; + spreadSkin3.Name = "CustomSkin2"; + spreadSkin3.RowHeaderDefaultStyle = namedStyle10; + enhancedScrollBarRenderer5.ArrowColor = System.Drawing.Color.Black; + enhancedScrollBarRenderer5.ArrowHoveredColor = System.Drawing.Color.Black; + enhancedScrollBarRenderer5.ArrowSelectedColor = System.Drawing.Color.Black; + enhancedScrollBarRenderer5.ButtonBackgroundColor = System.Drawing.Color.Silver; + enhancedScrollBarRenderer5.ButtonBorderColor = System.Drawing.Color.DarkGray; + enhancedScrollBarRenderer5.ButtonHoveredBackgroundColor = System.Drawing.Color.DarkGray; + enhancedScrollBarRenderer5.ButtonHoveredBorderColor = System.Drawing.Color.DimGray; + enhancedScrollBarRenderer5.ButtonSelectedBackgroundColor = System.Drawing.Color.DimGray; + enhancedScrollBarRenderer5.ButtonSelectedBorderColor = System.Drawing.Color.Gray; + enhancedScrollBarRenderer5.TrackBarBackgroundColor = System.Drawing.Color.DarkGray; + enhancedScrollBarRenderer5.TrackBarSelectedBackgroundColor = System.Drawing.Color.Gray; + spreadSkin3.ScrollBarRenderer = enhancedScrollBarRenderer5; + spreadSkin3.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.DarkGray, System.Drawing.Color.DarkGray, System.Drawing.Drawing2D.LinearGradientMode.Horizontal, 80); + this.PlayList.Skin = spreadSkin3; + this.PlayList.TabIndex = 620; + this.PlayList.TabStop = false; + this.PlayList.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.PlayList.VerticalScrollBar.Name = ""; + enhancedScrollBarRenderer6.ArrowColor = System.Drawing.Color.Black; + enhancedScrollBarRenderer6.ArrowHoveredColor = System.Drawing.Color.Black; + enhancedScrollBarRenderer6.ArrowSelectedColor = System.Drawing.Color.Black; + enhancedScrollBarRenderer6.ButtonBackgroundColor = System.Drawing.Color.Silver; + enhancedScrollBarRenderer6.ButtonBorderColor = System.Drawing.Color.DarkGray; + enhancedScrollBarRenderer6.ButtonHoveredBackgroundColor = System.Drawing.Color.DarkGray; + enhancedScrollBarRenderer6.ButtonHoveredBorderColor = System.Drawing.Color.DimGray; + enhancedScrollBarRenderer6.ButtonSelectedBackgroundColor = System.Drawing.Color.DimGray; + enhancedScrollBarRenderer6.ButtonSelectedBorderColor = System.Drawing.Color.Gray; + enhancedScrollBarRenderer6.TrackBarBackgroundColor = System.Drawing.Color.DarkGray; + enhancedScrollBarRenderer6.TrackBarSelectedBackgroundColor = System.Drawing.Color.Gray; + this.PlayList.VerticalScrollBar.Renderer = enhancedScrollBarRenderer6; + this.PlayList.VerticalScrollBar.TabIndex = 265; + this.PlayList.LeaveCell += new FarPoint.Win.Spread.LeaveCellEventHandler(this.PlayList_LeaveCell); + this.PlayList.CellClick += new FarPoint.Win.Spread.CellClickEventHandler(this.PlayList_CellClick); + this.PlayList.DragDrop += new System.Windows.Forms.DragEventHandler(this.PlayList_DragDrop); + this.PlayList.DragOver += new System.Windows.Forms.DragEventHandler(this.PlayList_DragOver); + this.PlayList.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.PlayList_KeyPress); + // + // PlayList_Sheet1 + // + this.PlayList_Sheet1.Reset(); + this.PlayList_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.PlayList_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.PlayList_Sheet1.ColumnCount = 13; + this.PlayList_Sheet1.RowCount = 0; + this.PlayList_Sheet1.ActiveRowIndex = -1; + this.PlayList_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "코드"; + this.PlayList_Sheet1.ColumnHeader.Columns.Default.CanFocus = false; + this.PlayList_Sheet1.ColumnHeader.Columns.Default.Resizable = false; + this.PlayList_Sheet1.ColumnHeader.Columns.Default.TabStop = true; + this.PlayList_Sheet1.ColumnHeader.DefaultStyle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.PlayList_Sheet1.ColumnHeader.DefaultStyle.CanFocus = false; + this.PlayList_Sheet1.ColumnHeader.DefaultStyle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(153))))); + this.PlayList_Sheet1.ColumnHeader.DefaultStyle.Locked = false; + this.PlayList_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.PlayList_Sheet1.ColumnHeader.DefaultStyle.Parent = "ColumnHeaderMetallic"; + this.PlayList_Sheet1.ColumnHeader.Rows.Default.CanFocus = false; + this.PlayList_Sheet1.ColumnHeader.Rows.Default.TabStop = true; + this.PlayList_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.PlayList_Sheet1.Columns.Default.Resizable = false; + this.PlayList_Sheet1.Columns.Get(0).Label = "코드"; + this.PlayList_Sheet1.Columns.Get(0).Width = 40F; + this.PlayList_Sheet1.Columns.Get(1).Width = 100F; + this.PlayList_Sheet1.Columns.Get(2).Width = 260F; + this.PlayList_Sheet1.Columns.Get(3).Width = 200F; + this.PlayList_Sheet1.Columns.Get(4).Width = 255F; + this.PlayList_Sheet1.Columns.Get(5).Width = 52F; + this.PlayList_Sheet1.Columns.Get(6).Visible = false; + this.PlayList_Sheet1.Columns.Get(7).Visible = false; + this.PlayList_Sheet1.Columns.Get(8).Visible = false; + this.PlayList_Sheet1.Columns.Get(9).Visible = false; + this.PlayList_Sheet1.Columns.Get(10).Visible = false; + this.PlayList_Sheet1.Columns.Get(11).Visible = false; + this.PlayList_Sheet1.Columns.Get(12).Visible = false; + this.PlayList_Sheet1.Columns.Get(12).Width = 35F; + this.PlayList_Sheet1.GrayAreaBackColor = System.Drawing.SystemColors.ActiveCaption; + this.PlayList_Sheet1.GroupBarBackColor = System.Drawing.Color.White; + this.PlayList_Sheet1.HorizontalGridLine = new FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.Flat, System.Drawing.Color.FromArgb(((int)(((byte)(160)))), ((int)(((byte)(160)))), ((int)(((byte)(160))))), System.Drawing.SystemColors.ControlLightLight, System.Drawing.Color.FromArgb(((int)(((byte)(162)))), ((int)(((byte)(162)))), ((int)(((byte)(162)))))); + this.PlayList_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.ExtendedSelect; + this.PlayList_Sheet1.RangeGroupBackgroundColor = System.Drawing.SystemColors.ActiveCaption; + this.PlayList_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.PlayList_Sheet1.RowHeader.Columns.Get(0).Width = 30F; + this.PlayList_Sheet1.RowHeader.DefaultStyle.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + this.PlayList_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.PlayList_Sheet1.RowHeader.DefaultStyle.Parent = "RowHeaderMetallic"; + this.PlayList_Sheet1.RowHeader.DefaultStyle.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.PlayList_Sheet1.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(230)))), ((int)(((byte)(255))))); + this.PlayList_Sheet1.SelectionForeColor = System.Drawing.Color.Black; + this.PlayList_Sheet1.SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.MultiRange; + this.PlayList_Sheet1.SelectionStyle = FarPoint.Win.Spread.SelectionStyles.SelectionColors; + this.PlayList_Sheet1.SelectionUnit = FarPoint.Win.Spread.Model.SelectionUnit.Row; + this.PlayList_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.PlayList_Sheet1.SheetCornerStyle.Parent = "CornerMetallic"; + this.PlayList_Sheet1.VerticalGridLine = new FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.Flat, System.Drawing.Color.FromArgb(((int)(((byte)(160)))), ((int)(((byte)(160)))), ((int)(((byte)(160))))), System.Drawing.SystemColors.ControlLightLight, System.Drawing.Color.FromArgb(((int)(((byte)(162)))), ((int)(((byte)(162)))), ((int)(((byte)(162)))))); + this.PlayList_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.PlayList.SetActiveViewport(0, -1, 0); + // + // panel7 + // + this.panel7.Controls.Add(this.ckback); + this.panel7.Controls.Add(this.lblbackfile); + this.panel7.Controls.Add(this.lblbackfile_full); + this.panel7.Controls.Add(this.btnback); + this.panel7.Controls.Add(this.btntdelete); + this.panel7.Controls.Add(this.btndelete); + this.panel7.Controls.Add(this.btnload); + this.panel7.Controls.Add(this.btnsave); + this.panel7.Controls.Add(this.btndown); + this.panel7.Controls.Add(this.btnup); + this.panel7.Controls.Add(this.ck2); + this.panel7.Controls.Add(this.ck1); + this.panel7.Controls.Add(this.checkBox1); + this.panel7.Location = new System.Drawing.Point(2, 1); + this.panel7.Name = "panel7"; + this.panel7.Size = new System.Drawing.Size(963, 26); + this.panel7.TabIndex = 584; + // + // ckback + // + this.ckback.AutoSize = true; + this.ckback.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ckback.Location = new System.Drawing.Point(388, 4); + this.ckback.Name = "ckback"; + this.ckback.Size = new System.Drawing.Size(91, 18); + this.ckback.TabIndex = 593; + this.ckback.Text = "배경없음(F3)"; + this.ckback.UseVisualStyleBackColor = true; + this.ckback.CheckedChanged += new System.EventHandler(this.ckback_CheckedChanged); + // + // lblbackfile + // + this.lblbackfile.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lblbackfile.Location = new System.Drawing.Point(564, 4); + this.lblbackfile.Name = "lblbackfile"; + this.lblbackfile.Size = new System.Drawing.Size(131, 19); + this.lblbackfile.TabIndex = 592; + this.lblbackfile.Text = "배경"; + this.lblbackfile.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lblbackfile_full + // + this.lblbackfile_full.AutoSize = true; + this.lblbackfile_full.Location = new System.Drawing.Point(322, 10); + this.lblbackfile_full.Name = "lblbackfile_full"; + this.lblbackfile_full.Size = new System.Drawing.Size(29, 12); + this.lblbackfile_full.TabIndex = 591; + this.lblbackfile_full.Text = "배경"; + this.lblbackfile_full.Visible = false; + // + // btnback + // + this.btnback.BackColor = System.Drawing.SystemColors.Control; + this.btnback.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnback.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnback.ForeColor = System.Drawing.Color.Black; + this.btnback.Location = new System.Drawing.Point(483, 2); + this.btnback.Name = "btnback"; + this.btnback.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnback.Size = new System.Drawing.Size(81, 22); + this.btnback.TabIndex = 590; + this.btnback.Text = "배경파일(F2)"; + this.btnback.TextAlign = System.Drawing.ContentAlignment.TopCenter; + this.btnback.UseVisualStyleBackColor = false; + this.btnback.Click += new System.EventHandler(this.btnback_Click); + // + // btntdelete + // + this.btntdelete.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btntdelete.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btntdelete.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btntdelete.ForeColor = System.Drawing.Color.Black; + this.btntdelete.Location = new System.Drawing.Point(889, 2); + this.btntdelete.Name = "btntdelete"; + this.btntdelete.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btntdelete.Size = new System.Drawing.Size(63, 22); + this.btntdelete.TabIndex = 587; + this.btntdelete.Text = "전체삭제"; + this.btntdelete.UseVisualStyleBackColor = true; + this.btntdelete.Click += new System.EventHandler(this.btntdelete_Click); + // + // btndelete + // + this.btndelete.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btndelete.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btndelete.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btndelete.ForeColor = System.Drawing.Color.Black; + this.btndelete.Location = new System.Drawing.Point(826, 2); + this.btndelete.Name = "btndelete"; + this.btndelete.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btndelete.Size = new System.Drawing.Size(63, 22); + this.btndelete.TabIndex = 586; + this.btndelete.Text = "선택삭제(DEL)"; + this.btndelete.UseVisualStyleBackColor = true; + this.btndelete.Click += new System.EventHandler(this.btndelete_Click); + // + // btnload + // + this.btnload.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnload.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btnload.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnload.ForeColor = System.Drawing.Color.Black; + this.btnload.Location = new System.Drawing.Point(763, 2); + this.btnload.Name = "btnload"; + this.btnload.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnload.Size = new System.Drawing.Size(63, 22); + this.btnload.TabIndex = 585; + this.btnload.Text = "DB 불러오기"; + this.btnload.UseVisualStyleBackColor = true; + this.btnload.Click += new System.EventHandler(this.btnload_Click); + // + // btnsave + // + this.btnsave.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnsave.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btnsave.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnsave.ForeColor = System.Drawing.Color.Black; + this.btnsave.Location = new System.Drawing.Point(700, 2); + this.btnsave.Name = "btnsave"; + this.btnsave.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnsave.Size = new System.Drawing.Size(63, 22); + this.btnsave.TabIndex = 584; + this.btnsave.Text = "DB 저장"; + this.btnsave.UseVisualStyleBackColor = true; + this.btnsave.Click += new System.EventHandler(this.button5_Click); + // + // btndown + // + this.btndown.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btndown.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btndown.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btndown.ForeColor = System.Drawing.Color.Black; + this.btndown.Image = ((System.Drawing.Image)(resources.GetObject("btndown.Image"))); + this.btndown.Location = new System.Drawing.Point(252, 1); + this.btndown.Name = "btndown"; + this.btndown.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btndown.Size = new System.Drawing.Size(45, 22); + this.btndown.TabIndex = 583; + this.btndown.TextAlign = System.Drawing.ContentAlignment.TopCenter; + this.btndown.UseVisualStyleBackColor = true; + this.btndown.Click += new System.EventHandler(this.btndown_Click); + // + // btnup + // + this.btnup.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnup.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btnup.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnup.ForeColor = System.Drawing.Color.Black; + this.btnup.Image = ((System.Drawing.Image)(resources.GetObject("btnup.Image"))); + this.btnup.Location = new System.Drawing.Point(204, 1); + this.btnup.Name = "btnup"; + this.btnup.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnup.Size = new System.Drawing.Size(45, 22); + this.btnup.TabIndex = 582; + this.btnup.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnup.UseVisualStyleBackColor = true; + this.btnup.Click += new System.EventHandler(this.btnup_Click); + // + // ck2 + // + this.ck2.AutoSize = true; + this.ck2.Checked = true; + this.ck2.CheckState = System.Windows.Forms.CheckState.Checked; + this.ck2.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ck2.Location = new System.Drawing.Point(132, 4); + this.ck2.Name = "ck2"; + this.ck2.Size = new System.Drawing.Size(62, 18); + this.ck2.TabIndex = 4; + this.ck2.Text = "20일선"; + this.ck2.UseVisualStyleBackColor = true; + // + // ck1 + // + this.ck1.AutoSize = true; + this.ck1.Checked = true; + this.ck1.CheckState = System.Windows.Forms.CheckState.Checked; + this.ck1.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.ck1.Location = new System.Drawing.Point(72, 4); + this.ck1.Name = "ck1"; + this.ck1.Size = new System.Drawing.Size(55, 18); + this.ck1.TabIndex = 3; + this.ck1.Text = "5일선"; + this.ck1.UseVisualStyleBackColor = true; + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Checked = true; + this.checkBox1.CheckState = System.Windows.Forms.CheckState.Checked; + this.checkBox1.Font = new System.Drawing.Font("나눔고딕", 8.999999F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.checkBox1.Location = new System.Drawing.Point(8, 4); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(48, 18); + this.checkBox1.TabIndex = 2; + this.checkBox1.Text = "전체"; + this.checkBox1.UseVisualStyleBackColor = true; + this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); + // + // txt1 + // + this.txt1.BackColor = System.Drawing.SystemColors.Control; + this.txt1.Font = new System.Drawing.Font("나눔고딕", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txt1.ForeColor = System.Drawing.Color.Green; + this.txt1.Location = new System.Drawing.Point(935, 1015); + this.txt1.Name = "txt1"; + this.txt1.ReadOnly = true; + this.txt1.Size = new System.Drawing.Size(966, 44); + this.txt1.TabIndex = 581; + this.txt1.TabStop = false; + this.txt1.Text = "LG전자 1열판 기본 현재가"; + this.txt1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // btnTake + // + this.btnTake.BackColor = System.Drawing.Color.WhiteSmoke; + this.btnTake.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnTake.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btnTake.Font = new System.Drawing.Font("나눔고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnTake.ForeColor = System.Drawing.Color.Black; + this.btnTake.Image = ((System.Drawing.Image)(resources.GetObject("btnTake.Image"))); + this.btnTake.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnTake.Location = new System.Drawing.Point(935, 961); + this.btnTake.Name = "btnTake"; + this.btnTake.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnTake.Size = new System.Drawing.Size(216, 48); + this.btnTake.TabIndex = 581; + this.btnTake.Text = " TAKE IN [F8]"; + this.btnTake.UseVisualStyleBackColor = false; + this.btnTake.Click += new System.EventHandler(this.btnTake_Click); + // + // panel4 + // + this.panel4.Controls.Add(this.txtSearch); + this.panel4.Controls.Add(this.GridView1); + this.panel4.Controls.Add(this.label14); + this.panel4.Controls.Add(this.b4); + this.panel4.Controls.Add(this.b3); + this.panel4.Controls.Add(this.b2); + this.panel4.Controls.Add(this.b1); + this.panel4.Controls.Add(this.panel9); + this.panel4.Controls.Add(this.listBox); + this.panel4.Controls.Add(this.button9); + this.panel4.Controls.Add(this.FpSpread2); + this.panel4.Controls.Add(this.listView1); + this.panel4.Location = new System.Drawing.Point(5, 56); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(426, 1004); + this.panel4.TabIndex = 4; + // + // txtSearch + // + this.txtSearch.Font = new System.Drawing.Font("나눔고딕", 12F); + this.txtSearch.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.txtSearch.Location = new System.Drawing.Point(62, 6); + this.txtSearch.Name = "txtSearch"; + this.txtSearch.Size = new System.Drawing.Size(162, 26); + this.txtSearch.TabIndex = 600; + this.txtSearch.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtSearch_KeyPress); + // + // GridView1 + // + this.GridView1.AllowUserToAddRows = false; + this.GridView1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.GridView1.ColumnHeadersVisible = false; + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle3.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle3.SelectionBackColor = System.Drawing.Color.Gainsboro; + dataGridViewCellStyle3.SelectionForeColor = System.Drawing.Color.Black; + dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.GridView1.DefaultCellStyle = dataGridViewCellStyle3; + this.GridView1.GridColor = System.Drawing.SystemColors.Control; + this.GridView1.Location = new System.Drawing.Point(196, 403); + this.GridView1.Name = "GridView1"; + this.GridView1.ReadOnly = true; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle4.BackColor = System.Drawing.Color.White; + dataGridViewCellStyle4.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.GridView1.RowHeadersDefaultCellStyle = dataGridViewCellStyle4; + this.GridView1.RowHeadersVisible = false; + this.GridView1.RowTemplate.Height = 23; + this.GridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.GridView1.Size = new System.Drawing.Size(183, 181); + this.GridView1.TabIndex = 599; + this.GridView1.Visible = false; + this.GridView1.CellEnter += new System.Windows.Forms.DataGridViewCellEventHandler(this.GridView1_CellEnter); + this.GridView1.RowLeave += new System.Windows.Forms.DataGridViewCellEventHandler(this.GridView1_RowLeave); + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label14.Location = new System.Drawing.Point(51, 113); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(31, 15); + this.label14.TabIndex = 597; + this.label14.Text = "종목"; + this.label14.Visible = false; + // + // b4 + // + this.b4.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.b4.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.b4.Font = new System.Drawing.Font("나눔고딕 ExtraBold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.b4.ForeColor = System.Drawing.Color.Black; + this.b4.Location = new System.Drawing.Point(324, 243); + this.b4.Name = "b4"; + this.b4.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.b4.Size = new System.Drawing.Size(85, 33); + this.b4.TabIndex = 596; + this.b4.Tag = "4"; + this.b4.Text = "영업이익"; + this.b4.UseVisualStyleBackColor = true; + this.b4.Click += new System.EventHandler(this.b1_Click); + // + // b3 + // + this.b3.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.b3.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.b3.Font = new System.Drawing.Font("나눔고딕 ExtraBold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.b3.ForeColor = System.Drawing.Color.Black; + this.b3.Location = new System.Drawing.Point(225, 243); + this.b3.Name = "b3"; + this.b3.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.b3.Size = new System.Drawing.Size(92, 33); + this.b3.TabIndex = 595; + this.b3.Tag = "3"; + this.b3.Text = "매출액"; + this.b3.UseVisualStyleBackColor = true; + this.b3.Click += new System.EventHandler(this.b1_Click); + // + // b2 + // + this.b2.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.b2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.b2.Font = new System.Drawing.Font("나눔고딕 ExtraBold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.b2.ForeColor = System.Drawing.Color.Black; + this.b2.Location = new System.Drawing.Point(123, 243); + this.b2.Name = "b2"; + this.b2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.b2.Size = new System.Drawing.Size(95, 33); + this.b2.TabIndex = 594; + this.b2.Tag = "2"; + this.b2.Text = "성장성 지표"; + this.b2.UseVisualStyleBackColor = true; + this.b2.Click += new System.EventHandler(this.b1_Click); + // + // b1 + // + this.b1.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.b1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.b1.Font = new System.Drawing.Font("나눔고딕 ExtraBold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.b1.ForeColor = System.Drawing.Color.Black; + this.b1.Location = new System.Drawing.Point(20, 243); + this.b1.Name = "b1"; + this.b1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.b1.Size = new System.Drawing.Size(99, 33); + this.b1.TabIndex = 593; + this.b1.Tag = "1"; + this.b1.Text = "주요매출 구성"; + this.b1.UseVisualStyleBackColor = true; + this.b1.Click += new System.EventHandler(this.b1_Click); + // + // panel9 + // + this.panel9.BackColor = System.Drawing.Color.White; + this.panel9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel9.Controls.Add(this.label6); + this.panel9.Font = new System.Drawing.Font("굴림", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.panel9.Location = new System.Drawing.Point(20, 37); + this.panel9.Name = "panel9"; + this.panel9.Size = new System.Drawing.Size(389, 24); + this.panel9.TabIndex = 591; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("나눔고딕", 10F); + this.label6.Location = new System.Drawing.Point(173, 4); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(46, 16); + this.label6.TabIndex = 590; + this.label6.Text = "종목명"; + // + // listBox + // + this.listBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.listBox.Font = new System.Drawing.Font("나눔고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.listBox.FormattingEnabled = true; + this.listBox.ItemHeight = 17; + this.listBox.Location = new System.Drawing.Point(20, 60); + this.listBox.Name = "listBox"; + this.listBox.Size = new System.Drawing.Size(389, 174); + this.listBox.TabIndex = 589; + this.listBox.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.listBox_DrawItem); + // + // button9 + // + this.button9.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.button9.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.button9.Font = new System.Drawing.Font("나눔고딕", 10F); + this.button9.ForeColor = System.Drawing.Color.Black; + this.button9.Image = ((System.Drawing.Image)(resources.GetObject("button9.Image"))); + this.button9.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.button9.Location = new System.Drawing.Point(292, 2); + this.button9.Name = "button9"; + this.button9.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.button9.Size = new System.Drawing.Size(117, 30); + this.button9.TabIndex = 585; + this.button9.Text = " 검색"; + this.button9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.button9.UseVisualStyleBackColor = true; + this.button9.Click += new System.EventHandler(this.button9_Click); + // + // FpSpread2 + // + this.FpSpread2.AccessibleDescription = "FpSpread2, Sheet1, Row 0, Column 0, "; + this.FpSpread2.AllowDragDrop = true; + this.FpSpread2.AllowDrop = true; + this.FpSpread2.AllowRowMove = true; + this.FpSpread2.AutoClipboard = false; + this.FpSpread2.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; + this.FpSpread2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FpSpread2.CellNoteIndicatorVisible = false; + this.FpSpread2.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders; + this.FpSpread2.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + this.FpSpread2.HorizontalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread2.HorizontalScrollBar.Name = ""; + this.FpSpread2.HorizontalScrollBar.Renderer = defaultScrollBarRenderer4; + this.FpSpread2.HorizontalScrollBar.TabIndex = 359; + this.FpSpread2.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.FpSpread2.Location = new System.Drawing.Point(123, 568); + this.FpSpread2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.FpSpread2.MoveActiveOnFocus = false; + this.FpSpread2.Name = "FpSpread2"; + namedStyle1.BackColor = System.Drawing.SystemColors.Window; + namedStyle1.CellType = generalCellType1; + namedStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + namedStyle1.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle1.Renderer = generalCellType1; + namedStyle2.BackColor = System.Drawing.SystemColors.Control; + namedStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle2.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle2.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle2.Renderer = cornerRenderer2; + namedStyle2.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(211)))), ((int)(((byte)(220)))), ((int)(((byte)(233))))); + namedStyle3.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle3.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle3.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle3.Renderer = enhancedColumnHeaderRenderer75; + namedStyle3.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + namedStyle4.BackColor = System.Drawing.SystemColors.Control; + namedStyle4.ForeColor = System.Drawing.SystemColors.ControlText; + namedStyle4.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + namedStyle4.NoteIndicatorColor = System.Drawing.Color.Red; + namedStyle4.Renderer = rowHeaderRenderer71; + namedStyle4.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + this.FpSpread2.NamedStyles.AddRange(new FarPoint.Win.Spread.NamedStyle[] { + namedStyle1, + namedStyle2, + namedStyle3, + namedStyle4}); + this.FpSpread2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.FpSpread2.Sheets.AddRange(new FarPoint.Win.Spread.SheetView[] { + this.FpSpread2_Sheet1, + this.FpSpread2_Sheet2}); + this.FpSpread2.Size = new System.Drawing.Size(238, 371); + spreadSkin1.ColumnHeaderDefaultStyle = namedStyle3; + spreadSkin1.DefaultStyle = namedStyle4; + spreadSkin1.FocusRenderer = new FarPoint.Win.Spread.ImageFocusIndicatorRenderer(null, System.Drawing.Color.Empty); + spreadSkin1.Name = "CustomSkin1"; + spreadSkin1.RowHeaderDefaultStyle = namedStyle3; + spreadSkin1.ScrollBarRenderer = defaultScrollBarRenderer5; + spreadSkin1.SelectionRenderer = new FarPoint.Win.Spread.GradientSelectionRenderer(System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(60)))), ((int)(((byte)(97))))), System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(110)))), ((int)(((byte)(170))))), System.Drawing.Drawing2D.LinearGradientMode.Vertical, 30); + this.FpSpread2.Skin = spreadSkin1; + this.FpSpread2.TabIndex = 598; + this.FpSpread2.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.Never; + this.FpSpread2.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Never; + this.FpSpread2.VerticalScrollBar.Buttons = new FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton"); + this.FpSpread2.VerticalScrollBar.Name = ""; + this.FpSpread2.VerticalScrollBar.Renderer = defaultScrollBarRenderer6; + this.FpSpread2.VerticalScrollBar.TabIndex = 360; + this.FpSpread2.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never; + this.FpSpread2.Visible = false; + this.FpSpread2.CellDoubleClick += new FarPoint.Win.Spread.CellClickEventHandler(this.FpSpread2_CellDoubleClick); + // + // FpSpread2_Sheet1 + // + this.FpSpread2_Sheet1.Reset(); + this.FpSpread2_Sheet1.SheetName = "Sheet1"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread2_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread2_Sheet1.ColumnCount = 5; + this.FpSpread2_Sheet1.RowCount = 0; + this.FpSpread2_Sheet1.RowHeader.ColumnCount = 0; + this.FpSpread2_Sheet1.ActiveRowIndex = -1; + this.FpSpread2_Sheet1.ActiveSkin = FarPoint.Win.Spread.DefaultSkins.Classic; + this.FpSpread2_Sheet1.ColumnHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 0).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 0).Value = "Index"; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).BackColor = System.Drawing.SystemColors.ActiveCaption; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).Border = emptyBorder2; + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).Font = new System.Drawing.Font("나눔고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FpSpread2_Sheet1.ColumnHeader.Cells.Get(0, 1).Value = "Cut"; + this.FpSpread2_Sheet1.ColumnHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.ColumnHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.ColumnHeader.Rows.Get(0).Height = 25F; + this.FpSpread2_Sheet1.Columns.Get(1).Label = "Cut"; + this.FpSpread2_Sheet1.Columns.Get(1).Width = 335F; + this.FpSpread2_Sheet1.Columns.Get(2).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(3).Visible = false; + this.FpSpread2_Sheet1.Columns.Get(4).Visible = false; + this.FpSpread2_Sheet1.OperationMode = FarPoint.Win.Spread.OperationMode.ExtendedSelect; + this.FpSpread2_Sheet1.RestrictColumns = true; + this.FpSpread2_Sheet1.RestrictRows = true; + this.FpSpread2_Sheet1.RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; + this.FpSpread2_Sheet1.RowHeader.Columns.Default.Resizable = false; + this.FpSpread2_Sheet1.RowHeader.Columns.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.RowHeader.DefaultStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.RowHeader.Rows.Default.VisualStyles = FarPoint.Win.VisualStyles.Auto; + this.FpSpread2_Sheet1.SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.MultiRange; + this.FpSpread2_Sheet1.SelectionUnit = FarPoint.Win.Spread.Model.SelectionUnit.Row; + this.FpSpread2_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet1.SheetCornerStyle.Parent = "HeaderDefault"; + this.FpSpread2_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + this.FpSpread2.SetActiveViewport(0, -1, 0); + // + // FpSpread2_Sheet2 + // + this.FpSpread2_Sheet2.Reset(); + this.FpSpread2_Sheet2.SheetName = "Sheet2"; + // Formulas and custom names must be loaded with R1C1 reference style + this.FpSpread2_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1; + this.FpSpread2_Sheet2.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet2.DefaultStyle.Parent = "RowHeaderDefault"; + this.FpSpread2_Sheet2.RowHeader.Columns.Default.Resizable = false; + this.FpSpread2_Sheet2.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red; + this.FpSpread2_Sheet2.RowHeader.DefaultStyle.Parent = "ColumnHeaderEnhanced"; + this.FpSpread2_Sheet2.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1; + // + // listView1 + // + this.listView1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.listView1.Font = new System.Drawing.Font("나눔고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.listView1.HideSelection = false; + this.listView1.Location = new System.Drawing.Point(21, 285); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(386, 715); + this.listView1.TabIndex = 601; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.listView1_MouseDown); + this.listView1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.listView1_MouseMove); + this.listView1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.listView1_MouseUp); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("나눔고딕", 10F); + this.label5.Location = new System.Drawing.Point(25, 67); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(33, 16); + this.label5.TabIndex = 588; + this.label5.Text = "종목"; + // + // panel5 + // + this.panel5.Controls.Add(this.pictureBox1); + this.panel5.Controls.Add(this.picLogo); + this.panel5.Controls.Add(this.panelC); + this.panel5.Location = new System.Drawing.Point(5, 4); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(426, 49); + this.panel5.TabIndex = 5; + // + // pictureBox1 + // + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.InitialImage = null; + this.pictureBox1.Location = new System.Drawing.Point(196, 8); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(81, 39); + this.pictureBox1.TabIndex = 7; + this.pictureBox1.TabStop = false; + // + // picLogo + // + this.picLogo.Image = ((System.Drawing.Image)(resources.GetObject("picLogo.Image"))); + this.picLogo.InitialImage = null; + this.picLogo.Location = new System.Drawing.Point(14, 3); + this.picLogo.Name = "picLogo"; + this.picLogo.Size = new System.Drawing.Size(179, 40); + this.picLogo.TabIndex = 3; + this.picLogo.TabStop = false; + // + // btnNext + // + this.btnNext.BackColor = System.Drawing.Color.WhiteSmoke; + this.btnNext.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnNext.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btnNext.Font = new System.Drawing.Font("나눔고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnNext.ForeColor = System.Drawing.Color.Black; + this.btnNext.Image = ((System.Drawing.Image)(resources.GetObject("btnNext.Image"))); + this.btnNext.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnNext.Location = new System.Drawing.Point(1319, 960); + this.btnNext.Name = "btnNext"; + this.btnNext.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnNext.Size = new System.Drawing.Size(181, 48); + this.btnNext.TabIndex = 582; + this.btnNext.Text = " NEXT "; + this.btnNext.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnNext.UseVisualStyleBackColor = false; + this.btnNext.Click += new System.EventHandler(this.btnNext_Click); + // + // btnTakeout + // + this.btnTakeout.BackColor = System.Drawing.Color.WhiteSmoke; + this.btnTakeout.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + this.btnTakeout.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.btnTakeout.Font = new System.Drawing.Font("나눔고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btnTakeout.ForeColor = System.Drawing.Color.Black; + this.btnTakeout.Image = ((System.Drawing.Image)(resources.GetObject("btnTakeout.Image"))); + this.btnTakeout.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btnTakeout.Location = new System.Drawing.Point(1690, 959); + this.btnTakeout.Name = "btnTakeout"; + this.btnTakeout.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.btnTakeout.Size = new System.Drawing.Size(211, 48); + this.btnTakeout.TabIndex = 583; + this.btnTakeout.Text = " TAKE OUT[Esc]"; + this.btnTakeout.UseVisualStyleBackColor = false; + this.btnTakeout.Click += new System.EventHandler(this.btnTakeout_Click); + // + // timer1 + // + this.timer1.Interval = 1000; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // timer2 + // + this.timer2.Interval = 500; + this.timer2.Tick += new System.EventHandler(this.timer2_Tick); + // + // timer3 + // + this.timer3.Interval = 5000; + this.timer3.Tick += new System.EventHandler(this.timer3_Tick); + // + // openFileDialog1 + // + this.openFileDialog1.FileName = "openFileDialog1"; + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1905, 1015); + this.Controls.Add(this.txt1); + this.Controls.Add(this.label5); + this.Controls.Add(this.btnTakeout); + this.Controls.Add(this.btnNext); + this.Controls.Add(this.panel5); + this.Controls.Add(this.panel4); + this.Controls.Add(this.btnTake); + this.Controls.Add(this.panel2); + this.Controls.Add(this.tab); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; + this.MaximizeBox = false; + this.Name = "MainForm"; + this.Text = "V-Stock 증권정보송출시스템 for 매일경제TV (26.03.26)"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); + this.Load += new System.EventHandler(this.Form1_Load); + this.Paint += new System.Windows.Forms.PaintEventHandler(this.MainForm_Paint); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyDown); + this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyUp); + this.Resize += new System.EventHandler(this.MainForm_Resize); + this.panelC.ResumeLayout(false); + this.panelC.PerformLayout(); + this.tab.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage2.ResumeLayout(false); + this.tabPage3.ResumeLayout(false); + this.tabPage4.ResumeLayout(false); + this.tabPage5.ResumeLayout(false); + this.tabPage6.ResumeLayout(false); + this.tabPage7.ResumeLayout(false); + this.tabPage8.ResumeLayout(false); + this.tabPage9.ResumeLayout(false); + this.tabPage10.ResumeLayout(false); + this.panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView3)).EndInit(); + this.panel15.ResumeLayout(false); + this.panel15.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.panel14.ResumeLayout(false); + this.panel14.PerformLayout(); + this.panel13.ResumeLayout(false); + this.panel13.PerformLayout(); + this.panel12.ResumeLayout(false); + this.panel12.PerformLayout(); + this.panel3.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.picBoxPreview)).EndInit(); + this.panel6.ResumeLayout(false); + this.panel6.PerformLayout(); + this.panel11.ResumeLayout(false); + this.panel11.PerformLayout(); + this.panel8.ResumeLayout(false); + this.panel8.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.PlayList)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.PlayList_Sheet1)).EndInit(); + this.panel7.ResumeLayout(false); + this.panel7.PerformLayout(); + this.panel4.ResumeLayout(false); + this.panel4.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.GridView1)).EndInit(); + this.panel9.ResumeLayout(false); + this.panel9.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.FpSpread2_Sheet2)).EndInit(); + this.panel5.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.picLogo)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.TabControl tab; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.TabPage tabPage3; + private System.Windows.Forms.TabPage tabPage4; + private System.Windows.Forms.TabPage tabPage5; + private System.Windows.Forms.TabPage tabPage6; + private System.Windows.Forms.TabPage tabPage7; + private System.Windows.Forms.TabPage tabPage8; + private System.Windows.Forms.TabPage tabPage9; + private System.Windows.Forms.TabPage tabPage10; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.TextBox txt2; + private System.Windows.Forms.PictureBox picBoxPreview; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.Panel panel5; + private System.Windows.Forms.Button btnTake; + private System.Windows.Forms.Button btnNext; + private System.Windows.Forms.Button btnTakeout; + private System.Windows.Forms.TextBox txt1; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.ComboBox ComboDi; + private System.Windows.Forms.ComboBox comboA; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Panel panel7; + private System.Windows.Forms.Button btndown; + private System.Windows.Forms.Button btnup; + public System.Windows.Forms.CheckBox ck2; + public System.Windows.Forms.CheckBox ck1; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.Button btntdelete; + private System.Windows.Forms.Button btndelete; + private System.Windows.Forms.Button btnload; + private System.Windows.Forms.Button btnsave; + private System.Windows.Forms.Panel panelC; + private System.Windows.Forms.Label lables; + private System.Windows.Forms.Button button9; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.PictureBox picLogo; + private System.Windows.Forms.ListBox listBox; + private System.Windows.Forms.Panel panel9; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Timer timer2; + private System.Windows.Forms.Button btnPrepare; + private System.Windows.Forms.Panel tabp1; + private System.Windows.Forms.Panel tabp2; + private System.Windows.Forms.Panel tabp3; + private System.Windows.Forms.Panel tabp4; + private System.Windows.Forms.Panel tabp5; + private System.Windows.Forms.Panel tabp6; + private System.Windows.Forms.Panel tabp7; + private System.Windows.Forms.Panel tabp8; + private System.Windows.Forms.Panel tabp9; + private System.Windows.Forms.Panel tabp10; + private System.Windows.Forms.Panel tabp4_1; + private System.Windows.Forms.Panel tabp5_1; + private System.Windows.Forms.Panel tabp6_1; + public System.Windows.Forms.DataGridView dataGridView1; + public System.Windows.Forms.DataGridView dataGridView2; + public System.Windows.Forms.DataGridView dataGridView3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label1; + internal FarPoint.Win.Spread.FpSpread PlayList; + internal FarPoint.Win.Spread.SheetView PlayList_Sheet1; + private System.Windows.Forms.Panel panel15; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Panel panel14; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Panel panel13; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Panel panel12; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Panel panel11; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Panel panel8; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Panel panel10; + private System.Windows.Forms.Timer timer3; + private System.Windows.Forms.Button b4; + private System.Windows.Forms.Button b3; + private System.Windows.Forms.Button b2; + private System.Windows.Forms.Button b1; + private System.Windows.Forms.Label label14; + public FarPoint.Win.Spread.FpSpread FpSpread2; + public FarPoint.Win.Spread.SheetView FpSpread2_Sheet1; + public FarPoint.Win.Spread.SheetView FpSpread2_Sheet2; + private System.Windows.Forms.DataGridView GridView1; + private System.Windows.Forms.TextBox txtSearch; + ListViewEx listView1; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + private System.Windows.Forms.Label lblbackfile_full; + private System.Windows.Forms.Button btnback; + private System.Windows.Forms.Label lblbackfile; + public System.Windows.Forms.CheckBox ckback; + //private System.Windows.Forms.ListView listView1; + } +} + diff --git a/MBN_STOCK_N/MainForm.cs b/MBN_STOCK_N/MainForm.cs new file mode 100644 index 0000000..a462329 --- /dev/null +++ b/MBN_STOCK_N/MainForm.cs @@ -0,0 +1,4058 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using System.Runtime.InteropServices; +using System.IO; +using FarPoint.Win.Spread; +using static MMoneyCoderSharp.DBDefine; +using MMoneyCoderSharp.Data; +using MMoneyCoderSharp.Data.Classification; +using MMoneyCoderSharp.DB; +using MMoneyCoderSharp.Util; +using K3DAsyncEngineLib; +using System.Threading.Tasks; +using System.Reflection; + +namespace MBN_STOCK_N +{ + + public partial class MainForm : Form + { + [DllImport("user32.dll")] + public static extern IntPtr FindWindow(String lpClassName, String lpWindowName); + + + public DataSet mDataSetStock; + public DataTable mDTkospi; + public DataTable mDTkosdaq; + public DataTable mDTNxtkospi; + public DataTable mDTNxtkosdaq; + public DataTable mDTforeign; + public DataTable mDTkospiSectors; + public DataTable mDTkosdaqSectors; + + public CutList CutList; + + //Tornado SDK 관련 + public KAEngine KAEngine; + public KAScenePlayer KAScenePlayer; + public KAScene KAScene; + public KAEventHandler KAEvent; + public KAObject KAObject; + + bool m_Super = false; + bool m_TakeIn = false; + int m_ShowIndex = 0; + public int m_rowidx = -1; + public int m_crow = -1; + int m_cutindex = 0; + int m_update = 0; + int m_rcolor = 0; + bool m_control = false; + public bool m_chkdata = false; + //bool m_FileModyfy = false; + //bool m_header = false; + + public DBCon m_db = null; + public string m_PlayLsit = string.Empty; + public string RES_FOLDER_PATH = Environment.CurrentDirectory + @"\Res\"; + public string PREVIEW_FOLDER_PATH = Environment.CurrentDirectory + @"\Preview\"; + public string PREVIEW_FILE_PATH = Environment.CurrentDirectory + @"\Preview\Preview.png"; + public string T2S_FOLDER_PATH = Environment.CurrentDirectory + @"\Cuts\"; + + public string m_ip = string.Empty; + public string m_port = string.Empty; + public string m_sid = string.Empty; + public string m_id = string.Empty; + public string m_pw = string.Empty; + + public string nxt_m_ip = string.Empty; + public string nxt_m_port = string.Empty; + public string nxt_m_sid = string.Empty; + public string nxt_m_id = string.Empty; + public string nxt_m_pw = string.Empty; + + + private System.Windows.Forms.Timer timerAliveChecker; + + private void initAliveChecker() + { + timerAliveChecker = new System.Windows.Forms.Timer(components); + timerAliveChecker.Interval = 10000; + timerAliveChecker.Tick += new System.EventHandler(this.timerAliveChecker_Tick); + timerAliveChecker.Enabled = true; + } + + public void LogWrite(string str) + { + Invoke((Action)(() => { + string DirPath = Environment.CurrentDirectory + @"\Log"; + string FilePath = DirPath + "\\Log_" + DateTime.Today.ToString("MMdd") + ".log"; + string temp; + + DirectoryInfo di = new DirectoryInfo(DirPath); + FileInfo fi = new FileInfo(FilePath); + + try + { + if (!di.Exists) Directory.CreateDirectory(DirPath); + if (!fi.Exists) + { + using (StreamWriter sw = new StreamWriter(FilePath)) + { + temp = string.Format("[{0}] {1}", DateTime.Now, str); + sw.WriteLine(temp); + sw.Close(); + } + } + else + { + using (StreamWriter sw = File.AppendText(FilePath)) + { + temp = string.Format("[{0}] {1}", DateTime.Now, str); + sw.WriteLine(temp); + sw.Close(); + } + } + } + catch (Exception e) + { + } + } + )); + } + + int m_dbs = 0; + private void timerAliveChecker_Tick(object sender, EventArgs e) + { + if (!DBAliveChecker()) + { + //연결 끊어짐 + //timerAliveChecker.Enabled = false; + //Console.WriteLine("m_db 끊어짐"); + LogWrite("DB 연결 끊어짐"); + m_dbs = 1; + } + else + { + if (m_dbs == 1) + { + LogWrite("DB 연결중"); + m_dbs = 0; + //Console.WriteLine("m_db 살아있음"); + } + + + } + } + + private bool DBAliveChecker() + { + bool alived = false; + + try + { + if (m_db.conn.State == ConnectionState.Closed) + { + m_db.conn.Open(); + } + + if (m_db.conn.State == ConnectionState.Open) + { + alived = true; + } + + } + catch (Exception) + { + + } + finally + { + m_db.conn.Close(); + } + + return alived; + } + + #region DB 매칭 관련 + + + /// + /// 종목 매칭 - 실행시, 아침 7시30분에 실행 + /// + private void TableMatching() + { + mDataSetStock = DataManager.getInstance().getStocksInfoTable(); + + //코스피 + mDTkospi = mDataSetStock.Tables[0]; + foreach (DataRow row in mDTkospi.Rows) + { + + } + //코스닥 + mDTkosdaq = mDataSetStock.Tables[1]; + foreach (DataRow row in mDTkosdaq.Rows) + { + //listBoxControl1.Items.Add(row[0]); + } + //NXT코스피 + mDTNxtkospi = mDataSetStock.Tables[2]; + foreach (DataRow row in mDTNxtkospi.Rows) + { + + } + //NXT코스닥 + mDTNxtkosdaq = mDataSetStock.Tables[3]; + foreach (DataRow row in mDTNxtkosdaq.Rows) + { + //listBoxControl1.Items.Add(row[0]); + } + //해외 + mDTforeign = mDataSetStock.Tables[4]; + foreach (DataRow row in mDTforeign.Rows) + { + //listBoxControl1.Items.Add(row[0]); + } + //코스피 업종 + // mDTkospiSectors = mDataSetStock.Tables[3]; + mDTkospiSectors = mDataSetStock.Tables[5]; + + //코스닥 업종 + // mDTkosdaqSectors = mDataSetStock.Tables[4]; + mDTkosdaqSectors = mDataSetStock.Tables[6]; + } + + #endregion + + + + public MainForm() + { + + InitializeComponent(); + + + this.KeyPreview = true; + + INI_parser(Environment.CurrentDirectory + @"\Res\MmoneyCoder.ini"); + + for (int i = 0; i < m_idx; i++) + { + if (m_pbuf[i] == "[Oracle]") + { + for (int j = 0; j < m_row[i]; j++) + { + if (m_sbuf[i, j].Substring(0, 2) != "//") + { + if (m_sbuf[i, j].Contains("ConnectionName")) + { + m_ip = m_sbuf[i, j].Substring(m_sbuf[i, j].IndexOf("=") + 1, m_sbuf[i, j].IndexOf(":") - m_sbuf[i, j].IndexOf("=") - 1); + m_port = m_sbuf[i, j].Substring(m_sbuf[i, j].IndexOf(":") + 1, m_sbuf[i, j].IndexOf("/") - m_sbuf[i, j].IndexOf(":") - 1); + m_sid = m_sbuf[i, j].Substring(m_sbuf[i, j].IndexOf("/") + 1, m_sbuf[i, j].Length - m_sbuf[i, j].IndexOf("/") - 1); + } + + if (m_sbuf[i, j].Contains("ID")) + { + m_id = m_sbuf[i, j].Substring(m_sbuf[i, j].IndexOf("=") + 1, m_sbuf[i, j].Length - m_sbuf[i, j].IndexOf("=") - 1); + } + + if (m_sbuf[i, j].Contains("Pass")) + { + m_pw = m_sbuf[i, j].Substring(m_sbuf[i, j].IndexOf("=") + 1, m_sbuf[i, j].Length - m_sbuf[i, j].IndexOf("=") - 1); + } + } + } + } + } + + for (int i = 0; i < m_idx; i++) + { + if (m_pbuf[i] == "[Maria]") + { + for (int j = 0; j < m_row[i]; j++) + { + if (m_sbuf[i, j].Substring(0, 2) != "//") + { + if (m_sbuf[i, j].Contains("ConnectionName")) + { + nxt_m_ip = m_sbuf[i, j].Substring(m_sbuf[i, j].IndexOf("=") + 1, m_sbuf[i, j].IndexOf(":") - m_sbuf[i, j].IndexOf("=") - 1); + nxt_m_port = m_sbuf[i, j].Substring(m_sbuf[i, j].IndexOf(":") + 1, m_sbuf[i, j].IndexOf("/") - m_sbuf[i, j].IndexOf(":") - 1); + nxt_m_sid = m_sbuf[i, j].Substring(m_sbuf[i, j].IndexOf("/") + 1, m_sbuf[i, j].Length - m_sbuf[i, j].IndexOf("/") - 1); + } + + if (m_sbuf[i, j].Contains("ID")) + { + nxt_m_id = m_sbuf[i, j].Substring(m_sbuf[i, j].IndexOf("=") + 1, m_sbuf[i, j].Length - m_sbuf[i, j].IndexOf("=") - 1); + } + + if (m_sbuf[i, j].Contains("Pass")) + { + nxt_m_pw = m_sbuf[i, j].Substring(m_sbuf[i, j].IndexOf("=") + 1, m_sbuf[i, j].Length - m_sbuf[i, j].IndexOf("=") - 1); + } + } + } + } + } + + //DB 접속 관리 + DBManager.getInstance().setDB_HOST(m_ip, nxt_m_ip); + DBManager.getInstance().setDB_PORT(m_port, nxt_m_port); + DBManager.getInstance().setDB_ID(m_id, nxt_m_id); + DBManager.getInstance().setDB_PASS(m_pw, nxt_m_pw); + DBManager.getInstance().setDB_CONNECT_DATA(m_sid, nxt_m_sid); + + //각 종목 테이블 매칭 + TableMatching(); + m_db = new DBCon(this); + + KAEngine = new KAEngine(); + KAEvent = new KAEventHandler(); + + CutList = new CutList(); + + + /* + GridView1.CellPainting += GridView1_CellPainting; + */ + DoubleBuffered = true; + listView1.OwnerDraw = true; + listView1.DrawColumnHeader += new DrawListViewColumnHeaderEventHandler(lv_DrawColumnHeader); + listView1.DrawSubItem += new DrawListViewSubItemEventHandler(lv_DrawSubItem); + listView1.FullRowSelect = true; + listView1.MultiSelect = true; + listView1.Scrollable = true; + + listView1.View = View.Details; + } + + + + public string m_Path = Environment.CurrentDirectory + @"\Data\PlayList\"; + public string m_DataPath = Environment.CurrentDirectory + @"\Data\"; + + public TreeNode[] m_node = new TreeNode[20]; + public string[] m_pbuf = new string[20]; + public string[,] m_sbuf = new string[20, 50]; + public int[] m_row = new int[20]; + public int m_idx = 0; + public int m_st = 0; + public int m_lcnt = 0; + public string m_group = string.Empty; + + int m_init = 0; + + bool bThreadAlive = true; + + UC1 tuc1 = null; + UC2 tuc2 = null; + UC3 tuc3 = null; + UC4 tuc4 = null; + UC5 tuc5 = null; + UC6 tuc6 = null; + UC7 tuc7 = null; + + FileSystemWatcher watcher = null; + + private Rectangle dragBoxFromMouseDown; + private int rowIndexFrom; + + private void Form1_Load(object sender, EventArgs e) + { + try + { + System.Diagnostics.Process ps = new System.Diagnostics.Process(); + System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("매일경제TV"); + + if (process.Length > 1) + { + MessageBox.Show("코더가 실행중입니다."); + System.Diagnostics.Process p = System.Diagnostics.Process.GetCurrentProcess(); + p.Kill(); + } + + else + { + + DataTable dt1 = new DataTable(); + + dt1.Columns.Add("Index"); + dt1.Columns.Add("Cut"); + + + foreach (FarPoint.Win.Spread.SpreadSkin sk in FarPoint.Win.Spread.DefaultSpreadSkins.Skins) + { + if (sk.Name == "Metallic") + { + sk.Apply(PlayList); + } + } + + + INI_parser(Environment.CurrentDirectory + @"\Res\종목.ini"); + + int cnt = 1; + for (int j = 0; j < m_row[0]; j++) + { + InsertRow(FpSpread2, FpSpread2.ActiveSheet, FpSpread2.ActiveSheet.RowCount + 1, 1, 0); + + + if (m_sbuf[0, j] == "-") + { + FpSpread2.ActiveSheet.SetText(j, 0, ""); + FpSpread2.ActiveSheet.SetText(j, 1, ""); + //dt1.Rows.Add((j).ToString(), ""); + dt1.Rows.Add((j + 1).ToString(), ""); + } + else + { + FpSpread2.ActiveSheet.SetText(j, 0, cnt.ToString()); + FpSpread2.ActiveSheet.SetText(j, 1, m_sbuf[0, j]); + + //dt1.Rows.Add((j).ToString(), cnt.ToString()); + dt1.Rows.Add((j + 1).ToString(), m_sbuf[0, j]); + cnt += 1; + } + + //dt1.Rows.Add((j + 1).ToString(), m_sbuf[0, j]); + + } + this.GridView1.DataSource = dt1; + + DataGridViewColumn column1 = GridView1.Columns[0]; + DataGridViewColumn column2 = GridView1.Columns[1]; + + + column1.Width = 61; + column2.Width = 328; + + column1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; + + GridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing; + GridView1.Columns[0].Resizable = DataGridViewTriState.False; + + + cnt = 1; + for (int i = 0; i < m_row[0]; i++) + { + GridView1.Rows[i].Height = 23; + GridView1.Rows[1].Frozen = true; + + GridView1.Rows[i].Resizable = DataGridViewTriState.False; + + if (GridView1.Rows[i].Cells[1].Value.ToString() == "") + { + GridView1.Rows[i].Cells[0].Value = ""; + } + else + { + GridView1.Rows[i].Cells[0].Value = cnt.ToString(); + cnt += 1; + } + + } + + + this.GridView1.GridColor = Color.DarkGray; + this.GridView1.CurrentCell = null; + this.GridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + + + PlayList.AllowDrop = true; + + + tuc1 = new UC1(this, "해외", null, null); + tuc1.Dock = System.Windows.Forms.DockStyle.Fill; + tabp1.Controls.Add(tuc1); + + + PlayList.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + + Cell_Color(PlayList.ActiveSheet, 0, 0); + Cell_Color(FpSpread2.ActiveSheet, 0, 0); + + + Bitmap sourceImage = new Bitmap(Environment.CurrentDirectory + @"\Res\VRIPNG.png"); + Size resize = new Size(68, 30); + Bitmap resizeImage = new Bitmap(sourceImage, resize); + pictureBox1.Image = resizeImage; + + comboA.SelectedIndex = 3; + ComboDi.SelectedIndex = 6; + txt1.Text = ""; txt2.Text = ""; + + + System.Windows.Forms.ColumnHeader header = new System.Windows.Forms.ColumnHeader(); + header.Text = "Index"; + header.Name = "col1"; + header.Width = 61; + listView1.Columns.Add(header); + + System.Windows.Forms.ColumnHeader header2 = new System.Windows.Forms.ColumnHeader(); + header2.Text = "Cut"; + header2.Name = "col2"; + header2.Width = 323; + listView1.Columns.Add(header2); + listView1.Columns[0].TextAlign = HorizontalAlignment.Center; + + + listView1.HeaderStyle = ColumnHeaderStyle.None; + + foreach (DataRow d in dt1.Rows) + { + ListViewItem item = new ListViewItem(new String[] { d[0].ToString(), d[1].ToString() }); + listView1.Items.Add(item); + } + + timer3.Start(); + //fileSystemWatcher1.Path = RES_FOLDER_PATH; + //picBoxPreview.Image = null; + + //watcher = new FileSystemWatcher(PREVIEW_FOLDER_PATH); + //watcher.EnableRaisingEvents = true; + //watcher.IncludeSubdirectories = false; + //watcher.Changed += new FileSystemEventHandler(watcher_Changed); + + panelC.BackColor = Color.FromArgb(26, 119, 0); + lables.Text = "T2 Connected"; + + KAEngine.KTAPConnect(1, "127.0.0.1", 30001, 0, KAEvent); + KAScenePlayer = KAEngine.GetScenePlayer(); + + + this.FpSpread2.SelectionBlockOptions = FarPoint.Win.Spread.SelectionBlockOptions.Rows; + PlayList.SetCursor(FarPoint.Win.Spread.CursorType.Normal, System.Windows.Forms.Cursors.Default); + + + //====shk 20230913 배경 선택===== + // lblbackfile_full.Text = T2S_FOLDER_PATH + "\\video\\" + "1109_배경최종-1.vrv"; // 배경파일 선택 + // lblbackfile.Text = "1109_배경최종-1.vrv"; + lblbackfile_full.Text = T2S_FOLDER_PATH + "\\video\\" + "기본.vrv"; // 배경파일 선택 + lblbackfile.Text = "기본.vrv"; + //=============================== + + Form_Status(); + LogWrite("코더 실행"); + LogWrite("DB 연결중"); + } + + initAliveChecker(); + } + catch (Exception) + { + + } + } + + private void keypressed(Object o, KeyPressEventArgs e) + { + try + { + // The keypressed method uses the KeyChar property to check + // whether the ENTER key is pressed. + + // If the ENTER key is pressed, the Handled property is set to true, + // to indicate the event is handled. + if (e.KeyChar == (char)Keys.ShiftKey) + { + txtSearch.CharacterCasing = CharacterCasing.Upper; ; + //textBox.CharacterCasing = CharacterCasing.Upper; + e.Handled = true; + } + } + catch (Exception) + { + + } + + } + public void watcher_Changed(object sender, FileSystemEventArgs e) + { + try + { + //System.Threading.Thread.Sleep(1000); + watcher.EnableRaisingEvents = false; + //m_FileModyfy = true; + //textBox1.Text = "Data Update..."; + } + catch (Exception) + { + //MessageBox.Show(ex.ToString()); + } + /*finally + { + // 모니터링 활성화 + watcher.EnableRaisingEvents = true; + }*/ + } + + public void INI_parser(string path) + { + try + { + string str = string.Empty; + + m_idx = 0; + m_row = Enumerable.Repeat(0, 20).ToArray(); + + StreamReader sr = new StreamReader(path, Encoding.Default); + if (sr != null) + { + while (sr.Peek() > -1) + { + str = sr.ReadLine(); str = str.Trim(); + + if (str != "") + { + if (str.Substring(0, 1) == "[") + { + m_pbuf[m_idx] = str; + m_idx += 1; + } + else + { + m_sbuf[m_idx - 1, m_row[m_idx - 1]] = str; + m_row[m_idx - 1] += 1; + } + } + } + } + } + catch (Exception) + { + + } + } + + public delegate void Action(); + bool istornado = false; + + public void MonitoringProcee() + { + try + { + while (bThreadAlive) + { + System.Diagnostics.Process ps = new System.Diagnostics.Process(); + System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("Tornado2"); + + if (process.Length < 1) + { + + if (KAEngine != null) + KAEngine.Disconnect(); + + this.Invoke(new Action(delegate () + { + panelC.BackColor = Color.FromArgb(192, 0, 0); + lables.Text = "Reconnecting.."; + })); + + istornado = false; m_init = 0; + } + + else + { + if (KAEngine == null) + return; + + if (istornado == false && m_init == 1) + { + istornado = true; + } + + if (!istornado) + { + if (KAEngine.KTAPConnect(1, "127.0.0.1", 30001, 0, KAEvent) == 1) + { + LogWrite("Tornado 다시 연결"); + KAScenePlayer = KAEngine.GetScenePlayer(); + + this.Invoke(new Action(delegate () + { + panelC.BackColor = Color.FromArgb(26, 119, 0); + lables.Text = "T2 Connected"; + //KAScenePlayer.StopAll(); + })); + } + } + //추가shk + else + { + break; + } + //여기까지 + } + } + } + catch (Exception) + { + + } + + + } + + + private void MainForm_Paint(object sender, PaintEventArgs e) + { + try + { + Pen p = new Pen(Color.FromArgb(200, 200, 200)); + Graphics g = e.Graphics; + int variance = 2; + + for (int i = 0; i < this.Controls.Count; i++) + { + if (this.Controls[i].Name.Contains("panel")) + { + g.DrawRectangle(p, new Rectangle(Controls[i].Location.X - variance, Controls[i].Location.Y - variance, Controls[i].Width + variance, Controls[i].Height + variance)); + + } + } + } + catch (Exception) + { + + } + + } + + private void panel6_Paint(object sender, PaintEventArgs e) + { + try + { + Pen p = new Pen(Color.FromArgb(222, 222, 222)); + Graphics g = e.Graphics; + int variance = 1; + + for (int i = 0; i < panel6.Controls.Count; i++) + { + if (panel6.Controls[i].Name.Contains("txt")) + { + g.DrawRectangle(p, new Rectangle(panel6.Controls[i].Location.X - variance, panel6.Controls[i].Location.Y - variance, panel6.Controls[i].Width + variance, panel6.Controls[i].Height + variance)); + } + } + } + catch (Exception) + { + + } + + } + + private void MainForm_FormClosing(object sender, FormClosingEventArgs e) + { + try + { + if (DialogResult.Yes != MessageBox.Show( + "프로그램을 종료하겠습니까?", + "매일경제TV", + MessageBoxButtons.YesNo, + MessageBoxIcon.Warning, + MessageBoxDefaultButton.Button2)) + { + e.Cancel = true; + + } + else + { + //hThread.Abort(); + + if (KAScenePlayer != null) + { + KAScenePlayer.StopAll(); + + if (KAScene != null) + KAScene.Unload(); + } + LogWrite("코더 종료"); + System.Threading.Thread.Sleep(500); + System.Diagnostics.Process p = System.Diagnostics.Process.GetCurrentProcess(); + p.Kill(); + } + + } + catch (Exception) + { + + } + + } + + public void InsertRow(FpSpread FP, SheetView SV, int row, int cnt, int idx) + { + try + { + FarPoint.Win.Spread.SolidFocusIndicatorRenderer sfi = new FarPoint.Win.Spread.SolidFocusIndicatorRenderer(Color.Blue, 0); + FP.FocusRenderer = sfi; + + SV.AddRows(row - 1, cnt); + SV.SetRowHeight(row - 1, 22); + + FarPoint.Win.Spread.CellType.TextCellType TxtCell = new FarPoint.Win.Spread.CellType.TextCellType(); + FarPoint.Win.Spread.CellType.CheckBoxCellType ChkCell = new FarPoint.Win.Spread.CellType.CheckBoxCellType(); + + for (int i = 0; i <= SV.ColumnCount - 1; i++) + { + if (idx == 1) + { + if (i == 0) + { + SV.Columns[i, 0].CellType = ChkCell; + } + } + else + { + SV.Columns[i].CellType = TxtCell; + } + SV.Cells[row - 1, 0].BackColor = Color.FromArgb(255, 255, 255); + + SV.Columns[i].VerticalAlignment = CellVerticalAlignment.Center; + + if (i == 0 || i == 5) + SV.Columns[i].HorizontalAlignment = CellHorizontalAlignment.Center; + else + SV.Columns[i].HorizontalAlignment = CellHorizontalAlignment.General; + + + if (idx == 2) + SV.Columns[i].Font = new System.Drawing.Font("나눔고딕", 9.0F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + else + SV.Columns[i].Font = new System.Drawing.Font("나눔고딕", 11.0F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + + } + } + catch (Exception) + { + + } + } + + private void FpSpread2_CellDoubleClick(object sender, CellClickEventArgs e) + { + return; + } + + private void button9_Click(object sender, EventArgs e) + { + try + { + if (txtSearch.Text == "") return; + searchStock(listBox, txtSearch); + } + catch (Exception) + { + + } + + } + + + public void searchStock(ListBox Lb, TextBox Tb) + { + try + { + TableMatching(); + List addItem = new List(); + + m_db.ViewQuery(dataGridView1, "SELECT F_STOCK_WANNAME, F_STOCK_CODE FROM T_STOCK WHERE F_MKT_HALT = 'N' AND UPPER(F_STOCK_WANNAME) LIKE '%%%" + Tb.Text.ToUpper() + "%%'"); + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + addItem.Add(dataGridView1.Rows[i].Cells[0].Value.ToString()); + } + + Lb.Items.Clear(); + Lb.Items.AddRange(addItem.ToArray()); + + m_db.ViewQuery(dataGridView1, "SELECT F_STOCK_WANNAME, F_STOCK_CODE FROM T_KOSDAQ_STOCK WHERE F_MKT_HALT = 'N' AND UPPER(F_STOCK_WANNAME) LIKE '%%%" + Tb.Text.ToUpper() + "%%'"); + + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + addItem.Add(dataGridView1.Rows[i].Cells[0].Value.ToString()); + } + + Lb.Items.Clear(); + Lb.Items.AddRange(addItem.ToArray()); + + // NXT + m_db.Nxt_ViewQuery(dataGridView1, "SELECT CONCAT(a.F_STOCK_NAME,'(NXT)') F_STOCK_NAME, a.F_STOCK_CODE FROM N_STOCK a, N_ONLINE b WHERE a.F_STOP_GUBUN = 'N' AND a.f_stock_code = b.f_stock_code AND UPPER(a.F_STOCK_NAME) LIKE '%%%" + Tb.Text.ToUpper() + "%%'"); + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + addItem.Add(dataGridView1.Rows[i].Cells[0].Value.ToString()); + } + + Lb.Items.Clear(); + Lb.Items.AddRange(addItem.ToArray()); + + m_db.Nxt_ViewQuery(dataGridView1, "SELECT CONCAT(a.F_STOCK_NAME,'(NXT)') F_STOCK_NAME, a.F_STOCK_CODE FROM N_KOSDAQ_STOCK a, N_KOSDAQ_ONLINE b WHERE a.F_STOP_GUBUN = 'N' AND a.f_stock_code = b.f_stock_code AND UPPER(a.F_STOCK_NAME) LIKE '%%%" + Tb.Text.ToUpper() + "%%'"); + + + for (int i = 0; i < dataGridView1.RowCount - 1; i++) + { + addItem.Add(dataGridView1.Rows[i].Cells[0].Value.ToString()); + } + + Lb.Items.Clear(); + Lb.Items.AddRange(addItem.ToArray()); + } + catch (Exception) + { + + } + } + + public string jongmokCode(string stockName) + { + try + { + string strCode = string.Empty; + + foreach (DataRow row in mDTkospi.Rows) + { + if (row[0].ToString().Equals(stockName)) + { + strCode = row[1].ToString() + "/코스피"; + } + + } + foreach (DataRow row in mDTkosdaq.Rows) + { + if (row[0].ToString().Equals(stockName)) + { + strCode = row[1].ToString() + "/코스닥"; + } + + } + + foreach (DataRow row in mDTNxtkospi.Rows) + { + if (row[0].ToString().Equals(stockName)) + { + strCode = row[1].ToString() + "/코스피_NXT"; + } + + } + foreach (DataRow row in mDTNxtkosdaq.Rows) + { + if (row[0].ToString().Equals(stockName)) + { + strCode = row[1].ToString() + "/코스닥_NXT"; + } + + } + + return strCode; + } + catch (Exception) + { + return ""; + } + + } + + private void MainForm_KeyDown(object sender, KeyEventArgs e) + { + try + { + if (e.KeyCode == Keys.Enter) + { + //searchStock(listBox, txtSearch); + } + else if (e.KeyCode == Keys.F2) + { + //ONAirMode(); + btnback_Click(sender, e); //배경파일 선택버튼 + } + else if (e.KeyCode == Keys.F3) // 배경없음 + { + if (ckback.Checked == false) + { + ckback.Checked = true; + } + else + { + ckback.Checked = false; + } + ckback_CheckedChanged(sender, e); //배경파일 선택버튼 + } + else if (e.KeyCode == Keys.F5) + { + //btnTake_Click(null, null); + } + else if (e.KeyCode == Keys.F8) + { + //Next_Scene(0); + btnTake_Click(null, null); + } + else if (e.KeyCode == Keys.Escape) + { + btnTakeout_Click(null, null); + } + + else if (e.KeyCode == Keys.Delete) + { + btndelete_Click(null, null); + } + + + if (e.KeyData == (Keys.Alt | Keys.F4)) e.Handled = true; + + if (e.KeyCode == Keys.ShiftKey) + { + e.Handled = true; + + m_shift = true; + + } + + if (e.KeyCode == Keys.ControlKey) + { + //e.Handled = true; + + m_control = true; + + } + + if (e.KeyData == (Keys.Control | Keys.Delete)) + { + //e.Handled = true; + } + } + catch (Exception) + { + + } + } + + private void listBox_DrawItem(object sender, DrawItemEventArgs e) + { + try + { + e.DrawBackground(); + Graphics g = e.Graphics; + Brush brush = ((e.State & DrawItemState.Selected) == DrawItemState.Selected) ? + Brushes.DimGray : new SolidBrush(e.BackColor); + g.FillRectangle(brush, e.Bounds); + e.Graphics.DrawString(listBox.Items[e.Index].ToString(), e.Font, + new SolidBrush(e.ForeColor), e.Bounds, StringFormat.GenericDefault); + e.DrawFocusRectangle(); + } + catch (Exception) + { + + } + } + + public int FadeInSec + { + get { return ComboDi.SelectedIndex; } + } + + public int FadeOutSec + { + get { return ComboDi.SelectedIndex; } + } + + int[] s_buf = new int[100]; + int m_oldrow = 0; + public int m_newrow = 0; + bool m_shift = false; + + int[] bufdel = new int[100]; + int m_delcnt = 0; int m_delcnts = 0; + public bool m_tree = false; + + int m_time = 10; + + private void PlayList_CellClick(object sender, CellClickEventArgs e) + { + try + { + //m_header = false; + //timer1.Stop(); + + string sdata = string.Empty; + int tmp = 0; + int a = 0; int b = 0; int c = 0; + + m_rowidx = e.Row; + m_rcolor = 0; + + if (e.Column != 0) + { + PlayList.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + m_tree = true; + + if (m_control) + { + for (int j = 0; j <= 6; j++) + { + PlayList.ActiveSheet.Cells[e.Row, j].BackColor = Color.FromArgb(220, 220, 220); + + if (m_newrow != -1) + PlayList.ActiveSheet.Cells[m_newrow, j].BackColor = Color.FromArgb(220, 220, 220); + } + + m_control = false; + bufdel[m_delcnt] = e.Row; + m_delcnt += 1; + } + else + { + for (int i = 0; i < PlayList.ActiveSheet.RowCount; i++) + { + for (int j = 0; j <= 6; j++) + { + PlayList.ActiveSheet.Cells[i, j].BackColor = Color.FromArgb(255, 255, 255); + + } + } + m_delcnt = 0; m_delcnts = 0; + + if (m_TakeIn) + { + + Cell_Color(PlayList.ActiveSheet, e.Row, 0); + Cell_Color1(PlayList.ActiveSheet, m_crow, 1, m_crow, 1); + } + else + { + Cell_Color(PlayList.ActiveSheet, e.Row, 0); + } + + + if (!e.RowHeader) + { + + if (m_newrow != e.Row) + { + m_oldrow = m_newrow; + m_newrow = e.Row; + } + } + + if (m_shift) + { + if (m_oldrow > m_newrow) + { + a = m_newrow; b = m_oldrow + 1; + c = 0; + } + else + { + a = m_oldrow; b = m_newrow + 1; + c = 1; + } + for (int i = a; i < b; i++) + { + for (int j = 0; j <= 6; j++) + { + PlayList.ActiveSheet.Cells[i, j].BackColor = Color.FromArgb(220, 220, 220); + } + + bufdel[m_delcnt] = i; + m_delcnt += 1; + //if (c == 0) + //{ + // c = 1; + //} + //else + //{ + // m_delcnt += 1; + // bufdel[m_delcnt] = i; + //} + + } + //m_shift = false; + //return; + } + + else + { + bufdel[m_delcnt] = e.Row; + m_delcnt += 1; + } + + + + + } + } + else + { + if (m_TakeIn) + { + //MessageBox.Show("송출 중일때는 이동이 불가능합니다."); + return; + } + } + + + if (!e.RowHeader) + { + if (e.Column == 0) + { + //m_header = true; + PlayList.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.Normal; + + //Thread.Sleep(1000); + //Cell_Color1(PlayList.ActiveSheet, m_rowidx, 1, m_newrow, 0); + if (m_rowcolor == 1) + //timer2.Start(); + return; + } + if (!m_TakeIn) + { + btnTake.BackColor = Color.WhiteSmoke; + btnNext.BackColor = Color.WhiteSmoke; + } + } + + + //PlayList.ShowActiveCell(FarPoint.Win.Spread.VerticalPosition.Nearest, FarPoint.Win.Spread.HorizontalPosition.Nearest); + } + catch (Exception) + { + + } + } + + public void setObjectStockChange(KAObject KAObject, string value, int cnt) + { + try + { + string v = string.Empty; + if (cnt == 0) + v = ""; + else if (cnt == 1) + v = "1"; + else if (cnt == 2) + v = "2"; + else if (cnt == 3) + v = ""; + + KAObject = KAScene.GetObject("upup" + v); + KAObject.SetVisible(0); + KAObject = KAScene.GetObject("up" + v); + KAObject.SetVisible(0); + KAObject = KAScene.GetObject("flat" + v); + KAObject.SetVisible(0); + KAObject = KAScene.GetObject("down" + v); + KAObject.SetVisible(0); + KAObject = KAScene.GetObject("downdown" + v); + KAObject.SetVisible(0); + + if (value.Equals("상한")) + { + KAObject = KAScene.GetObject("upup" + v); + KAObject.SetVisible(1); + + KAScene.GetObject("bg1_" + v).SetVisible(1); + KAScene.GetObject("changePrice1_" + v).SetVisible(1); + KAScene.GetObject("wonText1_" + v).SetVisible(1); + KAScene.GetObject("rate1_" + v).SetVisible(1); + KAScene.GetObject("percent1_" + v).SetVisible(1); + + KAScene.GetObject("bg2_" + v).SetVisible(0); + KAScene.GetObject("changePrice2_" + v).SetVisible(0); + KAScene.GetObject("wonText2_" + v).SetVisible(0); + KAScene.GetObject("rate2_" + v).SetVisible(0); + KAScene.GetObject("percent2_" + v).SetVisible(0); + + KAScene.GetObject("bg3_" + v).SetVisible(0); + KAScene.GetObject("changePrice3_" + v).SetVisible(0); + KAScene.GetObject("wonText3_" + v).SetVisible(0); + KAScene.GetObject("rate3_" + v).SetVisible(0); + KAScene.GetObject("percent3_" + v).SetVisible(0); + + + KAScene.GetObject("pattern" + v).SetValue(T2S_FOLDER_PATH + "Images\\그림_빨강.png"); + + if (cnt != 0) + { + KAScene.GetObject("unit1_" + v).SetVisible(1); + KAScene.GetObject("unit2_" + v).SetVisible(0); + KAScene.GetObject("unit3_" + v).SetVisible(0); + + } + } + else if (value.Equals("상승") || value.Equals("+")) + { + KAObject = KAScene.GetObject("up" + v); + KAObject.SetVisible(1); + + KAScene.GetObject("bg1_" + v).SetVisible(1); + KAScene.GetObject("changePrice1_" + v).SetVisible(1); + KAScene.GetObject("wonText1_" + v).SetVisible(1); + KAScene.GetObject("rate1_" + v).SetVisible(1); + KAScene.GetObject("percent1_" + v).SetVisible(1); + + KAScene.GetObject("bg2_" + v).SetVisible(0); + KAScene.GetObject("changePrice2_" + v).SetVisible(0); + KAScene.GetObject("wonText2_" + v).SetVisible(0); + KAScene.GetObject("rate2_" + v).SetVisible(0); + KAScene.GetObject("percent2_" + v).SetVisible(0); + + KAScene.GetObject("bg3_" + v).SetVisible(0); + KAScene.GetObject("changePrice3_" + v).SetVisible(0); + KAScene.GetObject("wonText3_" + v).SetVisible(0); + KAScene.GetObject("rate3_" + v).SetVisible(0); + KAScene.GetObject("percent3_" + v).SetVisible(0); + + if (cnt != 0) + { + KAScene.GetObject("unit1_" + v).SetVisible(1); + KAScene.GetObject("unit2_" + v).SetVisible(0); + KAScene.GetObject("unit3_" + v).SetVisible(0); + } + + if (cnt == 3) + { + KAScene.GetObject("price1_" + v).SetVisible(1); + KAScene.GetObject("price2_" + v).SetVisible(0); + KAScene.GetObject("price3_" + v).SetVisible(0); + + } + KAScene.GetObject("pattern" + v).SetValue(T2S_FOLDER_PATH + "Images\\그림_빨강.png"); + + } + else if (value.Equals("보합") || value.Equals("") || value.Equals(" ")) + { + KAObject = KAScene.GetObject("flat" + v); + KAObject.SetVisible(1); + + KAScene.GetObject("bg1_" + v).SetVisible(0); + KAScene.GetObject("changePrice1_" + v).SetVisible(0); + KAScene.GetObject("wonText1_" + v).SetVisible(0); + KAScene.GetObject("rate1_" + v).SetVisible(0); + KAScene.GetObject("percent1_" + v).SetVisible(0); + + KAScene.GetObject("bg2_" + v).SetVisible(1); + KAScene.GetObject("changePrice2_" + v).SetVisible(1); + KAScene.GetObject("wonText2_" + v).SetVisible(1); + KAScene.GetObject("rate2_" + v).SetVisible(1); + KAScene.GetObject("percent2_" + v).SetVisible(1); + + KAScene.GetObject("bg3_" + v).SetVisible(0); + KAScene.GetObject("changePrice3_" + v).SetVisible(0); + KAScene.GetObject("wonText3_" + v).SetVisible(0); + KAScene.GetObject("rate3_" + v).SetVisible(0); + KAScene.GetObject("percent3_" + v).SetVisible(0); + + if (cnt != 0) + { + KAScene.GetObject("unit1_" + v).SetVisible(0); + KAScene.GetObject("unit2_" + v).SetVisible(1); + KAScene.GetObject("unit3_" + v).SetVisible(0); + } + + if (cnt == 3) + { + KAScene.GetObject("price1_" + v).SetVisible(0); + KAScene.GetObject("price2_" + v).SetVisible(1); + KAScene.GetObject("price3_" + v).SetVisible(0); + + } + KAScene.GetObject("pattern" + v).SetValue(T2S_FOLDER_PATH + "Images\\그림_검정.png"); + } + else if (value.Equals("하락") || value.Equals("-")) + { + KAObject = KAScene.GetObject("down" + v); + KAObject.SetVisible(1); + + KAScene.GetObject("bg1_" + v).SetVisible(0); + KAScene.GetObject("changePrice1_" + v).SetVisible(0); + KAScene.GetObject("wonText1_" + v).SetVisible(0); + KAScene.GetObject("rate1_" + v).SetVisible(0); + KAScene.GetObject("percent1_" + v).SetVisible(0); + + KAScene.GetObject("bg2_" + v).SetVisible(0); + KAScene.GetObject("changePrice2_" + v).SetVisible(0); + KAScene.GetObject("wonText2_" + v).SetVisible(0); + KAScene.GetObject("rate2_" + v).SetVisible(0); + KAScene.GetObject("percent2_" + v).SetVisible(0); + + KAScene.GetObject("bg3_" + v).SetVisible(1); + KAScene.GetObject("changePrice3_" + v).SetVisible(1); + KAScene.GetObject("wonText3_" + v).SetVisible(1); + KAScene.GetObject("rate3_" + v).SetVisible(1); + KAScene.GetObject("percent3_" + v).SetVisible(1); + + if (cnt != 0) + { + KAScene.GetObject("unit1_" + v).SetVisible(0); + KAScene.GetObject("unit2_" + v).SetVisible(0); + KAScene.GetObject("unit3_" + v).SetVisible(1); + } + + if (cnt == 3) + { + KAScene.GetObject("price1_" + v).SetVisible(0); + KAScene.GetObject("price2_" + v).SetVisible(0); + KAScene.GetObject("price3_" + v).SetVisible(1); + + } + KAScene.GetObject("pattern" + v).SetValue(T2S_FOLDER_PATH + "Images\\그림_파랑.png"); + } + else if (value.Equals("하한")) + { + KAObject = KAScene.GetObject("downdown" + v); + KAObject.SetVisible(1); + + KAScene.GetObject("bg1_" + v).SetVisible(0); + KAScene.GetObject("changePrice1_" + v).SetVisible(0); + KAScene.GetObject("wonText1_" + v).SetVisible(0); + KAScene.GetObject("rate1_" + v).SetVisible(0); + KAScene.GetObject("percent1_" + v).SetVisible(0); + + KAScene.GetObject("bg2_" + v).SetVisible(0); + KAScene.GetObject("changePrice2_" + v).SetVisible(0); + KAScene.GetObject("wonText2_" + v).SetVisible(0); + KAScene.GetObject("rate2_" + v).SetVisible(0); + KAScene.GetObject("percent2_" + v).SetVisible(0); + + KAScene.GetObject("bg3_" + v).SetVisible(1); + KAScene.GetObject("changePrice3_" + v).SetVisible(1); + KAScene.GetObject("wonText3_" + v).SetVisible(1); + KAScene.GetObject("rate3_" + v).SetVisible(1); + KAScene.GetObject("percent3_" + v).SetVisible(1); + + if (cnt != 0) + { + KAScene.GetObject("unit1_" + v).SetVisible(0); + KAScene.GetObject("unit2_" + v).SetVisible(0); + KAScene.GetObject("unit3_" + v).SetVisible(1); + } + KAScene.GetObject("pattern" + v).SetValue(T2S_FOLDER_PATH + "Images\\그림_파랑.png"); + } + + + } + catch (Exception) + { + + } + + } + public void GetThumnail(int width, int height, string path, int frame, int layoutIndex) + { + + try + { + KAScene.QueryVariables(); + KAEngine.EndTransaction(); + KAScenePlayer.Prepare(layoutIndex, KAScene); + KAScene.SaveImageFile(path, width, height, frame); + } + catch (Exception) + { + + } + } + + private void btnup_Click(object sender, EventArgs e) + { + if (m_TakeIn) + { + MessageBox.Show("송출 중일때는 이동이 불가능합니다."); + return; + } + Spd_UpDown(PlayList, PlayList.ActiveSheet, 0, 0); + } + + public void Cell_Color(SheetView Sv, int row, int idx) + { + try + { + Sv.SelectionStyle = FarPoint.Win.Spread.SelectionStyles.SelectionColors; + Sv.SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.Range; + Sv.SelectionUnit = FarPoint.Win.Spread.Model.SelectionUnit.Cell; + + if (Sv.RowCount != 0) + { + for (int i = 1; i <= 6; i++) + { + Sv.AddSelection(row, 0, 1, i); + } + + } + //Sv.SelectionBackColor = Color.FromArgb(255, 255, 255); + for (int i = 0; i < PlayList.ActiveSheet.RowCount; i++) + { + for (int j = 0; j <= 6; j++) + { + PlayList.ActiveSheet.Cells[i, j].BackColor = Color.FromArgb(255, 255, 255); + + } + } + if (idx == 0) + Sv.SelectionBackColor = Color.FromArgb(220, 220, 220); + else + Sv.SelectionBackColor = Color.Blue; + + Sv.SelectionForeColor = Color.Black; + } + catch (Exception) + { + + } + + + } + public void Cell_Color1(SheetView Sv, int row, int idx, int orow, int para) + { + try + { + + Sv.SelectionStyle = FarPoint.Win.Spread.SelectionStyles.SelectionColors; + Sv.SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.Range; + Sv.SelectionUnit = FarPoint.Win.Spread.Model.SelectionUnit.Cell; + + if (Sv.RowCount != 0) + { + for (int i = 1; i <= 6; i++) + { + Sv.AddSelection(row, 0, 1, i); + } + + } + for (int i = 0; i < PlayList.ActiveSheet.RowCount; i++) + { + for (int j = 0; j <= 6; j++) + { + PlayList.ActiveSheet.Cells[i, j].BackColor = Color.FromArgb(255, 255, 255); + + } + } + if (idx == 0) + { + //for (int i = 0; i <= 6; i++) + //{ + // Sv.Cells[orow, i].BackColor = Color.FromArgb(255, 255, 255); + //} + Sv.SelectionBackColor = Color.FromArgb(255, 255, 255); + } + + else + { + if (para == 0) + { + for (int i = 0; i <= 6; i++) + { + Sv.Cells[orow, i].BackColor = Color.FromArgb(220, 220, 220); + } + Sv.SelectionBackColor = Color.FromArgb(253, 200, 210); + + } + else + { + for (int i = 0; i <= 6; i++) + { + Sv.Cells[orow, i].BackColor = Color.FromArgb(253, 200, 210); + } + Sv.SelectionBackColor = Color.FromArgb(220, 220, 220); + } + } + + Sv.SelectionForeColor = Color.Black; + + } + catch (Exception) + { + + } + + } + + + public void Spd_UpDown(FpSpread Fp, SheetView Sv, int idx, int index) + { + try + { + timer1.Stop(); + string[] bufd = new string[Sv.ColumnCount]; + + if (idx == 0) + { + if (Sv.ActiveRowIndex == 0) + { + return; + } + } + else + { + if (Sv.ActiveRowIndex == Sv.RowCount - 1) + { + return; + } + } + + + if (idx == 0) + Sv.SetActiveCell(Sv.ActiveRowIndex - 1, 3); + else + Sv.SetActiveCell(Sv.ActiveRowIndex + 1, 3); + + int row = Sv.ActiveRowIndex; + + Cell_Color(Sv, row, 0); + + Fp.ShowActiveCell(FarPoint.Win.Spread.VerticalPosition.Nearest, FarPoint.Win.Spread.HorizontalPosition.Center); + + for (int i = index; i < Sv.ColumnCount; i++) + { + bufd[i] = Sv.GetText(row, i); + + if (idx == 0) + { + Sv.Cells[row, i].Value = Sv.GetText(Sv.ActiveRowIndex + 1, i); + Sv.Cells[Sv.ActiveRowIndex + 1, i].Value = bufd[i]; + } + else + { + Sv.Cells[row, i].Value = Sv.GetText(Sv.ActiveRowIndex - 1, i); + Sv.Cells[Sv.ActiveRowIndex - 1, i].Value = bufd[i]; + } + + } + } + catch (Exception) + { + + + } + + } + + private void btndown_Click(object sender, EventArgs e) + { + if (m_TakeIn) + { + MessageBox.Show("송출 중일때는 이동이 불가능합니다."); + return; + } + Spd_UpDown(PlayList, PlayList.ActiveSheet, 1, 0); + } + + + private void btndelete_Click(object sender, EventArgs e) + { + try + { + int cnt = 0; + bool tmp = false; + int cntt = 0; + + if (PlayList.ActiveSheet.ActiveRowIndex + 1 > 0) + { + for (int k = 0; k < m_delcnt; k++) + { + if (bufdel[k] < m_crow) + { + cntt = cntt + 1; + tmp = true; + } + } + } + + Array.Sort(bufdel); + + + + //if ((bufdel[100 - m_delcnt] - cnt) < m_crow) + //{ + // tmp = true; + //} + //else + //{ + // tmp = false; + //} + + if (tmp) + m_crow = m_crow - cntt; + //m_crow = m_crow - m_delcnt; + + + + for (int i = 100 - m_delcnt; cnt < m_delcnt; i++) + { + + PlayList.ActiveSheet.RemoveRows(bufdel[i] - cnt, 1); + cnt += 1; + } + + + for (int i = 0; i < 100; i++) + { + bufdel[i] = 0; + } + m_delcnt = 0; m_delcnts = 0; + + //PlayList.ActiveSheet.Cells[1, 1].BackColor = Color.LimeGreen; + //PlayList.ActiveSheet.Cells[1, 1].ForeColor = Color.Yellow; + + //PlayList.ActiveSheet.Cells[2, 1].Locked = true; + + PlayList.ActiveSheet.Protect = true; + + PlayList.ActiveSheet.LockBackColor = Color.Brown; + PlayList.ActiveSheet.LockForeColor = Color.Orange; + + PlayList.ActiveSheet.SelectionStyle = FarPoint.Win.Spread.SelectionStyles.SelectionColors; + PlayList.ActiveSheet.SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.Range; + PlayList.ActiveSheet.SelectionUnit = FarPoint.Win.Spread.Model.SelectionUnit.Cell; + + PlayList.ActiveSheet.SelectionBackColor = Color.White; + PlayList.ActiveSheet.SelectionForeColor = Color.Black; + + + m_rcolor = 1; + + + } + catch (Exception) + { + + } + } + + private void btntdelete_Click(object sender, EventArgs e) + { + try + { + if (m_TakeIn) + { + MessageBox.Show("송출 중일때는 삭제가 불가능합니다."); + } + else + { + if (MessageBox.Show("송출 리스트를 모두 삭제하겠습니까?", "MmoneyCoder", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + m_newrow = -1; m_rowidx = -1; + PlayList.ActiveSheet.ClearRange(0, 0, PlayList.ActiveSheet.RowCount, PlayList.ActiveSheet.ColumnCount, true); + if (PlayList.ActiveSheet.RowCount != 0) + PlayList.ActiveSheet.RemoveRows(0, PlayList.ActiveSheet.RowCount); + + } + } + + } + catch (Exception) + { + + } + + } + + private void button5_Click(object sender, EventArgs e) + { + try + { + PList fm = new PList(this, 0); + fm.Owner = this; + fm.ShowDialog(); + + + //파일저장 + //if (m_PlayLsit != "") + //{ + // if (PlayList.ActiveSheet.RowCount != 0) + // WriteListFile(m_Path + m_PlayLsit + ".csv", PlayList.ActiveSheet, ","); + //} + } + catch (Exception) + { + + } + + } + + private void btnload_Click(object sender, EventArgs e) + { + try + { + PList fm = new PList(this, 1); + fm.Owner = this; + fm.ShowDialog(); + m_crow = 0; + m_rowidx = 0; + timer2.Stop(); + timer1.Stop(); + m_TakeIn = false; + btnTake.BackColor = Color.WhiteSmoke; + btnNext.BackColor = Color.WhiteSmoke; + //btnTakeout_Click(null, null); + //if (m_PlayLsit != "") + //{ + // //플레이리스트 내용 가져오기 + // PlayList.ActiveSheet.ClearRange(0, 0, PlayList.ActiveSheet.RowCount, PlayList.ActiveSheet.ColumnCount, true); + + // if (PlayList.ActiveSheet.RowCount != 0) + // PlayList.ActiveSheet.RemoveRows(0, PlayList.ActiveSheet.RowCount); + + // ReadListFile(m_Path + m_PlayLsit + ".csv", ',', PlayList.ActiveSheet, m_Path, PlayList, 1); + //} + } + catch (Exception) + { + + } + + } + + public void ReadListFile(string path, char ch, SheetView spdPara, string dpath, FpSpread Fp, int idx) + { + //idx - 0 열의개수 처음부터 + //idx - 누적된 열의개수 + try + { + string str = string.Empty; + int row = 0; + string[,] buf = new string[500, 50]; + + StreamReader sr = new StreamReader(path, Encoding.Default); + if (sr != null) + { + while (sr.Peek() > -1) + { + str = sr.ReadLine(); str = str.Trim(); + + string[] Result = str.Split(ch); + for (int i = 0; i < Result.Length; i++) + { + buf[row, i] = Result[i]; + } + row = row + 1; + } + sr.Close(); + } + + int[] tag = { 0, 1 }; + for (int i = 0; i < row; i++) + { + //InsertRow(Fp, spdPara, spdPara.RowCount + 1, 1); + InsertRow(Fp, spdPara, spdPara.RowCount + 1, 1, idx); + + for (int j = 0; j < spdPara.ColumnCount; j++) + { + spdPara.SetText(i, j, buf[i, j]); + + if (j == 0) + { + + } + } + } + } + catch (Exception) + { + + } + } + + public string m_rowText = string.Empty; + + public void WriteListFile(string path, SheetView spdPara, string ch) + { + try + { + string strdata = string.Empty; + + FileInfo fileInfoM = new FileInfo(path); + fileInfoM.Delete(); + + for (int i = 1; i <= spdPara.GetLastNonEmptyRow(FarPoint.Win.Spread.NonEmptyItemFlag.Data) + 1; i++) + { + StreamWriter sw = new StreamWriter(path, true, Encoding.Default); + + for (int j = 0; j < spdPara.ColumnCount; j++) + { + strdata += spdPara.GetText(i - 1, j) + ch; + } + sw.WriteLine(strdata); + sw.Close(); + strdata = ""; + } + } + catch (Exception) + { + + } + } + + //private void fileSystemWatcher1_Changed(object sender, FileSystemEventArgs e) + //{ + // try + // { + // if (picBoxPreview.Image != null) + // { + // picBoxPreview.Image.Dispose(); + // } + + // //System.Threading.Thread.Sleep(100); + // picBoxPreview.Image = Image.FromFile(PREVIEW_FILE_PATH); + // } + // catch (Exception) + // { + + // } + + //} + + int m_init2 = 0; + int m_srow = 0; + private void btnTake_Click(object sender, EventArgs e) + { + // back_ComboBox.Enabled = false; // back 선택 할수 없게 20230913 + lblbackfile.Enabled = false; // back 선택 할수 없게 20231201 + btnback.Enabled = false; + + + try + { + timer1.Stop(); + + m_rcolor = 0; + //m_crow = 0; + PlayList.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + if (PlayList.ActiveSheet.Rows.Count == 1) + { + m_rowidx = 0; m_crow = m_rowidx; + + Cell_Color(PlayList.ActiveSheet, 0, 0); + + } + + if (m_rowidx == -1) + { + m_rowidx = 0; + } + //else + //{ + // m_rowidx = PlayList.ActiveSheet.ActiveRowIndex; + //} + + + m_Super = false; m_update = 0; m_crow = m_rowidx; + + ONAirMode(); + if (KAScenePlayer == null) + { + MessageBox.Show("Tornado와 송출 연결이 되지 않았습니다."); + return; + } + + if (!m_chkdata) return; + + if (m_ShowIndex == 1) + { + btnTake.BackColor = Color.Cornsilk; + btnNext.BackColor = Color.WhiteSmoke; + + if (m_init2 == 0) + { + m_init2 = 1; + System.Threading.Thread.Sleep(500); + + } + KAScenePlayer.Play(10); + + m_srow = m_rowidx; + m_ShowIndex = 0; + txt1.Text = txt2.Text; m_TakeIn = true; + m_rowcolor = 0; + + + string code = PlayList.ActiveSheet.GetText(m_rowidx, 1).Trim(); + string jongmok = PlayList.ActiveSheet.GetText(m_rowidx, 2); + string forCutInfo = PlayList.ActiveSheet.GetText(m_rowidx, 3).Trim(); + string sub = PlayList.ActiveSheet.GetText(m_rowidx, 4).Trim(); + m_rowText = code + jongmok + forCutInfo + sub; + + //if (PlayList.ActiveSheet.GetText(m_rowidx, 3) != "5단 표그래프") + //{ + + //} + + PlayList.ActiveSheet.SetActiveCell(m_rowidx, 1); + Cell_Color(PlayList.ActiveSheet, m_rowidx, 0); + PlayList.ShowActiveCell(FarPoint.Win.Spread.VerticalPosition.Nearest, FarPoint.Win.Spread.HorizontalPosition.Center); + + timer1.Interval = (m_time) * 1000; + timer1.Start(); + } + } + catch (Exception) + { + + } + } + + private void btnPrepare_Click(object sender, EventArgs e) + { + try + { + if (KAScenePlayer == null) + { + MessageBox.Show("Tornado와 송출 연결이 되지 않았습니다."); + return; + } + System.Threading.Thread.Sleep(100); + ONAirMode(); + } + catch (Exception) + { + + } + } + + public void ONAirMode() + { + try + { + if (!m_Super) + { + + //btnPrepare.ForeColor = Color.FromArgb(255, 255, 255); + //btnPrepare.BackColor = Color.FromArgb(26, 119, 0); + m_Super = true; + + if (PlayList.ActiveSheet.ActiveRowIndex != -1) + { + if (m_init == 0) + { + System.Threading.Thread.Sleep(100); + m_init = 1; + } + + if (PlayList.ActiveSheet.GetText(m_rowidx, 0) == "True") + { + //Cell_Color(PlayList.ActiveSheet, m_rowidx, 0); + m_crow = m_rowidx; + Show_PlayList(m_rowidx, 0, 0); + } + + else + { + for (int i = m_rowidx + 1; i < PlayList.ActiveSheet.RowCount; i++) + { + if (PlayList.ActiveSheet.GetText(i, 0) == "True") + { + //Cell_Color(PlayList.ActiveSheet, m_rowidx, 0); + Show_PlayList(i, 0, 0); + m_rowidx = i; + m_crow = m_rowidx; + //m_crow = i; + Cell_Color1(PlayList.ActiveSheet, m_rowidx, 1, m_newrow, 0); + break; + } + } + } + + } + } + else + { + //timer2.Stop(); + btnTakeout_Click(null, null); + m_Super = false; + btnPrepare.ForeColor = Color.FromArgb(70, 73, 88); + btnPrepare.BackColor = Color.FromArgb(240, 240, 248); + } + } + catch (Exception) + { + + } + + } + + private void btnTakeout_Click(object sender, EventArgs e) + { + // back_ComboBox.Enabled = true; // back 체크 할수 있게 20230913 + lblbackfile.Enabled = true; // 배경 파일 변경가능하게 20231201 + btnback.Enabled = true; // 배경 파일 변경가능하게 20231201 + + try + { + if (KAScenePlayer == null) + return; + + btnTake.BackColor = Color.WhiteSmoke; + btnNext.BackColor = Color.WhiteSmoke; + + if (m_rowcolor == 1) + m_rowidx = m_newrow; + + timer1.Stop(); m_cutindex = 0; m_ShowIndex = 0; m_rowcolor = 0; m_update = 0; + Cell_Color(PlayList.ActiveSheet, m_rowidx, 0); + // KAScenePlayer.CutOut(10); 원본 + KAScenePlayer.StopAll(); //20240910 화면에 나오는 모든걸 없애기 위해 + + m_TakeIn = false; + + + btnTake.ForeColor = Color.Black; + btnNext.ForeColor = Color.Black; + txt1.Text = ""; txt2.Text = ""; + + + } + catch (Exception) + { + + } + + } + + int m_rowcolor = 0; + private void btnNext_Click(object sender, EventArgs e) + { + try + { + if (m_TakeIn) + { + + timer1.Stop(); + m_update = 0; + PlayList.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect; + btnTake.BackColor = Color.WhiteSmoke; + btnNext.BackColor = Color.Cornsilk; + Next_Scene(0); + m_rowcolor = 1; + + + if (m_chkdata) + { + + if (PlayList.ActiveSheet.RowCount > m_rowidx) + { + PlayList.ActiveSheet.SetActiveCell(m_crow, 1); + Cell_Color1(PlayList.ActiveSheet, m_crow, 1, m_rowidx, 0); + + if (m_rcolor == 1) + { + PlayList.ActiveSheet.Cells[m_rowidx, 0].BackColor = Color.FromArgb(255, 255, 255); + PlayList.ActiveSheet.Cells[m_rowidx, 1].BackColor = Color.FromArgb(255, 255, 255); + PlayList.ActiveSheet.Cells[m_rowidx, 2].BackColor = Color.FromArgb(255, 255, 255); + PlayList.ActiveSheet.Cells[m_rowidx, 3].BackColor = Color.FromArgb(255, 255, 255); + PlayList.ActiveSheet.Cells[m_rowidx, 4].BackColor = Color.FromArgb(255, 255, 255); + PlayList.ActiveSheet.Cells[m_rowidx, 5].BackColor = Color.FromArgb(255, 255, 255); + } + } + else + { + PlayList.ActiveSheet.SetActiveCell(m_crow, 1); + Cell_Color1(PlayList.ActiveSheet, m_crow, 1, m_crow, 0); + + } + PlayList.ShowActiveCell(FarPoint.Win.Spread.VerticalPosition.Nearest, FarPoint.Win.Spread.HorizontalPosition.Center); + } + + } + + } + catch (Exception) + { + + } + + } + + int m_ncnt = 0; + + + public void Next_Scene(int idx) + { + try + { + if (m_Super) + { + if (KAScenePlayer == null) + { + MessageBox.Show("Tornado와 송출 연결이 되지 않았습니다."); + return; + } + + + string sdata = string.Empty; + + + if (PlayList.ActiveSheet.GetText(m_crow, 3) == "5단 표그래프") + { + dataGridView1.Columns.Clear(); + dataGridView2.Columns.Clear(); + dataGridView3.Columns.Clear(); + //m_cutindex = 1; + sdata = PlayList.ActiveSheet.GetText(m_crow, 5); + + if (sdata.Substring(0, sdata.IndexOf("/")) == sdata.Substring(sdata.IndexOf("/") + 1, sdata.Length - sdata.IndexOf("/") - 1)) + { + //마지막장 + for (int i = m_crow + 1; i < PlayList.ActiveSheet.RowCount; i++) + { + if (PlayList.ActiveSheet.GetText(i, 0) == "True") + { + m_crow = i; + Show_PlayList(i, 0, 1); + //m_rowidx = i; + //m_crow = m_rowidx; + + //m_rrow = m_rowidx; + break; + } + } + } + else + { + if (idx == 0) + { + m_ncnt = Convert.ToInt32(sdata.Substring(0, sdata.IndexOf("/"))) + 1; + PlayList.ActiveSheet.SetText(m_crow, 5, m_ncnt.ToString() + sdata.Substring(sdata.IndexOf("/"), sdata.Length - sdata.IndexOf("/"))); + } + + + //next + string code = PlayList.ActiveSheet.GetText(m_crow, 1); + string jmok = PlayList.ActiveSheet.GetText(m_crow, 2); + string sub = PlayList.ActiveSheet.GetText(m_crow, 4); + + if (code.Contains("전문가")) + { + sub = PlayList.ActiveSheet.GetText(m_crow, 1).Trim(); + } + + if (idx == 0) + { + eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE; + // eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_BLINK; + KAScene = KAEngine.LoadScene(T2S_FOLDER_PATH + "5074.t2s", "5074"); + KAScene.SetSceneEffectType(10, etype, FadeInSec); + } + else + { + KAScene = KAScenePlayer.GetPlayingScene(10); + } + KAEngine.BeginTransaction(); + + + s5074 scene = new s5074(this, code, jmok, sub, m_ncnt - 1); //5단 표그래프 + + KAScene.QueryVariables(); + KAEngine.EndTransaction(); + + KAScenePlayer.Prepare(10, KAScene); + m_ShowIndex = 1; + + if (sub == "") + sub = jmok + " 업종"; + + txt2.Text = "5단 표그래프 " + sub + " " + PlayList.ActiveSheet.GetText(m_crow, 5); + } + + + if (m_ShowIndex == 1) + { + if (m_TakeIn) + { + KAScenePlayer.Play(10); + txt1.Text = txt2.Text; + + } + } + + } + //========= + else if (PlayList.ActiveSheet.GetText(m_crow, 3) == "6종목 현재가") + { + dataGridView1.Columns.Clear(); + dataGridView2.Columns.Clear(); + dataGridView3.Columns.Clear(); + //m_cutindex = 1; + sdata = PlayList.ActiveSheet.GetText(m_crow, 5); + + if (sdata.Substring(0, sdata.IndexOf("/")) == sdata.Substring(sdata.IndexOf("/") + 1, sdata.Length - sdata.IndexOf("/") - 1)) + { + //마지막장 + for (int i = m_crow + 1; i < PlayList.ActiveSheet.RowCount; i++) + { + if (PlayList.ActiveSheet.GetText(i, 0) == "True") + { + m_crow = i; + Show_PlayList(i, 0, 1); + //m_rowidx = i; + //m_crow = m_rowidx; + + //m_rrow = m_rowidx; + break; + } + } + } + else + { + if (idx == 0) + { + m_ncnt = Convert.ToInt32(sdata.Substring(0, sdata.IndexOf("/"))) + 1; + PlayList.ActiveSheet.SetText(m_crow, 5, m_ncnt.ToString() + sdata.Substring(sdata.IndexOf("/"), sdata.Length - sdata.IndexOf("/"))); + } + + //next + string code = PlayList.ActiveSheet.GetText(m_crow, 1); + string jmok = PlayList.ActiveSheet.GetText(m_crow, 2); + string sub = PlayList.ActiveSheet.GetText(m_crow, 4); + + if (code.Contains("전문가")) + { + sub = PlayList.ActiveSheet.GetText(m_crow, 1).Trim(); + } + + if (idx == 0) + { + eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE; + // eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_BLINK; + KAScene = KAEngine.LoadScene(T2S_FOLDER_PATH + "5077.t2s", "5077"); + KAScene.SetSceneEffectType(10, etype, FadeInSec); + } + else + { + KAScene = KAScenePlayer.GetPlayingScene(10); + } + KAEngine.BeginTransaction(); + + + s5077 scene = new s5077(this, code, jmok, sub, m_ncnt - 1); //6종목 현재가 + + KAScene.QueryVariables(); + KAEngine.EndTransaction(); + + KAScenePlayer.Prepare(10, KAScene); + m_ShowIndex = 1; + + if (sub == "") + sub = jmok + " 업종"; + + txt2.Text = "6종목 현재가 " + sub + " " + PlayList.ActiveSheet.GetText(m_crow, 5); + } + + + if (m_ShowIndex == 1) + { + if (m_TakeIn) + { + KAScenePlayer.Play(10); + txt1.Text = txt2.Text; + + } + } + } + else if (PlayList.ActiveSheet.GetText(m_crow, 3) == "12종목 현재가") + { + dataGridView1.Columns.Clear(); + dataGridView2.Columns.Clear(); + dataGridView3.Columns.Clear(); + //m_cutindex = 1; + sdata = PlayList.ActiveSheet.GetText(m_crow, 5); + + if (sdata.Substring(0, sdata.IndexOf("/")) == sdata.Substring(sdata.IndexOf("/") + 1, sdata.Length - sdata.IndexOf("/") - 1)) + { + //마지막장 + for (int i = m_crow + 1; i < PlayList.ActiveSheet.RowCount; i++) + { + if (PlayList.ActiveSheet.GetText(i, 0) == "True") + { + m_crow = i; + Show_PlayList(i, 0, 1); + //m_rowidx = i; + //m_crow = m_rowidx; + + //m_rrow = m_rowidx; + break; + } + } + } + else + { + if (idx == 0) + { + m_ncnt = Convert.ToInt32(sdata.Substring(0, sdata.IndexOf("/"))) + 1; + PlayList.ActiveSheet.SetText(m_crow, 5, m_ncnt.ToString() + sdata.Substring(sdata.IndexOf("/"), sdata.Length - sdata.IndexOf("/"))); + } + + + //next + string code = PlayList.ActiveSheet.GetText(m_crow, 1); + string jmok = PlayList.ActiveSheet.GetText(m_crow, 2); + string sub = PlayList.ActiveSheet.GetText(m_crow, 4); + + if (code.Contains("전문가")) + { + sub = PlayList.ActiveSheet.GetText(m_crow, 1).Trim(); + } + + if (idx == 0) + { + eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE; + // eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_BLINK; + KAScene = KAEngine.LoadScene(T2S_FOLDER_PATH + "5088.t2s", "5088"); + KAScene.SetSceneEffectType(10, etype, FadeInSec); + } + else + { + KAScene = KAScenePlayer.GetPlayingScene(10); + } + KAEngine.BeginTransaction(); + + + s5088 scene = new s5088(this, code, jmok, sub, m_ncnt - 1); // 12종목 현재가 + + KAScene.QueryVariables(); + KAEngine.EndTransaction(); + + KAScenePlayer.Prepare(10, KAScene); + m_ShowIndex = 1; + + if (sub == "") + sub = jmok + " 업종"; + + txt2.Text = "12종목 현재가 " + sub + " " + PlayList.ActiveSheet.GetText(m_crow, 5); + } + + + if (m_ShowIndex == 1) + { + if (m_TakeIn) + { + KAScenePlayer.Play(10); + txt1.Text = txt2.Text; + + } + } + + } + else + { + m_cutindex = 0; + for (int i = m_crow + 1; i < PlayList.ActiveSheet.RowCount; i++) + { + if (PlayList.ActiveSheet.GetText(i, 0) == "True") + { + m_crow = i; + Show_PlayList(i, 0, 1); + //m_rowidx = i; + //m_crow = m_rowidx; + + break; + } + } + if (m_ShowIndex == 1) + { + if (m_TakeIn) + { + KAScenePlayer.Play(10); + m_srow = m_crow; + txt1.Text = txt2.Text; + + string code = PlayList.ActiveSheet.GetText(m_crow, 1).Trim(); + string jongmok = PlayList.ActiveSheet.GetText(m_crow, 2); + string forCutInfo = PlayList.ActiveSheet.GetText(m_crow, 3).Trim(); + string sub = PlayList.ActiveSheet.GetText(m_crow, 4).Trim(); + + + m_rowText = code + jongmok + forCutInfo + sub; + if (idx == 0) + { + timer1.Interval = (m_time) * 1000; + } + timer1.Start(); + } + } + + } + + + + } + + } + catch (Exception) + { + + } + + } + + public void Show_PlayList(int row, int idx, int color) + { + try + { + m_cutindex = 0; + //PlayList.ActiveSheet.SetActiveCell(row, 3); + + dataGridView1.Columns.Clear(); + dataGridView2.Columns.Clear(); + dataGridView3.Columns.Clear(); + + //if (idx == 0) + //{ + // if (color == 0) + // Cell_Color(PlayList.ActiveSheet, row, color); + // else + // Cell_Color1(PlayList.ActiveSheet, row, color, m_newrow, 0); + //} + + + //PlayList.ShowActiveCell(FarPoint.Win.Spread.VerticalPosition.Nearest, FarPoint.Win.Spread.HorizontalPosition.Center); + + string[] cutInfos = null; + string code = PlayList.ActiveSheet.GetText(row, 1).Trim(); + string jongmok = PlayList.ActiveSheet.GetText(row, 2); + string forCutInfo = PlayList.ActiveSheet.GetText(row, 3).Trim(); + string sub = PlayList.ActiveSheet.GetText(row, 4).Trim(); + string pagec = PlayList.ActiveSheet.GetText(row, 5).Trim(); + + + //"==" + + if (jongmok.Contains("==")) + { + MessageBox.Show("데이터가 없습니다!"); + m_TakeIn = false; + btnTake.BackColor = Color.WhiteSmoke; + btnNext.BackColor = Color.WhiteSmoke; + m_rowidx = m_newrow; m_chkdata = false; + //Cell_Color1(PlayList.ActiveSheet, row, color, m_newrow, 0); + //for (int j = 0; j <= 6; j++) + //{ + // PlayList.ActiveSheet.Cells[m_rowidx+1, j].BackColor = Color.FromArgb(255, 255, 255); + + //} + return; + } + + if (forCutInfo == "글로벌 증시 지도") + cutInfos = CutList.getCutInfo(jongmok); + if (forCutInfo == "이미지 그래프") + cutInfos = CutList.getCutInfo(jongmok + forCutInfo); + else + cutInfos = CutList.getCutInfo(code + jongmok + forCutInfo + sub); + + if (cutInfos[0] == "") + { + if (forCutInfo.Equals("")) + return; + MessageBox.Show("장면을 송출할 수 없습니다" + Environment.NewLine + forCutInfo); + return; + } + + Cursor.Current = Cursors.WaitCursor; + + if (idx == 0) + { + eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE; + KAScene = KAEngine.LoadScene(T2S_FOLDER_PATH + cutInfos[1] + ".t2s", cutInfos[0]); + + + KAScene.SetSceneEffectType(10, etype, FadeInSec); + //KAScene = KAEngine.LoadScene(T2S_FOLDER_PATH + cutInfos[1] + "_NE.t2s", cutInfos[0] + "_NE"); + //KAScene = KAEngine.LoadScene(T2S_FOLDER_PATH + "5074_NE.t2s", "5074_NE"); + + + } + else + { + KAScene = KAScenePlayer.GetPlayingScene(10); + //eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_NONE; + //if (cutInfos[0] == "8035" || cutInfos[0] == "8061" || cutInfos[0] == "8040" || cutInfos[0] == "8046" || cutInfos[0] == "8051" || cutInfos[0] == "8056" || cutInfos[0] == "5026") + //{ + // timer1.Stop(); + // return; + //} + + //KAScene = KAEngine.LoadScene(T2S_FOLDER_PATH + cutInfos[1] + "_NE.t2s", cutInfos[0] + "_NE"); + ////KAScene.SetSceneEffectType(10, etype, 0); + } + + + //----배경 사용할지를 체크 shk 20230715 + //if (back_CB.Checked == true) + //{ + // KAScene.UseBackground(1); // 배경 사용 함 + //} + //else + //{ + // KAScene.UseBackground(0); // 배경 사용 안함 + //} + + /* + if (back_ComboBox.SelectedIndex == 0) // 기본배경 + { + KAScene.UseBackground(1); + KAScene.SetBackgroundTexture(T2S_FOLDER_PATH+ "Video\\1109_배경최종-1.vrv"); + } + else if (back_ComboBox.SelectedIndex == 1) // 서울) + { + KAScene.UseBackground(1); + KAScene.SetBackgroundTexture(T2S_FOLDER_PATH + "Video\\스탁_서울.vrv"); + } + else if (back_ComboBox.SelectedIndex == 2) // 여의도) + { + KAScene.UseBackground(1); + KAScene.SetBackgroundTexture(T2S_FOLDER_PATH + "Video\\스탁_여의도.vrv"); + } + else if (back_ComboBox.SelectedIndex == 3) // 뉴욕) + { + KAScene.UseBackground(1); + KAScene.SetBackgroundTexture(T2S_FOLDER_PATH + "Video\\스탁_뉴욕.vrv"); + } + else if (back_ComboBox.SelectedIndex == 4) // 야경) + { + KAScene.UseBackground(1); + KAScene.SetBackgroundTexture(T2S_FOLDER_PATH + "Video\\스탁_야경.vrv"); + } + else if (back_ComboBox.SelectedIndex == 5) // 배경없음) + { + KAScene.UseBackground(0); // 배경 사용 안함 + } + */ + if (lblbackfile.Text.Length > 0) + { + if (lblbackfile_full.Text.Contains(".vrv") == true) + { + KAScene.SetBackgroundVideo(lblbackfile_full.Text, 2004, 10); + } + else + { + KAScene.SetBackgroundTexture(lblbackfile_full.Text); + } + + KAScene.UseBackground(1); + } + else + { + KAScene.UseBackground(0); // 배경없음 + } + + + //-------------------------------------------- + + KAEngine.BeginTransaction(); + + if (cutInfos[0] == "5076") + { + m_time = 3000000; + s5076 scene = new s5076(this, jongmok); //주요매출 구성 + } + else if (cutInfos[0] == "50160") + { + m_time = 30; + s50160 scene = new s50160(this, jongmok, sub); //2열판- + } + else if (cutInfos[0] == "5079") + { + m_time = 3000000; + s5079 scene = new s5079(this, jongmok); //성장성 지표 + } + else if (cutInfos[0] == "5080") + { + m_time = 3000000; + s5080 scene = new s5080(this, jongmok); //매출액 지표 + } + else if (cutInfos[0] == "5081") //영업이익 지표 + { + m_time = 3000000; + s5081 scene = new s5081(this, jongmok); + } + else if (cutInfos[0] == "6001") //해외지수 이미지그래프 + { + m_time = 30; + s6001 scene = new s6001(this, jongmok); + } + else if (cutInfos[0] == "N5001") // NXT 1열판 기본 + { + // n5001 scene = new n5001(this, 4, jongmok, sub, code); + m_time = 2; // 5 20260329추가 + s5001 scene = new s5001(this, 4, jongmok, sub, code); + } + else if (cutInfos[0] == "5001") //1열판 기본 + { + m_time = 2; // 5 20260329 + if (jongmok == "지수") + { s5001 scene = new s5001(this, 0, jongmok, sub, code); } + else + { + if (code == "해외지수") + { s5001 scene = new s5001(this, 1, jongmok, sub, code); } + else if (code == "환율") + { s5001 scene = new s5001(this, 2, jongmok, sub, code); } + else if (code == "해외업종") + { s5001 scene = new s5001(this, 5, jongmok, sub, code); } + else if (code == "해외종목") + { s5001 scene = new s5001(this, 6, jongmok, sub, code); } + else if (code.Contains("업종")) + { s5001 scene = new s5001(this, 3, jongmok, sub, code); } + else + { s5001 scene = new s5001(this, 4, jongmok, sub, code); } + } + + } + else if (cutInfos[0] == "8018" || cutInfos[0] == "8032" || cutInfos[0] == "5032") //2열판 + { + m_time = 5; + if (code.Contains("업종")) + { + s8018 scene = new s8018(this, 3, jongmok, sub, code); + } + else + { + if (jongmok.Contains("선물")) + { + s5032 scene = new s5032(this, 0, jongmok, sub, code); + } + else + { + if (!jongmok.Contains("지수") && !jongmok.Contains("환율")) + { + s8018 scene = new s8018(this, 1, jongmok, sub, code); + } + else + { + s8018 scene = new s8018(this, 0, jongmok, sub, code); + } + } + } + + } + else if (cutInfos[0] == "5011") + { + m_time = 5; + s5011 scene = new s5011(this, jongmok, sub); //1열판 상세 + } + else if (cutInfos[0] == "5006") + { + m_time = 5; + s5006 scene = new s5006(this, jongmok, sub); //1열판 상세 시가 + } + else if (cutInfos[0] == "5086") + { + m_time = 7; + s5086 scene = new s5086(this, jongmok, sub, code); //수익률 그래프 + } + else if (cutInfos[0] == "50860") + { + m_time = 7; + s50860 scene = new s50860(this, jongmok, sub, code); //라인 그래프 + } + + else if (cutInfos[0] == "8035" || cutInfos[0] == "8061" || cutInfos[0] == "8040" || cutInfos[0] == "8046" || cutInfos[0] == "8051" || cutInfos[0] == "8056") + { + m_time = 8; + s8010 scene = new s8010(this, jongmok, forCutInfo, sub, code); //캔들 그래프 + //System.Threading.Thread.Sleep(1000); + //timer1.Stop(); + } + else if (cutInfos[0] == "8003") + { + m_time = 8; + s8003 scene = new s8003(this, jongmok); //호가창 + } + else if (cutInfos[0] == "5037") + { + m_time = 5; + s5037 scene = new s5037(this, jongmok.Trim(), code); //거래원 + } + else if (cutInfos[0] == "5016") + { + m_time = 5; + s5016 scene = new s5016(this, jongmok, sub); //3열판 + } + else if (cutInfos[0] == "8067" || cutInfos[0] == "5068" || cutInfos[0] == "5070" || cutInfos[0] == "5072") + { + m_time = 30; + s8067 scene = new s8067(this, jongmok); //글로벌 증시지도 + } + else if (cutInfos[0] == "5078") + { + m_time = 30; + s5078 scene = new s5078(this, jongmok); //미국업종 + } + else if (cutInfos[0] == "5082") + { + m_time = 6; + s5082 scene = new s5082(this, jongmok); //주체별 매매동향 + } + else if (cutInfos[0] == "5023") + { + m_time = 30; + s5023 scene = new s5023(this, forCutInfo); //매매동향 표그래프 + } + else if (cutInfos[0] == "5024")//------------------------------------------------- + { + m_time = 60; + s5024 scene = new s5024(this, forCutInfo); //매매동향 막대그래프 + } + else if (cutInfos[0] == "5083") + { + m_time = 60; + s5083 scene = new s5083(this, forCutInfo); //개인,기관, 외국인 매매동향 + } + + else if (cutInfos[0] == "5084") + { + m_time = 5; + s5084 scene = new s5084(this, forCutInfo); //매매동향 라인그래프 + } + else if (cutInfos[0] == "6067") + { + m_time = 30; + s6067 scene = new s6067(this, forCutInfo); //기관 순매수 현황 + } + + else if (cutInfos[0] == "5085") + { + m_time = 30; + s5085 scene = new s5085(this, forCutInfo); //프로그램 매매 + } + + else if (cutInfos[0] == "5025") + { + m_time = 30; + s5025 scene = new s5025(this, code); //순매도 상위(수동) + } + + else if (cutInfos[0] == "5074") + { + m_time = 7; + if (code.Contains("전문가")) + { + sub = PlayList.ActiveSheet.GetText(row, 1).Trim(); + } + //if (code.Contains("테마") || code.Contains("전문가")) + //{ + // code = PlayList.ActiveSheet.GetText(row, 6).Trim(); + //} + + PlayList.ActiveSheet.SetText(row, 5, "1" + pagec.Substring(pagec.IndexOf("/"), pagec.Length - pagec.IndexOf("/"))); + + s5074 scene = new s5074(this, code, jongmok, sub, 0); //5단 표그래프 + + if (sub == "") + sub = jongmok + " 업종"; + } + + else if (cutInfos[0] == "5077") // 6종목 현재가 추가 2023.11.27 + { + m_time = 7; + PlayList.ActiveSheet.SetText(row, 5, "1" + pagec.Substring(pagec.IndexOf("/"), pagec.Length - pagec.IndexOf("/"))); + + s5077 scene = new s5077(this, code, jongmok, sub, 0); // 6종목 현재가 + } + + else if (cutInfos[0] == "5088") // 12종목 현재가 추가 2024.03.02 + { + m_time = 7; + PlayList.ActiveSheet.SetText(row, 5, "1" + pagec.Substring(pagec.IndexOf("/"), pagec.Length - pagec.IndexOf("/"))); + + s5088 scene = new s5088(this, code, jongmok, sub, 0); // 12종목 현재가 + } + + else if (cutInfos[0] == "8001" || cutInfos[0] == "8002") + { + m_time = 120; + s8001 scene = new s8001(this, jongmok); //네모그래프 + } + + else if (cutInfos[0] == "5026") + { + m_time = 8; + s5026 scene = new s5026(this, jongmok); //종목별 비교분석 캔들그래프 + } + + else if (cutInfos[0] == "5087") + { + m_time = 7; + s5087 scene = new s5087(this, jongmok); //종목별 비교분석 라인그래프 + } + else if (cutInfos[0] == "5029") + { + m_time = 7; + s5029 scene = new s5029(this, jongmok, sub); //종목별 수익률 비교 + } + + Cursor.Current = Cursors.Default; + + if (!m_chkdata) + { + MessageBox.Show("데이터가 없습니다!"); + m_TakeIn = false; + timer1.Stop(); + btnTake.BackColor = Color.WhiteSmoke; + btnNext.BackColor = Color.WhiteSmoke; + m_rowidx = m_newrow; + //m_ShowIndex = 1; + //return; + } + + + //if (picBoxPreview.Image != null) + //{ + // picBoxPreview.Image.Dispose(); + // System.Threading.Thread.Sleep(300); + //} + + + KAScene.QueryVariables(); + KAEngine.EndTransaction(); + + //KAScenePlayer.PlayDirect(10, KAScene); + KAScenePlayer.Prepare(10, KAScene); + //KAScene.SaveImageFile(path, width, height, frame); + + //GetThumnail(457, 257, PREVIEW_FILE_PATH, 200, 1); + m_ShowIndex = 1; + + if (cutInfos[0] == "5074") + txt2.Text = forCutInfo + " " + sub + " " + PlayList.ActiveSheet.GetText(PlayList.ActiveSheet.ActiveRowIndex, 5); + else + txt2.Text = jongmok + " " + forCutInfo + " " + sub; + + } + catch (Exception) + { + + } + } + + + private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) + { + try + { + switch (tab.SelectedIndex) + { + case 0: + tuc1 = new UC1(this, "해외", null, null); + tuc1.Dock = System.Windows.Forms.DockStyle.Fill; + tabp1.Controls.Add(tuc1); + m_group = "해외지수"; + break; + + case 1: + tuc1 = new UC1(this, "환율", null, null); + tuc1.Dock = System.Windows.Forms.DockStyle.Fill; + tabp2.Controls.Add(tuc1); + m_group = "환율"; + break; + + case 2: + tuc1 = new UC1(this, "지수", null, null); + tuc1.Dock = System.Windows.Forms.DockStyle.Fill; + tabp3.Controls.Add(tuc1); + m_group = "주요지수"; + break; + + case 3: + + tuc2 = new UC2(this, 0); + tuc2.Dock = System.Windows.Forms.DockStyle.Fill; + tabp4_1.Controls.Add(tuc2); + + tuc1 = new UC1(this, "업종_코스피", tuc2, null); + tuc1.Dock = System.Windows.Forms.DockStyle.Fill; + tabp4.Controls.Add(tuc1); + + + break; + + case 4: + + tuc2 = new UC2(this, 1); + tuc2.Dock = System.Windows.Forms.DockStyle.Fill; + tabp5_1.Controls.Add(tuc2); + + tuc1 = new UC1(this, "업종_코스닥", tuc2, null); + tuc1.Dock = System.Windows.Forms.DockStyle.Fill; + tabp5.Controls.Add(tuc1); + + + break; + + case 5: + + tuc3 = new UC3(this); + tuc3.Dock = System.Windows.Forms.DockStyle.Fill; + tabp6_1.Controls.Add(tuc3); + + tuc1 = new UC1(this, "종목비교", null, tuc3); + tuc1.Dock = System.Windows.Forms.DockStyle.Fill; + tabp6.Controls.Add(tuc1); + + + break; + + case 6: //테마 + tuc4 = new UC4(this, 0); + tuc4.Dock = System.Windows.Forms.DockStyle.Fill; + tabp7.Controls.Add(tuc4); + break; + + case 7: //해외종목 + tuc5 = new UC5(this); + tuc5.Dock = System.Windows.Forms.DockStyle.Fill; + tabp8.Controls.Add(tuc5); + break; + + case 8: //전문가 테마 + tuc6 = new UC6(this); + tuc6.Dock = System.Windows.Forms.DockStyle.Fill; + tabp9.Controls.Add(tuc6); + break; + + case 9: //거래정지 종목 + tuc7 = new UC7(this); + tuc7.Dock = System.Windows.Forms.DockStyle.Fill; + tabp10.Controls.Add(tuc7); + break; + + default: + break; + + } + } + catch (Exception) + { + + } + + } + + private void txtSearch_KeyPress(object sender, KeyPressEventArgs e) + { + try + { + if (e.KeyChar == (char)Keys.Enter) + { + e.Handled = true; + searchStock(listBox, txtSearch); + } + } + catch (Exception) + { + + } + + } + + private void timer1_Tick(object sender, EventArgs e) + { + try + { + string sdata = string.Empty; + + if (m_TakeIn) + { + //if (KAScenePlayer == null) + //{ + // MonitoringProcee(); // tornado연결체크 + // //MessageBox.Show("Tornado와 송출 연결이 되지 않았습니다."); + // //return; + //} + KAScenePlayer.Play(10); + + if (m_cutindex == 1) + { + if (PlayList.ActiveSheet.GetText(m_crow, 3) == "5단 표그래프") + { + timer1.Stop(); + sdata = PlayList.ActiveSheet.GetText(m_crow, 5); + + if (sdata.Substring(0, sdata.IndexOf("/")) != sdata.Substring(sdata.IndexOf("/") + 1, sdata.Length - sdata.IndexOf("/") - 1)) + { + // + //Next_Scene(1); + } + } + else if (PlayList.ActiveSheet.GetText(m_crow, 3) == "6종목 현재가") + { + timer1.Stop(); + sdata = PlayList.ActiveSheet.GetText(m_crow, 5); + + if (sdata.Substring(0, sdata.IndexOf("/")) != sdata.Substring(sdata.IndexOf("/") + 1, sdata.Length - sdata.IndexOf("/") - 1)) + { + // + //Next_Scene(1); + } + } + else if (PlayList.ActiveSheet.GetText(m_crow, 3) == "12종목 현재가") + { + timer1.Stop(); + sdata = PlayList.ActiveSheet.GetText(m_crow, 5); + + if (sdata.Substring(0, sdata.IndexOf("/")) != sdata.Substring(sdata.IndexOf("/") + 1, sdata.Length - sdata.IndexOf("/") - 1)) + { + // + //Next_Scene(1); + } + } + + } + else + { + string code = PlayList.ActiveSheet.GetText(m_crow, 1).Trim(); + string jongmok = PlayList.ActiveSheet.GetText(m_crow, 2); + string forCutInfo = PlayList.ActiveSheet.GetText(m_crow, 3).Trim(); + string sub = PlayList.ActiveSheet.GetText(m_crow, 4).Trim(); + + if (m_rowText == code + jongmok + forCutInfo + sub && m_srow == m_crow) + { + timer1.Interval = 3000; + Show_PlayList(m_crow, 1, m_rowcolor); + KAScenePlayer.Play(10); + } + else + { + timer1.Stop(); + } + + + m_update = 1; + } + + } + } + catch (Exception) + { + + } + + } + + private void checkBox1_CheckedChanged(object sender, EventArgs e) + { + try + { + if (checkBox1.Checked) + { + for (int i = 0; i < PlayList.ActiveSheet.RowCount; i++) + { + PlayList.ActiveSheet.SetValue(i, 0, true); + } + } + else + { + for (int i = 0; i < PlayList.ActiveSheet.RowCount; i++) + { + PlayList.ActiveSheet.SetValue(i, 0, false); + } + } + + } + catch (Exception) + { + + } + + } + + + private void MainForm_KeyUp(object sender, KeyEventArgs e) + { + try + { + m_control = false; + m_shift = false; + + } + catch (Exception) + { + + } + + } + + private void tab_MouseDown(object sender, MouseEventArgs e) + { + try + { + // store clicked tab + TabControl tc = (TabControl)sender; + int hover_index = this.getHoverTabIndex(tc); + if (hover_index >= 0) { tc.Tag = tc.TabPages[hover_index]; } + } + catch (Exception) + { + + } + + } + + private void tab_MouseUp(object sender, MouseEventArgs e) + { + try + { + // clear stored tab + TabControl tc = (TabControl)sender; + tc.Tag = null; + } + catch (Exception) + { + + } + + } + + private void tab_MouseMove(object sender, MouseEventArgs e) + { + try + { + // mouse button down? tab was clicked? + TabControl tc = (TabControl)sender; + if ((e.Button != MouseButtons.Left) || (tc.Tag == null)) return; + TabPage clickedTab = (TabPage)tc.Tag; + int clicked_index = tc.TabPages.IndexOf(clickedTab); + + // start drag n drop + tc.DoDragDrop(clickedTab, DragDropEffects.All); + } + catch (Exception) + { + + } + + } + + private void tab_DragOver(object sender, DragEventArgs e) + { + try + { + TabControl tc = (TabControl)sender; + + // a tab is draged? + if (e.Data.GetData(typeof(TabPage)) == null) return; + TabPage dragTab = (TabPage)e.Data.GetData(typeof(TabPage)); + int dragTab_index = tc.TabPages.IndexOf(dragTab); + + // hover over a tab? + int hoverTab_index = this.getHoverTabIndex(tc); + if (hoverTab_index < 0) { e.Effect = DragDropEffects.None; return; } + TabPage hoverTab = tc.TabPages[hoverTab_index]; + e.Effect = DragDropEffects.Move; + + // start of drag? + if (dragTab == hoverTab) return; + + // swap dragTab & hoverTab - avoids toggeling + Rectangle dragTabRect = tc.GetTabRect(dragTab_index); + Rectangle hoverTabRect = tc.GetTabRect(hoverTab_index); + + if (dragTabRect.Width < hoverTabRect.Width) + { + Point tcLocation = tc.PointToScreen(tc.Location); + + if (dragTab_index < hoverTab_index) + { + if ((e.X - tcLocation.X) > ((hoverTabRect.X + hoverTabRect.Width) - dragTabRect.Width)) + this.swapTabPages(tc, dragTab, hoverTab); + } + else if (dragTab_index > hoverTab_index) + { + if ((e.X - tcLocation.X) < (hoverTabRect.X + dragTabRect.Width)) + this.swapTabPages(tc, dragTab, hoverTab); + } + } + else this.swapTabPages(tc, dragTab, hoverTab); + + // select new pos of dragTab + tc.SelectedIndex = tc.TabPages.IndexOf(dragTab); + } + catch (Exception) + { + + } + + } + + private int getHoverTabIndex(TabControl tc) + { + try + { + for (int i = 0; i < tc.TabPages.Count; i++) + { + if (tc.GetTabRect(i).Contains(tc.PointToClient(Cursor.Position))) + return i; + } + + return -1; + } + catch (Exception) + { + return -1; + } + + } + + private void swapTabPages(TabControl tc, TabPage src, TabPage dst) + { + try + { + int index_src = tc.TabPages.IndexOf(src); + int index_dst = tc.TabPages.IndexOf(dst); + tc.TabPages[index_dst] = src; + tc.TabPages[index_src] = dst; + tc.Refresh(); + } + + catch (Exception) + { + + } + } + + + private void timer3_Tick(object sender, EventArgs e) + { + try + { + System.Diagnostics.Process ps = new System.Diagnostics.Process(); + System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("Tornado2"); + + + if (process.Length < 1) + { + + if (KAEngine != null) + KAEngine.Disconnect(); + + panelC.BackColor = Color.FromArgb(192, 0, 0); + lables.Text = "Reconnecting.."; + + istornado = false; m_init = 0; + } + + else + { + panelC.BackColor = Color.FromArgb(26, 119, 0); + lables.Text = "T2 Connected"; + + if (KAEngine == null) + return; + + if (istornado == false && m_init == 1) + { + istornado = true; + } + + if (!istornado) + { + if (KAEngine.KTAPConnect(1, "127.0.0.1", 30001, 0, KAEvent) == 1) + { + KAScenePlayer = KAEngine.GetScenePlayer(); + } + } + } + } + + catch (Exception) + { + //MessageBox.Show(ex.ToString()); + } + } + + + private void b1_Click(object sender, EventArgs e) + { + try + { + Button bt = (Button)sender; + GraphE fm = null; + + if ((string)bt.Tag == "1") + { + fm = new GraphE(this, 0); + } + else if ((string)bt.Tag == "2") + { + fm = new GraphE(this, 1); + } + else if ((string)bt.Tag == "3") + { + fm = new GraphE(this, 2); + } + else if ((string)bt.Tag == "4") + { + fm = new GraphE(this, 3); + } + fm.Owner = this; + fm.ShowDialog(); + } + catch (Exception) + { + + } + + } + + + + string m_txt = string.Empty; + + private void getSelectedList() + { + selectedRowsList.Sort(); + + /* + foreach(var v in selectedRowsList) + { + Console.Write(v + ", "); + } + Console.WriteLine(" 읽기 "); + */ + } + + List selectedRowsList = new List(); + int beforeRow = -1; + long beforeClickTime = 0; + Point beforePoint = new Point(0, 0); + + private void listView1_MouseDown(object sender, MouseEventArgs e) + { + try + { + if (listBox.SelectedIndex == -1) return; + + rowIndexFrom = listView1.Items.IndexOf(listView1.HitTest(e.X, e.Y).Item); + //더블클릭 감지 파트 + long timeGap = DateTime.Now.Ticks - beforeClickTime; + beforeClickTime = DateTime.Now.Ticks; + if (timeGap < 5000000 && rowIndexFrom == beforeRow && beforePoint.X == e.Location.X && beforePoint.Y == e.Location.Y) + { + if (listBox.SelectedIndex == -1) return; + + if (selectedRowsList.Count == 1) + { + SetPlayList(selectedRowsList[0]); + beforeClickTime = 0; + } + } + beforePoint = e.Location; + + + + if (rowIndexFrom != -1) + { + Size dragSize = SystemInformation.DragSize; + dragBoxFromMouseDown = new Rectangle(new Point(e.X - (dragSize.Width), + e.Y - (dragSize.Height)), + dragSize); + } + else + dragBoxFromMouseDown = Rectangle.Empty; + + + //키입력 관련 + bool isControlPressed = false; + bool isShiftPressed = false; + + if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) isShiftPressed = true; + if ((Control.ModifierKeys & Keys.Control) == Keys.Control) isControlPressed = true; + + if (isControlPressed && isShiftPressed) + { + if (beforeRow > rowIndexFrom) + { + for (int i = rowIndexFrom; i < beforeRow + 1; i++) + { + if (!selectedRowsList.Contains(i)) selectedRowsList.Add(i); + } + } + else if (beforeRow < rowIndexFrom) + { + for (int i = beforeRow; i < rowIndexFrom + 1; i++) + { + if (!selectedRowsList.Contains(i)) selectedRowsList.Add(i); + } + } + } + else if (isControlPressed) + { + if (selectedRowsList.Contains(rowIndexFrom)) + { + selectedRowsList.Remove(rowIndexFrom); + } + else + { + selectedRowsList.Add(rowIndexFrom); + } + } + else if (isShiftPressed) + { + selectedRowsList.Clear(); + if (beforeRow > rowIndexFrom) + { + for (int i = rowIndexFrom; i < beforeRow + 1; i++) + { + if (!selectedRowsList.Contains(i)) selectedRowsList.Add(i); + } + } + else if (rowIndexFrom > beforeRow) + { + for (int i = beforeRow; i < rowIndexFrom + 1; i++) + { + if (!selectedRowsList.Contains(i)) selectedRowsList.Add(i); + } + } + } + else + { + selectedRowsList.Clear(); + selectedRowsList.Add(rowIndexFrom); + } + + beforeRow = rowIndexFrom; + + getSelectedList(); + + listView1.Refresh(); + + } + catch (Exception) + { + + } + } + + private void listView1_MouseMove(object sender, MouseEventArgs e) + { + try + { + //DataGridViewRow startingBalanceRow = GridView1.Rows[0]; + + if ((e.Button & MouseButtons.Left) == MouseButtons.Left) + { + if (dragBoxFromMouseDown != Rectangle.Empty && + !dragBoxFromMouseDown.Contains(e.X, e.Y)) + { + DragDropEffects dropEffect = GridView1.DoDragDrop( + m_txt, + DragDropEffects.Move); + + } + + } + } + catch (Exception) + { + + } + } + + private void listView1_MouseUp(object sender, MouseEventArgs e) + { + getSelectedList(); + } + + + + void lv_DrawSubItem(object sender, DrawListViewSubItemEventArgs e) + { + e.DrawBackground(); + + Rectangle rectangle = e.Bounds; + rectangle.Y -= 1; + e.Graphics.DrawRectangle(new Pen(Color.FromArgb(200, 200, 200)), rectangle); + + + //rectangle.Width -= 2; + rectangle.Height -= 1; + rectangle.X += 1; + rectangle.Y += 1; + + if (listView1.Items[e.ItemIndex].Selected) + { + e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(220, 220, 220)), rectangle); + e.Item.Checked = true; + } + else + { + e.Item.Checked = false; + } + + + + e.DrawText(); + + } + + public class ListViewEx : ListView + { + [DllImport("uxtheme", CharSet = CharSet.Auto)] + static extern Boolean SetWindowTheme(IntPtr hWindow, String subAppName, String subIDList); + + public ListViewEx() + { + SetStyle((ControlStyles)0x22010, true); + } + + protected override void OnHandleCreated(EventArgs e) + { + base.OnHandleCreated(e); + + // 핸들이 생성된 후에 테마를 적용한다. + SetWindowTheme(Handle, "explorer", null); + } + } + + + void lv_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e) + { + e.Graphics.FillRectangle(Brushes.GreenYellow, e.Bounds); + e.DrawText(); + } + + private void PlayList_DragOver(object sender, DragEventArgs e) + { + try + { + e.Effect = DragDropEffects.Move; + } + catch (Exception) + { + + } + + } + + private void PlayList_DragDrop(object sender, DragEventArgs e) + { + try + { + + foreach (ListViewItem v in listView1.Items) + { + if (v.Checked) SetPlayList(v.Index); + } + /* + foreach(var v in selectedRowsListFinished) + { + SetPlayList(v); + } + */ + + /* + for (int i = 0; i < GridView1.Rows.Count; i++) + { + if (GridView1.Rows[i].DefaultCellStyle.BackColor == Color.FromArgb(220,220,220)) + { + SetPlayList(i); + } + } + */ + + + /* + int[] buf = new int[40]; + int cnt = 0; + + if (listBox.SelectedIndex == -1) return; + for (int i = 0; i < 40; i++) + { + buf[i] = 100; + } + + if (e.Effect == DragDropEffects.Move) + { + string str = e.Data.GetData(typeof(string)) as string; + //MessageBox.Show(str); + + string[] rs = str.Split('^'); + for (int i = 0; i < rs.Length; i++) + { + if (rs[i] != "") + { + buf[cnt] = int.Parse(rs[i]); + cnt += 1; + } + + } + + Array.Sort(buf); + for (int i = 0; i < cnt; i++) + { + SetPlayList(buf[i]); + } + + //Math.buf[i] + } + */ + } + catch (Exception) + { + + } + + } + + + + public void SetPlayList(int nrow) + { + try + { + string str = FpSpread2.ActiveSheet.GetText(nrow, 1); + string data1 = string.Empty; + string data2 = string.Empty; + string data3 = string.Empty; + string data4 = string.Empty; + + int row = 0; + row = PlayList.ActiveSheet.RowCount + 1; + + //=========NXT추가 + string jname = (string)listBox.SelectedItem; + if (jname.Contains("(NXT)")) + { + if (str != "1열판기본_현재가") + { + MessageBox.Show("NXT는 제공하지 않습니다."); + return; + } + } + //============== + + if (str != "") + { + InsertRow(PlayList, PlayList.ActiveSheet, row, 1, 1); + if (str.Contains("_")) + { + data1 = str.Substring(0, str.IndexOf('_')); + data2 = str.Substring(str.IndexOf('_') + 1, str.Length - str.IndexOf('_') - 1); + + str = jongmokCode((string)listBox.SelectedItem); + + if (str.Contains("/")) + { + data3 = str.Substring(0, str.IndexOf('/')); + data4 = str.Substring(str.IndexOf('/') + 1, str.Length - str.IndexOf('/') - 1); + + } + + PlayList.ActiveSheet.SetValue(row - 1, 0, true); + PlayList.ActiveSheet.SetText(row - 1, 1, data4); //코스피, 코스닥 체크 + PlayList.ActiveSheet.SetText(row - 1, 2, (string)listBox.SelectedItem); + PlayList.ActiveSheet.SetText(row - 1, 3, data1); + PlayList.ActiveSheet.SetText(row - 1, 4, data2); + PlayList.ActiveSheet.SetText(row - 1, 5, "1/1"); + PlayList.ActiveSheet.SetText(row - 1, 6, data3); //종목코드 (Hide) + } + + } + } + catch (Exception) + { + + } + } + + + + + //int m_tmp = 0; + private void GridView1_RowLeave(object sender, DataGridViewCellEventArgs e) + { + + } + + private void GridView1_CellEnter(object sender, DataGridViewCellEventArgs e) + { + + try + { + string[] rs = m_txt.Split('^'); + + if (rs.Length < 3) + { + for (int i = 0; i < GridView1.RowCount; i++) + { + GridView1.Rows[i].DefaultCellStyle.BackColor = Color.White; + } + } + + + //if (m_tmp == 0) + //{ + // //m_txt = ""; + // if (!m_txt.Contains(e.RowIndex.ToString())) + // m_txt = m_txt + e.RowIndex + "^"; + //} + + } + catch (Exception) + { + + } + } + + private void PlayList_KeyPress(object sender, KeyPressEventArgs e) + { + try + { + if (e.KeyChar == (char)Keys.Space) + { + if (s_buf[PlayList.ActiveSheet.ActiveRowIndex] == 0) + { + s_buf[PlayList.ActiveSheet.ActiveRowIndex] = 1; + PlayList.ActiveSheet.SetValue(PlayList.ActiveSheet.ActiveRowIndex, 0, false); + } + else + { + s_buf[PlayList.ActiveSheet.ActiveRowIndex] = 0; + PlayList.ActiveSheet.SetValue(PlayList.ActiveSheet.ActiveRowIndex, 0, true); + } + e.Handled = true; + + } + } + catch (Exception) + { + + } + + } + + private void Form_Status() + { + try + { + //윈도우 창 최대화 + Rectangle bounds = Screen.FromHandle(this.Handle).WorkingArea; + int x_offset = SystemInformation.HorizontalResizeBorderThickness + SystemInformation.FixedFrameBorderSize.Width; + int y_offset = SystemInformation.VerticalResizeBorderThickness + SystemInformation.FixedFrameBorderSize.Height; + + bounds.X -= x_offset; + bounds.Width += (x_offset * 2); + bounds.Height += y_offset; + + //this.MaximizedBounds = Screen.FromHandle(this.Handle).WorkingArea; + this.MaximizedBounds = bounds; + + // 창 크기 최대화 처리 + this.WindowState = FormWindowState.Maximized; + + + this.Size = new Size(1920, 1100); + + this.Location = new Point(0, 0); + + //this.Location = new Point(0, 5); + this.AutoScroll = false; + this.AutoSize = false; + + + this.FormBorderStyle = FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + } + catch (Exception) + { + + } + + } + + private void MainForm_Resize(object sender, EventArgs e) + { + try + { + if (this.WindowState != FormWindowState.Minimized) + { + Form_Status(); + } + } + catch (Exception) + { + + } + + } + + protected override bool ProcessCmdKey(ref Message msg, Keys keyData) + { + try + { + switch (keyData) + { + case Keys.Home: + timer1.Stop(); + m_rowidx = 0; + Cell_Color(PlayList.ActiveSheet, m_rowidx, 0); + PlayList.ShowActiveCell(FarPoint.Win.Spread.VerticalPosition.Nearest, FarPoint.Win.Spread.HorizontalPosition.Center); + + break; + + case Keys.End: + + timer1.Stop(); + m_rowidx = PlayList.ActiveSheet.RowCount - 1; + Cell_Color(PlayList.ActiveSheet, m_rowidx, 0); + PlayList.ShowActiveCell(FarPoint.Win.Spread.VerticalPosition.Nearest, FarPoint.Win.Spread.HorizontalPosition.Center); + + break; + case Keys.Down: + case Keys.Up: + case Keys.Right: + case Keys.Left: + case Keys.Control | Keys.Down: + case Keys.Control | Keys.Up: + case Keys.Control | Keys.Right: + case Keys.Control | Keys.Left: + // 방향키, 혹은 컨트롤키 + 방향키가 입력되었을때 + // 처리, 혹은 다른 메쏘드 호출을 여기에 적어주시면 됩니다. + break; + + case Keys.Control | Keys.X: + // 잘라내기 (Ctrl + X) + // 처리, 혹은 다른 메쏘드 호출을 여기에 적어주시면 됩니다. + break; + + case Keys.Control | Keys.C: + // 복사하기 (Ctrl + C) + // 처리, 혹은 다른 메쏘드 호출을 여기에 적어주시면 됩니다. + break; + + case Keys.Control | Keys.V: + // 붙여넣기 (Ctrl + V) + // 처리, 혹은 다른 메쏘드 호출을 여기에 적어주시면 됩니다. + break; + + default: + break; + } + return base.ProcessCmdKey(ref msg, keyData); + } + catch (Exception) + { + return false; + } + + } + + + private void PlayList_LeaveCell(object sender, LeaveCellEventArgs e) + { + //m_rowidx = e.NewRow; + //try + //{ + // if (!m_header) + // { + // string sdata = string.Empty; + // int tmp = 0; + + // if (m_rowidx == -1) m_rowidx = 0; + // if (PlayList.ActiveSheet.GetText(m_rowidx, 3) == "5단 표그래프") + // { + // m_cutindex = 1; + // sdata = PlayList.ActiveSheet.GetText(m_rowidx, 5); + + // if (sdata.Substring(0, sdata.IndexOf("/")) == sdata.Substring(sdata.IndexOf("/") + 1, sdata.Length - sdata.IndexOf("/") - 1)) + // { + // //마지막장 + // tmp = 0; + // } + // else + // { + // tmp = 1; + // } + // } + + // if (tmp == 0) + // { + // m_rowidx = e.NewRow; + // } + + + // if (m_newrow != e.NewRow) + // { + // m_oldrow = m_newrow; + // m_newrow = e.NewRow; + // } + // } + + //} + + //catch (Exception) + //{ + + //} + } + + private void timer2_Tick(object sender, EventArgs e) + { + Cell_Color1(PlayList.ActiveSheet, m_crow, 1, m_newrow, 0); + timer2.Stop(); + } + + private void listView1_SelectedIndexChanged(object sender, EventArgs e) + { + + } + + private void btnback_Click(object sender, EventArgs e) + { + //lblbackfile_full.Text = T2S_FOLDER_PATH + "Video\\1109_배경최종-1.vrv"; // 기본 + // lblbackfile_full.Text = T2S_FOLDER_PATH + @"..\배경\1109_배경최종-1.vrv"; // 기본 + // lblbackfile.Text = "1109_배경최종-1.vrv"; // 기본 + lblbackfile_full.Text = T2S_FOLDER_PATH + @"..\배경\기본.vrv"; // 기본 + lblbackfile.Text = "기본.vrv"; // 기본 + + + OpenFileDialog myopenFileDialog = new OpenFileDialog(); + myopenFileDialog.DefaultExt = "*.*"; + myopenFileDialog.InitialDirectory = T2S_FOLDER_PATH + @"..\배경\"; + myopenFileDialog.Filter = "vrv file (*.vrv)|*.vrv|jpg file (*.jpg)|*.jpg|png file (*.png)|*.png|ALL file(*.*)|*.*"; + myopenFileDialog.FilterIndex = 1; + myopenFileDialog.Multiselect = false; + myopenFileDialog.RestoreDirectory = true; + + if (myopenFileDialog.ShowDialog() == DialogResult.OK) + { + string strProgrampath = myopenFileDialog.FileName; + string strProgram = myopenFileDialog.SafeFileNames[0]; + + lblbackfile_full.Text = strProgrampath; + lblbackfile.Text = strProgram; + } + + + } + + private void ckback_CheckedChanged(object sender, EventArgs e) + { + if (ckback.Checked == true) + { + lblbackfile_full.Text = ""; // 배경없음 + lblbackfile.Text = ""; + + lblbackfile.Enabled = false; + btnback.Enabled = false; + } + else + { + lblbackfile_full.Text = T2S_FOLDER_PATH + @"..\배경\기본.vrv"; // 기본 + lblbackfile.Text = "기본.vrv"; // 기본 + + lblbackfile.Enabled = true; + btnback.Enabled = true; + } + } + } +} + diff --git a/MBN_STOCK_N/MainForm.resx b/MBN_STOCK_N/MainForm.resx new file mode 100644 index 0000000..8b8c57e --- /dev/null +++ b/MBN_STOCK_N/MainForm.resx @@ -0,0 +1,2449 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 333, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABF0RVh0VGl0 + bGUARG93bjtBcnJvdzu9/IJYAAACp0lEQVQ4T22TWUiUURTHb6ONCxnRi70E4TxoRpsxkEXooERglOLY + IpKhabZBhS3jMmNTLojjOmFhbhlSaQ+uoyYzTuKSqYT1Uqlj6piiZWpD5ij/7pkW5rMO/Lnnu+d3/txz + uR8DwFbFGi4Rl+MqOXBR7W/Yev8YqCv72S0uHg7K8p4WZUUfkstfIbGsB4ril7iUZ3jOa45ns/QsOoPS + VQbXi7rZ56UVStdevtsBngsUrmokUEyMXFFHnNDgamEnm1lcptTpYn47pheX0TppQesnC3q/LOJYUj2B + znyfhVyrIU5gQDOLuZy43OI0bZj6bkX9x3mbOqYsCL1RS+AGLpffnMjeQHw+14i4bCNis9pwJlMPs8WK + 6vezqH43C/3oAsJTmnFCqUNYkg7yhAZqchYYBMc/aXzWNYKRuR8YnV+yqeLNNCoGZqAbmuP6aqtV6j9g + 70ltE+9xsjcQSY/Ee0Uk1y487Z9C7otxaLvMuNcziftcBR0T0BjHUGAcRWBs+YLEN8qb9zjYG1CI/U8V + 3FQVd0LbPo6UxmEuE1R8VTUMI8cwhsjUJuwIUis4S3fwq9fOgB7JOr+o4t4ywxBu60xIrhuySc2NUqoG + sDtY08cZNy66dKGBLOYhLY7esgv7QuOrrKXdZiTUDiKxZhDZrSOQRZdYt0hP7ydm++EcYoUGByJLaKFT + uPgEZ+TSKOnNJqTyk0Smt8ArICmP11yJ2XpIQ6zQwDfiAXs9YaFUtN7dy10aph0uMpigrH6LbUGZJteN + kk1U6zN/Y54HM4gTGkiPF7J+XiSAh9jD95xcfuXxSmBM6crmPVFy2qMaSRKQRozQwCdUy3aFaNnOo/n0 + SaO4eQaqKz38FI8opz2JLI1JZKlM4n+HGKHBf4J+X3q2NDfl/wQA9hOAb7oFShk8ygAAAABJRU5ErkJg + gg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAA90RVh0VGl0 + bGUAVXA7QXJyb3c7yF4oFAAAAplJREFUOE99U/1LU2EUvtO0NKMg+g/Cn4roBxtYqVgtwz60VMoonJaZ + tYWarmlSJFE/WMtkzI9pmvn9OafOEMrJdIpUlIHmBxN104wM5/whRZ7ec9sdG0kHnnvPe87zPO+9576X + A8D9J0RObBq8VjBQlg9xCu0Ql1kyyGUUD1BJJC/sK4rJblNTHq1o5aIyW7izGc3c6bQG6nsaZJUO8rlz + LUrJ7wlVNX3eyNb0bUTKq8KoJvQjZPXE8TRI1wy4DCKkj/xkL41jlh8OjNuWEX23eWzfsWR/oS+5Wctr + eC1/YSEvNAm517Un3Xm6fgtG7ev4al/D664RnLhRmcd63sQJT64inqdB6gsj3UQXlTX772sH1+Yc6+hd + WEWPzYFp+29IH3asiWOfHiBOaGIlcT0NWNC0fRIevzWPTC/hvXUF7ZZlHoYZO4bHFhAiLTczjq+T+4+B + d3xua1qFYRQfvq+icXwJdaM/nViCyepAfoUZQXEF6Yy7hQTuBl4nk/L33lEZ7V+sdhSbbdAMzePVp0WU + M1CuMs5i2PILZ1KrVwJDZIGkcTfwicvRdZpG5lH3cRElAzYU9VuRq5/ioTFZoWFrrXkehv4pHIwq6GIa + X3eDrXG5BsTkdOGCsgPRCj3UTKRsn0S2bhLqvjlIbjXieGoDwlMaEJZcR6Jt7gZeVGDYzrD70oNulLHd + FK0TULRMoMA4x4T1RNzDEMDgz8B/UsGAO5elF/KAWPYkZWwOGc3jDN+g6p1FyHV+1x3ECU54Q7y/fMEg + Mr3NZXD+Xic/h+fvZng8YzgirXEZiK9ucpAksib2s+gp9Tt1u9YYyt7zaFItDifWIDihGofiS+mk+Ymv + VHFBlzc/SELQPOgddzLscoJyqlHPFQC4P9du1GjNaga9AAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAhdEVYdFRpdGxlAEFwcGx5O09LO0NoZWNrO0JhcnM7 + UmliYm9uO2RjyGgAAAGcSURBVFhHxZcxcsIwEEU5AVWO4z4dZ8gBcgZm6LhNWsrcIh0dV6B19nm0Hln5 + sleG4OINRvq7+7FXktn1fb8pcvCVjBdd1y2xNw7G2bgYV+Oe4Jox5tCgVTlGWgy8GZ/Gt9EHQUsMsSpn + 2MC78WWoIhGIJcef3BEDH8aPoRK3QA5yTfIvGSDgZqiEayDXxMScAW7ZM355CTnHx1EzQNM88syXIPfQ + mDUDdK4KXMNJjAE1pAHWbstSm+OUcqo5auyVATYQFdDKUDzlVPNwcE1ugF1MiVsYi6ecSgNn1+RitlIl + jjIpnnIqHVxck4vZz5UYag3lqOLHQpNzdV0ewKGixDY9zNdMtBaHu2vzoFkDSVOaWFMcpIHqI3BN0rmJ + tcVBPoJqE7om0z5SHGQTzi3Do+sUzBf6JeQyXNqIpAnGC10EuRFFtuKJCb4X8xGqWzFEDqPBBJ/FeJTq + YQTR43ht8cXjGDZ9IXE2fSVzCHjGnSDHpDhEDAC37JFXNGLH254TNQA0DZ3b8raElpih4RQtBpz//Wu2 + FXLwdfS7XxGwk2isBZLIAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAmdEVYdFRpdGxlAEZpbmQ7QmFycztSaWJib247U3Rh + bmRhcmQ7U2VhcmNou2WcCAAAALlJREFUOE+lktsRgjAQRaEdakgpFGEFoj3QBaM1+SNtxHuY3QyziegM + Hydk9j4gQJdzPsW2pJSgF6NYxGqwZ4ZWhWFbzHAT+QtofQyDF3AXjG8xicFgzwxtjGHwAh4V0xQNzExb + ogZu4ryYhmhgZtoaNXDT6YLTRzh6iczhIfAW9gW/PqNzFc0CL2n9SE/RLCkFR5j5LqoS9CoQwWjEkhm9 + GdojY7mKfcmLeRVoYWFnJiwuaM3A/+TuA3z+LAyTGFNzAAAAAElFTkSuQmCC + + + + 556, 17 + + + 710, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAALAAAAArCAIAAABXdJWJAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAABjJJREFUeF7tmD2u5UQQhVkKK2AFrIAVsIJZwWRkkCKREEI2GSIkmIAQEREyIQkS + IdJIDG8Ghnl8vuXXOj79Y7ffu/YD9VEFvtXV5erqU9Xt+97twIBgEGJggUGIgQUGIQYWGIQYWGAQYmCB + QYiBBQYhBhYYhBhYoEWIt7/8uEX++e3n3BglYspwq3j3+69//fD1n19+9Mcn76ugefPdp4zOdnd4++L5 + m++/UEluMdZ3NSQCTsjjfHfzMoZ4sKFcwjh/e66x9z5OtAjBltg+FeXmq49JihmjZKdfffaBKme/d2A7 + dbQouJ2tL4AQxh6cxNDfP32j+rYo1fI42bwYwkz1RXn97VMsmWKBEerNsyeqISfhNlHkoUSXU8SW4gys + HBmsVpdUlLROHkxpWx5mgdwzCWVW3i2S/wCL0dFECKABtMUyYnHq6GpVpPCMPeFEl5MsX33+YVLuEPwY + g4OUDdgqmD4PZFghhGWKUEI0oLROHkxZIwRFqXq86R5A51obAA1CMDHCM8lJZv3c2Ilm9ng5Ncybbaf2 + MNWHE+yThucw62pmubBknKumscEBe6P1XUUfIWZtZZ25sjbdcpofrmyYck4XbLlQQtRg/IMfpjFRQuTQ + ZU7GL57PA5sJAXR1vRJLthxqGDns8GrcZk4ghLVWYg29oVa1OwhhHYJyQdno221C6EQrzaRH2oTID/WQ + ZBxioyFxY7DcNk4NmpxaEv88UMK1CMEeELptapihV2WtfdmrmRV6n75GCEpH7VM68EPAIV5tdUIYmy14 + HQonmhOew6yBZBwya0uwSJD43smx/bwA1yJEUcIMqLJGWCvrKAvQRQhyZM252Fpr5MthyU1RBXTo2oQA + xc6Xw/bFYjacQwg70nLO2hmvqdxOCNhgKUsv2n2H0DXS/2whKgcQwrNUOnytkZCQeaCCaxGCuuSnteIw + A0RphctiqF305NEOGkQvQRsJgStjg56yU+fov0NYcvlJYKpROYAQFg+SnxpGGn7OAxWccKkMkMotN21s + rMlvIQRTzHluhg1Bhmy8QyhTU7PBc/KTRpEDCAHspfmpUTt5aziNEAA6581AhdF8AUYISwGjliN+Nr6y + AhZnkRBWjiQ6L0c1OIYQdqexE8Firn3QKc4kRIC0UqxYUnPMggQ8T8dH5c6shNDLB83QCn06hiq1btA4 + a5fc/LqApVFNR48hBFmyKVpClv/arVNxPiF6MREoPseFMWSBDeOlDT5hwyxGk0xOLukjU8yd5NmTYjvB + YVrF9Iq7f4I5mDTLyQY5hhDAmKq3BKuQWo0pzieEBd0rvGJ2VAFbzv413sIQBlpYBvKYbiSxLjR6NrMl + keukQQ4jRO3UsAsvQYa+jT5CsMiQRTruRwi7BvdKmxAWQFuKrnTveUhFZumO7c81BxCCkGxWkDu1sRCa + XNi30UeIotyTEEDp1SsNQlgvRWgGcaYgPORtA+U8+QJlgw0BXd2JhADEprPiaqWro8OF5SpWCMGqktOa + pEN0NyG6YCHVCGH1QUaKn+B5f0oOqbNgA3Nr5ZWWfC4h9IqDQAXT5GyuYYUQANe1Cp5OX9mPHYSgBLHp + Eq+GSp9XGyS2pwg7g9n+OBdoMCwc//GzCIbienEuIUCEkcS2rLF8wzohtmMHIYCVcq8U6571qw3ZmQcq + 2J0+wGWC6XFs504OI4TViQp1OxttwPmEADqxS1I1G4wQcaY2YNnsIoQid3IYIeyMUFldvuIxEoLtYeIW + qX0rGiFWS0TvX0jxr4gtUCcHEwLYKpJ0LecxEmJ3gSosO41blbWHrgZrUD/HE6J4+K4el4b/docImb0s + kbdQ3mJUw8ZejdyHjrmfPCdtJOOQWbsN9tdISPGO1cDVCHH5X4zdShokzHKYWa/MXjLY50MI1w7izHkQ + ov9D74C6ygnR6FIJyRgh1Fm7GdYXpztW/R/YIq5FiEiH7nTjajN9vFXOvy0yeymBoqntvQlmu68OCcnb + 9N0R367y9i3+o+eF7OhV9Dz1sGNFD0kIysviYEmhWa080pem98rsog7igY5FZqBk6P5UCEQ8dOn07ZMW + 1VupZ+EhCTHwP8AgxMACgxADCwxCDCwwCDGwwCDEwAKDEAOC29t/AVssp09MaMDqAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAALAAAAArCAIAAABXdJWJAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAABjJJREFUeF7tmD2u5UQQhVkKK2AFrIAVsIJZwWRkkCKREEI2GSIkmIAQEREyIQkS + IdJIDG8Ghnl8vuXXOj79Y7ffu/YD9VEFvtXV5erqU9Xt+97twIBgEGJggUGIgQUGIQYWGIQYWGAQYmCB + QYiBBQYhBhYYhBhYoEWIt7/8uEX++e3n3BglYspwq3j3+69//fD1n19+9Mcn76ugefPdp4zOdnd4++L5 + m++/UEluMdZ3NSQCTsjjfHfzMoZ4sKFcwjh/e66x9z5OtAjBltg+FeXmq49JihmjZKdfffaBKme/d2A7 + dbQouJ2tL4AQxh6cxNDfP32j+rYo1fI42bwYwkz1RXn97VMsmWKBEerNsyeqISfhNlHkoUSXU8SW4gys + HBmsVpdUlLROHkxpWx5mgdwzCWVW3i2S/wCL0dFECKABtMUyYnHq6GpVpPCMPeFEl5MsX33+YVLuEPwY + g4OUDdgqmD4PZFghhGWKUEI0oLROHkxZIwRFqXq86R5A51obAA1CMDHCM8lJZv3c2Ilm9ng5Ncybbaf2 + MNWHE+yThucw62pmubBknKumscEBe6P1XUUfIWZtZZ25sjbdcpofrmyYck4XbLlQQtRg/IMfpjFRQuTQ + ZU7GL57PA5sJAXR1vRJLthxqGDns8GrcZk4ghLVWYg29oVa1OwhhHYJyQdno221C6EQrzaRH2oTID/WQ + ZBxioyFxY7DcNk4NmpxaEv88UMK1CMEeELptapihV2WtfdmrmRV6n75GCEpH7VM68EPAIV5tdUIYmy14 + HQonmhOew6yBZBwya0uwSJD43smx/bwA1yJEUcIMqLJGWCvrKAvQRQhyZM252Fpr5MthyU1RBXTo2oQA + xc6Xw/bFYjacQwg70nLO2hmvqdxOCNhgKUsv2n2H0DXS/2whKgcQwrNUOnytkZCQeaCCaxGCuuSnteIw + A0RphctiqF305NEOGkQvQRsJgStjg56yU+fov0NYcvlJYKpROYAQFg+SnxpGGn7OAxWccKkMkMotN21s + rMlvIQRTzHluhg1Bhmy8QyhTU7PBc/KTRpEDCAHspfmpUTt5aziNEAA6581AhdF8AUYISwGjliN+Nr6y + AhZnkRBWjiQ6L0c1OIYQdqexE8Firn3QKc4kRIC0UqxYUnPMggQ8T8dH5c6shNDLB83QCn06hiq1btA4 + a5fc/LqApVFNR48hBFmyKVpClv/arVNxPiF6MREoPseFMWSBDeOlDT5hwyxGk0xOLukjU8yd5NmTYjvB + YVrF9Iq7f4I5mDTLyQY5hhDAmKq3BKuQWo0pzieEBd0rvGJ2VAFbzv413sIQBlpYBvKYbiSxLjR6NrMl + keukQQ4jRO3UsAsvQYa+jT5CsMiQRTruRwi7BvdKmxAWQFuKrnTveUhFZumO7c81BxCCkGxWkDu1sRCa + XNi30UeIotyTEEDp1SsNQlgvRWgGcaYgPORtA+U8+QJlgw0BXd2JhADEprPiaqWro8OF5SpWCMGqktOa + pEN0NyG6YCHVCGH1QUaKn+B5f0oOqbNgA3Nr5ZWWfC4h9IqDQAXT5GyuYYUQANe1Cp5OX9mPHYSgBLHp + Eq+GSp9XGyS2pwg7g9n+OBdoMCwc//GzCIbienEuIUCEkcS2rLF8wzohtmMHIYCVcq8U6571qw3ZmQcq + 2J0+wGWC6XFs504OI4TViQp1OxttwPmEADqxS1I1G4wQcaY2YNnsIoQid3IYIeyMUFldvuIxEoLtYeIW + qX0rGiFWS0TvX0jxr4gtUCcHEwLYKpJ0LecxEmJ3gSosO41blbWHrgZrUD/HE6J4+K4el4b/docImb0s + kbdQ3mJUw8ZejdyHjrmfPCdtJOOQWbsN9tdISPGO1cDVCHH5X4zdShokzHKYWa/MXjLY50MI1w7izHkQ + ov9D74C6ygnR6FIJyRgh1Fm7GdYXpztW/R/YIq5FiEiH7nTjajN9vFXOvy0yeymBoqntvQlmu68OCcnb + 9N0R367y9i3+o+eF7OhV9Dz1sGNFD0kIysviYEmhWa080pem98rsog7igY5FZqBk6P5UCEQ8dOn07ZMW + 1VupZ+EhCTHwP8AgxMACgxADCwxCDCwwCDGwwCDEwAKDEAOC29t/AVssp09MaMDqAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAbdEVYdFRpdGxlAE5leHQ7UGxheTtBcnJvdztSaWdo + dBbkDq4AAAEMSURBVFhHxc5RCoNAEINhD+bZCj35NlNq0fhH52l9+BDCmswyxngUhjNhOBOGM2GYrOv6 + kvq2UIfDMFHpkPYR1OEwTFRaB7SPoA6HYaLS7YDWEdThMExUuj/g9gjqcBgmKvUDLo+gDodholI6oOAR + 1OEwTFRK45vTEdThMExUSsN7hyOow2GY/Ebu/I+gDodhshu58z2COhyGiY3ceVGHwzCBkSuPHvCm/wmG + CQyRt9Rb7HAYJruR5D9eqMNhmPxGksN4oQ6HYaJSGi6n8UIdDsNEpe3xQh0Ow0Sl7fFCHQ7DRKXt8UId + DsNEpe3xQh0Ow0Sl7fFCHQ7DRKXt8UIdDsOZMJwJw5kwnGcsH6Xr9B50tObAAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAjdEVYdFRpdGxlAENhbmNlbDtTdG9wO0V4aXQ7QmFy + cztSaWJib247TJaWsgAAAWZJREFUWEfNlzFSAzEMRXOCVBxnC6jocgYOwBmYocttaFNyBwq6dFwhrdHL + RDu75turZUJE8SYZW/r6sWXvZlNKSUUO3pLxyzAMS2yNnbE3DsbROF3gO2PMEUOs0hhZY+DOeDbejRKE + WHLIVZphA4/Gm6GKRCAXjR/aEQNPxqehhNeABloz/SUDJHwZSvA3oDUz0TPAkl3jl9egOW5HywBN09vz + DzFW04tB+9yYLQN0rkqEV4MYPtU8RGKoIQ1wdltHzYUdVSASA9TYKgNcICqBJZ0KO9MCdXGntR07ZYBb + TAXDi1GLw8MFNUeO0oK9MsBVqoKdlglFrzgclAHucxU8JWJiqTgclQEeKiq45t6oizrMqZya0780kL4F + 6U2YfgzTL6L0qxhSH0aQ/jiG1BcSJ/WVzCHhGiuBxqw4RAwAS9briSXIHZd9StQA0DR0buuIKogl59xw + ijUGnL/9a5aFHLwdZfMNDdjaS8JHZRQAAAAASUVORK5CYII= + + + + 159, 17 + + + 246, 17 + + + 469, 17 + + + 864, 17 + + + 50 + + + + AAABAAYAEBAAAAEAIABoBAAAZgAAAAAAAAABACAAEHMAAM4EAAAwMAAAAQAgAKglAADedwAAICAAAAEA + IACoEAAAhp0AAICAAAABACAAKAgBAC6uAABAQAAAAQAgAChCAABWtgEAKAAAABAAAAAgAAAAAQAgAAAA + AAAABAAAEgsAABILAAAAAAAAAAAAAP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wAAAAAAFxcXIxsbGyYgICAlJCQkJx0dHf8rKyshLi4uITEx + MSIdHR3/NjY2ITc3NyE4ODgzHR0d/zc3N1E5OTlBAAAAAB0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0d + Hf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/wAAAAAdHR3/EXzn/xF96P8Rfuj/DFql/xF/ + 6P8Rf+j/EX/o/wxapv8Rfej/EHvn/xB65v8LVKL/D3bl/w9z5P8cHBxAHR0d/xB41/8Redj/EXrZ/wxa + nv8Re9n/EXva/xF72f8MWp//EHnY/xB42P8Qdtf/C1Oa/w9x1f9ImsH/HR0d/x0dHf8Oabb/D2u4/w9s + uP8LUYr/D226/w9tuv8Pbbr/C1GL/xRus/8UbbL/Dmi3/wpLhv8qdbH/UqeB/wAAAAAdHR3/E43u/xSP + 7v8UkO//D262/xSQ7/8UkO//FJDv/xRytP84lXH/fMDA/xiN5/8Sa6//QZx7/yyOY/84ODhAHR0d/xJ/ + 0f8TgNL/FIHT/xBlpP8VgtP/FYLU/xmG0f9eqpb/Lo9k/yyOY/9WqZb/XKWo/yuOYv8rjmL/HR0d/x0d + Hf8yibH/F3rF/ySFnP8zkGv/I4Sa/x5+wP9cqJX/NZVr/zGRZv82lGr/K45i/yuOYv8rjmL/YaSE/wAA + AAAdHR3/Rp54/0up1/9JoIP/K45i/zGRaP9Hn4L/NJRp/y+RZv+fx7T/9+np/0OZcv8sjmP/Z6uL//bm + 5P9QUFBAHR0d/zSUaf86l27/LI5j/zSSaP8sjmP/LI5j/y+QZf+CrJn/4tbY/+HW1//g1db/jqaZ/9/S + 0v/d0M//HR0d/x0dHf8vkGX/LpBl/zCQZf+3tbP/vc/F/zqWbv+Xwq//xb3C/+PY3P/i2Nv/4tfZ/8K5 + vf/f09T/3tHR/wAAAAAdHR3/Lo9k/yqNYf8pjWD/c6+V/+zm5v/W3tn/+e3y/9DIz//57vT/+e7z//jt + 8v/Ox8z/+Ovt//fq6/9kZGRAHR0d/yuOYv8rjmL/K45i/y6OY/9Sn33/8ufs//Lo7v/Ox87/8unw//Lo + 7//x5+z/zsXL/+/j5v/u4eP/HR0d/x0dHf/czs3/08rP/9TL0P/Lw8n/1c3T/9XO1P/WztX/zcbN/9XO + 1f/VztX/1c3U/8zFy//Ty9D/0snP/wAAAAAdHR3/9ufmv/fp6b/36uy/39TXv/nu87/57/a/+vH5v9jR + 2dn78/2/+vL7v/rw+L/c09i/+O3xv/jr7r///wAAgAAAAIAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAA + AACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAiVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABc + cqhmAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAABIAAAASABGyWs+AAByTklEQVR42u29eZwdR3ku + /NScM2ebRbNrZrSMNJKtzZY3vEg2XmXjgG3ABnIDwZgkfIQbEi7JDblfEgyYwL3fzb2YLQnJvcFgG0Mw + tsEbtvEiMJZkyZJmJGu1LWk0MxrNrlnOnHVOfX/0cqq7q6qr+/QsQvPq15pzaq/qfp5637eq6xBKKXhC + CEFQ8oUvfOHLAL5klEkIAfuZF/baa6/htddeY4vZmslkbgisUQuyIOeosJgvm80K2YpVwxZkQRZk5mRW + CMAuPIAvgH9BFmT2ZdYIYGHGX5AFmX+yYAIsyIKcwxKei0oppQ4noz3MTgLXXb9lxQM/ePTLAGB3TxJO + ILEFEMLJYy9HKQ2RpyFA/+k+R/rKykpUVlSaGQi3DMMJyqnX9oXbNmka4r0cW1uzuSxGR0cdaWpr6xAt + jwCysgRCpeHUTEBleam4PMoJpLaU9jSDQ4NIZzJanP4cRqJRNDU0SdtNqagGfj3CPsn6wzOfBe14++2j + ZljB6Eek7ASAHxjhs0YABsBZoMvC7HLxxe9aAeBLgbUH7g9nYP02KpxTmcEeU3Hpslqpx3CVHgaZZrY1 + 0ZmqzVbuVswFATgaJdECfqdNAAUcUsrXAua8yZQDCt4Uy8kPpttqd5dKE5b2hFDX6KCfQeXSZuLRl/Rl + TnwAZ4vd73smmoW+BDLbUZc0ngBIXeujCm3iKc/BtVFNKK/+IG7pHDzibs/irK8C8MJ4hHC2iFCNpdRH + XxTTB6XrBpWVsX1LuXsW8Af1GLhP9u5pFO7jfHxsTXxJBmTW9wHIZvyStIF5eAOMvmj9mQ8N9A9QkcPK + vFc2EvBHfU7wS51/LmGlyoySeFBtLDH1vDUBvAz8fIBWKe0L2nkVaPtsYDRAYV7ctEU4U5eiKbyBX7Xh + YpJQ81fwfR3ByQwrccqlnTMmgEqxQVU9n8wYvyDy0gMHCVDLBwvQraC3plMBv6fZP0BGpLYW+yhiDmWO + nYCWpsyUCTDL7ZemgVN95K4JS+txr2Q2wG3PoAxMBxEILicjqNXhsRMqa+6ifPP5eSxV5q0JcNaKXXM0 + iICK08xg9WopqMLMSpm0totNIiQCuRrg2n4R+L0B2/vAO+4dN41LvELVSlqFD2ekm9fnrDQBfkeownPv + fPVbBdyqrfGwSOHVhJDl8RruuV+2MAo6Nw7AwP0MYswZItwI9KlPfep+QsjFgNr7+7I4SukK2e4/tnFB + bQSioI7twLzxVtmq6jWN0X7L1uYA6gkuHycXBShR2M3noUJ7n71tBBKk9THbCp1/PhoShP0/VxOY9lxa + b55sJ+DFAK5nM8sA67a3X5TeHva7tBuQRwSWeMix5LojUFAAL7iUMFkFjpUAl2yexk8SEPRSoJspUdoO + h2DaU0p/RXgqU8mkarMHkX7GRy2IahSMPupI72VZKXgzQCnQZVnNsgxYkDs5SxX+yoJCXQqzv4pNbqZ1 + MQWCsP9nWmTtL/OSaT4TgpoTJZg0MyUzbeMrhamsLggye7X9ecU5ylDkTeohrXJbKIc4VAfDY10ztRvR + LZ/ry0CqNrtXG9/NBLDLmdERHD/2tvm9jJOGEKsRS2D1TWifYQkjnDJEarelHMfrxsWQvtOn9Fdti2GT + kxMYrxx3fR23WIezzXDEWMtReVWZM2pCld8ens1mMTI64ojLZrMoLy+HH1Ele5mpYQCID1jbClQxSFju + 4NAg0um0JV00GkUqleJsWDPMA6euYZbNBBZEE59LmwqFgqNvbpvnjp845girqakGcJH5XUoAMwFwt/Sq + IiyPecoNR6AoLQCAEFcHnv+44o1kVUkzDcfxxt4wL74D7UGTg4mAcBx9YncpNfPpnnFQC5BMp55HtcnT + Lk8XH4MJBIHqL92LIWiHSDsVg1+t3TKt12s+OMhOIQ3HFBUSwFzM+GwYdemg8cA76tR1WBWnpFs4IAE7 + 4c+dRtv5YHMv29IT2z0Vpld0BoqBJ1kzkTRR2flXAkFQSRoqSFScHfl+DlH5lnayzj9K+Utq7OYIUV+p + IFxxXIRkpJCPupQDKOwDmC0bX8X+V1nXdBtwlXDLcyCZJWS3gbtXHs4HTmW9mVJn+gKXJHlj5gyQqtIe + 0rP5RP3ypOIzYybyJzjGlfLjeY4/2e5M7nNh7HriCE+VL7g8W65kI1Dp3fbJOCZHjqYiklk3AfzY/+xA + UeKcq0QzKr+NWkGBaQP64BOQ4oxL+Q+fuE/WPMV6BFM7p232pPY9CO7LfVoIt0a9jRS2h01XgXlkp2LQ + eXGyOYDLA76gJJGZIGqDSe5uwGViqeI9dwujiumK6aklIx/8lPlslVk3AURx9jLtEovFUVtbb3PyCZxo + Hs4HFDsDnWNCbJGEk5BAc/jZM1VVVaO6upoJsnaEiOpiIl3PChSUxU0nTEuE6TPZDDL6WXlsfFVVFaLR + KFzFo6Nc6WAOy/PPB4iCCW3Jnc1kNCcgEx6LRlFTU2urRUASEJOUW39UnHtFw8NGxrayRs+csbaWAolE + zJJmxlcBvM74olk4Hk+gtraOA27Od48HhHLLUQEb+J738bExSwABUF1djerqRfyypAeFFr+VQgCitPx+ + 8UkgkykSABtfXVWtRgA+hQq/2IMoP45KyuOkTaVSiESK/aGU6hOQTgAc+4MKypLVqdI2/qzPKYtTztDw + oCWsUKCIRKxW/4xvBPITN9O7AGdyP4BDTVbN5B4knbXYAGUbnwrChfOp2UH7xxkRS/lin55wxCg/WDw2 + Qn8CGyZrg/d6ZeUo51N6nj06Af06/YKIkzXYdcNEKSPpNoie0haXzZScc9LyvXdIOYeUBPhLUuZOwILV + aReUqADf2mZ18Ks6St1RVVqPZ5MktHvGj5OZAB1G5gBs/BUAVojy8cwEUedn6rBcv2Wr7GGQ3QBZA7jO + O+o0BRzp9AA15588PfQlQmm79Yu6bViSFCEPEEVTcbwi+EWRXG+Cz9nf/8zuL6fb6gYrQgJ44IEHPu+z + 3Q757Gc/+2VK6ZdU7X9PG0Wg8rae+5uB3HyUb3f7aRNVTOe3pyISUC7JhQSMFQJpK+wPvpexU1FjXTJQ + SVludr+0XgeBBzD7e+++oG3ydrvJvDsQJDD73/WmBlcsdzeXnwqoYEbx23Yv/gAmUDyvFs0Cc7lM+gR6 + uOBeDO+boz8BgN/0srv0r6TZfw58BLz+zKsDQZRBo6wiemxjkP0FYy9TsWvQry9AySGoBwZHAkafCq4b + dgIbQ8E3bj+8gl8YLttCHHxvVSaVUsqSlTfnZwJ62bEn66D7wPgcUK+2pLgBvtN5eQD9PfCcQOoGbusU + HhQZWMuRl2rGuK4QCMI92OqUQ0eOvArlBemkVp4vJQnn1ARQXV50Ld9zhFFn8H10q95vmBdTQORUkwHC + TRug0vxi2Hq9VOwCS6zqGNjDFcFvaHKytEHrBKrPkt+yWJnTHwcVxSmRgIsHzZuDTZ7PqzOQbb+lr6qN + ck1XTCBqm8gpKCta6ByEkVd7B8H9oDWeqLhF3YfFLTtVya8Ifuvefm92p+rsH7TZafmusPo0qyaAivNP + 6Q0p3wMU3HCr2m3GSztujxJv1pbPNHJ/gKhMUf2ytpkR1PHR44j5MxQcM36A4Oem1V+24pVckuPPp3jR + /tz6NSdOQLe3nILw/AdpBsyUU8tP4TNCAtQdLK5E4OojKH2YHDY+lad1HUPFey0CXCmqv7KPIEC71PLC + 4Vw7Ab36AWaUFHy1X6187vZRTkZVLSCIfonsexXgiNRu625AkT2v3j5HXoWCVOrx4yS0pxKeLcAppBS/ + j0LxWpjHvsxbJ6AsjdLA+FGDwKt7ZvpsIQMv/bIFUMUcbkvyokAVEBlpuOQsQL+6408U6N4e1zTUW372 + RR9juZNXjGfVX9H0CFrEy5mazMt9AEGvgfojCl4fFIvmbQziZFRuVgD+AHFb1YfI08yuin4Phaom9ary + 28dOdnCI6lhZ0vpU/Ut5BilVK3PWVgHYjop+B0B2KEiKDqJ7uJNfKOF+lIQRT6/RWpIpvJLbP9nnCEyi + CmP5KuEruTWJxahJNGtjJOiHPdz6vfhNtmrBLdt48IWvB3OTz4p4Bpskkwr47SntZYrqKEXNnw2h0AnB + RgqzQgB+Qc9KX+FV/HhbhyVMnkMBzsR3Ts8pZRIrr8Tnbn3YOmZQW8YLjARsdYh6J5pVZHm8iB/QUIUC + SgG/Q4MrQfWfrdlfpQ5gDvcBuB0YYm8wIfyZXCiKB3q4ljPDEiuvxN3X/m/EyiudYwa1F3xkJGCMHS8P + t+dMhB9Qz5l24NNhKgO/ygk+0rZ5IYoZFJlJPacagCyNU7QDwG7c8J9w4/rfZ/bXW/fam5+pcWin6DMU + 0rAHOvLC7fUbGy9s4Uy+TC6FZ/Z8HyOTpxErr8Dd1/xvLF60SjwrOwYT3NOGRSSg9dOnNqAPO7UFzbWo + AN+tvU5MFAMKVB38par+Mz37i86jMGTWNQBemPJOQGL82IaGAEr1oziJYdtQPZx54NknnBItLfT03DTQ + MpvlGcd86/UbDjmjHjOwmN4yddrKfnbvAxiZPA0AuOPSL2DxolVC9d7eNDYwaBIAXIiA/ToTyyYuQl0D + lKLMsRDlEALa6/Zcn6p/kKJysOhZ4wTU5n+i/3JPGU6NvI1Hd3wL1pvHdI6KwthlHad/11Ia5cQ5pgLq + /MZ4im67/E+wKFEPgGLroZ9heOI0AII7Lv2vWNOy2do2j447NRIAVPwCztSCBAXqSDBTj7EX0Ku2ww/4 + aYEqAdoML0H1D9z2dySw3rx55QSUOwPZc3IJ8jSHoWQ3zkwMe22N85PrHaLib5JCbr/iU6itaAQFxdYD + P8NbfXtACHDzBZ/BxuW3cKtR+olul/TOtGp+AXtPVA/+EC1p+j4RyDXCezLqwib2b6bq7GEp0ZOPIMAX + fnx03pR55QRk0zoGiECf/fULBIl4BUCAsYkRbn18Ic5PDk+b7ZPtaBvLDEuMT9Y0t1z8MVy04t2goNh/ + 8rc42rcbALBx+S24YtUHzfJVQe01vRPE6iaBuAxJSvtwE48PtI+nXzWLN/CjuO3XK/gVwz2deFXq7D8f + 3gYMwglo/tAnCAjK9DQEiVglCCE4M27VBLz81qD1hsgIwkYOlJMWFBetuBZXnX8rKCiO9O7G9iNPg4Dg + wuU34/ZL/qu1bngAO+QkAHg3CbSxchkf86+HLdozNJ15c7DJc3uz4ak7yGdB9fck82kjUCBOQABAUQMw + ykvEKgEQjE0MW3qoqmSpHOpp1A32k40YKICLV1yHO674NEApDp/aiVcO/gdAgOX1G3HbxX/FLx8cJYR4 + JwF1R6JTG9DGAa7Cp8qZFa844D8+7uDnAdmN8LyCv1TVX332FzgAz1YnIFA0AcCA35CKeCUIAc6Mj5jD + 5LpvgFr+CIdYeEqxjRhWNq3HB678DCilGJzsxWtHngRAUBNbgi3n/4Wl/46yMPMkYB0BTogHImBLoBC3 + 04/4nfj8At8Srqv/nl5LLwH8XvpSikIgWg6cl05A7kAx+jghZYwZUJRErBIETnNAOHhEixFZ+E6CsJbC + 1t9c04Y/uOavQEAwNNmLX+z6Z2TzKdTGluD6tr9AJJRwjAevjTNJAvw86kQg3F/OJdLZExXgy9pHxR/E + daon1dtI5eW49ke977wfCxUVOW+cgHZQOAfMXAjU196JGc7a6ol4JcDzCQhp2jknWqq0EISVHIz0zbVt + +OQNX0K0PI5MbgpP7PonZKbTKA8lsGnZp1AeigvHwxGOgEgAcr+AM1xMBIC/49FnUsQgKQX4avXJ8pWq + zntJq0IU8+JIMK8rAMJ9AMS4rD6AYgpNKmKVIICNBIh1ILlbhXl32ZbPDNaIIRapwJ1XfhbxSCUyuSQe + 3/VdZPIplIfiuHb5Z5EI13J/ytvbAMKVBLhd8pVPEGqoxghO1fc8DF68dpADTBX8xftGXfMFYfeX6viz + 7GThvMpsL37ODgSRxfFNAE0DAFj1n9UKDJLQWCIRr0LtogaWNQBmCdGSh1eSIx/zVU8bj1Tij2/8Clpr + VyKbT+OxXd/G0EQPCAiuW/5Z1ESXKI2J8yaKA90e6v6xY/jui/fg6OntxUAGvKJ8VBjqJEXKj50RMfxW + YjXf2QqlvgoSUbNOycEuJYJf1ldRm1XSuh15x3MCzvqx4PaBUT0LoAhwRgNAEfAmUJm0iVgVaqsbHEC3 + FSYhCSs5wEYOf3zTfWipbQcBwQv7H8LgeC8Agsua/wCLbOD3+oD4IYH+sWN4eNvfYGxqAI/u/Cr2db+o + nNeIo9KY4iEn1gvcS/1ZgIcyxNTjRkhus77I1+OWN5B769Zmn2LqL3P5NqAfJyC/wczszQCejbd/rIhr + jsHRiSFzRAQ+fesnYivP+KZPH3dd9edorWkHBcVz+3+IYwOdIAS4dePnEU0ts7TffNsR/LqV/QFMoD2u + f/wYfrTtb5DOJ813EJ7a+w0AwMZlWyxddHvvX77Up74QGNxWd8WlOLd4DzOsPZ4K2CUo8Hvx+ivN/oqr + GfPmTED304Ds292IY1Z2+Aj0uES8UtcEmJ2ERV3eqg2wJMMxFUCAD131OVy2cgsIKcPz+x/Ewd4dAAg2 + n/cxXLB0i+MmuR3LJOs397lj1HpAA/8j2/4bMvkpRMMx3LzxY6irXAxCgKc7vmHVBGz5lR5+YToquPyK + enkqtbmp+1DIX6CU+y6ALG8Q4EcpaQ2iV/A9zIsfBlEhAROAtkAW8PZULNgr4po5YM3O+edCDlsu/Cgu + a98CEIIDPdtwoGcbAGDD0i3YfN5HlW6WH3tRpA33j2ngT+eSiIRjuHnjH6J5URtu3vgx1FY0AyB4uuN+ + JwkYhVJ16JqAsF3Cgj1f8rq9tFMF+DJAmo5b6jVvMOBXtfu1tGpORp5GcBZpAAALcKtdDue7AsSuvmsk + ULeo0aYFWDx7lvT2f+9q34KbL/woiA7+5/b/AIQQXLB0C27d+F8sN6R45oDopsnHSSXPwPgxPLL9/0Um + r4H/PRd9HPWVLSCkDJFwHDdv/ChqKxYDgJgEjIKp46O0HUHO+yrle8njlqkUk0GqMcwg+MVtpUqZRWQ9 + Jz8M4uvwT+cE73g5yJqcP6Mn4lWorW7kFGtNbyUI4LL2Lfjwps+DgKB7+Ah+ue/7AIDG6na8Rwe/vTcG + EYgGvxQSGBg/hkd2GOCP49aLP4G6yhZk8im8sPdhZPNpRMvjjDlA8EznN7Gv50VIC/eoFQiyl3T5qc8S + 4JLerUz7zTG1HVm+GQa/F6+/4zmUtH3WTADpQ80hBt5GICvMOYDn2few2/VARaLSogmwKj7P8bekdhXu + uOzTICAYmOjGE7u/A4CgsbodH7ni69LBN8KEN9ZlTHjSP34Mj+z4W2R0tf/Wi+7RZn4QbN3/OA6cfB2P + vvZtZHJpRMtjujmgaQLPdHwT+3pecgcaRysonmtkb2eQ879as6gwwNv4O9Kw/WaewyDBL2sDv3z1Anjg + l8m8+XVgP1qBY4bXQ+2AJ/YlPxg+gUZYFvhYn4J+tdatwp9u+Z9IRKowONGNH2//H8jkU1gUb8KHr/g6 + ouUVHvouCJeMlX08BsaP4Sc7/hbZfBLRcBzvvfiPUF+lgf/5vQ/hYPcOEBAMjvXi0de+jWwu4zAHnum4 + H/t1EnAFh216NtpU0K+ZhD9XO/CgLngCPnMj7MAPGvxBOP1EXn9e26g1mUXmhQmg5AQktpdyRDM8cQKe + u6ZPCCoSuk+AsyUIIKiraMZnbvpHxCNVyORT+Nkb30I6P4VouAK3X/p3iIYr+KqZxEHmx+4zyhkYP46f + vP63ps3/3kv+WAd/GZ7b+yDePKmtRhjO0aFxgwTSOgl8DHWVzSAgeLbjm9jf85KlfqXnUgBAvyq9az6P + 9oFXv4Gs8273JEjwz4Tdb4+aFxuBSloGtPwFf4Z3LN0JdvXp8U7HoJYsEanEPdd9GYloFbL5FB7e9jWM + TQ0hGq7Eh674OhqrVir31+5N9vMQDIwfw3+8/rfI5qYQDcfxvks+hYbKVg38e36IN0/usOxSND4Njvfg + 0W3fxkRqFNFwHFsu/ChqKxcDBHi200oCRhs8zerGMyVBvmeQe2yE1zarOAuts6Y1oefVGjOftzyl2P3O + svgp5tWPg8p9AIBjIZA7w4vB7tAF9MiiJgBLnGXbsF5ONp/E4MRx1xvlPiaCcE7YwMRx/Mfrf6fN/OVx + 3HbJ/4OGylaAEPxyzw/w5sltjr6zZDA41ouHt/5/GBzvRTQcx80XGj4Bgmc7v+UgAbYt7KNPmXsjXwbk + FBCE10/SNi953IBf7K/zGJC5BL+oAJl/yXKPOAnn7KfBvG8FLj7UxTDDCuA/+DywW2x8Jo2mCTSZcelc + Et978a/Rd+a4dnb/5i9h8aIVACH41ZvfxsFTLwtvmKofQ+WhGJg4jp/u/Htk8lOIhBO4/ZJPo6GqFYQQ + /HL3A9h/cht3KzRsZJDNpfCz176NofFTiJRrJLCs/nwQAL/s/BbeFJAAr01zIaVwhlfggwd8zD34var+ + lvZSfp458QHYv6u9DGT9SyyzNA/wcGwUsuwbMIpjNwvpmoAhqVwS//LSX6PvzDHEIxW4e/O9aK5uAwHw + 4pvfxiEXErBcItVN8nAMTBzHozv/HtlcErFwHO+/tAj+Z3c/gP3d2yzOTr1DtnGBORCZfBqPbvsWhsZ6 + ES2P47p1d6F98YWaObDPnQSk9xbBkUQQSgLXcShJKy3LbRVLmG/mwU+5afkBvOdw1pcBSzsL3bbTzyPg + 7Wv8zv33BBXxatQbmgAI0tkkvvfSX+PU6HHEI5X4+OZ7NU0ABL968ztSElAfH2fY4MRxPLrzi9r23vIE + 7rj0M2ioWgqCMjyz+/vYf/I1cxXEcISokEEml8aj276NwbFTIIRg0/m3ob1pIwCCZ/d9G2/2vKzcTvZl + IDMsgMuvCH0LLunF/WXNHOopv5tl5CWPX7vf3heeCF8Guuuuu+4BsMIASYl/r5M1TP13AYC+M8csgUW7 + 3Snys/6sB4mwUpGoAgjByNgAAE0T+N7Lf43P3PiPaKltx92b78WD2+5D/3gXfnXgOwCAda03Mn0C9wAN + KmypNc/gxHH8bOcXzaW+91/6n9FQ1QpKKZ7e83+w/+RremLNAAyVhVEoTOsvCWm1EAYFVBsMratUNwe2 + fQsf3vw5NCxags3n3wYC4NjAfvxy37cwMH4MN6z/E+7IzvSPWXgV6hqgkIcT73fWB2YB/C52vyOtpEFC + AqCUfoIQcn0QZ/qrnP7j/jagNpul80kmxKnO80UMdt7GHwCojGu/5DsyNggASGeT+JeX/xqfufF/oVUn + gYe2fRX941148cB3ARCsa73B7I8BaMeBJ5CTwNDEcfxs1736iz0JfOCyP0N9ZSsoNPDv63qNaSdBY30r + IuVRnBroQqEwXeypiAz0pVPNHPg2Pnz1X6Chegk2nX8bQAiO9e/H7hNPI5Ofwq0b/2LObX/uOLkGKObj + 3gMKSgu/E+AXvcvAivR1YD+g90sYSoeCckL4Sd0Bz89mDa1IVOuawCAAqjkGX/5r/OlN/4jWmnZ8fPO9 + eGj7fegf68KLB76Dvr5etFZcguPH33EUOTo6gsHBASacONowke3Dzv5/R66gbeP94GV/jgYd/E+98W/Y + 1/WqXp52dlFTbQuqKmoAUCxZvAKnBrowXZg2nxKjBmowADVDQAFk8imNBDZ/Do3VS7DpvNsAaJrAm70v + Y2xsDBc3fshsXzqTRt/pU45hS6VTiMXi/uwfjhT5SqD8egAM10YWrd/r4b2nepFKTVni4rE4JicnmbS8 + /OLyKcRxvHbxTvaxg9/tLdOjRw45GtDQUGNJI/QBeNmh5/dtPzenICs9R8/A4gMgLF7tb/MZSR07/fk7 + AzmHiRi5Kg2fgP7PIIG+M8cQL6/A3ZvuRfOiFSCE4ODoEziV3Gvrk3jM2DfrxrN92DnwfeRpBrHyBO58 + 1+fQWLUUhJThqd3/hn0nX7W0bHFdK6ora8y+RCMxLGlqQ6gsxPgGiHV0OP6CbC6FR7d9C4PjvSAg2HTe + bVjVdCEIgJ7J3egYfLRoCxcKoNPMVdAvZq+8F5veko7dXWjfey8pkDL/eMntYy46kaoIMltO05NHrV/h + TCJ750O6ccgWZ/nxWs4SnjO9YHClCTSROgG9HN8VNAk4hTimbXfAG8E2sHN2BvKOAjM+ViaqUF+z2ARU + OpvE917+grZEGKnExzd9EYur2wAAB0efwDh52+b4lHuDJ3KnsWvg+8gX0oiG47jrXf8FTVXLQEgZnnzj + X9HZpYHf6GtTXas+81vJLRqJY0nTCpSVhYwRc2yV5pFBNpfGz7Z9G0PjvZpj8LzbTcdgz+RedA49Jm68 + gjePggUJnEAvUPFmIgnguUt1nOfVFfjsZW+wmdbfrE8BZeAb/XOUZ2mWBycHd/ysorQKMFOgl5EA/0yA + otrcPXqYsxWYD3gu2DlA1zDBOwZE2ydgrA6AEN0x+AV9ibASH990r0kCg+HXMFGmkUCBnSE5fZrIncYb + Aw9gupBBtDyBD13+l2iqXgYCgiff+B46T/6muEMRQFPdEn3mZ1czik2NRmJYsngFQqEwQ4iARSuwkQFI + 0RwYMlYHzrsN7U0XAgB6JveISUD23BRo8WLHwKPb3w3w9mLcNik5gM+p0e1Z1OJKm/W5/bTn0T8WJPXw + AsSEZA33bALMFgmIpbghQKTS2wFv3xQTK0/gvMZLuUA3qrC/FEQIQWWiGvU1ixlzYBL/qmsC8Uiltk9A + NweGyrdjMnTM7JvhGGQfzolsH3YPPoA8TSNansBHLv8rE/y/2P0v6Oz6jaXfjfWtqKpYxB0TdmaP6ZpA + qCzEOCLZfY58rSCTT+HR7bo5oC8Rrlq8EYQQ9Cb3YP/IEyjoD5Ixi/MOCHHdIegiollexhuqoKeFglQl + K07+NjXbZhUUCmJAFlTIh9dnh22h/SlI2soLkILfFhWIEzDov0KxYtTitHN8IoJwALeu/xOsbrwEzx38 + dxw4/ZpjNUHWgIp4NQBgeGwAAEFKNwf+9Mb/iZaadnx8k+4YHO/CUPk2RCIRLI5tRH19A+rriycSDU2e + wO6+H+hqfwIfueKv0Fi5FBTAE7u/i46uX+tWj9a2xtoWAfiLd5iFiuYTWIHegS4UCnmL89D4z5j9ta9U + 9wlo5sCHN39OWx1gHIODuYPIhfJYU3Wbpeq6+kYkEgnIxLGcyPkkDuH3Vx5tt52pS/oiyNPpNKamkhbQ + JxIVaGpaLPfyi5yWZrysrRyVn4pbzQe/tf6RkWGzfKrHV1ZZf6NCtgw4J+AX7gNg9vybYewnCeDZoFvX + /TFWN14CALh1/R+DEIIDfa85EhJBEQBQmagGIQTDZwYAAqRzkyYJtOok8PB2bYmwj/4aNdEa1NevRUND + EwBgaOIEfnvgnzFdyCBWXoGPXP5f0Vi1DADFE7u+g46urZaeNta1oDIhAj+1D4HZ8Fg0jqWLV6C3/4S+ + OqBTgEEGJhHAJFMKiozuGOStDpyhR9Ez/QourL/TrK2hoQGJhPpr0TMtXrUPe+pkMoloNGYJSyQq0di4 + WLkMa3tkdfMcC/IyRU4/e3j/6T5zPIy4aNSq9Cs5AYNT372VLxebDe9Q540kRRV+88oPYEPL1QCAM1Pa + ktx71v0RNrRczbepjUI4XoTKuGYOGGnSuST+9ZW/wakzxxEv130Ci9oAAhwa+wV6J/cA0Gb+X+z9MrLT + SUQjCfynK76AxdVtIITgiTe+WwS/3rfGOm2pj31TUcVnYVxFn0DI1ALMfhjmAcdXYGwb1lYHyrDpvNux + qkkzB04lO7B/+HFf93wmxK/poeKCkDlw2XJk+cX5Zg78hhRctJJAlgHd8qiUpVKPZfuuA/RwAJ6dRTe0 + XI1NK+8AABzuex33/+rTOD12HIBGAuubr4bTVWgHHetI03wCDbWLmReIJvGvr3wBfWPHECuvwMevuheL + q1cAIHjt2Pex6/ij+MWer+jbeyvwB1f8Nwv493ZttaxSNNW1oLqihh0B52VxZhInUUDzCSxtWomysrDF + oWjxklhWUbT/s/k0Ht3+bbzTv8/qGCTAqakO7B95HFRNYQ9USvE1qPge84UU+qcOWjz8Mi+/uJ2ydswO + +N3a5PldgNlw/qncVNMVyILeobNr4RtarsF71v0RAOD02HE80fEdgAAPbPsiQwKfxIaWzdZZkdgBx9sn + sMipCbz8N+gb05cIr/qi+QLRG8cfRTafRLw8gY9d8f+a4H9813ew98QrFqdmo7HUZ3NE1iVaUJdoscz8 + Nr0HPIKI6uZAqCxkhhe3CliJgHUaZnMpPLXr/+BQ9+sAIdi0urg6cCrZgTdHnnCdIUuRoJyLigsOSOeS + eK3ne+gYegS9yT1iZ55ru2VtmXnw88IL1DkKgZoAQZIBf+Btj7lVV0dxrbw4EzZWLsP15/0+AO3mPrDt + XqRzU9DAOoUfbLvXJIFb1n5S1wQ4uoBt9jenUaL5BBpqmk0opszVAW2J8A833Wu+ShyLVOCjV/4dFi9a + AYIyPLbrO9jb9TIz+RI01rWiuqLGBnGgLtGC96z/JG5Zd4925De7/8GuBTj1I22fwOKVmjnA9LKoFYjM + A+D5jodxqHsnCNHMgY3L3g2A4FSyE68df0C4EsADr2raUlYSDBCoAt94Pn668+8wPNUFEODA6OM4NbWX + W6awTjqfwe+UebcMKLrphjrOhpgxrO1uxhE0Vi7Hhy/5a0TDCaRzSfxg273I5JKI0QJ+P3MaTYWsGX56 + /AQA4Ja192BD82YHyC3t4PyrTFSjvnaxCZx0PqmZA2eOI15egY9f9UW01a/Hx678ex38BI+98S3sOfES + WKppqtO9/Tblo76iFe9Z90eIhuKIhuO4Zd09HE2AWIeHIQdjjGKROJYuXomyUNi2HVmmFWiBz3c8jIPd + r4OA4MLl78am894HQoBDp7biVwf+CSpSKqhdy4c30Gtt0sD/6M6/w+D4cQAEsYi2qmGQgKq/QNwuKgS/ + rGyv4He2iQrBD8iXAT9PKa0JYl8/1V4susfLSoBDjIeS8fbzfh3YSBYNJ3DHhX+GaFi7kT/v+K4GckLw + /swAlk6n8H46gIdiS5DOa5rAPZvvQ3P1Cty89h6AEBwyfmDTWgVEgZWJRSAgGDrTD+jvDvzrK1/Ap2/Q + lwiv+qLukaV4dNf92HPiJUsfGmqbUcXx9tcmWnDruj9CeSiKTH4KY6khNFQuxS3r7sELh3+A0anTxdZQ + biOLDx/RNIGli1eip/+4/gJR8akyfgydEIOQjXHVVg+e73wYAMH6ZVdiVdNFAAh2vP00DvVtBQhw7fn3 + IBqevRUBv3TCPmKZfBKP7vx7DE4cBwFw/tJLUFfVjP3HX8NkehwHRh9HoqIC7VjlWpZ07DkNl2oTgkDV + PM5lSWdOIQE89dRTHT7H1iEf+chHrg9qLwD7tpsd9Mb3aDiBD138V6iO1QPQwH/49E4AwHt08ANAdSGH + j6RP4dFYKzK5JH647V58wiCBNZ8AABzq32GrXy6V+gtEw6MaKFkSaK1pBwjw6M5vYE/XSyDGujwoGmtb + UMmu8+v3qq6iBbeu+2NEQjGk80n87I37MZ4axl3v+jwaKpfglrX34FeHf2iSgBX/xRtOzAV/TWKROJbp + JKAtEZIiv1IqJYIXOh8CIcD6pVdqKwMAtr/9DA6d+jWGJrpw52VfmhESCEJ3sIM1k0/iZzv/HkMT2sy/ + ZtmlaKpZBlCKC1dejf3HtyGZHsOunodRV1uP9UtulJbnbPPcgN/5na9hz9ufBuNvBbZ+4y9jAR+6+K/Q + WLkMANDR/Qo6u18BAXBp7gw25CfAKoqNhQw+nD6FKCjSuSn8cNuXTHPg5jWfwPrFm/huQCK+tNWBZtOE + SOeT+LetmmPw0Z33Y/eJl8wOFff2L7Jq/QSor2zBe9d/CtFwAtl8Cj974xsYmuxBdjqFx3bfj+HJXkTD + Cdy89h7UJrSfAXMuWDLmgc2siUbjWNrcjlAobDMfCGMeWP0ExvfnOx7CwR7NHGhvugibVmtnCgxNnMDj + u7+CDPPatufnRXD5f/74tnkmn8TPdn0RgxPa/V679DI017aZPp/ycAQXrrwaFXHt3ryw/1s42PuypUxx + H+jcgp9aY0WYOot+GqzokLKEgXnYCcHNaz9pgv/w6Z34Rcc/ASBYn5/AdZmh4kAw9TQWMvhwqhcxFJDJ + J/Hg9iIJbFlzN9Y1b7LuOSCQAk3zCSyyOQaT+OYLf4bdXb+yrN831hqbfKwl1lcswXvXf9oE/6Nv/G8M + TvQAIIhSimw+jcd2fxNDE9pBn7esvQd1Fc18UnKsYFhfINJ8AiHnZisLEWglsETwfMfDONizE4QQrGra + iKtWa2cKGCSQzidd3xcKEujW500O0kw+icd2fVE74JUAa5ddjpZazTdz7NQBPL3th8jlsygPR7BRJwEQ + jQQOSE5NAgSzvhbh7kSU5FPNwwO/SM6a3wUAHP44E/QGIm9ecw/WN28CAJweP4FfdP4TQDSAX5cZAPuY + UcBCBo3TaXwo1Yso1TSBB7d/uUgC59+NpYvOd8yvAjYwg6sqFqGhttlBFkYi6yaf4tVQ2Yr3bfhTxHTw + /3TX/8LARDcA4JbsID6U6UOUFpDJa5rA0ESvdu7/mntQl2h2rADY35VglzcJDHOgHaGysJnBQgUSIni+ + 4yEc1JcINRJ4n0YCk114Ys99JWkC3p4td9AbooH/XgxOnAABwfpll6OldiVAyvBO75t4bf+zGJ0YwAs7 + f6KRQEgngVgNQAh+dcB5KCzgMusrgJj6zGcfh+Jn95WUOTsT0A/4LYq47WWW9c2bTfCfSQ3iwe1fQiY3 + hUWFPD40dRLRwrTtybCRAYCG6TQ+NNWNKC0gnUviwe1fRr9OAu9d/2k0Vi517Dvg/WPbWZlYhIbaFutS + HcDM/Fapr2jFbev/M6KhBDL5NP5j1z9icLIbhBDckh3E+twEGqcz+FC6DzFQZKfTeGzPNzGsawKmOWDZ + 2EMEpADrPoHmlQiV6eaAyVMcImBWWwgheKHzIRzqfh2ElGEVYw4MT5zAz2eIBLwAnpVMPonH3rgXg5Pa + 0u+6ZVegpbYdhBC807sfr735jNk3jQR+rJNAFBtXXo3KmHbP7CdDy2Z95o8sScn5KHVLMUc+AHvlfn0A + oiW5dc2bTKddOpfET3f9T6RzU4jSadyW6kGUTjMjyntyimTQUEjjrlQ3YqDI5Kfw4I6voH/8BKLhOD5w + 4X9BQ8UycBvm2I1XvKoqFqGR0QQa9aU+58y/FLdv0FYustMp/GTn/8DAxEkAwM2ZAazPjZvtbCykcVeq + F1FaQDafwmN7vomhyV5EQ3HcsvYTxSVCc/8CXEkhFtF8AmWhkE0DsBEBnBrB850PMz4B3RyAZg6USgL2 + W+Z3JdEA/5A+829YfhVa6xjw73/a1jeNBJ7f+WPk8hlTE6iMaT4BgwTcZv35AP459QEEoQGAsZuLYQRL + a9eY4AeAn77xj/pyH3BXsguN0ylmMDiWJuepapxO486pk0VNwEICn0Nj5TLHhiO7eWJpOAgqEzVoqG1B + Q20LKhM1YBAJgKChYgnu0MGfyafw453/HYMT3SAguDndr4PfKo2FDO5K9VjNgcleREJx3LzmE7pj0GgF + u71ZTAqGOVAWCtnGnIg1Ar0O1jG4ykICXfj5nq8ik5vigtntKunZ0690PonH3/gShnSH34ZlOvhB8Hbv + fry6/ynT9Cn2TRu50YkBvLBL0wTCoQg2rrwGFToJ8I6HVwGwMN4lL49QVMAvqnTWfxqMbZA3EnA6ABsr + l+J96//UDHmy85/RNXJQU5enTmngNzFvBz/H9cQ8dY35FO5MdiFGC8jkpvDQjvtMEnj/BX+BhoqlcBj/ + 4GkAVp+ANvNbzfFYeRx3XPDnpsPvx7u+rs38BLg5fVoDvwAdjdMZ3DXVo5kD+TQe3/NNDE2eQlQngbqK + FusuRssI2kkB5urAsuZVuk+guDyoQgRFEijDqqaN2puERHsJ6ud770MmP4WZFvudzuSTeGL3lzA0eQKE + EFywfDOW1K8CQRnePrUPr+5/0qHtmCOkk8DI+KBGAtOGY/AaVMRrABC8+OZ30NH1lKdZX+bsk4HfESYB + v2PW5xQwJ8uAvDCll46Yabaxcinu3PiXiIa195tfP/4sOnu2AgCuTA9gXXaE6bXtzphTC98nYEjjdBp3 + JrsQxTTS+SSe3PcvSOeSJgkUfQJFvwCPFGRXNJzAHRv+AjF95v/Rzq+hf/wkAIKbU6exLjcGJ1lZr8aC + rrFA0wQe36NpAtFwHDefX9QEjM1Tlt9FsG2mMv7FInEsa243zxj0QgQvGCRACNobN+o+AYLhyRN4cgZI + QLaKkMkn8fPdX8bQRBcA4ILlV2NJ/WoAZXjrVCde3fek6fNgN06zZoBBCCPjjE8gHMFF5uoAwatHHsCL + B77jf9b36OwDnN5+C/gFBdh3Bc7ZMiAvTOYDsDx4ANrrLzLB39mzFS8c/AEAgnXZUVyZOq132GXWd5AB + xycwncKdk12I0gL6x7vw8Otf1fwL4Tju2PDnjCYggLjAL0AIQSycwPs3/DkaKpYgnUvhR69/FQPjXSAA + bk6dwrrsGWU9uTGfxp3Jk7o5oDkGzdWB8z+B2kSLrWXMuAoIIRrRNIGyslBx/B1EAC4RPN+prQ4QUoZV + jRcVzYHJrpJIwMuyYSafxM/3fFmb+QFsbLsGS+tW62p/J17d9wuzvyYJEFgJzRgn/fPI+ACe3/mIbg5E + cdHKazTHIAEO9b2Cl/TfiRC1mxuBIMAvSa8/6rwtwXO6EcgtTkX6x0/gVwcfBCEEjdMp3JzsZnptXMaw + SGZ9rnagpdVI4DhidBr9Eyfw8Ov3mSTw/g1/rmsCnPV3yY5GjUA+i/qKJUjnpvDwzvvQP3ESIARbUqew + Njvmef28QddYYnQa2XxKMwdMErhbWyKUaixOQjBJIBRGkYJZIrA5CxkvzfOdD+HXB35m3ScASEnArY+q + ooH/K/rMT7Cx7d1YUnceCCF4q7cDv97/c7M/xn0KlYXRvnQtqioX2UjA6hcokoDhGLzGdAwe6nsFLx20 + koCw3bMFfsly4JxvBHKLK4rDBYix1CAeev0+pPNJNORTuHPibQjcJBIykGkHMPM1TKfwwcnjmiYw0YWH + d2okEAnHccf6z6KhYgnTRsE/A1ThBO5YbwP/uKaibpnqxdrsGXiDPquxpPHBZJdmDkyn8Pjeb5o7Bres + cWoCVr7iaAhEO1loeXM7QqGQ6TAUEgGzjwAA9hx/Bc93PmQ6Bjetvh2EEAwlu/Bkx1eRyU8Fvgkok0/i + F3u+guEJbea/qO3dWFqvgf9obwd+ve/nOvCN5woIhcJoW3IeYtEEWpva9DcmxX4BVhPQSODdqIjVgIDg + 8CmNBKSzvqKvwBHmAfzmW5WSOuZ8K7CXVQD22UznpvDT3f9LX+4r4OZkF6KFvMuMr4ezZKCiHeh3qyGf + wk3JbhAAA+Nd+JGdBCqXiOwAEziRcBx3bPgzE/w/2llU+7cke7E2M6qs9ouuhnwKH5w4XlwdYJYITU0A + ljkfRUIgXA0hyvoEzJUDSInAMAsOdO/QSaAM7U0bsWX9xxANxzE8qZFANiCfAKVAJpfEL/bch6HJLoAQ + XLTiOiyrXwNCyvBWTwd+ve8J07FHdDCHQmG0tZ6HeFR7cSxUFsay5lUODcfqF9BI4DmGBC7SVwcAgsOn + tuLlg9/lNNLyh98PeAM/N73QrzBPfABuGoDbeQAPv36fCZw7x4+iIZ+ydtJV/WdHiSUEkdKpfW/PjuGm + ZDcAgv6Jk/jRzq8inTdI4M/QULGUM/drrY7qaeoT2huIP9r5VfRPaA/qTVM9WJsdATzO+GJNIIUPThxj + zIHiEuEWwzHI+iRgmfdRJISidhCNJHSfQNg0FWREwDoKD3a/bmoCixe14ab1H0MkHCuJBOzcl81P4cm9 + 92FYt/kvbrsey+rXACA42rMXW/c/bvbPmNBDZVbwG+ORiFeisa4VxW7Y/QJautHxfp0EMgjrJFAZXwQA + OHzqlSIJlDjry8AvKoSvEVjD5lwDEKWxi/FIZnJTeGrfv6B/4gRAgC2TJ9CQm4IU5EpkwMRJCYFibWYE + NyVPaprARFeRBEJx3L7+P6O+YonDFxAJJ3A7A/5Hdn4VAxMagd2U7NZm/oClYTqFD0wcMx2DjzOawJbz + P4HaeHGfgGMjE5wagmkOtLSjrKzoE4CNCEzgw0oEB7t36G8SlqGuotlBAsOTXYLnh3+xks1P4cmO+zCU + 1Gz+i1fcgOUNa0BAcLR3D17Z95jezaIqH2bUft4qQGNts04MhEMCxc9FEsiiPBzFxhXv1kiA6CRw4Lvm + 0yUT91nfmkoV/PPaB+CFBEAI+ie6sK/3NwAI3j3ZjbXpIXia8ZVme3Y0+SbD2swwbpzUHraB8ZN4ZOc/ + WEigIbHEBEDUIIZEqw7+fzCX+m6c7Mba9EjJaj//0syWD0y8jSimTZ/AULK4RKg5BgnsOgCPEIrmQALL + W1ZpPgFWSWa2OnNXDAhwoGcHnu/QnLZ1Fc3Ysv4PEQ3HMTJ5Ek91/AOGJro8bwQywD88qRHqpStvxPL6 + tRbws959Qoip9seiCStpFZ0DIIRgaXM7wuYxaraVDwcJ/Ai5XEZfInw3KmM1IAQ4fPoVvMQzB6xPGQcz + vJT2T85o06tlAz6vnnmhAfB8AU6xzkfr0kO4KHUariD3ov67+pytedamh3Hj5AkAQP94l4UEbj7/k4iE + E4iE47hNB3/GAP9EF0CAGye7sDYzzKk32Kshn8IHxt92mgPhOLacp2sC7OoA+ITAkoGxOhDSdwyqEYEW + opEAowls+Bgi5TFkp6fw9L5/EGoCPGHBDwCXrtiigZ+U4UjvHry871GbVkIQKgvp4I+b7bW4NhlwR8qj + aF3cZiExu3ljjM/oRD9+ufNHyOWyujmgkwAIjp5+Ba8ccpKA6Gn3tMbPBArLE+SetxqA7DyAJbkJ3DRx + jDNAJar/UucgP59BAoQQDEycxI93fg2Z/BSqorW4bd1ncNu6zzDg/xoGJk6CgOCmCRXwexphyElgCu8f + e8tpDoTj2HL+3aiLN6No8BIHIfDIIBZNYHnzau0FIjMJk5rjHzA+H+jZgec7i5qAYQ5k8+okkM1P4anO + r2IkeRKEEFy2cgvaGtZp4O/ZjZc7f2r2x2hJKBRC25LzEY/GLSsaLGnBBvSqihrU1TTB7B1hpyOrWaGR + wMOW1YFK3TF4pG+rSQKyWd/TMh8T6Ap+EwdFOYs0AACEoGF6Cr935qhER/RDBm7agZwU1qaHcePEcQBA + /0QXHtFJoD7RagF/v74b7caJE1iTHrKWy72M/gkuXvsk5WgkcBRRapgD9yObT5s+AXZ1gDCfZGQQjcax + vMVwDBrbiZkS7P4Bxiw42L0Dz3U+CIKiORAJx5HNp/D0vq9xScB45TaTT+KpzqLf4LKVN6OtYT1ACA73 + vIGX9v0HQzhaveFQCG2t5yMWjYNdBWCUeScJ6PGNdS2IxXRHITsmnBWC0Yl+PPf6w8ia+wTebb5FqJEA + //xEN5VfBH7ZdEGNgs96HwABYjSP9545gijNWbtcKhn4UP+toKNYkx7SSUBbHXhkl0YCmfwUHtn1NQxM + arOUCX5uG1WAzvZV9SqKRgJHdHMgjcf3fhPZ6bS2OnDe3ebqgLHpRYUMohGNBIwjx1lg8WZY1iw4yCwR + 1lY060uEMeTyU3hm39cwNHnCBL2xop3V40aSmjb1rpW3YEXDehAQHNHBbzFHTLX/fF3tJ7Cv64NYTRi7 + SRAuC6O1sU370VV2TAQrBCM6CRivEl+08lqGBF7BVoYE+LO+gspPIQS+mc/FiTJvNAB7WrtEC9N4/8gB + VE1nhANlGU0vZOCLEGxpKMWa1CBunDgGQoCBiZN4ZNfX8YjxYg+AG8aPYU16EG4gDWjUhVdDfgp3nDmC + KJ3G4GQPHt/DksAnUBdvZmZBNTKIRRJY1rJadwxqed3MAqOMA93b8XzngyjTNYGbNujmwPQUnt33dYsm + YIDfCLu8/T1Y0bgBBASHe9/Ai50/MWdoo15N7ddtfmZ3ZvFMCQP47GenSRCPJtBY1wJWi5GTwAB++fpD + 2o7BcAQXrbwWVfEaAEUSkM36zm/WQD/gV/514KDFqxlgJ4KNU6dQn0uCcgEuAJISGaiq/2p2+prUINqP + HQGgLREO6Gr/VUNvY01qUKKue53V3TQGSR2UoiGXxB2jhxgSuB/Z6TSi4Thu0jUB1h2oQgbajsHV2hmD + rGPQZhbwtIEDPds1c4CUoS7Rgi0bdHNgOoVn9/93DCdPIpvXCGFkUpv5r2j/PaxouAAEZTjU8wZe7Pwx + QzBam8xNPhF9OQ+GzV5MVxWrxVWrbkd5KMJoA7rYSKC+psn8zQa+z8DIo302SCCb098iXKGRACHEpgk4 + Z/2SwM8Ln6t9AGwDZH/tn2UdpEZa1Zleuq7kVf1nk3Jm2KHTaD92xIRP+7EjWDwyIKlPQd33cik6FRvy + U3j/6CHEUMBQshdP7P2m5hMIx7Fl9d2Wk4VUycDiE2DVbIu9bVXPi47B7Xiu44cghKA2oZkDhmPw2X1f + 17SBpPaa9BXtv4eVDReAEILDPTvx4r5HimXpjQqXFZf6jLYWSUBLXRmrxSVtNyEeqcIFS94NlqT4JgHQ + 2tSG8nDUEidbJtRI4EHkcllTE6iMaQfCvNW/Fb8+bF0dECLAxd4X5TV+G4AXN68OBHF3BDq7T9m8fsig + FEKQOOIaBk9j5bHDWHnsMBqGTguAOVsiJoX6fBJ3jBxElOY1TUB3DEbCCWw5727dHDBRLicDaA+9tk9g + tfYWoQk8La3DLDD/K64OPNf5Q9s+Ac0nMJLUTKkr29+HlY0XAoTgUM9OvND5iJafAXioLIzlS4x1fqu9 + b7S0Ml6LS9u2oDwUBQFBbcViLK1bgyIJACwhGKAOhcJY1tKOYhJWmxGTwLO6OaAtERZ9AkdP/xpPd2gn + KZdi74vAL8t39mgACiq/OhmUSghqBNUweBoNg8yryTyVPAiV37M5YO1vfW5SJwHdHNj7TWTzKURDujkQ + XwwL7B1kwHr49R2DkTiWt6wuOgYJcTcL9M+aY/BBEBg7Bv8QkbD2c91XrXof2hsvBDHB/yOrw9Gh9sNc + r2cJqypWi8uW34zysijy0zn0j3WBgOD8xZeiKlZrttNCAozaH4smtK3Clva7kUA/nt3xEOMYvA6VsRoA + QN+ZA3im4yvI2o9O86vyUxH4rSHzVgPgEgHlAVCRDEohBGVSsLafutYZkMrv2RxwSn0uiTtG3kSUTmNo + sqdoDuiOQdMcADhkQJhQLQWMfQIt2j4BM6fNLBBpAwe6t+M/tn8D2Vxa1wQ+jqtW3Y72xotAUIaDPTvx + QufDRUteLypkUfutrTIIqypWi8vabkF5KIp8IYdtbz2Jjq6tmEiPgJAyrGu9CuWhSLGVAr9AY10LKhKV + kJMA4ZDAg+YSoaYJ1AAAhidPFEmAmfX9gJ8X97vhA3DMntxIQRaRdmDPKyAfpT2qtrotdc626i8dQMdl + kECE5jGY7MHjHfcXVwdW6+aA+X6DVppJBQKtIBpNYHnranP5DIDFLJBpAz3DRy0ksKrpIhAQHOzZgRc6 + HjQKM0mAfaXXvtxopKqK1+FdbbciEopp4D/6C4ynhpEvZNHRtVUniDqs1LWMYiuLdbGfzd2QQhLQvvFI + wNAELjZJgFhIwO1JUQX/nL8LEKwPwPbVAi5HJHeY3LUDe36JWaJMDLKyZ/OS3ijUZydxx/CbiBSmMTjZ + W9wnEI7jptV3ozbebILLeoKQWCswzQHLLxCpaQOD49346fZvIJNPmeB/rvNBi6cdRNvht7z1PMQiCYdJ + YQCwOlaPd7XdivJQFLlCFq8d/TnGUsMwYDqeGsbR07tBQLCsbh1qE4s5S4VWogqVhbCkqY2Txp0Entnx + Q32JMIqLV16nrQ6AYHiyC890cswB29PDi3Dox+zkysly9mkAQrUdimSgoB14VPk5HVVUz2d18JXbU5+b + xB3D+xAt5DGkOwZz+TSi4YRJAsxjLdQKWF9BTHcMhvRfIDJERRsYGO/GT7d9A3uOv6w5CG2qtbHJJ66r + /RYnnj5TV8fqcXnb7yESiiI/ncVvjzyBsdQQCIAtY0dwxaT2ctaRvjcwPNkHAoILl16LcChiIycnIVRV + 1KB+UZN1V6GMBAirCfwQ2Vxxn0BlvAYEwMhkF57tvM9BAsJZn/JVfmk+zGMNgG8/C3ruSgb+CYG6AtZJ + Cuy+NSlVzLT9X4JWUp+bxO3D+xChRRLI5lPaEuF5d6M2sdh0+rFLedatv+xSGnSfwHn6oSLMDO6iDYAQ + DEz04JUDPzXVeqO+kLG9NxI3c7NgJQCq4vW4ou29KA9r4H/16OMYSw0BILhp7AjWTvXjiokuNOYmQUDQ + 0bUV+UIOkXAU61s2FVvFEJW9fc0NSzXTQ4UEUCSBYZ0EcjnDHLgOlfEagAAjkydMEpDN+iJ02JHDw9W8 + 0QDUzgSUqbEyMoBEO7DnpeJYHikotbcEtbz0UffdhvrcJG4f7ESETmMw2YvHOzTHoOYTKO4YZGdtwKYV + 6CEGGLV9AueZP0Pmqg1YSISBEGHAb+zwY4lHb051rB5Xtr3PBP9vjjyGsalBEAA3ndHAb8h7R7Xl0FR2 + Ah1drwAoQ1P1ciyvW1fshw3ULNi1E5PCvkjgmdd/YJ4xeLGxOkCAkeQJriZg3lq4g/+s8AGIwpy9gQTI + joSiEZFoB/b81LUGITEoq/lzZPMXB968qO2qy03itsEORAv6PoGO4gtErDngJAJiJQIGzDHDMaivDki1 + Adu+AXZv/3LmxR6AIR7926JYA65ccZvm8JvO4tdHfoYzqUGAENx45gjW6j+pbkjVdAo3nTkCEILTY8fR + M6Jt5mpv3IiqWJ2ZjtiJRm9beXkUixuXMu32QALj/Xhmxw/01QFdE9CXI0eSJ/BLlgQYlV8F/I5ARs4y + DcDRO49koKIdlGb/s8VplxNUM+4XkJTPa48bXdTnJvG+wb2mT+AJfXUgqq8O1DKvEhugcLwVCJYIoPkE + TBKw2saAQRywlGmUpc385+lqv1Efo4EQgmod/OWhGHKFLLYefrQ4848etoG/2PuV6SEsP9MHgODNnteQ + yk2iPBTFhtbNzvYBsIO9pqoeNdX1YAnLlQQgI4EamCSw7z5kc0mzxa5PvAv4gXmsAfCJoJRZ3TE8cCUE + 1/IUiEFWDe8SgdTLpdYyD/3RfAI39+1FaNpYHTCWCBPaEqF+5LgmrAYAIRHEIgm0tZ5nbhYCrNoAa3cb + QLOc5MNu7mFIojrWgE0r7zBn/q2Hf4IzKW0r9o2jh7HGBD9/VNq7jiKaSSE3ncXerldASBmqYvXaHgQb + 0Zht0wJAAN0fEIcyCRA7CTxgvkB0ycrrUGWQwGQXfrlP/juLQj8B5ePqLNUA3FR8KJKBvSyX8riba1TK + nAvb30+b5HkrU+NYvW8nQtPsPgHNMXjTKn2JkBDL7O1GBNFoHG2t5yFsHsNt1waKJgG7yceyuYdV++MN + 2LTi/dpS33QWrxz+Mc5MDYKA4MYzh3Twy/sbyuew+lAnCIDhiV4c6dsFQghWNV6kvSRl9o1PAqGyEFqb + VjhMFy8k8PT2B/R3B6K4eOX1qIrpqwPJLjy37z7uIapi8P+u+AD4pUMZvEqgUwAFhQsx+Gn7TF8e2uIw + HYpR8UmNBMJ5wxxgXiBaVTxotLgioH2TEUHUWB0IhTj2sfY5HAqb6/x2wBhpF8UasHnFBxAJazP/y4cf + weiUNvPfMHoQa5J9yvcnkZxA68lj0JYGd2E8NQyCMmxYcrW2NGgnARvY49E4mhuW+ieBiX48vf375hLh + xe3X68eLAaM2EhDeYcPsk/TzLNIAvM7momivYPUAKJuqxV9KnE1NQFAflYPcrbz45BhW7XsdobzVMRgJ + MzsGLWo8YQDDJwLNMXi+vlnISKslCZXp4De39+rxpGgyLIo1YPPKDyISjiE3ncFLh36EM1MDIIQw4Pc2 + dC0n30HV+ChACHYe+yVyhSwS5VW4oPUasCaH0U872OsXaa8Oq5MAOCTwgEYCoSguab8BlfFaAMBo8gSe + 2yf5iTVKzdsqk7Ao4uqrr76YEFKjtdXp/HD7y36mlLYZ3ymljr+8OLEDgw0nEItLOl55RJJeWj4rxEe2 + 2TYH/PTLKvHJcaza9zreuehKkwTuvPgv9R2Dn8BL7zyIUf03GrU5yAAMBaXGw08BAlAQgFJtx2DreTh5 + 6i1MF/IAJSgrC2F562pEy+NaXgMwlBolYFG8HptXfBDhsgiy0ym8dOhhjOrLe9ePeAC/3nUWOG1H3sTh + SzdhChN4s+e3uLTtJjRVLceSmtXoPfM2CDH6Q0FAQAkFKAEBBSUErU1tmOqaRF7vjxFOqPYXtJiPUKKN + FYH5eXiiD0/veAC3b/ojRMJRXLLyeuw9vhWT6TMYTZ7A8/vuw3s23otIOFFsvOAuevUB3E8pfQXAK8Zf + 3mVPw0tLKb3HaADvryiMe4MoL6BEO9+RzK9KD5f0c2H7y8ahNG0kPjmGVZ07EJ7OYyjZi8c7mdUB3Sdg + 2OiOZT6bRmBoAwYJhMrCjLc/YazxwbIngAA1sUZcvfIuREIx5AoZ/OrgQxid6gcBwQ0jB7EmeUp9WNgg + /RGIpFNoO/ImCIDu4cM4feY4CCnDmuYrEC/XXwSSaAKhUBjLmtut/Wf/St8i1D4Mj/fhqe3fN1cHLll5 + vb5PgGA0eQIv7LsPk+lBIfgtGrYtztUE8KK2ewG4SjmuN8wXGdjTeiAEJQegSitm0/YPytTgmQ9AfGIc + 15/ciYhliTClbRZaxZ4nYCUC00dQ/GaaBcbqwPLW8xGNJpgUsIBrUawJ17R/SAP/dAa/OvggM/MfwPlu + 4JcAn5VFwwNo7NW2Cu/pegn5aW3X3gVLryn2htigzbQzkahCY12Lc+nQlQSIlQS2fR/ZfFongRtMEhiZ + 6sLTe/8bRpJdlu7YZ3zeE6DkA/ALbHsjgncAAqWTgT29B/JxrOFby5gtSz84kfkJBMEUqMtO4L2nNRIw + fQLGC0TG6oABYTsREDsRaHiIRhOIReIobiYy4rXPi+JNuHblh3XwZ/HCwR9iNHkaBMD1wy7gVwC+vY+r + Tr2DhtwkctNZvH7sWRBCUJ9owaqmSyw+CZEm0Fjbgop4ZWkkMGGQgOYYvHTlDfoSIZCdnsIL+7+K0WSX + sMv2T4CEAOxAnG0NQL4PQAAnLuL8wNDn7CkjB6EDcKapQVCnb0cgv9y67LiTBPTVgZtW6ceLmTQgIgKA + ZxbACNFBUhNrwrUrP2I6/J4/+ABGpk4DhOC64Tf54Bf0jTfj87ofKeRxw9BBgABDk704NrAPhJRhdeMl + qIrXWzQB+wYfI7y1aYX5HoQRDg4JgEMCRrhGAv+u/wKR5hi0kMCbVhJgu1w8V7koUg3AjQR4YV6JwrP6 + 73ZHXZP4BV8A4BVyAJ3Bq9RmqxdgkECU5jGUtJLAllV3mz9D5iACgX+A93ZgTbwJ17X/vn5WYAbPHfh3 + jCb7QAA++AXNFW68FHWPAvXZCVw98hYICPb1/EZ7m5AQXLLsJoSNMwLtJMCAN1IeQWtTmx5u9pi/SmAj + Abac4fE+PLnt35nVgRvNfQLZvEYCrDlgvprG6RsRAW7z5s2vEEKut1YO2L/7WRVQievq6sKJEyfM+Luv + KsfdV4aNMRD42lW8987kxPqfl6xc2deTd6RcXF2GxdVlymXMjciZYTJDcXxo2hG+siGEymixN2Pxahy5 + cDOmw+VorFyGOy/6vHnC70vvPKStDoAhfVMrATNHsafXaKHGzF9eFkEmn8KzB/4Nw8k+gAIrjnZgyUiP + pSsO3pf1kIk/NjiNyYw1Q0WUoL1Ru38d665AsqYOixINePd5dyEciqD3zFHs730VxXV3o/22CQ4Up4d6 + MHJmwNJHE6DGCDDlsONi4pVS1C9qwR2b/gSR8hjy0xnsOfYKJtOjAIDycAKFrktBc1FLpxvqFm39zKc/ + cYPxXbgMaFTGLs/Zw3lpVJf53OLskslRjKWst8+ZzH572RVlF9GXqAgRRsqzMpLMsO3QPk+mgXi5SxM8 + LUPyZGbNiakstfVNq3MyQ1CgDJmnz2DFntdw4tJrMDjZjcc77zdJ4KZVHzdJgBBtqYvoeSkxbwOoPh4a + MAhqY9rMHy6LIpOfwi8P/B+M6DP/ksMdqOrrxjj4s7qrT9liLgKTaWs/jYlzPKUBdnnnHhy9+jqMTQ3h + cN/ruHDZtVhacz4Gxk+if6JLW+IDsS4RGs82CJrqWjCVmkQ6M6Wn0fpN9f8sS4XamqC5LKjHAoRgaKwP + T27/v3j/5j9BJBzDpe03YufbzyOdnUQuP4VMbhiFyWpLXysTEct3z6sAbPhMOQBlry/ab5xQlWNunfV3 + ZaRJQQv6JfUjWHWpoCz6Yn84G4lm3Mvv2jpxnZzg2MQYVuz+bXGzkG2JsC7O+AQkZgEBQW18Ma5f9QeI + hOLITaeLMz8IlhzsQM2pbr4tL3g27FZX8eZbh5FnpQHaVuElB/cDAN4e6MDQRC9AtANE4uWVliU8njkQ + KgtjSVNb8SgxiwkAmH+IfQqzmwXA0FgffrHt/4IQgvJQBPFIBQw/itPf4cEHoGqfz9YSoNvjLSeCYimK + dFD0k9kJQepPYAnHW/tdW65o8pdYi+Ty7n6IToyhbfdvEc7ntENFmDMGb2KXCGHsFrQ6AAnRwH9D+0cR + DcWRnU7jmTf/VZv5CcGSg3tR09ctHCdHzyj4xG7jsoJ+sUntt716oB8N3V0ghGDHO08jP51DJBTDxqXX + wW6jEstn7UssGkdzwzIjVLwiADsZwEEwQ2N9AMpASJkzIeQTqu99ACpp/DoAhSTguIHiNCpgcJ7dI01c + LFsnBfkETB3l8/4FPXM7gejlTUJnHy2XCOy8wdKv2MQZLN/9KkLTeQwlu01NIMKsDjDbe8zzA7SZvxk3 + tBu/EJTB0/u/h2HdydfKgJ93z+2zN5e4OcBnzHbZCi8ogMVHDiI2MY58IYvdXb8CAUF9RStW1l8AsTMQ + ZnhNVR2qK2uMUP6KgMLyoPE6NCnSKbPrUv58CX0Abra73U6XpfEax5NomGBR3GkbK/vuiFoyTuneUhKg + IuLMVxklqI4RxUJKdBBahjA4V2NZmeYMs0tVjKAyKq6zOj+O6jd/i0MbrzHNgTsv+ry2OtB+N148pvsE + DNsfmrf/hvaPoTwURSY3haf2/zNGpk4BIFh7bC9qRrpBbeNJHR/s40Id7ePlqYgSR3hllKCaff708HXv + 7MeBjVei78w7eHuwA6ubLsa6ls0YTvZhPD3M9QPoe30Bqm0VTmdSyOYy4G0llm8ZJnqfivsjWHMhFosD + tNIyBNGo5UbJnYDamLk792RpjTReHYB2IlhcVYYLWo0TZFwaPSvudXEl4ynnE7i0NoSltbP67lXgMp4u + oFBw9m1Nc8id3DCJtlPb8FzrZtMxeJfuGNyiOwZHUtpGnprYYtzY/jGEdfA/uf+fMJzsBQC8e7ATq+kp + oEXw6FJBAJUkc9hreYylrarNojjBBqNOS9QUoiPvYEfDGhw6tQONlcuwKNGAi5Zejx3Hn0ZuOiN0BlJC + ESrTtgof6zlsCTdJAEUyAEMeplPQxE2ZRhIMOJpbliBGW4rdohTxaMjSVV8+AJ59b/9eivrvpra4qvmz + 4hcT28vB2+azKS5+AG6omtRlxnHrqe36yULdeKxTf4swlDB9ArXxZty06uOawy+fxpP7v4OhZC8AgmsG + OrF6vMdZsKMxTIDAV2kJEA0Dm8wozm7yUOCC0ZNYMTmI3HQWu7ueB4F2LsH5TZfpifgbhIy/Mf1Xh4nN + 9ueZBdw9AhZnKrtzUm+iYeJxuivTAH4I4Nduy3xGBaJlQl2uo5Rer6r+E9cpnu1c8TM3m73Hs6IdUEHY + nDRG0qbZl7r0GN7Tuw3PL92sbRbq/Ib2FqHuGAQoysuiSOen8HMd/IQAV/fbwC+a6TlxsqSi7DwNQaY1 + XNv/JvoS12JsagiH+nZgfcsmrGzYiOFkH06PHwdQnNEN9Z/VCBprW5BMTWAqNanjAfryoMAs0BYOYWoE + 2pqpdYMRZSZWwf0QEsDOnTt/ENRNv+aaa75MCLnei/rP1QKcJpw12pZl/hCCSOYHKGe7i3WZMbynRyOB + wWSPbg78JaKhOCgoMvkp/HzftzA02QOA4Or+Dqwe7xYMl4KKL2iHNFwUJ0gfmc5jy6kOPLvsXZopULUM + jZVLcdHSGzBy5BSy0xltBrfsEdDyGmBf1tyOt7sOID+dB5g0xT0Cxc8GhxT9JmXaF5t/g7p0YNaM0tLX + /wW6nOKKgJK5EJDZMOPWx1wJj5PtnVUcy9r0GG7p3oZIIYfByW481vkNZKfTyE6n8UTnNzE02QsCgmtO + d2D1WDdn+mX0cbfZW1Uhk8RRhXJapoZxydA7AAF2n3ge+UIWkXAUFy29gfHeF7Pa3wkIlYWxtLnd9YUh + +wtH3L0U9pmNArQwR78N6PUFIOHsT9kPgjUfaTsU7fKASCFgXpkXIhxDH2RclxnDe7q3macNP9b5DTze + eT8Gkz0AAa7u34tV493WUZSAngoDXMLBFM0BPnUBPuv7uWTobdRlJpDMjmPXiedBUIbmRe1Y2bBRujnI + IIiKeBXqFjVJXxhy7BVgSUDHvpndBD7/5syJBuDFqcgOsfMmupBBUITAK/d3Ddkq/VbN4sEJWpsZwy3d + ryFS0DYLDU32gIDg6tN7sWrsJCyOPD+gB+Tt5zj2pO0WAJ9Nu6VnL6KFaZw68w66hg+CgGDN4stRHW/k + k4CNDIxThYU/QsLRCLR9AGWW2V/FoT4nZwKyn0XEwN1wBMlNpwJUeniAfXvvKdwJYr4ShUrbPYyX0pjZ + 6tDMgd8iUsgBBNjctwerzpwMBvQegK9uFvCBb0hlNoUrTx8CAdDZ/QpS2QlEQjFcsuxGK2j1v+BoBNqv + DIWUVwYIyqw7KRUdZbO+MO1L/efcBO79FWoHAt+BT1Jwe9AdaQuCuufDpXzftKtQKF4qOzO5486JqE2N + 4ZaTv8XmU3v0mV+QLQjQ+wA+ZZ4pFe1g9Vgvlk8MIDedwa4Tz2mnFscbcUHLNZzdfDaHNQHKw1Esbliq + xxFLGu47A4TZDMTZ9CbaAD+rPgBemK9TgVxwzQ9U0BA8ztLqW2PnrwKg1B8vWoyUZGwRtjS16TG0j510 + IXZJfZL2cO+LpExzOzQ1nkc14LNh7z61H5X5NAYnunHw1DYQELQ3XoSGyiU2pyDfH1BTVY+aqjqmULFT + 0Dx92cYAbu+9zLoPgBempAG4qWZuWr9fQvBBDKLS/WgT/sfb+1VyJ6Vgp9y0auQtqVfSNo6/UKncolaj + A19UlawcAJHpHK7p3QcQggN92/WfIy/DJctuQrnoABEbGSy2+QMcJoABeVKm+wDcXoK3NnjWVwFUXyuW + rgSokIHsAeNFUOnT7IkY/ADKD2BnjVDswHDgmTMwXhUuL/dW0k6hFqZSti3AQUpuZXH62pwcwcUDbwMA + Xnvn58gXsqiILMIly7ZI/AF6qL402NrYpn93OgWLZFBcCgR48Df6NAcEALjP8p6PBFOZoRUIwTspKBKD + RYWcmVk+EKEKF5PY+hajO9Mqj7Vb2yTtdwW9EvCddAbYyvYAfDb9xQNvoSU5gqnMGDq6XwYIQeuiVVhe + u07gD7DO9rFoQvuVITjNBHMZ0PQBEDh3wGnYK3AGadZ9ACWRgMuDoPKwqGr90kghMXgjCE+XW1+CKtct + sccot7FXuT+8dCWD3gZ8V9+HD+CzcnXPPkSm8zgx9CZOnXkHBAQXLrkWiWi15U1S0fsCdYuaUFVRo4Vx + nIJEPw/A1AEI0ftVQIGKvQBzqgG4mQTc8S4B6K7pVElBlMDxBPhCYGl9Uu4oT2WhSs1VUBSCBTyY5gUI + ehb40nwudcmAb4RVZlO4umcfAIKdx59FbjqLSCiGK1fc5ni337k0qBXV2rRc/yVlQxinILHuACRQG9Y5 + /3FQ+2dhGA+cxs1TeHi8PGheSIF7z3kzifAKaioXAVoB1JxOKFOWF07zcR98gx68eOdsr5ZPPkaq6ZeP + 92PVaA9y0xm89vYTIKQMNfEmrGu+Cux7/M6lQetWYS3OaiaYqwAmcRBue+y4mvMfB/Vk+8seVjvQVMvx + m14CGFkRnsov9SqhOuUMXsbNTTic5WmQuWk8zvZ2wrflsSRTBD7bt8tPHURlLoWByZM42v8GCCFY13wV + FiUa+UuDtr8Vce1XhgCrP8BYBRBsAhBq1nOqAfg9DFR0wyzBXgjBXl4peVzKmMH53j8v+CSSoMZPtn8i + KNB7ne3tmqUD9B6Brz/hiEzncMPxN0AA7O1+CWNTgyAg2LTydv7SIMcUaKxtRiJepYfZtwMXNwRRSqXv + AQBzrAG4hakXLL4xvgmBV65iXsGzGOgsrtTOIOsw7w345o1iG+0bply1DZU+2wKUQa8KYlmcIvC1AO1P + bWoc7+o9CALg9RPPIDedRUWkBhuXXA9XU0D/a/cHWHYCGrkV7svZpQH4UT1FUfYH2AsQFAHlE2Pe6iqp + cP99Uy1HCnZ4LH8mQA9w7xv7RXn3H5OeB3xW1g0ex+LJEZyZGsCBU78FIQQr6jagtWa13BTQ2SASjqDF + /JUhwqwCyA+4mDc+AK8vA7F7sS03wMtMMZOk4FbnbAF4tttCi39dZ3dee7y03RaotMfCDfQcwhaaJS4k + ogJ8Nvr6Y28gMp3Dkf43MDDRDULK8K629zBLg/wNQgYxVFcsQt2iJi2I2QfAO7B3XvkA/LwOrMXZicDn + dKvwEPJIgXp5eD0N0AxeAbeR996Dkv3uG/DWCE+gV5y5WeB7UvPBjIllkNTKiUznsKmrEwDw27ceQ246 + g0gojsvbbkVRl3duEGLfDGysa9Z/RdnwAVjTzovXgb2eBuTtUFDOU+MVBB7AY0kiIAfuppLZGOhSxNZ3 + LtDB75twDL2OOyfC/nsFSmUpxFmCFABLOXF+gQ9mHJedOY11g8eRLaTx+vGnQUDQVLkc61s2czcI2R2C + obKQeYqQuQrgMkyszJsDQTxvBbYNpLJ24GVm9DirSidjkRYR1MytUKb0/YFSqvc7noII5e3TQYCeOvMZ + 98iRxEHo/oHPyoWnjqJuahy9Z47i6MAuEFKGDS1XoyaxWE9h3yikfTb+lpdHNPCbZwPw3wQocMyAOXsZ + yJczUOHptD7YEmSV8sSXCFwlDnADrAuAfXNKUMQkzSsGvPIsrwh6NtiLaWBvrgP0AQDfSBvJ57DpRAcA + gjd7X8WZqQEQQnB52+8hEopp6diXhByvD9vfBSimEQHfkDl5HdjNJPB0HoAnQpBkDnAmFv50WBDl+xp8 + D5dbURzy8QJ2T4AH3NvmAnrLLfdRttV8o/I8HoHPpq2dGsdlJw8gO53BjuNPgYCgNtGMDa1XKzkEjc1A + 7Ekh8+ZIsEDUfx8PAb8tHrQEAKUA19esNhNXEKJUvjvYPQE+CNArApWN46n5VObIKQH4bNja/mNYOnoa + o1P92H/qVRAQnN90OZbUnK+ls/y+oH15sMzYAgTuVmCmXazMm5eB7GHSNwJVHw4fQBWTgqLGIGvXfBYl + EqHcxNQv2AH1sQsK9AqzvfEMsA5IabvYIB/AZ79edbwDkekc9vf+BgOTJ0EIwRUr3meaAsTiENTFciqw + /ZUgpipOu+bF68Cq6j/lBXh9eHyTgjGAJUy1szFjB6YlcGZzsHBnLlWwq94ziNM4sgcBettsL22YqF0l + At/oSySfw7Vv7QIAbD/2JPLTWUTDcVyz+i49NX9ZsHgqMCyagsVM48i80wDsn+0DJ31+/DxcHkEnd8YV + 1UXH5aVCvyB27YdaIfalN7crkHH2M8v7BD0721syqEwkgudBKb0E+KyW1TQ+hLWnjyGZGcP2Y0+CgGBx + VRvWLL5cS8JbFtRPBWYPGFF5rM+urcDsYNnumdIk5qFcvzOxOnBKQbn3ywuo/XXcw/i5pPU0y6vE62nY + 1RKlB4jCdOjax6UU4IP9Sm2J9D+Xdr2Juqkx9IwewbGhfdoBIq3XojaxGLz3BFjwS3cCzMUyYLFuNfBz + iUDh5lOX++kZ5L5nWtXxmL0rmAb7HA+XtFLABwF6j7O9G+hLBT5v1uelvfKdvYhM57D75PNIZscRCcdx + 1YrbtUibFmCuAhD+TgD2F4JZmTMNgP3seSVA8cHgrY+7lqkKFgkYuA7joEA4k+KmSLgNlyI5lAz4UkHv + VodasDjSC/BB+YVToDY5hktOvInsdBrbj/8CBAR1Fc24bPktsGsBxVUA5hViagU+r6nzRgOwx6sVCKUH + QvQMeCIFrwDmzcBuAJuNmTqIuj3kdyRTrdcD4AMBPXUJVgC5PYxLcpZGC9rFRK0cPImlI6fRP34C+3t/ + DYIyrF18JRZXtTneFmQ3Bmn/FUdDJPPmZSA38JuDKKwEnh4Yz6QgyDtvwDub7fCQxfd9UWgb16YvAfQA + 5CaUKJ8A+HwWkQPfohDo3698ew8qMil09m7FaKofBATXnvcRREJxy4qA9VeCOdVQAAVrxfPiZSA1ZyB1 + ziDSSuH/4ROQgiu2Zhuknm7CzLRPfUegS3sU2s7O8jMFemlel3D+bM92QF6OSOMoz+dw5Vt7ABBsPfoT + 5AoZRMNxbGq/g9kJWKbvBDSEWMo3TgayVz8vXgYSxTsGSR8ic1HN/uC5NgKeHzoHMUjIwROug5jpZwLQ + sks0M/opVDGPGPAKoIc8Xgn01D2cD3wOOYn6yMtmk6axIVzQfRiTmTPY1fUcCMqwrHYdVjVcbK79W34i + 3ChuPhwJVpL3Xzj4xS/2B9Q3IZSaT0YQfrWKUsfeyxUEiZSYzzrL2wdXoUyXuoOa7S1BPART97JUgM+G + X3DyMGqTY3hnsAPdo4dBQPCutltRGa2xqf/aW4MqBD1vNwJ5+4FQ6133TQi8soPKLynXrtoGctn7HqCW + UPIY2futAnhV0POiVUHvYbZ3Bb6s35xswjbZ+nH1odcRmc5h27EnkJvOIBqK4+Z1n2ROBTaEoCw15CyU + Fiwhc7oVuKRTgXmDJZjK7CaDL1Lg1sMvR/QslVT+TILZQ1t4ZKVajtSG9wJ4uKfzDXpAfk8d+WYH+EY/ + KtJTuOTYfmSn09h69McgpAxVsVpmO3BR/zcIQMNVgesDCLvdv6DEADYhBJRSy5FFRhgbLxxIQ+QHnzgH + l1BbNHGksxTpVr6sPsppAntjvZYdlARBDArlU1mk3/YopHWdO9y0CEkQdaDXpUxREoX0bv1ZcfokBhY1 + 4gSAQ6e3Y13zJvOngAgpYsgAvkzm1VZg+2fpAHmd8Vy0BIumAIG2EBSAAtX1PVwBt93hFDSr4akOHtuj + kFbJIaky0wtme2fZnL6IyrQn8Tnji9Je8k4nKtIp7Oz6JUan+plVAOthIW4ybzYCqTgDlW+06sPOfSjV + icHz0tfZICKV3wbyAmXvU4lgh3p6pRUIt3JkoAf4oPeo5s8U8I0v5bkcrj6wHQDw22OPIzedgfQcAAAF + 80kuytm1Fdg2UJ4IoRRSoOII3nt+BWq9lBxyMzLw4kv43oCjWbb+WkAvqMdP20TJVO41FMrixAtvLxur + WC4X9DMAfDasZnIMG7oOYSTZh47el5lTgYtEIAK+IUIfwIoVK14BcD3hnULiMYy180X2Pi9eVezJhdoP + r1hVe5y6RBJxYgNIbkXMnihWRv1lK6Vvnm69ihkhC6KiWMolCl4+eXkubaEqaSk3v/F1/fFDGFzUiIPY + hrba9eaBIOwUJWuHUAPw+jNefjz9sjzSQ0FdbrynzSpBzcZuM7xFt5zDy8t6o4euS8dA8T55vleK8fKZ + ngkUDJEgmbuaL4jzO+NbkjDhlx9+A5F8Di8dfRiTmTP6j4Pwy7ZXKzUBSjnN1y8hBPoikG3ASyIFD6Dg + Jaeq5c/0VYKY41ewXn7vg6eBdAMYlQRL0UyVy+eC3o2IOP0Xpre0y5qfB3xDEqkpXH5oN3L5NCYzo3oo + cZRNOQ0QmgAidb3UMLeyzYbaJJWlGJ1iwlVVdw9LbsRHHp5MZpztH09TjKZKROBMikLTxlKU27exFPVc + liOZ6tC4aX/CdOptnEgX+2kkC5VBu3+y+qkgiKqkp+YfqloGExbr7sXixNvoX3Weqfan0hlkC+OWLCFE + Ld+l+wBEoFUNA+DL9uctYfSOU+zqzjsbKQArUUxnRpcIejb/20POtdfJDDA0KViTVajbd/MC5JzJLOX2 + DcijMuL2o5Qz0zajCLFGQbkfZe17e7iAyYzVeq6MEOSm88Ki3coUkx3l/ZEQmbivdHA/ymobUairAUDR + 2z+EicxhS5rW5kbLdyUfwEyp/7J4nhbA1TZV7D5eOoF6pqyeQpaf58eQPX3uF/V7yWsuoY/eriDMESMb + d4WFN5hCY55/v5Wa55JAtKJiyct+sWn8MlXfzYQgmSyir7zOvCHIa5+1AFcfgF/wez0DQPVEIGNgCygS + gvAGcW6sNK3FXiqdFNi+BVFWKWLpol8QywpXGFNv41a8xGDnVOqR4OUg5ZCYW3t51QuAz1125U1kLsBn + 85cNjSKyba/9bWAUKNV+IchWhKsPgP3sV9X3YvuLlwGp8CNlf04d0hU57avlZ5bkVbkF+zUd3EhgrnYL + yxstGQyfIIevYqj8K/WU29EvVZI2ACvVFmxfqKjpiuFsGOVmAMr3HcH0iiWgiKDg0hFXHwBQOrj9vAdg + JwGNLakNGNb9/EYOKSHYBovaipOfqMobI2dzQFEygr3gKXCyUJ3tZVGKHVDvp2AC8FsPFUUolKUMei1A + SnSiZ1FUARXnZ4Miz/0W2cSVQFzeF6kGAMyMp9/NGciTugTB6rqQJUw8+xLpV0EQvyQf6Do97nSULVtU + hmU1Ie+FzSMZTxcwkXFOVW01ZaiOuW8qlc5qsggVkFKF5IrENpUDxpl+UgosihGsrA0p5Bc3RARwX8AX + pTXD8ughIWSbl+jBWkT1okpLcte3AWd66U+U3y518TKsrnd5yLy4/ksgBbdM7ww727lsUQjtdbP66kUw + wtyO0RTB0KTz/rTVhlAbJ7wskAfaI4lCWnm51CVepYyRVAGJlB6lx9XGCVbZ7x+3MiKclYXtUSAmdeAX + 23GAVCPT3GrBVEXMSmKeNAAjPOjZXmUZkB1ft8GyBIhIQXSTVJcVZTdjvktAbWa1aHX137fhz03vnWwU + 0jA+ALXyxYlnHPi8SkzHoPvGOqWNQDPt7ON95r4NCMdr/d7PBeCSAlOQSAt120dgb6dSW+a38Px8BV6k + 0EMeANhteXyp9wppeCsDjrxKOrzX2Zof5w34xS9eV5hkJkBHgN7/FYSQFV60AaWBgQ9CEA0oEY2cmlrK + ag88J1HBFjYXXn5Pz4Zk2Um5ZL+EFxTgXdIpgSWo2d6tzSUCX7oaYfbXObEKCaCvr+/zCsOjJCtWrPgy + pfRLQPAnArkSApNWPjqCcCIbVqJWBideZm7MiJSkfQiVfesidADtKhnwLmmVQW8DmbYPgK+VutarEB44 + 8Bl1WWYGzMqRYF59A26NFg4SgfrkPiOvAYsyEcinjLkSj2topQBdUN1MAx7wPtNrWKdqyYOa7ZXLUgA+ + 02/fPoCZkFKWAdUqsH2XaO8lkYKsTqB48Kq5r8C4W3OOeGm7A8vmxyIIEPBAqeo9dU8+j4HvReZEA2A/ + q+0CFHTSswMQcpOeSor0SQ6WmWIe4T8QEWgGrt0swesvTOLbJ+DecLN7CuCWxSmvlJQKfCPMbqF68QHM + hHhZCXDmVei8bwegPBpwcQWo1n22id0+F5CYV9+g13qFyWYI9Gx/zOVAn958R7LZAD7bD6bhvPs05xqA + 6LPoUFBDuJZC0A5AJr/KrOZa1VwuA3gEoycNdwZ8A9xkJXn+1WZ6ox7qaQCc8cpqviOudOAbQcfeOowj + 7xQs0SvblgH4qPl91gjA66Ygu/SMF/B6j+SMc4+AGs9QHBosUScX1Pn2sLOddXGKusRZuBMQMB+wVJ7i + FGeb855TecTLg2e00t+a9GKXFKV3vICU7dX/eJhiR0/eNa/ybK9UgPe0bNCL7xzBW6PW8wBOrFx5AviG + +X02CED7pXIfm4JYeezgNB47OD0LzZ1JOdvbL5JC6UWcFXL29dM+mZ44caKL/T5TBECYC5RS4mUXoJFu + QRZkQWZWgiQAYrvMcEqLG2lVTYFQKIRIJGKtwOMSoZ8lRb/LkKUsX5a09BlgGTNZ3u9KW9ykurp6rpvA + FdGEWioB2AFPbOEAQwBelgHj8Tji8biZ1qxwBj4HkS7ItCrf/abxEhZkuIqo5J2NSWC2y5wJbVe1TL8E + IJztISEDry8EzdZndsD8prPHidIG9d1+k1XTqIQFGc7GuYnooWXzuz3Y9rq8gkulrXNhnpZaZ1AagG/g + A97AyVsV8PPZS72qeUTpVNKW8l1Un1sar2G8B8ZvOC/OHu8msoffD+BldZ+NvqdS2qxKAL6AD1idgF5A + HvTsHtRM7wXsMznrlzLDl6oJyMCtqgmUSgqyctzKDALkQZkBM0U4QZoAquAXEgA0P8C8Uf/ZAQpK5Z+P + WoDfMK9pVcpxyyeKt6fxKjNhAvgpt1SZqfrcCCAI8Ju7X+aDvb9g+4vD/KZVLUcln5c09nRByNloApQi + XgjAHgZOuP0z/2XZBdvf03dRfX7T2MOCSFtqHBuvmkaWTpT+XJEgTADiEu5GAsZ3yzKgvZELtv/M2f5+ + nX5BOvyCNgHmwyrAXMh8WgXwnJYFt+gGna0q/3zUAoIM8xOuGieKV01jT+eWVpbPa/75IqW21ysBGLUR + /TNxSWuk487wvI6crUQgShvUd/vNnitHoEo4L06WTzW/PY0snSi9aj5V8asxzDTRBGECsACXgd0CdFjJ + gUIzAagb0NiGzyfb32ucvcwgv/tN4yUsyHD7/T0bTABeGTKZLY1hrkyAAjQvvh3U4ITZycJSowqA7Y2d + D7a/n7iZ+m6/kaU6/WYD+GebCeCljPkgs2ECFKABugzuJMCKGVYoFH5TVlbGgoXwPoPjWCTFO8U6EqXp + mJsrzcv4JZTqYMq2hEUikfcBaGHyKs3q6XT6h0Z5DGlZnky2M5R5q1KQxN5vNhH35srCQ6FQUywWu8kr + IWQymV/l8/l+o9mcetiMlO0i+5mTn9rLsIUXHyRC7PkdeQEgGo2+nxCyBB6EUtqTz+cf5dRlaYuoL5L+ + uaW1l+uajkMQW9kvqj4AiiIRAEVwu/kBAAAjIyO/AfCqnpa3jMgLF32X7T/wUo5bucrltLe3X1pWVtbi + dVY/ceLEA4K+qPz189mTtLa2XhiNRm8y2m6IGyGcOXPm+Z6enk4jueSvW5jss1ucShguu+yyd4VCIQsB + uJkAlNLuPXv2fINTvtt3WRpZWpXxEuWXihcnIAt49hIRgSyMzUsk4bzvELTBL4jd0sOtLKo/+V5tewB5 + +AO8V7D7JQHzCByPav40k5cq/PVCBKJ4vwThEDe1Wo8vcMr00x5Ru9zSu+VXEj9vA/olApFTkSiE+wGn + LE6W1p5OpK2wn6lPX0CeUzb71y1OlFb03ZMQQqb9rPkTQgwCUHlw3f56Bb8sDTfehx1taMR+CUmUR9Zn + e5yob56klPMA7IDnAVn0l03PCyNwJwOVz6qmBqAOdkca9gnyqAXkIAa4CrB5AJeB3gshUAA52WqDWagz + Lq/3TWjzcv7aw2aDFEA14fZHODBa+mlZuS5t8No3KJTlS4I4EYhtkAjIgBPY9vRAacD08rnUtPa/1Ivt + z3y3awC88mWf3eKgGMcTSggRmgAumoBBAIA64FXivALGC1EI+8MbGxQ1AC/1BqURlQR6VoI+E9DeYNmM + 7vWvKhj9hHktzx5HRUuPsu+wagDw8VkWJgtXEpkJINMEGALgAdr+3atm4PbXE0nwNAA30TNMB9AOlXBe + XGAy06cCsx1QBZXXv3Oe1r7RCVDTAuCPAFTjZeGqknczAQSawDScBADIwe0WH+RfS5hXE4DpI7c8H3/Z + cmYU8HaZzV8G4mkHxl8/TjBRmiDJRaVehxMQUNYCcrC2GZw6RGFBqvv8QhRMAIEmkAeQ5RTphRBUScIP + yMxwg7wtjXJfBTA0AC/1idLOKuDtMqs/DWYTXsdLBaNbWBDlOtIY6PeqBYDvA1D5LgorNQ5g7gchJF+C + CcCuAjjK5nwvhQR4Yaqk4XcVYNr2XaXOOQU7T+aSAHgiGiDeDG8Pn4kw1fQWVdLDPoAcp0zed1G9IglM + A/BjAujLgFlBsV5JwOtnT2Ei9CtsFS7wysM8BbpI5hsBiMSNGIzPfr3pomU1pTLYh8jnPgBe3aIwP+G+ + pEQTgO0bDwgqDkK3tH60Bre6hf2y5eE5Ac86OVsIQCSyG+lHAxClkX221F3CPgBR2aIwL/G+xMsqADtj + SkwAx3jBG/i95FVOV8JGoLNeznYCkIkry8PnjM/5XMo+AD+zuRfA+yYHwwTw8h6AHmasArCiQgaycLf7 + 6Wvm92MC/C7J7zIBqIjbbGOIdFZmnYD6d6h8B//XQoMAflA+gGlbe9k4SOLYdwHsIptug9QG3OqSytn0 + SnApcq4TgKoozThuh3Rw9gHwQOLHBFBN40nsJoCKJmDkg9VGdhtLWbhbXElyrgBdJAsEEIB4OaTD9j0I + O3LGdFWDALwe/EEIKUCsAcwrUT167HdVFgggAKGUfp4QUqN/Fi2Ncb8HUf0Mdq0DwA0iLYDtjy2uYwbb + FLR8HkCNPdBFMzgz140OSsi5rgItyIKcy1JWehELsiALcrbKAgEsyIKcw7JAAAuyIOewLBDAgizIOSwL + BLAgC3IOywIBLMiCnMOyQAALsiDnsCwQwIIsyDksCwSwIAtyDssCASzIgpzDskAAC7Ig57AsEMCCLMg5 + LAsEsCALcg7LAgEsyIKcw7JAAAuyIOewLBDAgizIOSwLBLAgC3IOywIBLMiCnMOyQAALsiDnsCwQwIIs + yDksCwSwIAtyDssCASzIgpzDskAAC7Ig57D8/0CVtJ6iBAd5AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1 + LTA0LTIzVDAyOjM1OjE3LTA1OjAw0nG06QAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMi0xMS0yMFQwODo1 + ODoxMy0wNjowMHU+nDMAAAAASUVORK5CYIIoAAAAMAAAAGAAAAABACAAAAAAAAAkAAASCwAAEgsAAAAA + AAAAAAAA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP///wAAAAACAAAAAwAAAAMAAAADAAAABAAA + AAQAAAAE////AP///wD///8A////AAAAAAMAAAACAAAAAgAAAAEAAAABAAAAAP///wD///8A////AP// + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAMAAAAEAAAABgAAAAgAAAAKAAAADAAAAA4fHx//ICAg/////wAAAAAVAAAAFwAA + ABgAAAAZAAAAGQAAABoAAAAa////ACsrK/8sLCz/////AAAAABYAAAAVAAAAEwAAABEAAAAPAAAADv// + /wAwMDD/MTEx/////wAAAAADAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAA + AAAAAAABAAAAAwAAAAYAAAAJAAAADAAAAA8AAAASAAAAFgAAABkAAAAdAAAAIAAAACMiIiL/IyMj//// + /wAAAAAuAAAAMQAAADMAAAA0AAAANQAAADUAAAA2////AC4uLv8vLy//////AP///wAAAAAuAAAAKwAA + ACgAAAAlAAAAIv///wA0NDT/NDQ0/////wD///8AAAAADgAAAAsAAAAHAAAABAAAAAIAAAAAAAAAAAAA + AAD///8AAAAAAAAAAAMAAAAG////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wAlJSX/Jycn/////wD///8A////AP///wD///8A////AP///wD///8A////ADIyMv8zMzP/////AP// + /wD///8A////AP///wD///8A////AP///wA4ODj/ODg4/////wD///8A////AP///wD///8A////AP// + /wD///8A////ADg4OCD///8AAAAAAQAAAAUAAAAI////ABgYGP8aGhr/HBwc/x0dHf8fHx//ISEh/yIi + Iv8kJCT/JiYm/ycnJ/8pKSn/Kioq/ysrK/8tLS3/Li4u/y8vL/8wMDD/MTEx/zMzM/80NDT/NDQ0/zU1 + Nf82Njb/Nzc3/zg4OP84ODj/OTk5/zo6Ov86Ojr/Ojo6/zo6Ov86Ojr/Ozs7/zs7O/87Ozv/Ozs7/zs7 + O/87Ozv/Ozs7/zo6Ov86Ojr/Ojo6/zo6OkD///8AAAAAAAAAAAH///8A////ABsbG/8dHR3/Hx8f/yEh + If8iIiL/JCQk/yYmJv8nJyf/KSkp/yoqKv8sLCz/LS0t/y8vL/8wMDD/MTEx/zMzM/80NDT/NTU1/zY2 + Nv83Nzf/ODg4/zk5Of86Ojr/Ojo6/zs7O/87Ozv/PDw8/zw8PP89PT3/PT09/z09Pf8+Pj7/Pj4+/z4+ + Pv8+Pj7/Pj4+/z4+Pv8+Pj7/Pj4+/z4+Pv89PT3/PT09/z09PUD///8AAAAAAAAAAAD///8A////AB4e + Hv8gICD/Dxwp/ww/dv8MQHf/DEB3/wxAd/8MQHf/DEB3/wxBd/8LPG7/CS5U/wxBd/8MQXf/DEF3/wxB + d/8MQXf/DEF3/wxBd/8MQXf/DEF3/wkuVP8LPG7/DEB3/wxAd/8MQHf/DEB3/ww/dv8MP3b/DD92/ws+ + dv8KOm3/CSxS/ws9dv8LPXb/Cz11/ws8df8LPHX/Czt1/ws7df8LOnX/Gyk7/y0qJ0D///8A////AP// + /wD///8A////ACEhIf8jIyP/EStG/xB55v8Qeub/EHrn/xB75/8Qe+f/EHvn/xB85/8Pc9X/DFeh/xF8 + 5/8RfOf/EX3n/xF95/8Rfef/EXzn/xF85/8RfOf/EXzn/wtXov8Pctb/EHvn/xB75/8Qeuf/EHrm/xB5 + 5v8Qeeb/EHjm/xB35f8PbtT/C1Kf/w915f8PdOT/D3Tk/w9z5P8PcuP/D3Hj/w9w4/8Ob+L/Vm+S/6OU + i0D///8AHBwc/x4eHv8gICD/IiIi/yQkJP8mJib/ESc+/w5ow/8OacT/DmnE/w5qxf8PasX/D2vF/w9r + xv8NY7f/CkyL/w9sxv8PbMb/D2zG/w9sxv8PbMb/D2zG/w9sx/8PbMf/D2zH/wpMjP8NY7j/D2vG/w5q + xv8OasX/DmrF/w5pxf8OaMT/DmjE/w5nxP8NX7X/CkeI/w5lw/8NZML/DWPC/w1jwf8NYsD/DWHA/w1g + v/8MX7//T2d//4p+dkD///8AHx8f/yEhIf8jIyP/JSUl/ycnJ/8pKSn/ESY7/w1hs/8NYbT/DWK0/w1i + tf8NY7X/DWO1/w1ktf8MXaj/CkiB/w1ltv8NZbb/DWW2/w1ltv8NZbf/DWW3/w1lt/8NZLf/DWS3/wpH + gv8MXan/DWS2/w1jtv8NY7b/DWK2/w1itf8NYrX/DWG0/wxgtP8LWab/CUN+/wxesv8MXbL/DFyx/wxc + sf8MW7D/C1qv/wtZrv82hJr/WnZ4/35zbUD///8A////AP///wD///8A////ACoqKv8sLCz/Ey9J/xF/ + 6P8RgOn/EYDp/xGB6f8Rgen/EYLp/xKC6f8Qedn/DV6n/xKD6v8Sg+r/EoPq/xKD6v8Sg+r/EoPq/xKD + 6v8Sgur/EoLq/w1eqP8Qedn/EYHp/xGB6f8RgOn/EYDp/xF/6P8Rf+j/EX7o/xF96P8QdNf/C1ik/xB7 + 5/8Qeuf/EHnm/xB45v8QeOb/EHfl/ySFz/+r08X/bo2U/6iZkUD///8AAAAAAAAAAAAAAAAA////AC0t + Lf8vLy//FDBK/xGC6f8Sgun/EoPq/xKD6v8Sg+r/EoTq/xKE6v8Re9r/DWCp/xKF6/8Shev/EoXr/xKF + 6/8Shev/EoXr/xKF6/8Sher/EoTq/w1gqv8Re9r/EoPq/xKD6v8Sgur/EYLp/xGB6f8Rgen/EYDp/xF/ + 6P8Qdtj/DFqm/xF96P8RfOf/EHvn/xB65/8Qeeb/FXzg/5fIyf+n0cL/g5eT/6qak0D///8AAAAAAAAA + AAAAAAAA////ADAwMP8yMjL/FTFL/xKE6v8ShOr/EoXq/xKF6/8Shuv/Eobr/xKG6/8Rfdv/DWKr/xKH + 6/8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKH6/8Sh+v/Eobr/w1irP8Rfdv/EoXr/xKF6/8ShOr/EoTq/xKD + 6v8Sg+r/EoLp/xGB6f8QeNn/DFyo/xF/6P8Rfuj/EX3o/xF85/8Qe+f/Zq/B/4DBpv+azLn/mKKT/6uc + lUD///8AAAAAAAAAAAAAAAAA////ADMzM/81NTX/FjJM/xKG6/8Shuv/Eofr/xKH6/8SiOz/E4js/xOI + 7P8Sf9z/DmSt/xOJ7P8Tiez/E4ns/xOJ7P8Tiez/E4ns/xOJ7P8Tiez/E4js/w5krv8Rf9z/Eofr/xKH + 6/8Shuv/Eobr/xKF6/8Sher/EoTq/xKD6v8Retr/DF+q/xGB6f8RgOn/EX/o/xF+6P82lMv/lsu2/1+z + jv+Wyrb/mKKU/6yel0D///8AAAAAAAAAAAAAAAAA////ADY2Nv84ODj/FjRN/xKI7P8TiOz/E4ns/xOJ + 7P8Tiuz/E4rs/xOK7f8Sgt3/Dmev/xOL7f8Ti+3/E4vt/xOL7f8Ti+3/E4vt/xOL7f8Ti+3/E4vt/w5n + sP8Sgd3/E4rs/xOJ7P8TiOz/E4js/xKH6/8Sh+v/Eobr/xKF6/8RfNv/DWGs/xKD6v8Sgun/EYHp/xuG + 3f+Wyb//YbSP/1uwiv+Iwqv/mKOV/62fmUD///8AAAAAAAAAAAD///8A////ADg4OP86Ojr/FzVN/xOK + 7P8Tiu3/E4vt/xOL7f8TjO3/E4zt/xON7f8ShN7/Dmmx/xON7v8Tje7/E47u/xOO7v8Tju7/E43u/xON + 7v8Tje7/E43t/w5psv8Sg97/E4zt/xOL7f8Ti+3/E4rs/xOJ7P8Tiez/E4js/xKH6/8Rftz/DWOu/xKF + 6/8ShOr/EoPq/3S5uf93vp//X7OO/ziXbf+BvqX/maSW/6+hm0D///8AAAAAAAAAAAD///8A////ADs7 + O/88PDz/GDZO/xOM7f8TjO3/E43t/xON7v8Tju7/FI7u/xSP7v8Tht//D2uz/xSP7v8UkO//FJDv/xSQ + 7/8UkO//FJDv/xSP7v8Uj+7/FI/u/w9rtP8Shd//E47u/xON7v8Tje3/E4zt/xOL7f8Ti+3/E4rs/xOJ + 7P8SgN3/DWWv/xKH6/8Shuv/SqO//4vGrv9gs47/RaB3/ymNYf98vKH/mqWX/7CjnUD///8AAAAAAAAA + AAAAAAAA////AD09Pf8/Pz//GDdP/xOO7v8Uju7/FI/u/xSP7v8UkO//FJDv/xSR7/8TiOH/D261/xSR + 7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/w9utv8TiOH/FJDv/yOW3f+Nxrn/OqDR/xON + 7v8Tje3/E4zt/xOL7f8Sgt7/Dmex/xOJ7P8kkdP/nM26/2C0j/9Uq4X/Ko1h/yeLX/94uZ7/mqWY/7Kk + nkD///8ANzc3/zo6Ov87Ozv/Pj4+/0BAQP9CQkL/GTRI/xJ+0f8SftH/En/S/xKA0v8SgNL/EoDT/xKA + 0/8ReMb/DmKh/xOA0/8TgdP/E4HT/xOB1P8TgdT/E4HU/xKA1P8SgNT/EoDU/w5iov8Recf/IY3M/43H + uf+Zz7n/v9zU/ziaxv8RftL/EX3S/xF80f8QdMT/DV2d/xV+zf+GwrP/Z7eU/1uwi/8wkmb/KIxf/yWK + Xf9zuJv/iZaJ/5yQi0D///8AOjo6/zw8PP8+Pj7/QEBA/0NDQ/9FRUX/GTNG/xB2w/8Rd8P/EXfE/xF3 + xP8SeMX/EnjF/xJ5xf8Rcrr/D12Y/xN5xv8Tecb/E3nG/xN5xv8Tesf/E3nH/xN5x/8Tecf/EnnH/w5e + mv8feq3/i8S0/5DMsv92wp//e8Oj/7bYzf80jbD/EHfF/xB2xP8Pbrj/DFiV/1WipP+Awab/XrKN/zqZ + b/8ojF//JYpd/yuNYv96vKD/gY+C/5GGgkD///8A////AP///wD///8A////AEVFRf9ISEj/GzpS/xWS + 7/8Wku//FpLv/xeS7/8Xku//F5Pv/xiT7/8Xi+L/E3K6/xmT7/8Zk+//GZPv/xmT7/8Zk+//GZPv/xmT + 7/8Yk+//GJPv/yB+sv+Jw7P/jcuw/3TBnv9puZX/XrKM/3XAn/+t1Mb/NZ/O/xSR7/8TiOH/NYyn/4rF + rf9eso3/RqF5/yiMYP8mil3/K41i/3u8of+RwKb/t6ml/7aopED///8AAAAAAAAAAAAAAAAA////AEhI + SP9KSkr/HDtS/xeS7/8Xku//GJPv/xiT7/8Zk+//GpTv/xqU7/8ZjOL/FXS7/xuU7/8blPD/G5Xw/xuV + 8P8blPD/G5Tw/xuU7/8blO//Jpnc/4jCsf+Lya//csCd/2e4lP9CnnX/PZtx/1muiP9wvJr/pNHA/zSe + zf8gktT/gL+s/2S1kv9TqoT/K45i/yaKXv8rjWL/eryg/5HApv/1497/uKum/7iqpkD///8AAAAAAAAA + AAAAAAAA////AEtLS/9NTU3/HTxT/xmT7/8Zk+//GpTv/xuU7/8clfD/HJXw/x2V8P8cjeP/F3a9/x6W + 8P8elvD/Hpbw/x6W8P8elvD/Hpbw/x6W8P8omt3/hsOz/4nIrf9wvpv/ZreT/0GddP88mnD/Q511/0Gc + dP9Uq4T/a7mW/5vNuf9yua7/b7qZ/1muif8xkmf/Jope/yuNYv94u5//kL+m//Xk3//149//uayo/7ms + p0D///8AAAAAAAAAAAAAAAAA////AE1NTf9QUFD/Ij5N/xuU7/8clfD/HZXw/x6W8P8elvD/H5bw/yCW + 8P8mlt3/R5un/yGX8P8hl/D/Ipfw/yKX8P8il/D/IZfw/yub3P+EwrL/h8er/269mf9ktpH/P51z/zuZ + b/9CnXX/hMCn/4G+pf88mG//T6iA/2W2kv9/waX/W7CL/z2bcf8mil3/K41h/3a6nf+bw63/9eXh//Xk + 4P/15OD/u66q/7qtqkD///8AAAAAAAAAAAAAAAAA////AFBQUP9SUlL/LUM6/0Cjrf8flvD/IJbw/yCX + 8P8hl/D/Ipjw/yaZ6f+CwMH/s9jL/2Kyxf8lmfD/JZnw/yWZ8P8lmfD/LZzc/4PBsP+Exan/bLuY/2K1 + kP8+nHL/OZhu/0GcdP+Nw6z/ztnP/7nRwv96u6D/NpVr/0qkfP9bsIr/SaN7/yWKXf8rjWH/dbqc/7rQ + wf/25uP/9uXi//Xl4f/15OH/vK+s/7yvq0D///8AAAAAAAAAAAAAAAAA////AFJSUv9VVVX/LkM6/7HU + yf9BpMj/I5jw/ySY8P8lmfD/KJrp/4G/wP+Gxqv/bLyY/5fMt/9jssT/KZvw/ymb8P8wndz/gb+u/4LE + p/9pupb/YLOO/z2bcf84l23/QJtz/4vCq//Y3db/9+np//fp6f+40ML/cria/zGRZ/8/nHP/KItf/yqM + Yf9zuZv/utDB//bm5f/25uT/9ubj//bl4v/15eH/vbGu/72wrUD///8AAAAAAAAAAAAAAAAA////AFVV + Vf9XV1f/LkQ6/47Gr/+/2tP/Np/G/yea8P8rm+n/gL+//4PEqP9ouZX/YbSP/12xi/+UyrT/YrLC/zOf + 3P9/vq3/f8Kl/2e4lP9esoz/O5lv/zeWbP8+mnH/icGq/9jd1//36uv/9+nq//fp6v/36er/t8/B/2u0 + lf8sjWL/KYxg/3K4mv+50ML/9ufm//bn5v/25+X/9ubk//bm4//25eL/v7Ow/76yr0D///8A////AP// + /wD///8A////AFdXV/9aWlr/LkQ6/4LAp/9quJb/p8/B/zSe1P+JwsX/nM26/2S2kv9esoz/TaR9/0qh + e/9WrYb/jsew/5LHsv98wKP/ZLaS/1uwiv85mG7/NZVq/0+ifv+ayrf/193X//fq7P/36uz/9+rs//fq + 6//36uv/9+rr/7bPwf9ksY//cLiZ/7rRw//36Oj/9ujn//bn5//25+b/9ufl//bm5P/25uP/wbSx/8C0 + sUD///8AT09P/1JSUv9VVVX/V1dX/1paWv9dXV3/LkQ6/4C/pf9dso3/e76i/8bc2P+ay7j/YLSP/1qv + iv9Konv/stPJ/5DEsP9Fnnf/U6qD/2m3lf9htI//WK6I/zeXbP8zlGn/TqF9/5XGs//S2dP/+Ovt//jr + 7f/46+3/+Ovt//fq7P/36uz/9+rs//fq6/+yzL3/nLWn//fp6v/36en/9+jo//fo6P/25+f/9ufm//bn + 5f/25uT/wrWz/8K1skD///8AUVFR/1RUVP9XV1f/Wlpa/1xcXP9fX1//LkQ6/369o/9ar4r/W7CK/2W1 + kv9csYz/Vq2H/0igef+v0sf/kKWZ/5u2p/+Jwav/QJtz/06ngP9WrIb/NZVq/zGSZ/9MoHv/k8Wx/5mi + nf/Fu73/zsPG/83Dxf/NwsX/zcLE/8zCxP/MwsP/y8HC/8rAwf/Atrj/pJuc/8m9vv/IvL3/x7u8/8e7 + u//Furn/xLi4/8O3tv/Dt7X/mo+P/5mPjkD///8A////AP///wD///8A////AF9fX/9gYGD/LkQ6/3u8 + of9XrYf/V62H/1iuiP9SqoP/RZ53/63Qxf+zx7v/xLm5/+zf4P+zzb7/gr2m/zyYb/8zlGn/L5Fm/0qf + ev+Ux7L/0tnU/8e9wP/k2dz/7uLl/+7i5f/u4uX/7eLl/+3i5P/t4eT/7eHk/+3h4//i19j/wri5/+zf + 4f/s3+D/697f/+ve3v/r3d3/6tzc/+nc2//p29r/ua6s/7mtrED///8AAAAAAAAAAAAAAAAA////AGBg + YP9jY2P/LkU6/3m6n/9TqoT/VKuF/0+ngP82lmv/kMGv/4a8o//t39//zsPD//fq6//36uv/tc/B/3u6 + oP83lGv/SJ14/5LGsf/X3tn/+Ozw/9HHyv/u4+f/+O3x//jt8f/47fD/+Ozw//js8P/47PD/+Ozv//js + 7//t4eT/zcLE//jr7f/36uz/9+rr//fp6v/36en/9+jo//bo5//25+b/xbm3/8S4tkD///8AAAAAAAAA + AAAAAAAA////AGJiYv9lZWX/LkU6/3e4nf9QqIH/S6V9/zOUaf8xkmf/MJJm/4G7pP+oxLX/0MXF//fq + 6//36uz/+Ovt/7TPwf9+vKL/kMWv/9be2f/47fD/+O3x/9PKzf/v5On/+O3y//nt8v/47fL/+O3y//jt + 8f/47fH/+Ozw//js8P/u4uX/zsTG//jr7v/46+3/9+rs//fq6//36er/9+np//fo6P/26Of/xrq5/8a6 + uED///8AAAAAAAAAAAAAAAAA////AGVlZf9nZ2f/LkU6/5bHtP9Honn/MJFm/y6QZP8tkGT/LY9j/yyP + Y/+ZyLb/pLuv//fq7P/46+3/+Ovu//js7/+/1Mn/1t7Z//jt8f/47fL/+e3y/9XL0P/w5er/+e7z//nu + 8//57vP/+e7z//nt8v/57fL/+O3y//jt8f/u4+b/0MbJ//js7v/46+7/+Ovt//fq7P/36uv/9+nq//fp + 6f/36Oj/x7u7/8e7ukD///8AAAAAAAAAAAAAAAAA////AGdnZ/9qamr/LUU6/5fGtf8sj2P/K45i/yqN + Yf8qjWH/KY1h/ymMYP8zkWj/d7ec/77Sx//46+7/+Ozv//js8P/47fH/+O3y//nt8v/57vP/+e7z/9fN + 0v/w5uz/+e/0//nv9P/57vT/+e70//nu9P/57vP/+e7z//jt8v/u5Oj/0cfK//js7//47O7/+Ovt//fq + 7P/36uz/9+nq//fp6f/36Oj/yLy8/8i8vED///8AAAAAAAAAAAAAAAAA////AGlpaf9sbGz/LUU7/3q3 + nv9gqov/X6qK/16qif9dqYn/XKmI/1uoh/9ZqIb/bLKU/2Csi//V3Nf/+Ozw//jt8f/47fL/+e3y//nu + 8//57vT/+e/0/9jP1P/x5+3/+e/2//nv9v/57/X/+e/1//nv9f/57vT/+e70//nu8//v5On/0snM//js + 8P/47O//+Ovu//jr7f/36uz/9+rr//fp6v/36en/yr69/8m9vED///8AAAAAAAAAAAAAAAAA////AGtr + a/9ubm7/XVlY//bm5P/25+X/9ufn//fo6P/36en/9+nq//fq6//v4uT/18zN//js7v/47O//+O3w//jt + 8v/57fL/+e7z//nu9P/57/X/+e/2/9rR1//x6O//+fD3//nw9//58Pf/+e/2//nv9v/57/X/+e/1//nu + 9P/w5er/1MvP//jt8f/47PD/+Ozv//jr7v/46+3/9+rs//fq6//36en/y7+//8q+vkD///8AAAAAAAAA + AAAAAAAA////AG1tbf9wcHD/XVlZ//bm5f/25+b/9ujn//fo6P/36en/9+nq//fq7P/w4+X/2M3P//js + 7//47PD/+O3x//nt8v/57vP/+e70//nv9f/57/b/+fD3/9zT2f/y6fD/+vD4//rw+P/68Pj/+vD3//nw + 9//57/b/+e/1//nv9f/w5uv/1szR//jt8v/47fD/+Ozv//js7v/46+3/9+rs//fq6//36er/zMHB/8u/ + v0D///8AY2Nj/2ZmZv9paWn/bGxs/29vb/9ycnL/XFhX/+3e3f/t397/7uDf/+/h4f/v4eL/7+Lj/+/j + 5P/p3d//08jL//Hl6P/x5un/8ebr//Ln7P/y5+3/8uju//Lo7//y6fD/8+nx/9fP1v/s4+v/8+ry//Pq + 8v/z6vL/8+nx//Lp8P/y6e//8eju//Hn7f/p3+T/0MbL//Dl6v/v5ej/7+Pn/+/j5v/u4uT/7eHj/+3g + 4v/s3+D/xLm5/8O4uED///8AZGRk/2hoaP9ra2v/bm5u/3Fxcf90dHT/VVJS/9LFxP/Txsb/1cjI/9bK + yv/Xy8z/2M3O/9nOz//UyMr/wbi6/9vQ1P/c0tb/3dPX/97U2P/e1dr/3tXb/97W3P/f193/39fe/8e/ + xv/Z0dn/39ff/97W3v/e1t7/3dXd/93V2//c09r/29LY/9rR1//Syc7/u7O4/9fN0v/VzND/1MrN/9PJ + y//Sx8r/0MXH/87Dxf/Nw8P/qqGh/6mgoED///8A////AP///wD///8A////AHNzc/92dnb/X1tb//bn + 5v/25+f/9+jo//fp6f/36er/9+rr//jr7f/x5Of/3dLU//js8P/47fL/+e7z//nu9P/57/X/+e/2//nw + 9//68fj/+vH5/+HY4f/07PT/+vL7//ry+//68vv/+vL6//rx+v/68fn/+vD4//nw9//x6O7/2tHV//nu + 8//57fL/+O3x//js8P/47O7/+Ovt//fq7P/36uv/z8TE/87Dw0D///8AAAAAAAAAAAAAAAAA////AHR0 + dP94eHj/X1xb//bn5v/26Of/9+jo//fp6f/36er/9+rs//jr7f/x5ej/3tPW//jt8P/47fL/+e7z//nu + 9P/57/X/+fD2//rw+P/68fn/+vH6/+Ha4v/07Pb/+/P8//vz/f/68/z/+vL7//ry+v/68fn/+vD4//nw + 9//y6O//29LX//nu9P/57fL/+O3x//js8P/47O//+Ovt//fq7P/36uv/0MTF/8/ExED///8AAAAAAAAA + AAAAAAAA////AHZ2dv95eXn/UU5O//bn5r/26Oe/9+jov/fp6b/36uu/9+rsv/jr7b/y5ei/39TXv/jt + 8b/57fK/+e7zv/nv9L/57/a/+fD3v/rw+L/68fm/+vL6v+Pc5L/17fe/+/P9v/vz/r/78/2/+vL8v/ry + +7/68fq/+vH5v/rw97/y6O+/3NPYv/nu9L/57vO/+O3xv/js8L/47O+/+Ovuv/fq7L/36uu/0cXGv9DE + xDD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////////AAD///////8AAP// + gPB//wAA/ACAkCR/AADAAICYJg8AAJ/8/5/n/QAAEAAAAAABAACwAAAAAAEAAPAAAAAAAQAA8AAAAAAB + AAAAAAAAAAEAAAAAAAAAAQAA8AAAAAABAADwAAAAAAEAAPAAAAAAAQAA8AAAAAABAADwAAAAAAEAAPAA + AAAAAQAA8AAAAAABAADwAAAAAAEAAAAAAAAAAQAAAAAAAAABAADwAAAAAAEAAPAAAAAAAQAA8AAAAAAB + AADwAAAAAAEAAPAAAAAAAQAA8AAAAAABAADwAAAAAAEAAPAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAPAA + AAAAAQAA8AAAAAABAADwAAAAAAEAAPAAAAAAAQAA8AAAAAABAADwAAAAAAEAAPAAAAAAAQAA8AAAAAAB + AAAAAAAAAAEAAAAAAAAAAQAA8AAAAAABAADwAAAAAAEAAPAAAAAAAQAA////////AAD///////8AAP// + /////wAAKAAAACAAAABAAAAAAQAgAAAAAAAAEAAAEgsAABILAAAAAAAAAAAAAP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH///8A////AP///wD///8AAAAABAAAAAUAAAAF////AP// + /wD///8A////AP///wAAAAACAAAAAv///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + /wAAAAAAAAAAAAAAAAIAAAAEAAAABwAAAAsAAAAPAAAAEwAAABcgICD/////AP///wAAAAAkAAAAJQAA + ACceHh5dLCws/////wAAAAAjAAAAIAAAAB0AAAAaAAAAFjIyMv////8AAAAACQAAAAb///8A////AP// + /wD///8A////AAAAAAIAAAAG////AP///wD///8A////AP///wD///8A////ACUlJf////8A////AP// + /wD///8A////AP///wAxMTH/////AP///wD///8A////AP///wD///8ANzc3/////wD///8A////AP// + /wD///8A////AP///wD///8AAAAAAgAAAAcZGRn/HBwc/x8fH/8hISH/JCQk/yYmJv8oKCj/Kysr/y0t + Lf8vLy//MDAw/zIyMv80NDT/NTU1/zc3N/84ODj/OTk5/zo6Ov87Ozv/Ozs7/zw8PP88PDz/PDw8/zw8 + PP88PDz/PDw8/zw8PP88PDz/Ozs7v////wAAAAAAAAAAAB4eHv8bGxv/TXuu/018r/9OfbD/T36x/09/ + sv9NbY//UICz/1GBtP9RgbX/UoK1/1KCtv9Tg7b/UHCT/1ODtv9Ug7b/VIO3/1SCt/9Ugrf/T3mq/z5e + gv9Ugbb/VIC2/1SAtf9Uf7X/U361/1N9tP+ekYnv////AP///wD///8AIiIi/x0dHf8MXrL/DV+y/w1g + s/8NYbP/DWG0/wlEfv8NYrX/DWK1/w1itf8NYrX/DWK1/w1itf8JRH//DWG1/w1htf8MYLT/DF+0/wxe + s/8LVqX/CUB8/wxbsf8MWrD/C1mv/wtYrv8LVq7/C1Ws/66elf////8AHx8f/yIiIv8mJib/ISEh/xB0 + 1v8Qddf/EHbX/xB22P8Qd9j/C1WZ/xB32P8QeNj/EHjY/xB42P8Qd9j/EHfY/wtVmv8Qdtj/EHbY/xB1 + 1/8QdNf/D3PX/w5qxv8KUJf/D3DV/w9v1f8PbtT/Dm3T/w5r0v9TnK7/tqad/////wD///8A////ACsr + K/8kJCT/EYDp/xGB6f8Sgun/EoLq/xKD6v8NXqj/EoTq/xKE6v8ShOr/EoTq/xKE6v8Sg+r/DV+p/xKC + 6v8Sgun/EYHp/xGA6f8Rf+j/EHbY/wxZpf8RfOf/EHvn/xB65v8QeOb/OZHW/7HWyf+8q6L/////AP// + /wD///8ALy8v/ycnJ/8ShOr/EoTq/xKF6/8Shuv/Eobr/w1hq/8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKG + 6/8NYqv/Eobr/xKF6/8ShOr/EoPq/xKD6v8Qedn/DF2o/xF/6P8Rfuj/EX3n/xqC3P+DwbH/msy5/72t + pf////8A////AP///wA0NDT/Kysr/xKH6/8Sh+v/E4js/xOJ7P8Tiez/DmWu/xOK7P8Tiu3/E4rt/xOK + 7f8Tiuz/E4rs/w5lr/8Tiez/E4js/xKH6/8Shuv/Eobr/xF82/8NYKv/EoLp/xGB6f8RgOn/crbB/2Cz + j/+Rx7L/vq+o/////wD///8A////ADg4OP8tLS3/E4rs/xOK7f8Ti+3/E4zt/xOM7f8OabH/E43u/xON + 7v8Tju7/E43u/xON7v8Tje7/Dmmy/xOM7f8Ti+3/E4rt/xOK7P8Tiez/EX/c/w1jrv8Shev/EoTq/02j + y/93vZ//SKJ6/4G+pf/Asar/////AP///wD///8AOzs7/zAwMP8Tje3/E47u/xSO7v8Uj+7/FJDv/w9s + tP8UkO//FJDv/xSQ7/8UkO//FJDv/xSQ7/8PbbX/FI/u/xSO7v9EpNj/E43t/xOM7f8Sgt7/Dmax/xOI + 7P8nkd7/g8Oo/1Wshv8qjWH/erug/8KzrP////8A////AP///wA+Pj7/NDQ0/xB1wv8QdsP/EHfE/xF3 + xP8Rd8X/DVuW/xF4xf8ReMb/EXjG/xF4xv8ReMb/EXjG/w1cmP8ReMb/dbXN/6nVxP9ws8n/EHXE/w9t + t/8MV5P/FHa//3y8sv9csYv/MJJm/yaKXv9zt5v/qZyX/////wA7Ozv/Pj4+/0JCQv83Nzf/EoDS/xOA + 0v8TgNP/FIHT/xSB0/8QZKP/FYLU/xWC1P8VgtT/FYLU/xWC1P8VgtT/EGWl/3Oxxf+Py7H/bryZ/4PF + qP9orL3/EHjH/w1gof9cqK3/ZraT/z2bcf8ni17/K41i/325nP+zpqH/////AD09PUBBQUFAR0dH/zo6 + Ov8Xku//GJPv/xiT7/8ZlO//GpTv/xVzu/8blO//HJXw/xyV8P8clfD/G5Tv/xuU7/9yr8H/i8qv/2i5 + lf9BnnX/RKB3/3rAof9irb//L4mq/3a9n/9Ko3z/J4tf/yuNYv90tJb/69/Y/8e4tP////8AAAAAAAAA + AABLS0v/PT09/xqU7/8blO//HJXw/x2V8P8elvD/HHq6/yOY6v8gl/D/IJfw/yCX8P8flvD/c7rT/4jI + rP9mt5P/QJ1z/zqZb/9osJH/PZtx/3G6mv9/wKX/UqqD/yqNYf8rjWL/c7SV/+rg2v/15N//yLq2//// + /wAAAAAAAAAAAE9PT/9AQED/Rqa7/yKX6f8gl/D/Ipfw/yaZ6f+Yxcn/mcvT/yia6f8lmfD/JZnw/3O6 + 0f+Fxan/Y7WQ/z6ccv9CnXT/erme/6zMu/9zt5r/NpZr/1eth/8vkWb/K41h/3Gzlf/r4tz/9eXi//Xk + 4f/KvLj/////AAAAAAAAAAAAU1NT/0NDQ/+Hws7/ebzN/yWZ8P8pm+n/mMrR/3O+nf9uu5n/mMrR/y2c + 6v9zutD/gcOn/1+zjf88mnD/QJtz/4rCq//Y3db/9+np/77Txv9osZL/KYxg/ymMYP9wspT/6+Pf//bm + 5P/25uP/9eXi/8u+u/////8AAAAAAAAAAABXV1f/RkZG/3S6v/99wKT/V627/4HAwP9tupj/V62H/0qi + e/9fsIz/n83F/33Ao/9bsIv/OZhu/z2Zcf+HwKn/193X//fq6//36uv/9+rr/7jPwv9dq4n/b7KT/+zk + 4f/26Of/9ufm//bm5f/25uP/zcC9/////wD///8A////AFpaWv9ISEj/cbO1/1yxi/+Dwaj/aLaU/1Kp + gv91tpv/nsOz/0+jf/9RqYL/V62H/zaWa/87mG//hrqk/7rCvP/YzM7/18zO/9fMzf/Wy8z/y8HC/4if + k//JxML/1MfH/9PGxv/RxcT/0MPC/9DCwf+4q6r/////AFJSUv9XV1f/XFxc/0pKSv9xtLb/V62H/1iu + iP9Mpn7/crOY/7S+t//i1dX/mcOv/0ieeP8zlGn/OJVs/5jGs/+3tLT/49jb/+PY2//j2Nr/49fa/+LX + 2f/Yzc//uK+w/+DV1v/g1NX/39LT/9/S0f/d0ND/3c/O/8G0s/////8A////AP///wBgYGD/TU1N/3G3 + uv9SqYL/R6J5/zKUaP+FvKb/tLy1//fp6v/36uz/l8Ov/1KjgP+VxbH/7efo/9HHyv/47fD/+O3x//jt + 8P/47PD/+Ozw/+3i5f/Nw8X/+Ovt//fq7P/36uv/9+nq//fo6P/26Of/0cTD/////wD///8A////AGRk + ZP9PT0//ksK1/0GedP8ukGX/LZBk/y2PY/9xspb/4ODc//jr7f/46+7/rM29/+3o6P/47fH/08rO//nt + 8v/57vP/+e3y//nt8v/47fH/7uPn/8/FyP/47O//+Ovt//fq7P/36uv/9+np//fo6P/SxsX/////AP// + /wD///8AZ2dn/1JSUv+gxrX/WKWE/1akg/9UooH/UaJ//1mmhf+iy7r/7Obm//js7//47fD/+O3y//nu + 8//WzNL/+e70//nv9P/57vT/+e70//nu8//v5On/0cjL//js8P/47O//+Ovt//fq7P/36er/9+np/9TH + x/////8A////AP///wBqamr/VFRU/9PXzv/H08j/x9TJ/8jVyv/I1cz/r761/8nXzv/g4t//+O3w//jt + 8v/57vP/+e70/9nQ1f/57/b/+e/2//nv9v/57/X/+e/1//Dl6//Uys7/+O3x//js8P/47O7/+Ovt//fq + 6//36er/1cnI/////wD///8A////AG1tbf9XV1f/9ubk//bn5v/36Oj/9+np//fq6//Yzc7/+Ozu//js + 8P/47fL/+e7z//nv9P/57/b/29PZ//nw9//68Pj/+vD4//nw9//57/b/8Oft/9bM0f/57fL/+O3x//js + 7//46+7/9+rs//fp6v/Wysr/////AGVlZf9qamr/cHBw/1lZWf/k1tT/5dfW/+bZ2f/n2tv/6Nzd/83C + xP/q3uH/6t/j/+vg5f/r4ef/7OLo/+zj6f/SytD/7OTr/+zj6//s4+v/6+Lq/+rh6P/i2d//ycHG/+jd + 4//m3OD/5dve/+TZ3P/j19n/4tbX/8/Dw/////8A////AP///wBzc3P/W1tb/+TW1f/l2Nf/59nZ/+fb + 3P/o3N7/z8TH/+rf4v/r4OT/7OHm/+zi6P/s4+r/7eTr/9TM1P/t5e3/7OTt/+zk7f/s4+z/6+Lq/+Pa + 4f/Mw8j/6N7k/+fd4f/m29//5drc/+TY2v/i1tf/0MTF/////wAAAAAA////AHZ2dv9dXV3/9ufl//bo + 5//36en/9+rr//jr7f/e09X/+Ozw//jt8v/57vT/+e/1//nw9//68fn/4tri//ry/P/78/3/+/P8//ry + +//68fr/8+nx/9zT2f/57/X/+e7z//jt8f/47O//+Ovt//fq7P/azc7/////AP///wD///8A////AP// + /wD///8A////AP///wD///8A+OvtgOzg44D47PCA+e3ygPnu9ID57/aA+vD4gPrx+YDv5++A+/P9gPvz + /oD78/2A+vL8gPry+oD37fWA6+LogPnv9YD57vOA+O3xgPjs74D46+6A9+rsgNvOz4D///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD//////vHz/8AwQJ8/v37/AAAAAcAAAAHAAAABAAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAQAA + AAEAAAABwAAAAcAAAAHAAAABwAAAAcAAAAEAAAABwAAAAcAAAAHAAAABwAAAAcAAAAEAAAABwAAAAcAA + AAH/AAAB/////ygAAACAAAAAAAEAAAEAIAAAAAAAAAABABILAAASCwAAAAAAAAAAAAD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAGxsbgBsbG/8cHBz/HBwc/x0dHf8dHR3/Hh4e/x4eHoAAAAAAAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACJiYmQScn + J/8nJyf/Jycn/ygoKP8oKCj/KCgo/ygoKMAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsLCz/LS0t/y0t + Lf8tLS3/LS0t/y0tLf8tLS3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP// + /wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIcHByBHR0d/x0dHf8eHh7/Hh4e/x8f + H/8fHx//Hx8fgwAAAAYAAAAHAAAABwAAAAcAAAAIAAAACAAAAAgAAAAIAAAACAAAAAkAAAAJAAAACQAA + AAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkkJCRHKCgo/ygoKP8pKSn/KSkp/ykpKf8pKSn/KSkpwQAA + AAgAAAAIAAAABwAAAAcAAAAHAAAABwAAAAYAAAAGAAAABQAAAAUAAAAFAAAABAAAAAMAAAADAAAAAwAA + AAIAAAACAAAAAQAAAAEAAAABAAAAAC4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAIAAAACAAAAAwAAAAQAAAAFAAAABQAAAAYAAAAHAAAABwAA + AAgAAAAIAAAACRwcHIQeHh7/Hh4e/x8fH/8fHx//ICAg/yAgIP8fHx+GAAAADgAAAA8AAAAPAAAAEAAA + ABAAAAAQAAAAEQAAABEAAAARAAAAEQAAABIAAAASAAAAEgAAABIAAAASAAAAEgAAABIAAAASAAAAEiIi + Ik0pKSn/Kioq/yoqKv8qKir/Kioq/ysrK/8qKirDAAAAEAAAABAAAAAQAAAADwAAAA8AAAAOAAAADgAA + AA4AAAANAAAADAAAAAwAAAALAAAACwAAAAoAAAAKAAAACQAAAAgAAAAIAAAABwAAAAcAAAAGLy8v/y8v + L/8vLy//Ly8v/y8vL/8wMDD/MDAw/wAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP// + /wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAA + AAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAOAAAADwAAABAAAAARHR0diB8fH/8gICD/ICAg/yEh + If8hISH/IiIi/x8fH4sAAAAXAAAAGAAAABgAAAAZAAAAGQAAABoAAAAaAAAAGgAAABsAAAAbAAAAGwAA + ABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcICAgVSsrK/8rKyv/Kysr/ysrK/8sLCz/LCws/ysr + K8YAAAAaAAAAGQAAABkAAAAZAAAAGAAAABcAAAAXAAAAFgAAABUAAAAVAAAAFAAAABMAAAATAAAAEgAA + ABEAAAARAAAAEAAAAA8AAAAOAAAADQAAAAwxMTH/MTEx/zExMf8xMTH/MTEx/zExMf8xMTH/AAAABgAA + AAUAAAAEAAAAAwAAAAIAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAA + AAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAA + ABYAAAAXAAAAGAAAABkdHR2MICAg/yEhIf8hISH/IiIi/yIiIv8jIyP/Hx8fjwAAACEAAAAhAAAAIgAA + ACIAAAAjAAAAJAAAACQAAAAlAAAAJQAAACUAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAA + ACYeHh5cLCws/ywsLP8sLCz/LS0t/y0tLf8tLS3/KysryAAAACQAAAAjAAAAIwAAACIAAAAhAAAAIQAA + ACAAAAAgAAAAHwAAAB4AAAAdAAAAHAAAABsAAAAbAAAAGQAAABkAAAAYAAAAFwAAABYAAAAVAAAAFDIy + Mv8yMjL/MjIy/zIyMv8yMjL/MjIy/zIyMv8AAAALAAAACgAAAAkAAAAIAAAABwAAAAYAAAAFAAAABQAA + AAQAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + /wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAA + AAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAADAAAAA0AAAAOAAAADwAAABAAAAASAAAAEwAA + ABQAAAAVAAAAFwAAABgAAAAZAAAAGgAAABsAAAAdAAAAHgAAAB8AAAAgAAAAIR0dHZEiIiL/IiIi/yMj + I/8jIyP/JCQk/yQkJP8fHx+UAAAAKgAAACsAAAAsAAAALAAAAC0AAAAuAAAALgAAAC8AAAAvAAAAMAAA + ADAAAAAxAAAAMQAAADEAAAAxAAAAMQAAADEAAAAxAAAAMRwcHGUtLS3/LS0t/y4uLv8uLi7/Li4u/y8v + L/8sLCzLAAAALgAAAC0AAAAtAAAALAAAACsAAAAqAAAAKgAAACkAAAAoAAAAJwAAACYAAAAlAAAAJAAA + ACMAAAAiAAAAIQAAACAAAAAeAAAAHQAAABwAAAAbMzMz/zMzM/8zMzP/MzMz/zQ0NP80NDT/NDQ0/wAA + ABEAAAAQAAAADwAAAA4AAAAMAAAACwAAAAoAAAAJAAAACAAAAAcAAAAGAAAABQAAAAQAAAADAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8A////AP///wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAT5+Pz/AAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADgAA + AA8AAAAQAAAAEgAAABMAAAAUAAAAFgAAABcAAAAZAAAAGgAAABsAAAAdAAAAHgAAACAAAAAhAAAAIgAA + ACMAAAAlAAAAJgAAACcAAAApHh4elCMjI/8jIyP/JCQk/yQkJP8lJSX/JSUl/yAgIJkAAAAzAAAANAAA + ADUAAAA2AAAANwAAADgAAAA4AAAAOQAAADkAAAA6AAAAOgAAADsAAAA7AAAAPAAAADwAAAA8AAAAPAAA + ADwAAAA8GxsbbS4uLv8vLy//Ly8v/y8vL/8wMDD/MDAw/y0tLc0AAAA4AAAANwAAADYAAAA2AAAANQAA + ADQAAAAzAAAAMgAAADEAAAAwAAAALwAAAC0AAAAsAAAAKwAAACoAAAAoAAAAJwAAACYAAAAkAAAAIwAA + ACI1NTX/NTU1/zU1Nf81NTX/NTU1/zU1Nf81NTX/AAAAFwAAABUAAAAUAAAAEwAAABEAAAAQAAAADwAA + AA0AAAAMAAAACwAAAAoAAAAIAAAABwAAAAYAAAAFAAAABAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAAAAEAAAACAAAABAAAAAX///8A////AP// + /wAAAAAJAAAACwAAAAwAAAAOAAAADwAAABAAAAASAAAAEwAAABUAAAAWAAAAGAAAABkAAAAbAAAAHAAA + AB4AAAAfAAAAIQAAACIAAAAkAAAAJQAAACcAAAAoAAAAKgAAACsAAAAtAAAALgAAADAeHh6YJCQk/yUl + Jf8lJSX/JiYm/yYmJv8nJyf/ICAgnQAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABCAAAAQwAA + AEQAAABEAAAARQAAAEUAAABGAAAARgAAAEYAAABGAAAARgAAAEYaGhp0MDAw/zAwMP8wMDD/MTEx/zEx + Mf8xMTH/Li4u0AAAAEEAAABBAAAAPwAAAD8AAAA9AAAAPAAAADsAAAA6AAAAOQAAADgAAAA2AAAANQAA + ADQAAAAyAAAAMQAAAC8AAAAuAAAALAAAACsAAAApAAAAKDY2Nv82Njb/NjY2/zY2Nv82Njb/NjY2/zY2 + Nv8AAAAcAAAAGgAAABkAAAAXAAAAFgAAABQAAAATAAAAEQAAABAAAAAOAAAADQAAAAwAAAAKAAAACQAA + AAgAAAAHAAAABgAAAAQAAAADAAAAAgAAAAAAAAAAAAAAAP///wD///8A////AP///wD///8AAAAAAAAA + AAAAAAACAAAAAwAAAAQAAAAGAAAAB////wD///8A////ABQUFIUVFRWGFRUVhxYWFocXFxeIFhYWiRYW + FooXFxeKGBgYixgYGIwYGBiNGRkZjRkZGY4aGhqPGhoakBoaGpEbGxuRGxsbkhwcHJMcHByUHBwclR0d + HZYdHR2WHR0dlx4eHpgeHh6ZHh4emiIiIs0lJSX/JiYm/yYmJv8nJyf/Jycn/ygoKP8lJSXPISEhoCEh + IaEhISGhIiIioiIiIqIiIiKjIiIioyIiIqQjIyOkIyMjpSMjI6UjIyOmJCQkpiQkJKYkJCSmJSUlpiUl + JaYlJSWmJSUlpikpKbwxMTH/MTEx/zIyMv8yMjL/MjIy/zMzM/8xMTHoKCgooykpKaMpKSmiKSkpoioq + KqEqKiqgKioqoCoqKp8rKyufKysrniwsLJ0sLCycLCwsnC0tLZstLS2aLi4umS4uLpkuLi6YLi4uly8v + L5YvLy+VNzc3/zc3N/83Nzf/Nzc3/zg4OP84ODj/ODg4/zIyMo8yMjKOMzMzjTMzM4wzMzOMMzMzizQ0 + NIo0NDSJNDQ0iDU1NYg1NTWHNTU1hjU1NYY1NTWFNjY2hDY2NoQ2NjaDNjY2gzY2NoI2NjaBNjY2gTc3 + N4A3NzeA////AP///wD///8A////AP///wAAAAAAAAAAAQAAAAMAAAAEAAAABgAAAAcAAAAI////AP// + /wD///8AFhYW/xcXF/8XFxf/GBgY/xgYGP8ZGRn/GRkZ/xoaGv8bGxv/Gxsb/xwcHP8dHR3/HR0d/x4e + Hv8eHh7/Hx8f/yAgIP8gICD/ISEh/yEhIf8iIiL/IyMj/yMjI/8kJCT/JCQk/yUlJf8lJSX/JiYm/ycn + J/8nJyf/KCgo/ygoKP8pKSn/KSkp/yoqKv8qKir/Kysr/ysrK/8sLCz/LCws/ywsLP8tLS3/LS0t/y4u + Lv8uLi7/Ly8v/y8vL/8vLy//MDAw/zAwMP8xMTH/MTEx/zExMf8yMjL/MjIy/zIyMv8zMzP/MzMz/zMz + M/80NDT/NDQ0/zQ0NP81NTX/NTU1/zU1Nf81NTX/NjY2/zY2Nv82Njb/NjY2/zc3N/83Nzf/Nzc3/zc3 + N/83Nzf/Nzc3/zg4OP84ODj/ODg4/zg4OP84ODj/ODg4/zg4OP85OTn/OTk5/zk5Of85OTn/OTk5/zk5 + Of85OTn/OTk5/zk5Of85OTn/OTk5/zk5Of85OTn/OTk5/zk5Of85OTn/OTk5/zk5Of85OTn/OTk5/zk5 + Of85OTn/OTk5/zg4OP84ODj/ODg4/zg4OP84ODj/ODg4/zg4OP////8A////AP///wD///8A////AAAA + AAAAAAACAAAABAAAAAUAAAAGAAAABwAAAAj///8A////AP///wAXFxf/GBgY/xgYGP8YGBj/GRkZ/xoa + Gv8aGhr/Gxsb/xwcHP8cHBz/HR0d/x4eHv8eHh7/Hx8f/yAgIP8gICD/ISEh/yEhIf8iIiL/IyMj/yMj + I/8kJCT/JCQk/yUlJf8mJib/JiYm/ycnJ/8nJyf/KCgo/ygoKP8pKSn/KSkp/yoqKv8qKir/Kysr/ysr + K/8sLCz/LCws/y0tLf8tLS3/Li4u/y4uLv8vLy//Ly8v/y8vL/8wMDD/MDAw/zExMf8xMTH/MTEx/zIy + Mv8yMjL/MzMz/zMzM/8zMzP/NDQ0/zQ0NP80NDT/NTU1/zU1Nf81NTX/NjY2/zY2Nv82Njb/NjY2/zc3 + N/83Nzf/Nzc3/zc3N/84ODj/ODg4/zg4OP84ODj/ODg4/zk5Of85OTn/OTk5/zk5Of85OTn/OTk5/zo6 + Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6 + Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov86Ojr/OTk5/zk5 + Of85OTn/OTk5/////wD///8A////AP///wD///8AAAAAAAAAAAIAAAADAAAABAAAAAYAAAAHAAAACP// + /wD///8A////ABgYGP8YGBj/GRkZ/xkZGf8aGhr/Gxsb/xwcHP8cHBz/HR0d/x4eHv8eHh7/Hx8f/yAg + IP8gICD/ISEh/yEhIf8iIiL/IyMj/yMjI/8kJCT/JCQk/yUlJf8mJib/JiYm/ycnJ/8nJyf/KCgo/ygo + KP8pKSn/Kioq/yoqKv8rKyv/Kysr/ywsLP8sLCz/LS0t/y0tLf8uLi7/Li4u/y8vL/8vLy//Ly8v/zAw + MP8wMDD/MTEx/zExMf8yMjL/MjIy/zIyMv8zMzP/MzMz/zQ0NP80NDT/NDQ0/zU1Nf81NTX/NTU1/zY2 + Nv82Njb/NjY2/zc3N/83Nzf/Nzc3/zc3N/84ODj/ODg4/zg4OP84ODj/OTk5/zk5Of85OTn/OTk5/zo6 + Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7 + O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7 + O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zo6Ov86Ojr/////AP///wD///8A////AP// + /wAAAAAAAAAAAAAAAAIAAAADAAAABAAAAAYAAAAH////AP///wD///8AGBgY/xkZGf8aGhr/Gxsb/xsb + G/8cHBz/HR0d/x0dHf8eHh7/Hx8f/x8fH/8gICD/ISEh/yEhIf8iIiL/IyMj/yMjI/8kJCT/JCQk/yUl + Jf8mJib/JiYm/ycnJ/8nJyf/KCgo/ykpKf8pKSn/Kioq/yoqKv8rKyv/Kysr/ywsLP8sLCz/LS0t/y0t + Lf8uLi7/Li4u/y8vL/8vLy//MDAw/zAwMP8xMTH/MTEx/zIyMv8yMjL/MjIy/zMzM/8zMzP/NDQ0/zQ0 + NP80NDT/NTU1/zU1Nf82Njb/NjY2/zY2Nv83Nzf/Nzc3/zc3N/84ODj/ODg4/zg4OP84ODj/OTk5/zk5 + Of85OTn/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7 + O/87Ozv/Ozs7/zs7O/88PDz/PDw8/zw8PP88PDz/PDw8/zw8PP88PDz/PDw8/zw8PP88PDz/PDw8/zw8 + PP88PDz/PDw8/zw8PP88PDz/PDw8/zw8PP88PDz/PDw8/zw8PP88PDz/PDw8/zs7O/87Ozv/Ozs7/zs7 + O/87Ozv/Ozs7/zs7O/////8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAAAAEAAAADAAAABP// + /wD///8A////AP///wAaGhr/Ghoa/xsbG/8cHBz/HBwc/x0dHf8eHh7/Hx8f/x8fH/8gICD/ISEh/yEh + If8iIiL/IyMj/yMjI/8kJCT/JCQk/yUlJf8mJib/JiYm/ycnJ/8nJyf/KCgo/ykpKf8pKSn/Kioq/yoq + Kv8rKyv/Kysr/ywsLP8tLS3/LS0t/y4uLv8uLi7/Ly8v/y8vL/8wMDD/MDAw/zExMf8xMTH/MjIy/zIy + Mv8yMjL/MzMz/zMzM/80NDT/NDQ0/zU1Nf81NTX/NTU1/zY2Nv82Njb/NjY2/zc3N/83Nzf/ODg4/zg4 + OP84ODj/OTk5/zk5Of85OTn/OTk5/zo6Ov86Ojr/Ojo6/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7 + O/87Ozv/Ozs7/zw8PP88PDz/PDw8/zw8PP88PDz/PDw8/z09Pf89PT3/PT09/z09Pf89PT3/PT09/z09 + Pf89PT3/PT09/z09Pf89PT3/PT09/z09Pf89PT3/PT09/z09Pf89PT3/PT09/z09Pf89PT3/PT09/z09 + Pf89PT3/PT09/z09Pf89PT3/PT09/z09Pf89PT3/PDw8/zw8PP88PDz/PDw8/////wD///8A////AP// + /wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB////AP///wD///8A////ABsbG/8bGxv/HBwc/x0d + Hf8eHh7/Hh4e/x8fH/8gICD/ICAg/yEhIf8iIiL/IiIi/yMjI/8kJCT/JCQk/yUlJf8mJib/JiYm/ycn + J/8nJyf/KCgo/ykpKf8pKSn/Kioq/yoqKv8rKyv/LCws/ywsLP8tLS3/LS0t/y4uLv8uLi7/Ly8v/y8v + L/8wMDD/MDAw/zExMf8xMTH/MjIy/zIyMv8zMzP/MzMz/zQ0NP80NDT/NTU1/zU1Nf81NTX/NjY2/zY2 + Nv83Nzf/Nzc3/zc3N/84ODj/ODg4/zk5Of85OTn/OTk5/zo6Ov86Ojr/Ojo6/zo6Ov87Ozv/Ozs7/zs7 + O/87Ozv/Ozs7/zs7O/87Ozv/PDw8/zw8PP88PDz/PDw8/z09Pf89PT3/PT09/z09Pf89PT3/PT09/z4+ + Pv8+Pj7/Pj4+/z4+Pv8+Pj7/Pj4+/z4+Pv8+Pj7/Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/ + P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8+Pj7/Pj4+/z4+Pv8+Pj7/Pj4+/z4+ + Pv8+Pj7/Pj4+/z09Pf89PT3/////AP///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8A////AP///wD///8AHBwc/x0dHf8dHR3/Hh4e/x8fH/8fHx//DQ0N/wcHB/8HBwf/BwcH/wcH + B/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcH + B/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcH + B/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcH + B/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcH + B/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcH + B/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcH + B/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/8HBwf/BwcH/wcHB/////8A////AP// + /wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP///wAdHR3/Hh4e/x4e + Hv8fHx//ICAg/yEhIf8ODg7/BwcH/w5brv8OW67/Dluu/w5crv8OXK7/Dlyu/w5crv8OXK7/Dlyu/w5c + rv8OXa7/Dl2u/w5drv8OXa7/Dl2u/w5drv8OXa7/Dl2u/w5drv8OXa7/Dl2u/wxPlP8LS4v/C0uL/w1Z + pv8OXa//Dl2v/w5dr/8OXq//Dl6v/w5er/8OXq//Dl6v/w5er/8OXq//Dl6v/w5er/8OXq//Dl2v/w5d + r/8OXa//Dl2v/w5dr/8OXa//Dl2v/w5drv8OXa7/Dl2u/w1Ypv8LSov/C0qL/w1Tnf8OXa7/Dl2u/w5d + rv8OXa7/DVWg/wxAd/8MQHf/DEB3/wxAd/8MQHf/DEB3/ww/dv8MP3b/DD92/ww/dv8MP3b/DD92/ww/ + dv8MP3b/Cz92/ws+dv8LPnb/Cz52/ws+dv8LPnb/CjVk/wksUv8JLFL/CjRk/ws9dv8LPXb/Cz12/ws9 + dv8LPXX/Cz11/ws8df8LPHX/Czx1/ws8df8LPHX/Czx1/ws7df8LO3X/Czt1/ws7df8LO3X/Czt1/ws6 + df8LOnX/Czp0/wkoT/8GBgb/BgYG/////wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AB4eHv8fHx//ICAg/yAgIP8hISH/IiIi/w4ODv8HBwf/EHjm/xB4 + 5v8QeOb/EHjm/xB55v8Qeeb/EHnm/xB55v8Qeeb/EHnm/xB55v8Qeub/EHrm/xB65v8Qeub/EHrn/xB6 + 5/8Qeuf/EHrn/xB75/8Qe+f/DF6y/wtVoP8LVaD/D3LV/xB75/8Qe+f/EHvn/xB75/8Qe+f/EHvn/xB7 + 5/8Qe+f/EHvn/xB75/8Qe+f/EHvn/xB75/8Qe+f/EHvn/xB75/8Qe+f/EHvn/xB75/8Qe+f/EHvn/xB7 + 5/8Qe+f/D3HV/wtVof8LVaH/DmjE/xB65v8Qeub/EHrm/xB55v8Qeeb/EHnm/xB55v8Qeeb/EHnm/xB5 + 5v8QeOb/EHjm/xB45v8QeOb/EHjm/xB35f8Qd+X/EHfl/xB35f8Qd+X/EHbl/xB25f8PduX/D3Xl/w91 + 5f8NY8H/ClGd/wpQnf8NYsD/D3Tk/w905P8Pc+T/D3Pk/w9z5P8PcuT/D3Lk/w9y4/8PceP/D3Hj/w9x + 4/8PceP/D3Dj/w5w4/8Ob+P/Dm/i/w5v4v8ObuL/Dm7i/w5u4v8ObeL/Mm66/6KTiv+ik4r/////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AHx8f/yAg + IP8hISH/ISEh/yIiIv8jIyP/Dg4O/wcHB/8Qeeb/EHnm/xB55v8Qeeb/EHnm/xB55v8Qeub/EHrm/xB6 + 5v8Qeuf/EHrn/xB65/8Qe+f/EHvn/xB75/8Qe+f/EHvn/xB75/8Qe+f/EHvn/xB75/8MX7L/C1ah/wtW + of8PctX/EHzn/xB85/8QfOf/EHzn/xB85/8RfOf/EXzn/xF85/8RfOf/EXzn/xF85/8QfOf/EHzn/xB8 + 5/8QfOf/EHzn/xB85/8QfOf/EHzn/xB75/8Qe+f/EHvn/xB75/8Pctb/C1ah/wtWof8OaMT/EHvn/xB7 + 5/8Qeuf/EHrn/xB65/8Qeub/EHrm/xB65v8Qeeb/EHnm/xB55v8Qeeb/EHnm/xB55v8QeOb/EHjm/xB4 + 5v8QeOb/EHfl/xB35f8Qd+X/EHfl/xB35f8QduX/EHbl/w1jwv8KUZ7/ClGe/w1jwf8PdeT/D3Tk/w90 + 5P8PdOT/D3Pk/w9z5P8Pc+T/D3Pk/w9y5P8PcuP/D3Lj/w9x4/8PceP/D3Hj/w9w4/8OcOP/Dm/j/w5v + 4v8Ob+L/Dm7i/w5u4v8ybrr/o5SL/6OUi/////8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wAgICD/ISEh/yIiIv8jIyP/IyMj/yQkJP8ODg7/BwcH/xB5 + 5v8Qeeb/EHrm/xB65v8Qeub/EHrn/xB65/8Qe+f/EHvn/xB75/8Qe+f/EHvn/xB75/8Qe+f/EHzn/xB8 + 5/8QfOf/EXzn/xF85/8RfOf/EXzn/w1gs/8MV6H/DFeh/xBz1v8Rfef/EX3n/xF95/8Rfef/EX3n/xF9 + 5/8Rfef/EX3n/xF95/8Rfef/EX3n/xF95/8Rfef/EX3n/xF95/8Rfef/EX3n/xF85/8RfOf/EXzn/xF8 + 5/8RfOf/EXzn/w9z1v8LV6L/C1ei/w5pxf8Qe+f/EHvn/xB75/8Qe+f/EHvn/xB75/8Qe+f/EHvn/xB6 + 5/8Qeuf/EHrm/xB65v8Qeub/EHnm/xB55v8Qeeb/EHnm/xB55v8QeOb/EHjm/xB45v8Qd+X/EHfl/xB3 + 5f8Qd+X/DmXC/wtSn/8LUp//DWTC/w915f8PdeX/D3Xl/w915P8PdOT/D3Tk/w905P8Pc+T/D3Pk/w9z + 5P8PcuT/D3Lj/w9y4/8PceP/D3Hj/w9x4/8PcOP/DnDj/w5v4/8Ob+L/Dm/i/zJvuv+klYz/o5SL//// + /wD///8A////AP///wD///8AGhoa/xsbG/8bGxv/HBwc/x0dHf8eHh7/Hh4e/x8fH/8gICD/ISEh/yEh + If8iIiL/IyMj/yQkJP8kJCT/JSUl/w8PD/8HBwf/EHrm/xB65/8Qe+f/EHvn/xB75/8Qe+f/EHvn/xB7 + 5/8Qe+f/EHzn/xB85/8RfOf/EXzn/xF85/8RfOf/EX3n/xF95/8Rfef/EX3n/xF96P8Rfej/DWG0/wxY + o/8MWKP/EHTX/xF96P8Rfej/EX3o/xF96P8Rfej/EX3o/xF96P8Rfej/EX3o/xF96P8Rfej/EX3o/xF9 + 6P8Rfej/EX3o/xF96P8Rfej/EX3o/xF96P8Rfej/EX3o/xF96P8Rfej/EHTW/wxYo/8MWKP/D2rF/xF8 + 5/8RfOf/EXzn/xB85/8QfOf/EHzn/xB75/8Qe+f/EHvn/xB75/8Qe+f/EHvn/xB65/8Qeuf/EHrm/xB6 + 5v8Qeeb/EHnm/xB55v8Qeeb/EHnm/xB45v8QeOb/EHjm/xB35f8OZcL/C1Of/wtTn/8OZML/EHbl/w92 + 5f8PduX/D3Xl/w915f8PdeT/D3Tk/w905P8PdOT/D3Pk/w9z5P8Pc+T/D3Lk/w9y4/8PcuP/D3Hj/w9x + 4/8PceP/D3Dj/w5w4/8Ob+L/MnC6/6SVjP+klYz/////AP///wD///8A////AP///wAbGxv/HBwc/xwc + HP8dHR3/Hh4e/x8fH/8gICD/ICAg/yEhIf8iIiL/IyMj/yMjI/8kJCT/JSUl/yYmJv8mJib/Dw8P/wcH + B/8Qe+f/EHvn/xB75/8Qe+f/EHzn/xB85/8RfOf/EXzn/xF85/8Rfef/EX3n/xF95/8Rfej/EX3o/xF9 + 6P8Rfej/EX3o/xF96P8Rfuj/EX7o/xF+6P8NYbT/DFij/wxYo/8Qddf/EX7o/xF+6P8Rfuj/EX7o/xF+ + 6P8Rfuj/EX7o/xF+6P8Rfuj/EX7o/xF+6P8Rfuj/EX7o/xF+6P8Rfuj/EX7o/xF+6P8Rfuj/EX7o/xF+ + 6P8Rfuj/EX7o/xF+6P8QdNf/DFik/wxYpP8Pa8b/EX3o/xF96P8Rfef/EX3n/xF95/8RfOf/EXzn/xF8 + 5/8QfOf/EHzn/xB75/8Qe+f/EHvn/xB75/8Qe+f/EHvn/xB65/8Qeub/EHrm/xB55v8Qeeb/EHnm/xB5 + 5v8Qeeb/EHjm/w5mxP8LVKH/C1Og/w5lwv8Qd+X/EHfl/xB25f8QduX/D3bl/w915f8PdeX/D3Xk/w90 + 5P8PdOT/D3Tk/w9z5P8Pc+T/D3Pk/w9y5P8PcuP/D3Lj/w9x4/8PceP/D3Dj/w9w4/8zcLz/pZaN/6SV + jP////8A////AP///wD///8A////ABwcHP8dHR3/Hh4e/x4eHv8fHx//ICAg/yEhIf8hISH/IiIi/yMj + I/8kJCT/JCQk/yUlJf8mJib/Jycn/ycnJ/8PDw//BwcH/wxfsf8LVqD/DFag/wxWoP8MVqD/DFeg/wxX + of8MV6H/DFei/wxXov8MV6L/DFei/wxYov8MWKP/DFij/wxYo/8MWKP/DFij/wxYo/8MWaP/DFmj/wlG + gP8IQHT/CEB0/wtTmP8MWqT/DFqk/wxapP8MWqT/DFqk/wxapP8MWqT/DFqk/wxapP8MWqX/DFql/wxa + pf8MWqX/DFql/wxapf8MWqX/DFql/wxapf8MWqX/DFql/wxapf8MWqX/DFml/wtTmf8JP3X/CT91/wpM + jf8MWaX/DFml/wxZpf8MWKT/DFik/wxYpP8MWKT/DFij/wxYo/8MWKP/DFij/wxYo/8LWKP/C1ej/wtX + o/8LV6P/C1ai/wtWov8LVqL/C1ai/wtWof8LVqH/C1Wh/wtVof8LVKH/CkiJ/wg7cP8IO3D/CkeI/wtU + oP8LU6D/C1Of/wtTn/8LUp//C1Kf/wpSn/8KUZ7/ClGe/wpRnf8KUJ3/ClCd/wpQnP8KT5z/Ck+c/wpP + nP8KTpz/Ck6b/wpNm/8KTZv/Ck2b/zlnff9wZmD/cGZg/////wD///8A////AP///wD///8AHR0d/x4e + Hv8fHx//Hx8f/yAgIP8hISH/IiIi/yMjI/8jIyP/JCQk/yUlJf8mJib/JiYm/ycnJ/8oKCj/KSkp/xAQ + EP8HBwf/DWCy/wxXoP8MV6H/DFeh/wxXov8MV6L/DFei/wxYov8MWKL/DFij/wxYo/8MWKP/DFmj/wxZ + o/8MWaP/DFmj/wxapP8MWqT/DFqk/wxapP8MWqT/CUeA/whAdP8IQHT/C1SY/wxbpf8MW6X/DFul/wxb + pf8MW6X/DFul/wxbpf8MW6X/DFul/wxbpf8MW6X/DFul/wxbpf8MW6X/DFul/wxbpf8MW6X/DFul/wxa + pf8MWqX/DFql/wxapf8MWqX/C1SZ/wlAdf8JQHX/C02N/wxapf8MWqX/DFml/wxZpf8MWaX/DFml/wxZ + pf8MWaX/DFml/wxZpf8MWaT/DFik/wxYo/8MWKP/DFij/wxYo/8LWKP/C1ej/wtXo/8LV6P/C1ai/wtW + ov8LVqL/C1ah/wtWof8KSYn/CDxx/wg7cP8KSIn/C1Sh/wtUof8LVKH/C1Og/wtTn/8LU5//C1Of/wtS + n/8KUp//ClGf/wpRnv8KUZ3/ClCd/wpQnf8KUJ3/Ck+c/wpPnP8KT5z/Ck6c/wpOm/8xe5b/T4F7/3Fn + Yv9wZmH/////AP///wD///8A////AP///wAeHh7/Hx8f/yAgIP8gICD/ISEh/yIiIv8jIyP/JCQk/yQk + JP8lJSX/JiYm/ycnJ/8nJyf/KCgo/ykpKf8qKir/EBAQ/wcHB/8OaMD/DWG0/w1htP8NYbT/DWK0/w1i + tP8NYrT/DWK0/w1itP8NYrT/DWO0/w1jtP8NY7X/DWO1/w1ktf8NZLX/DWS1/w1ktf8NZLX/DWS2/w1k + tv8LT47/CkiB/wpIgf8MXan/DWW2/w1ltv8NZbb/DWW2/w1ltv8NZbb/DWW2/w1ltv8NZbf/DWW3/w1l + t/8NZbf/DWW3/w1lt/8NZbf/DWW3/w1lt/8NZbf/DWW3/w1kt/8NZLf/DWS3/w1kt/8MXar/CkiC/wpI + gv8MVpz/DWS3/w1ktv8NZLb/DWS2/w1jtv8NY7b/DWO2/w1jtv8NYrb/DWK2/w1itv8NYrb/DWK2/w1i + tv8NYrX/DWK1/w1itP8NYbT/DWG0/w1htP8MYbT/DGC0/wxgtP8MYLT/DGC0/wtRmf8JQ37/CUN9/wtQ + mP8MXrL/DF6y/wxdsv8MXbL/DF2y/wxdsv8MXLH/DFyx/wxcsf8MW7H/DFux/wtasP8LWrD/C1qv/wtZ + r/8LWa//C1mu/wtYrv8LWK7/G2aj/2K0kP9ShoH/fnNt/35zbf////8A////AP///wD///8A////AB8f + H/8gICD/ISEh/yIiIv8iIiL/IyMj/yQkJP8lJSX/JiYm/yYmJv8nJyf/KCgo/ykpKf8pKSn/Kioq/ysr + K/8QEBD/BwcH/xF+6P8Rfuj/EX7o/xF/6P8Rf+j/EX/o/xF/6P8Rf+j/EX/o/xGA6f8RgOn/EYDp/xGA + 6f8RgOn/EYDp/xGA6f8Rgen/EYHp/xGB6f8Rgen/EYHp/w1ltv8MXKb/DFym/xB42P8Rgen/EYHp/xGB + 6f8Rgen/EYHp/xGB6f8Rgen/EYHp/xGB6f8Rgen/EYHp/xGB6f8Rgen/EYHp/xGB6f8Rgen/EYHp/xGB + 6f8Rgen/EYHp/xGB6f8Rgen/EYHp/xB42P8MXKb/DFym/w9uyP8RgOn/EYDp/xGA6f8RgOn/EYDp/xF/ + 6P8Rf+j/EX/o/xF/6P8Rf+j/EX/o/xF+6P8Rfuj/EX7o/xF+6P8Rfej/EX3o/xF96P8Rfef/EX3n/xF8 + 5/8RfOf/EHzn/xB75/8Qe+f/DmnF/wtXo/8LVqP/DmjF/xB65v8Qeeb/EHnm/xB55v8Qeeb/EHjm/xB4 + 5v8QeOb/EHfl/xB35f8Qd+X/EHbl/w925f8PdeX/D3Xl/w915P8PdOT/D3Tk/xR43/9SqKD/YbSP/12U + k/+nmJD/p5iQ/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////ACgoKP8pKSn/Kioq/yoqKv8rKyv/LCws/xAQEP8HBwf/EX/o/xF/6P8Rf+j/EX/o/xF/ + 6P8RgOn/EYDp/xGA6f8RgOn/EYDp/xGB6f8Rgen/EYHp/xGB6f8Rgen/EYHp/xGB6f8Rgen/EYHp/xGC + 6f8Rgun/Dma3/wxdpv8NXab/EHnY/xKC6f8Sgun/EoLp/xKC6f8Sgun/EoLp/xKC6v8Sgur/EoLq/xKC + 6v8Sgun/EoLp/xKC6f8Sgun/EoLp/xKC6f8Sgun/EoLp/xGC6f8Rgun/EYLp/xGC6f8Rgun/EHjZ/wxd + p/8MXaf/D2/I/xGB6f8Rgen/EYHp/xGB6f8RgOn/EYDp/xGA6f8RgOn/EYDp/xF/6P8Rf+j/EX/o/xF/ + 6P8Rf+j/EX/o/xF+6P8Rfuj/EX7o/xF+6P8Rfej/EX3o/xF95/8Rfef/EXzn/xF85/8Oasb/C1ek/wtX + pP8OacX/EHvn/xB65/8Qeub/EHrm/xB55v8Qeeb/EHnm/xB45v8QeOb/EHjm/xB35f8Qd+X/EHfl/xB2 + 5f8PduX/D3Xl/w915f8PdeT/PZi0/6zUxv9gtI//XJST/6eZkP+nmZD/////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AKSkp/yoqKv8rKyv/LCws/yws + LP8tLS3/ERER/wcHB/8Rf+j/EYDp/xGA6f8RgOn/EYDp/xGA6f8Rgen/EYHp/xGB6f8Rgen/EYHp/xGB + 6f8Rgun/EYLp/xGC6f8Sgun/EoLp/xKC6f8Sgur/EoLq/xKD6v8OZ7j/DV6o/w1eqP8Retr/EoPq/xKD + 6v8Sg+r/EoPq/xKD6v8Sg+r/EoPq/xKD6v8Sg+r/EoPq/xKD6v8Sg+r/EoPq/xKD6v8Sg+r/EoPq/xKD + 6v8Sg+r/EoPq/xKD6v8Sg+r/EoLq/xKC6v8Redn/DV6o/w1eqP8PcMj/EYLp/xGC6f8Rgen/EYHp/xGB + 6f8Rgen/EYHp/xGB6f8Rgen/EYDp/xGA6f8RgOn/EYDp/xF/6P8Rf+j/EX/o/xF/6P8Rf+j/EX7o/xF+ + 6P8Rfuj/EX7o/xF96P8Rfej/EX3n/w9rxv8MWKT/DFik/w5qxv8Qe+f/EHvn/xB75/8Qeuf/EHrm/xB6 + 5v8Qeeb/EHnm/xB55v8QeOb/EHjm/xB45v8Qd+X/EHfl/xB35f8QduX/D3bl/ymJyv+Kxa3/5Ovv/2Cz + jv9clJP/qJmS/6iZkf////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wAqKir/Kysr/ywsLP8tLS3/LS0t/y4uLv8RERH/BwcH/xGA6f8RgOn/EYHp/xGB + 6f8Rgen/EYHp/xGB6f8Rgun/EYLp/xKC6f8Sgun/EoLp/xKC6v8Sg+r/EoPq/xKD6v8Sg+r/EoPq/xKD + 6v8Sg+r/EoPq/w5ouf8NXqj/DV6o/xF62v8ShOr/EoTq/xKE6v8ShOr/EoTq/xKE6v8ShOr/EoTq/xKE + 6v8ShOr/EoTq/xKE6v8ShOr/EoTq/xKE6v8ShOr/EoTq/xKE6v8Sg+r/EoPq/xKD6v8Sg+r/EoPq/xF6 + 2v8NX6n/DV+p/xBxyv8Sg+r/EoLq/xKC6f8Sgun/EoLp/xGC6f8Rgun/EYHp/xGB6f8Rgen/EYHp/xGB + 6f8Rgen/EYDp/xGA6f8RgOn/EYDp/xF/6P8Rf+j/EX/o/xF/6P8Rfuj/EX7o/xF+6P8Rfej/D2vH/wxZ + pv8MWaX/D2rG/xF85/8QfOf/EHvn/xB75/8Qe+f/EHvn/xB65/8Qeub/EHnm/xB55v8Qeeb/EHjm/xB4 + 5v8QeOb/EHfl/xB35f8aftr/ZLSa/9vo6P/i6u3/X7OO/1yUk/+omZL/qJmS/////wD///8A////AP// + /wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////ACsrK/8sLCz/LS0t/y4u + Lv8vLy//Ly8v/xEREf8HBwf/EYHp/xGB6f8Rgen/EYLp/xGC6f8Sgun/EoLp/xKC6v8Sg+r/EoPq/xKD + 6v8Sg+r/EoPq/xKD6v8Sg+r/EoTq/xKE6v8ShOr/EoTq/xKE6v8ShOr/Dmi5/w1fqf8NX6n/EXva/xKE + 6v8Sher/EoXq/xKF6v8Sher/EoXq/xKF6v8Sher/EoXq/xKF6v8Sher/EoXq/xKF6v8Sher/EoXq/xKF + 6v8ShOr/EoTq/xKE6v8ShOr/EoTq/xKE6v8ShOr/EXva/w1gqv8NYKr/EHHK/xKD6v8Sg+r/EoPq/xKD + 6v8Sg+r/EoPq/xKC6v8Sgun/EoLp/xGC6f8Rgun/EYHp/xGB6f8Rgen/EYHp/xGB6f8RgOn/EYDp/xGA + 6f8RgOn/EX/o/xF/6P8Rf+j/EX/o/xF+6P8PbMf/DFqm/wxZpv8Pa8f/EX3n/xF95/8RfOf/EHzn/xB7 + 5/8Qe+f/EHvn/xB75/8Qeuf/EHrm/xB55v8Qeeb/EHnm/xB45v8QeOb/EHjm/0ylpP+52dD/wd3V/9/p + 6/9eso3/cJ2S/6qak/+pmpP/////AP///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA////AP///wD///8ALS0t/y0tLf8uLi7/Ly8v/zAwMP8wMDD/ERER/wcHB/8Rgun/EoLp/xKC + 6f8Sgur/EoPq/xKD6v8Sg+r/EoPq/xKD6v8Sg+r/EoTq/xKE6v8ShOr/EoTq/xKE6v8ShOr/EoXq/xKF + 6v8Sher/EoXq/xKF6/8Oabr/DWCq/w1gqv8RfNv/EoXr/xKF6/8Shev/EoXr/xKF6/8Shev/EoXr/xKF + 6/8Shev/EoXr/xKF6/8Shev/EoXr/xKF6/8Shev/EoXr/xKF6/8Shev/EoXr/xKF6/8Shev/EoXq/xKF + 6v8RfNr/DWCq/w1gqv8Qcsr/EoTq/xKE6v8ShOr/EoTq/xKD6v8Sg+r/EoPq/xKD6v8Sg+r/EoPq/xKC + 6v8Sgun/EoLp/xGC6f8Rgun/EYHp/xGB6f8Rgen/EYHp/xGA6f8RgOn/EYDp/xGA6f8Rf+j/EX/o/w9t + x/8MWqb/DFqm/w9sx/8Rfej/EX3o/xF96P8Rfef/EXzn/xB85/8QfOf/EHvn/xB75/8Qe+f/EHrn/xB6 + 5v8Qeeb/EHnm/xB55v84lrr/mMu3/9jm5v9ot5X/3Ojp/12yjf+EppD/qpuT/6qak/////8A////AP// + /wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wAuLi7/Li4u/y8v + L/8wMDD/MTEx/zExMf8SEhL/BwcH/xKD6v8Sg+r/EoPq/xKD6v8Sg+r/EoPq/xKE6v8ShOr/EoTq/xKE + 6v8ShOr/EoXq/xKF6v8Shev/EoXr/xKF6/8Shev/EoXr/xKF6/8Shuv/Eobr/w5quv8NYar/DWGq/xF9 + 2/8Shuv/Eobr/xKG6/8Shuv/Eobr/xKG6/8Shuv/Eobr/xKG6/8Shuv/Eobr/xKG6/8Shuv/Eobr/xKG + 6/8Shuv/Eobr/xKG6/8Shuv/Eobr/xKG6/8Shuv/EoXr/xF82/8NYav/DWGr/xBzy/8Shev/EoXq/xKF + 6v8ShOr/EoTq/xKE6v8ShOr/EoTq/xKE6v8Sg+r/EoPq/xKD6v8Sg+r/EoPq/xKC6v8Sgun/EYLp/xGC + 6f8Rgen/EYHp/xGB6f8Rgen/EYDp/xGA6f8RgOn/D27I/wxcp/8MW6b/D23H/xF+6P8Rfuj/EX7o/xF9 + 6P8Rfej/EX3n/xF85/8RfOf/EHzn/xB75/8Qe+f/EHvn/xB65/8Qeub/H4TW/3i9n//X5uX/gMGm/2Cz + jv/a5+f/XbGM/4SnkP+rnJT/q5yU/////wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///wD///8A////AC8vL/8vLy//MDAw/zExMf8yMjL/MzMz/xISEv8HBwf/EoPq/xKD + 6v8ShOr/EoTq/xKE6v8ShOr/EoXq/xKF6v8Shev/EoXr/xKF6/8Shev/EoXr/xKG6/8Shuv/Eobr/xKG + 6/8Shuv/Eobr/xKG6/8Shuv/Dmu7/w1iq/8NYqv/EX7b/xKH6/8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKH + 6/8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKG + 6/8Shuv/EX3b/w1irP8NYqv/EHTL/xKG6/8Shev/EoXr/xKF6/8Shev/EoXr/xKF6v8Sher/EoTq/xKE + 6v8ShOr/EoTq/xKD6v8Sg+r/EoPq/xKD6v8Sg+r/EoLq/xKC6f8Rgun/EYLp/xGB6f8Rgen/EYHp/xGB + 6f8Pbsn/DFyo/wxcqP8Pbsj/EX/o/xF/6P8Rfuj/EX7o/xF+6P8Rfej/EX3o/xF95/8RfOf/EXzn/xB8 + 5/8Qe+f/EHvn/xV+4f9VrJn/xt/Z/6fSwv9gtI//X7OO/9fm5f9csYv/hKaQ/6uclf+rnJT/////AP// + /wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8AMDAw/zEx + Mf8xMTH/MjIy/zMzM/80NDT/EhIS/wcHB/8ShOr/EoTq/xKE6v8Sher/EoXr/xKF6/8Shev/EoXr/xKG + 6/8Shuv/Eobr/xKG6/8Shuv/Eobr/xKH6/8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKH6/8Oa7v/DWKr/w1i + q/8Rftz/Eojs/xKI7P8SiOz/Eojs/xKI7P8SiOz/Eojs/xKI7P8SiOz/Eojs/xKI7P8SiOz/Eojs/xKI + 7P8SiOz/Eojs/xKI7P8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKH6/8Rftv/DWOs/w1jrP8Qdcz/Eobr/xKG + 6/8Shuv/Eobr/xKG6/8Shuv/EoXr/xKF6/8Shev/EoXr/xKF6v8Sher/EoTq/xKE6v8ShOr/EoTq/xKD + 6v8Sg+r/EoPq/xKD6v8Sgur/EoLp/xGC6f8Rgen/EYHp/w9vyf8MXan/DF2o/w9uyf8RgOn/EX/o/xF/ + 6P8Rf+j/EX7o/xF+6P8Rfuj/EX3o/xF96P8Rfef/EXzn/xB85/8Qe+f/QZ6v/6bRwf/F3tj/YbSP/2Cz + jv9eso3/1OXj/1uwi/+Ep5D/rJ2W/6ydlv////8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD///8A////AP///wAxMTH/MjIy/zIyMv8zMzP/NDQ0/zU1Nf8TExP/BwcH/xKF + 6v8Shev/EoXr/xKF6/8Shuv/Eobr/xKG6/8Shuv/Eobr/xKH6/8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKH + 6/8SiOz/Eojs/xKI7P8TiOz/E4js/w9tvf8OZK3/DmSt/xJ/3P8TiOz/E4ns/xOJ7P8Tiez/E4ns/xOJ + 7P8Tiez/E4ns/xOJ7P8Tiez/E4ns/xOJ7P8Tiez/E4ns/xOJ7P8TiOz/E4js/xOI7P8TiOz/E4js/xOI + 7P8TiOz/Eojs/xF/3P8NZK3/DWSt/xB1zP8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKG6/8Shuv/Eobr/xKG + 6/8Shuv/EoXr/xKF6/8Shev/EoXr/xKF6v8ShOr/EoTq/xKE6v8ShOr/EoPq/xKD6v8Sg+r/EoPq/xKC + 6f8Sgun/D3DJ/wxeqf8MXqn/D2/J/xGA6f8RgOn/EYDp/xF/6P8Rf+j/EX/o/xF+6P8Rfuj/EX7o/xF9 + 6P8Rfej/EX3n/y6Qxf9+wKT/0+Xi/3i+oP9gtI//X7OO/16yjf/S5OH/W7CK/4OmkP+snpb/rJ2W//// + /wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////ADIy + Mv8zMzP/NDQ0/zQ0NP81NTX/NjY2/xMTE/8HBwf/EoXr/xKG6/8Shuv/Eobr/xKG6/8Sh+v/Eofr/xKH + 6/8Sh+v/Eofr/xKH6/8SiOz/Eojs/xOI7P8TiOz/E4js/xOI7P8Tiez/E4ns/xOJ7P8Tiez/D229/w5k + rf8OZK3/EoDc/xOJ7P8Tiez/E4ns/xOJ7P8Tiez/E4ns/xOJ7P8Tiez/E4ns/xOJ7P8Tiez/E4ns/xOJ + 7P8Tiez/E4ns/xOJ7P8Tiez/E4ns/xOJ7P8Tiez/E4ns/xOJ7P8Tiez/EoDd/w5krv8OZK7/EHbN/xOI + 7P8SiOz/Eojs/xKI7P8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKH6/8Shuv/Eobr/xKG6/8Shuv/EoXr/xKF + 6/8Shev/EoXq/xKE6v8ShOr/EoTq/xKE6v8Sg+r/EoPq/xKD6v8Qccr/DV+q/wxfqv8PcMn/EYHp/xGB + 6f8Rgen/EYDp/xGA6f8Rf+j/EX/o/xF/6P8Rfuj/EX7o/xF+6P8bhN3/YbKY/8rh3P+Wy7b/YbSP/2Cz + jv9eso3/XbKM/8/j3/9ar4r/g6eQ/6yel/+snpf/////AP///wD///8A////AP///wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8AMzMz/zQ0NP81NTX/NTU1/zY2Nv83Nzf/ExMT/wcH + B/8Shuv/Eofr/xKH6/8Sh+v/Eofr/xKH6/8SiOz/Eojs/xOI7P8TiOz/E4js/xOJ7P8Tiez/E4ns/xOJ + 7P8Tiez/E4ns/xOJ7P8Tiez/E4ns/xOK7P8Pb73/Dmau/w5mrv8Sgd3/E4rs/xOK7P8Tiuz/E4rs/xOK + 7P8Tiuz/E4rs/xOK7P8Tiuz/E4rs/xOK7P8Tiuz/E4rs/xOK7P8Tiuz/E4rs/xOK7P8Tiuz/E4rs/xOK + 7P8Tiuz/E4ns/xOJ7P8SgN3/Dmav/w5mr/8Rd83/E4ns/xOJ7P8Tiez/E4js/xOI7P8TiOz/Eojs/xKI + 7P8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKG6/8Shuv/Eobr/xKG6/8Shev/EoXr/xKF6/8Sher/EoTq/xKE + 6v8ShOr/EoPq/xByy/8NYKv/DWCr/w9xyv8Rgun/EYLp/xGB6f8Rgen/EYHp/xGA6f8RgOn/EX/o/xF/ + 6P8Rf+j/EX7o/0+onv+y1sr/utrQ/2G0j/9gs4//X7OO/16yjf9dsYz/zOLe/1mvif+Dp5H/rZ+Y/6ye + l/////8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP// + /wA0NDT/NTU1/zY2Nv83Nzf/Nzc3/zg4OP8TExP/BwcH/xKH6/8Sh+v/Eofr/xKI7P8TiOz/E4js/xOI + 7P8Tiez/E4ns/xOJ7P8Tiez/E4ns/xOJ7P8Tiez/E4rs/xOK7P8Tiuz/E4rs/xOK7P8Tiu3/E4rt/w9v + vv8OZq//Dmev/xKC3v8Ti+3/E4vt/xOL7f8Ti+3/E4vt/xOL7f8Ti+3/E4vt/xOL7f8Ti+3/E4vt/xOL + 7f8Ti+3/E4vt/xOL7f8Ti+3/E4vt/xOL7f8Ti+3/E4vt/xOK7f8Tiu3/E4rs/xKB3f8OZq//Dmav/xF4 + zv8Tiuz/E4ns/xOJ7P8Tiez/E4ns/xOJ7P8Tiez/E4js/xOI7P8TiOz/Eojs/xKI7P8Sh+v/Eofr/xKH + 6/8Sh+v/Eobr/xKG6/8Shuv/Eobr/xKF6/8Shev/EoXq/xKF6v8ShOr/EHLL/w1hrP8NYKz/EHLL/xKD + 6v8Sgur/EoLp/xGC6f8Rgen/EYHp/xGB6f8RgOn/EYDp/xF/6P83mLr/i8Wu/8/j4P9puJX/YbSP/1+z + jv9eso3/XbGM/1OqhP/K4dz/WK6I/4Onkf+tn5n/rZ+Z/////wD///8A////AP///wD///8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////ADU1Nf82Njb/Nzc3/zg4OP84ODj/OTk5/xQU + FP8HBwf/Eojs/xOI7P8TiOz/E4ns/xOJ7P8Tiez/E4ns/xOJ7P8Tiez/E4rs/xOK7P8Tiuz/E4rs/xOK + 7f8Ti+3/E4vt/xOL7f8Ti+3/E4vt/xOL7f8Ti+3/D3C//w5nsP8OZ7D/EoLe/xOM7f8TjO3/E4zt/xOM + 7f8TjO3/E4zt/xOM7f8TjO3/E4zt/xOM7f8TjO3/E4zt/xOM7f8TjO3/E4zt/xOM7f8Ti+3/E4vt/xOL + 7f8Ti+3/E4vt/xOL7f8Ti+3/EoLe/w5osf8OaLH/EXnP/xOK7f8Tiuz/E4rs/xOK7P8Tiuz/E4ns/xOJ + 7P8Tiez/E4ns/xOJ7P8Tiez/E4js/xOI7P8SiOz/Eojs/xKH6/8Sh+v/Eofr/xKH6/8Shuv/Eobr/xKG + 6/8Shev/EoXr/xKF6/8Qc8v/DWGs/w1hrP8Qcsv/EoPq/xKD6v8Sg+r/EoLq/xKC6f8Rgun/EYHp/xGB + 6f8Rgen/JIzS/2y4l//O49//hsSq/2G0j/9gs47/X7KO/16yjf9Zr4n/LpBl/8fg2v9Yroj/g6eR/66g + mv+tn5n/////AP///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP// + /wD///8ANjY2/zc3N/84ODj/OTk5/zk5Of86Ojr/FBQU/wcHB/8Tiez/E4ns/xOJ7P8Tiez/E4ns/xOK + 7P8Tiuz/E4rs/xOK7P8Tiu3/E4vt/xOL7f8Ti+3/E4vt/xOL7f8Ti+3/E4vt/xOM7f8TjO3/E4zt/xOM + 7f8PccD/Dmix/w5osf8Sg97/E4zt/xOM7f8Tje3/E43t/xON7f8Tje3/E43t/xON7f8Tje3/E43t/xON + 7f8Tje3/E43t/xON7f8TjO3/E4zt/xOM7f8TjO3/E4zt/xOM7f8TjO3/E4zt/xOM7f8Sg97/Dmmy/w5o + sv8Res//E4vt/xOL7f8Ti+3/E4vt/xOL7f8Tiu3/E4rs/xOK7P8Tiuz/E4ns/xOJ7P8Tiez/E4ns/xOJ + 7P8TiOz/E4js/xKI7P8SiOz/Eofr/xKH6/8Sh+v/Eofr/xKG6/8Shuv/Eobr/xB0zP8NYq3/DWKt/xBz + y/8ShOr/EoTq/xKD6v8Sg+r/EoPq/xKC6v8Sgun/EYLp/xaE4/9Tq5j/vtzT/6LQv/9htJD/YLSP/1+z + jv9eso3/XbGM/ziXbP8rjmL/xN/Y/1eth/+Cp5H/rqCa/66gmv////8A////AP///wD///8A////AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wA3Nzf/ODg4/zk5Of86Ojr/Ozs7/zs7 + O/8UFBT/BwcH/xOJ7P8Tiuz/E4rs/xOK7P8Tiuz/E4rt/xOL7f8Ti+3/E4vt/xOL7f8Ti+3/E4zt/xOM + 7f8TjO3/E4zt/xOM7f8TjO3/E4zt/xON7f8Tje3/E43t/w9ywP8OabH/Dmmx/xKE3v8Tje7/E43u/xON + 7v8Tje7/E43u/xON7v8Tje7/E43u/xON7v8Tje7/E43u/xON7v8Tje7/E43u/xON7v8Tje7/E43u/xON + 7v8Tje3/E43t/xON7f8Tje3/E43t/xKE3v8OabL/Dmmy/xF70P8TjO3/E4zt/xOM7f8Ti+3/E4vt/xOL + 7f8Ti+3/E4vt/xOL7f8Tiu3/E4rs/xOK7P8Tiuz/E4ns/xOJ7P8Tiez/E4ns/xOI7P8TiOz/Eojs/xKI + 7P8Sh+v/Eofr/xKH6/8Shuv/EHXM/w1jrv8NYq3/EHTM/xKF6v8Sher/EoTq/xKE6v8Sg+r/EoPq/xKD + 6v8Sgur/RaKp/5jLt/+93NP/abiV/2G0j/9fs47/XrKN/12yjP9EoHf/K45i/yqNYf/C3tb/Vq2G/4On + kf+voZv/rqCa/////wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + /wD///8A////ADg4OP85OTn/Ojo6/zs7O/87Ozv/Ozs7/xQUFP8HBwf/E4rs/xOK7f8Ti+3/E4vt/xOL + 7f8Ti+3/E4vt/xOM7f8TjO3/E4zt/xOM7f8TjO3/E43t/xON7f8Tje3/E43t/xON7v8Tje7/E43u/xON + 7v8Tje7/D3PB/w5qsv8OarL/EoXf/xSO7v8Uju7/FI7u/xSO7v8Uju7/FI7u/xSO7v8Uju7/FI7u/xSO + 7v8Uju7/FI7u/xSO7v8Uju7/FI7u/xSO7v8Tju7/E47u/xOO7v8Tju7/E47u/xON7v8Tje7/EoTf/w5q + s/8OarL/EXzQ/xON7f8Tje3/E4zt/xOM7f8TjO3/E4zt/xOM7f8Ti+3/E4vt/xOL7f8Ti+3/E4vt/xOK + 7f8Tiuz/E4rs/xOK7P8Tiez/E4ns/xOJ7P8Tiez/E4js/xOI7P8SiOz/Eofr/xKH6/8Qdc3/DWSu/w1j + rv8QdM3/EoXr/xKF6/8Shev/EoXq/xKE6v8ShOr/EoPq/y6Uxv9yupv/0eTh/3e+n/9htI//YLOO/1+z + jv9eso3/U6qE/yuOYv8qjWH/KYxg/7/d1P9WrIb/gqeR/6+im/+vopv/////AP///wD///8A////AP// + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8AOTk5/zo6Ov87Ozv/Ozs7/zw8 + PP89PT3/FRUV/wcHB/8Ti+3/E4vt/xOL7f8Ti+3/E4zt/xOM7f8TjO3/E4zt/xON7f8Tje3/E43t/xON + 7v8Tje7/E43u/xOO7v8Tju7/E47u/xSO7v8Uju7/FI7u/xSO7v8Qc8H/D2uy/w9rsv8Tht//FI/u/xSP + 7v8Uj+7/FI/u/xSP7v8Uj+7/FI/u/xSP7v8Uj+7/FI/u/xSP7v8Uj+7/FI/u/xSP7v8Uj+7/FI/u/xSP + 7v8Uj+7/FI/u/xSO7v8Uju7/FI7u/xSO7v8Shd//Dmuz/w5rs/8RfNH/E43u/xON7v8Tje7/E43t/xON + 7f8Tje3/E4zt/xOM7f8TjO3/E4zt/xOM7f8Ti+3/E4vt/xOL7f8Ti+3/E4rt/xOK7P8Tiuz/E4rs/xOJ + 7P8Tiez/E4ns/xOJ7P8TiOz/Eojs/xB2zv8NZa//DWWv/xB1zf8Shuv/Eobr/xKG6/8Shev/EoXr/xKF + 6v8gjNj/XrGW/8Ld1v+ZzLj/YbSQ/2Czj/9fs47/XrKN/1qvif8xkmf/Ko1h/ymNYP8ojGD/vdzS/1Ws + hf+Dp5H/sKOd/6+inP////8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8A////AP///wA6Ojr/Ozs7/zs7O/88PDz/PT09/z4+Pv8VFRX/BwcH/xOM7f8TjO3/E4zt/xOM + 7f8Tje3/E43t/xON7f8Tje7/E43u/xON7v8Tju7/E47u/xSO7v8Uju7/FI7u/xSP7v8Uj+7/FI/u/xSP + 7v8Uj+7/FI/u/xB1wv8PbLP/D2yz/xOG4P8Uj+7/FJDv/xSQ7/8UkO//FJDv/xSQ7/8UkO//FJDv/xSQ + 7/8UkO//FJDv/xSQ7/8UkO//FJDv/xSQ7/8UkO//FI/u/xSP7v8Uj+7/FI/u/xSP7v8Uj+7/FI/u/xOG + 4P8PbLT/D2y0/xJ90f8Uju7/FI7u/xSO7v8Tju7/E47u/xON7v8Tje7/E43u/xON7f8Tje3/E4zt/xOM + 7f8TjO3/E4zt/xOL7f8Ti+3/E4vt/xOL7f8Tiu3/E4rs/xOK7P8Tiez/E4ns/xOJ7P8Tiez/EHfO/w5l + sP8NZbD/EHbN/xKH6/8Sh+v/Eobr/xKG6/8Shuv/EoXr/02onP+k0MD/s9jL/2K0kP9gtI//X7OO/16y + jf9dsoz/O5lv/yuOYv8pjWH/KIxg/yeLX/+629D/VKuF/4Onkf+xo53/saOd/////wD///8A////AP// + /wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////ADs7O/87Ozv/PDw8/z09 + Pf8+Pj7/Pz8//xUVFf8HBwf/E4zt/xON7f8Tje3/E43u/xON7v8Tje7/E47u/xSO7v8Uju7/FI7u/xSP + 7v8Uj+7/FI/u/xSP7v8Uj+7/FI/u/xSP7v8UkO//FJDv/xSQ7/8UkO//EHXD/w9stP8PbbX/E4fg/xSQ + 7/8UkO//FJDv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR7/8UkO//FJDv/xSQ + 7/8UkO//FJDv/xSQ7/8UkO//FJDv/xSQ7/8UkO//E4fg/w9ttf8PbLT/En7R/xSP7v8Uj+7/FI/u/xSP + 7v8Uju7/FI7u/xSO7v8Tju7/MZ3L/zGcy/8Tje7/E43t/xON7f8TjO3/E4zt/xOM7f8TjO3/E4vt/xOL + 7f8Ti+3/E4vt/xOK7P8Tiuz/E4rs/xOJ7P8ReM//Dmex/w5msf8Qd87/Eojs/xKH6/8Sh+v/Eofr/xKG + 6/87nbT/fr+k/8bg2f9vupr/YbSP/2Czjv9fso3/XrKN/0eiev8rjmL/Ko1h/ymMYP8oi1//J4te/7fa + zv9Tq4T/g6eR/7Kjnv+xo53/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8APDw8/zw8PP89PT3/Pj4+/z8/P/9AQED/FRUV/wcHB/8Tje7/E43u/xOO + 7v8Tju7/FI7u/xSO7v8Uj+7/FI/u/xSP7v8Uj+7/FI/u/xSP7v8UkO//FJDv/xSQ7/8UkO//FJDv/xSQ + 7/8Uke//FJHv/xSR7/8Qd8T/D261/w9utf8TiOH/FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR + 7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR + 7/8TiOH/D262/w9utv8Sf9P/FJDv/xSQ7/8Uj+7/FI/u/xSP7v8Uj+7/FI/u/zKdy/9jtZH/Y7WR/zGd + y/8Tju7/E43u/xON7v8Tje3/E43t/xOM7f8TjO3/E4zt/xOM7f8Ti+3/E4vt/xOL7f8Tiu3/E4rs/xF5 + z/8OZ7H/Dmex/xF4z/8TiOz/E4js/xKI7P8Sh+v/JJHT/2i1lP/F39j/g8Oo/2G0j/9gs47/X7OO/16y + jf9Uq4T/LpBk/yqNYf8pjGD/KIxf/yeLXv8mil7/tdnM/1Oqg/+Cp5H/sqOe/7Kjnv////8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wA9PT3/PT09/z4+ + Pv8/Pz//QEBA/0FBQf8WFhb/BwcH/xOO7v8Uju7/FI7u/xSP7v8Uj+7/FI/u/xSP7v8Uj+7/FJDv/xSQ + 7/8UkO//FJDv/xSQ7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/xB3xP8Pbrb/D262/xOI + 4f8Uke//FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR + 7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/xOI4f8Pb7f/D2+3/xKA0/8Uke//FJDv/xSQ + 7/8UkO//FJDv/xSQ7/8xncv/bLmX/97o6v/A3NT/YbSQ/zGcyv8Uju7/FI7u/xOO7v8Tje7/E43u/xON + 7f8Tje3/E4zt/xOM7f8TjO3/E4vt/xOL7f8Ti+3/EXrP/w5osv8OaLL/EXjP/xOJ7P8Tiez/E4js/xeK + 5v9VrI//r9XI/6PRv/9htI//YLOP/1+zjv9eso3/Wq+K/zSVav8qjWH/KYxg/yiMX/8ni1//Jope/yWJ + Xf+y2Mv/UqqD/4Knkf+zpZ//s6Sf/////wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AD4+Pv8+Pj7/Pz8//0BAQP9BQUH/QkJC/xYWFv8HBwf/FI/u/xSP + 7v8Uj+7/FI/u/xSQ7/8UkO//FJDv/xSQ7/8UkO//FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR + 7/8Uke//FJHv/xSR7/8Uke//EHfE/w9utv8Pbrb/E4jh/xWR7/8Vke//FZHv/xWR7/8Vke//FZHv/xWR + 7/8Vke//FZHv/xWR7/8Vke//FZHv/xWR7/8Vke//FZHv/xWR7/8Vke//FJHv/xSR7/8Uke//FJHv/xSR + 7/8Uke//E4nh/w9vt/8Pb7f/EoDT/xSR7/8Uke//FJHv/xSR7/8Uke//MZ7L/2u4l//d6On/4ers/9/q + 6/+92tL/YLSP/zGdyv8Uj+7/FI7u/xSO7v8Tju7/E47u/xON7v8Tje7/E43t/xON7f8TjO3/E4zt/xOL + 7f8RetD/Dmmy/w5psv8Rec//E4rs/xOJ7P8Tiez/Q6Oo/4rErf+83NL/aLeU/2C0j/9fs47/XrKN/12x + jP9BnXT/Ko1h/ymNYP8ojGD/J4tf/yaKXv8lil3/JIlc/6/Xyf9RqYL/gqeR/7OloP+zpZ//////AP// + /wD///8A////AP///wA3Nzf/ODg4/zk5Of85OTn/Ojo6/zs7O/87Ozv/PDw8/z09Pf8+Pj7/Pz8//0BA + QP9AQED/QUFB/0JCQv9DQ0P/FhYW/wcHB/8TieP/E4fg/xOH4P8Th+D/E4fg/xOI4P8TiOD/E4jg/xOI + 4f8TiOH/E4jh/xOI4f8TiOH/E4jh/xOI4f8TiOH/E4jh/xOI4f8TiOH/FIjh/xSI4f8QcLn/D2is/w9p + rP8TgdT/FInh/xSJ4f8UieH/FInh/xSJ4f8UieH/FInh/xSJ4f8UieH/FInh/xSJ4f8UieH/FInh/xSJ + 4f8UieH/FInh/xSJ4f8UieH/FInh/xSJ4f8UieH/FInh/xSJ4f8SgdT/Dmmt/w5prf8Recf/E4nh/xOJ + 4f8TieH/E4nh/zGcyP9ruJb/3Ofp/+Dq7P+Cx6j/gcan/9vo6P+62dD/X7OO/zCaxv8Th+D/E4fg/xOG + 4P8ThuD/Eobg/xKF4P8SheD/EoXg/xKF3/8ShN//EoTf/xBzw/8NY6j/DWOo/xBzw/8Sgt7/EoLe/zGY + vf9tuJj/yOHa/3u/ov9gtI//X7OO/16yjf9dso3/TaZ//yqNYf8pjWH/KIxg/yeLX/8mil7/JYpd/ySJ + XP8jiFz/rdbH/1Cogf98ooz/qJuW/6iblv////8A////AP///wD///8A////ADg4OP85OTn/Ojo6/zo6 + Ov87Ozv/Ozs7/zw8PP89PT3/Pj4+/z8/P/9AQED/QUFB/0FBQf9CQkL/Q0ND/0RERP8WFhb/BwcH/xB1 + wv8PbLT/D220/w9ttP8PbbT/D220/w9utf8PbrX/D261/w9utf8PbrX/D261/xButv8Qbrb/EG62/xBu + tv8Qbrb/EG+2/xBvt/8Qb7f/EHC3/w1cl/8MVoz/DFaM/w9qrf8RcLf/EXC4/xFwuP8RcLj/EXC4/xFw + uP8RcLj/EXC4/xFwuP8RcLj/EXC4/xFwuP8RcLj/EXC4/xFwuP8RcLj/EHC4/xBwuP8QcLj/EHC4/xBw + uP8QcLj/EHC4/w9prv8MVo7/DFWN/w5io/8Qb7j/EG+4/w9vuP8uian/ariW/9zn6P/f6uv/gcan/3nD + of93w6D/fsWl/9fm5f+32M3/XrKN/y2Ip/8Pbrf/D222/w9ttv8PbbX/D221/w9stf8PbLX/Dmy1/w5r + tf8Oa7T/DV6e/wtRiP8LUIf/DV2d/w5ps/8cdqr/X7GN/7LXyv+UyrT/YbSP/2Czjv9fso3/XrKN/1at + h/8tkGT/KY1h/yiMYP8ni1//Jote/yaKXf8liVz/JIhc/yKIW/+q1cX/UKiB/2qRe/+Eenb/hHp2//// + /wD///8A////AP///wD///8AOTk5/zo6Ov87Ozv/Ozs7/zs7O/88PDz/PT09/z4+Pv8/Pz//QEBA/0FB + Qf9CQkL/QkJC/0NDQ/9ERET/RUVF/xcXF/8HBwf/EHbD/w9ttP8PbbT/D261/w9utf8PbrX/D261/w9u + tf8QbrX/EG62/xButv8Qbrb/EG62/xBvtv8Qb7f/EHC3/xBwt/8QcLf/EXC3/xFwt/8RcLf/Dl2Y/w1W + jf8NVo3/EGqt/xFwuP8RcLj/EXC4/xFwuP8RcLj/EXC4/xFxuf8Rcbn/EXG5/xFxuf8Rcbn/EXG5/xFx + uf8Rcbn/EXG5/xFxuf8Rcbn/EXG5/xFxuf8Rcbn/EXG5/xFxuf8Rcbn/EGuv/wxXj/8MV4//DmSk/xBw + uf8QcLn/Lomp/2m3lf/b5+j/3+nr/4HGp/94w6H/d8Kg/3bCn/91wZ7/e8Sj/9Pl4v+z1sv/XbGM/yyH + p/8Pbrf/D263/w9ut/8Pbbb/D222/w9ttv8PbLX/D2y1/w5stf8NXp//C1GJ/wtRif8NXp7/E26w/0qg + j/+VyrX/stfK/2G0j/9gs47/X7KN/16yjf9dsYz/NJRp/yqNYf8pjGD/KItf/yeLXv8mil3/JYld/ySJ + XP8jiFv/O5Zu/6fUw/9Pp4D/apF8/4V7d/+Fenf/////AP///wD///8A////AP///wA6Ojr/Ozs7/zs7 + O/87Ozv/PDw8/z09Pf8+Pj7/Pz8//0BAQP9BQUH/QkJC/0NDQ/9DQ0P/RERE/0VFRf9GRkb/FxcX/wcH + B/8fgsz/EHbD/xB3xP8Qd8T/EXfE/xF3xP8Rd8T/EXfE/xF3xP8Rd8T/EXjE/xJ4xf8SeMX/EnnF/xJ5 + xf8SecX/EnnF/xJ5xf8Secb/EnnG/xN5xv8PZKP/D12Y/w9dmP8Scrv/E3nG/xN5xv8Tecf/E3nH/xN5 + x/8Tecf/E3nH/xN5x/8Tecf/E3nH/xN5x/8Tecf/E3nH/xN5x/8Tecf/E3nH/xN5x/8Tecf/E3nH/xN5 + x/8Tecf/EnnH/xJ5x/8Rcrz/Dl6a/w5emv8Qa7D/EnnH/y6MrP9pt5X/2ubn/97p6v+Axqb/d8Kg/3bC + n/91wZ//dMGe/3PAnf9ywJ3/ecKh/8/j3/+w1cn/XLCL/yyKq/8Qd8b/EHfF/xB3xf8QdsX/EHbE/xB2 + xP8QdsT/EHXE/w5nrP8MWZX/DFiV/w5mrP83kp7/eb2g/77d0/9tuZj/YLOO/1+yjv9eso3/XbGM/0Of + dv8qjWH/KYxg/yiLX/8ni17/Jope/yWJXf8kiVz/I4hb/zuWbv+ez7z/hcOp/06ngP96m4f/kYeC/5GG + gv////8A////AP///wD///8A////ADs7O/87Ozv/PDw8/zw8PP89PT3/Pj4+/z8/P/9AQED/QUFB/0JC + Qv9DQ0P/RERE/0RERP9FRUX/RkZG/0dHR/8XFxf/BwcH/0yl6f8Vke//FZHv/xWR7/8Vke//FZHv/xWS + 7/8Vku//FpLv/xaS7/8Wku//FpLv/xaS7/8Wku//FpLv/xaS7/8Xku//F5Lv/xeS7/8Xku//F5Lv/xN6 + x/8Scbn/EnK5/xaK4v8Yk+//GJPv/xiT7/8Yk+//GJPv/xiT7/8Yk+//GJPv/xiT7/8Yk+//GJPv/xiT + 7/8Yk+//GJPv/xiT7/8Yk+//F5Pv/xeT7/8Xku//F5Lv/xeS7/8Xku//F5Lv/xaK4v8Scbr/EnG6/xSC + 1f8xnsr/aLaU/9nm5//d6en/f8Wm/3bCoP91wp//dMGe/3PBnv9zwJ3/csCd/3G/nP9xv5v/d8Gg/8vi + 3P+t1Mb/W7CK/y6cyf8Uke//FJHv/xSQ7/8UkO//FJDv/xSP7v8Uj+7/En7S/w9ttv8Pbbb/Joey/12w + i/+83NL/hcSq/2Czjv9fs47/XrKN/12xjP9QqIH/Ko1h/ymMYP8ojF//J4te/yaKXv8liV3/JIlc/yOI + W/87lm7/nc+7/4TDqP9Op3//jL2i/9XFwP+2qKP/tqij/////wD///8A////AP///wD///8AOzs7/zw8 + PP89PT3/PT09/z4+Pv8/Pz//QEBA/0FBQf9CQkL/Q0ND/0RERP9FRUX/RkZG/0ZGRv9HR0f/SEhI/xcX + F/8HBwf/TaXq/xWR7/8Vke//FZLv/xWS7/8Wku//FpLv/xaS7/8Wku//FpLv/xaS7/8Xku//F5Lv/xeS + 7/8Xku//F5Lv/xeT7/8Xk+//GJPv/xiT7/8Yk+//FHrH/xNyuv8Tcrr/F4vi/xiT7/8Yk+//GJPv/xiT + 7/8Yk+//GJPv/xiT7/8Yk+//GJPv/xiT7/8Yk+//GJPv/xiT7/8Yk+//GJPv/xiT7/8Yk+//GJPv/xiT + 7/8Yk+//GJPv/xiT7/8Yk+//Fovi/xJyu/8Scrv/L5Cz/2e2lP/Y5ub/3Ojp/37Fpf91wp//dMGe/3TB + nv9zwJ3/csCd/2+9mv9csIr/cL6b/3C+m/9vvZr/dcCe/8fg2v+q0sT/Wa+J/y6cyf8Uke//FJHv/xSR + 7/8Uke//FJDv/xSQ7/8Sf9P/D263/xNytP9RqIn/oM+9/6LRv/9gs47/X7OO/16yjf9dsYz/Wa6J/y2P + Y/8pjGD/KIxf/yeLXv8mil7/JYld/ySJXP8jiFv/O5Zu/53Pu/+Ew6j/Tqd//4y9ov/04tz/1cXA/7ao + pP+2qKT/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8ARUVF/0ZGRv9HR0f/R0dH/0hISP9JSUn/GBgY/wcHB/9Npur/FZLv/xaS7/8Wku//FpLv/xaS + 7/8Wku//F5Lv/xeS7/8Xku//F5Lv/xeS7/8Xk+//GJPv/xiT7/8Yk+//GJPv/xiT7/8Yk+//GJPv/xmT + 7/8Uesf/E3K6/xNyuv8Yi+L/GZPv/xmT7/8Zk+//GZPv/xmT7/8ZlO//GZTv/xmU7/8ZlO//GZTv/xmU + 7/8Zk+//GZPv/xmT7/8Zk+//GZPv/xmT7/8Zk+//GZPv/xmT7/8Zk+//GJPv/xiT7/8Xi+L/E3O7/y+K + qf9ntZP/2OXl/9vo6P99xaX/dMGe/3TBnv9zwJ3/csCd/3LAnP9uvZn/SaN7/z+cc/9RqYH/br2a/269 + mf9tvJn/c76d/8Pe1/+n0cL/WK6I/y6cyP8Uke//FJHv/xSR7/8Uke//FJHv/xKA1P8Pb7j/RJ2S/4TC + qP+02Mz/ZraT/1+zjv9eso3/XbGM/1yxi/85mG7/KYxg/yiMX/8ni1//Jope/yWKXf8kiVz/I4hb/zuW + bv+czrr/g8Ko/02mf/+2zLr/9ePd//Ti3f/WxsH/t6ml/7eppf////8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wBGRkb/R0dH/0hISP9ISEj/SUlJ/0pK + Sv8YGBj/BwcH/06m6v8Wku//FpLv/xaS7/8Xku//F5Lv/xeS7/8Xku//F5Pv/xiT7/8Yk+//GJPv/xiT + 7/8Yk+//GJPv/xmT7/8Zk+//GZPv/xmT7/8Zk+//GZTv/xV7yP8Uc7v/FHO7/xiM4v8alO//GpTv/xqU + 7/8alO//GpTv/xqU7/8alO//GpTv/xqU7/8alO//GpTv/xqU7/8alO//GpTv/xqU7/8alO//GpTv/xqU + 7/8alO//GpTv/xmU7/8ZlO//GZPv/xiL4v8viqn/ZrWT/9fl5f/a6Oj/fMSk/3TBnv9zwJ3/c8Cd/3LA + nP9xv5z/br2Z/0mjev8/nHL/Ppxy/z2bcf9Pp4D/bbyY/2y7mP9ru5f/cb2b/7/d1P+j0L//V62H/y2c + yP8Uke//FJHv/xSR7/8Uke//EoHU/y2Kov9otZT/uNrP/3e+n/9fso7/XrKN/12xjP9csYv/RaF4/ymM + YP8ojF//J4tf/yaKXv8lil3/JIlc/yOIW/87lm7/m866/4LCp/9Npn//tsy6//Xj3v/1493/9ePd/9bG + wv+3qab/t6ml/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AEdHR/9ISEj/SUlJ/0lJSf9KSkr/S0tL/xgYGP8HBwf/Tqbq/xeS7/8Xku//F5Lv/xeS + 7/8Yk+//GJPv/xiT7/8Yk+//GJPv/xmT7/8Zk+//GZPv/xmT7/8ZlO//GpTv/xqU7/8alO//GpTv/xqU + 7/8alO//FnvI/xVzu/8Vc7v/GYzi/xuU7/8blO//G5Tv/xuU7/8blO//G5Tv/xuU7/8blPD/G5Tw/xuU + 7/8blO//G5Tv/xuU7/8blO//G5Tv/xuU7/8blO//G5Tv/xuU7/8blO//G5Tv/xqU7/8alO//Mp3G/2W0 + kv/W5eT/2efn/3vEo/9zwJ3/csCd/3LAnP9xv5z/cb+c/228mf9Io3r/Ppxy/z6bcv89m3H/PJpw/zua + cP9Npn7/a7uX/2q6lv9pupb/b7ya/7vb0f+gzr3/VqyG/yWY1f8Vke//FJHv/xSR7/8fjMr/VKuE/6rT + xP+UyrT/X7KN/16yjf9dsYz/XLGL/1Kpg/8pjGD/KIxf/yeLX/8mil7/JYpd/ySJXP8jiFv/O5Zu/5rO + uf+Cwqb/TaZ+/7bMuv/1497/9ePe//Xj3v/1493/18fC/7irpv+4qqb/////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ASEhI/0lJSf9KSkr/SkpK/0tL + S/9MTEz/GBgY/wcHB/9Opur/F5Lv/xiT7/8Yk+//GJPv/xiT7/8Yk+//GZPv/xmT7/8Zk+//GZTv/xqU + 7/8alO//GpTv/xqU7/8blO//G5Tv/xuU7/8blO//G5Tv/xuU8P8XfMn/FnW8/xZ1vP8ajeP/HJXw/xyV + 8P8clfD/HJXw/xyV8P8clfD/HJXw/xyV8P8clfD/HJXw/xyV8P8clfD/HJXw/xyV8P8clfD/HJXw/xyV + 8P8clfD/HJXw/xuU8P8blPD/G5Tv/zOfyf9ktJH/1eTk/9nn5v96w6P/csCd/3K/nP9xv5z/cb+b/3C+ + m/9tvJj/SKJ6/z6ccv89m3H/PZtx/zyacP87mm//Oplv/zqZbv9LpX3/abmV/2i5lf9ouJT/bbuY/7fa + zv+dzbv/UaqM/yGW2/8Vke//GZPo/0yokf+Ox7D/qtTF/1+yjf9eso3/XbGM/1yxi/9Yroj/L5Fl/yiM + X/8ni1//Jope/yWKXf8kiVz/I4hb/zqWbv+azrn/gcGm/0ymfv+2zbv/9eTf//Xj3//1497/9ePe//Xj + 3v/Xx8L/uKum/7irpv////8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8A////AP///wBJSUn/SkpK/0tLS/9LS0v/TExM/01NTf8ZGRn/BwcH/0+n6v8Yk+//GJPv/xiT + 7/8Zk+//GZPv/xmT7/8alO//GpTv/xqU7/8alO//G5Tv/xuU7/8blO//G5Tv/xuU8P8clfD/HJXw/xyV + 8P8clfD/HJXw/xh9yf8Xdbz/F3W9/xuN4/8dlfD/HZXw/x2V8P8dlfD/HZXw/x2V8P8dlfD/HZXw/x2V + 8P8dlfD/HZXw/x2V8P8dlfD/HZXw/x2V8P8dlfD/HZXw/x2V8P8dlfD/HZXw/xyV8P8zn8r/ZLOR/9Xk + 4//Y5+b/esOi/3K/nP9xv5z/cb+b/3C+m/9vvpv/bLuY/0eiev8+nHL/PZtx/zybcP88mnD/O5lv/zqZ + b/85mG7/OZht/ziXbf9Jo3v/Z7iU/2a4k/9mt5P/a7mX/7PYy/+azLj/UKmL/yGW2/88oaz/bbeX/7XZ + zP9vupr/XrKN/12xjP9csIv/W7CK/zuZcP8ojF//J4tf/yaKXv8lil3/JIlc/yOIW/86lm7/mc24/4DB + pv9MpX7/tsy7//Xk3//15N//9eTf//Xj3//1497/9ePe/9fIw/+5rKj/uayn/////wD///8A////AP// + /wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AEpKSv9LS0v/TExM/0xM + TP9NTU3/Tk5O/xkZGf8HBwf/T6fq/xmT7/8Zk+//GZPv/xqU7/8alO//GpTv/xuU7/8blO//G5Tv/xuU + 7/8blPD/HJXw/xyV8P8clfD/HJXw/x2V8P8dlfD/HZXw/x2V8P8dlfD/GX7K/xh2vf8Ydr3/HI7j/x6W + 8P8elvD/Hpbw/x6W8P8elvD/Hpbw/x+W8P8flvD/H5bw/x+W8P8elvD/Hpbw/x6W8P8elvD/Hpbw/x6W + 8P8elvD/Hpbw/x6W8P8elvD/NJ/J/2OzkP/U5OL/1+bl/3nCov9xv5z/cL6b/3C+m/9vvpr/b72a/2u7 + l/9Honn/PZtx/z2bcf88mnD/O5pw/zuZb/86mW7/VqaE/77b0/9UpYL/N5Zs/zaWa/9Honr/ZbeT/2W2 + kv9ktpL/abiV/6/WyP+Wyrb/T6mK/1mtiP+s1cb/hsSq/12yjP9dsYz/XLCL/1uwiv9Honr/KIxf/yeL + Xv8mil7/JYpd/ySJXP8jiFv/OpZt/5jNt/+AwaX/TKV9/7XMu//15OD/9eTg//Xk4P/15N//9eTf//Xj + 3//1497/18jD/7msqP+5rKj/////AP///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA////AP///wD///8AS0tL/0xMTP9NTU3/TU1N/05OTv9PT0//GRkZ/wcHB/9Qp+r/GpTv/xqU + 7/8alO//G5Tv/xuU7/8blO//G5Tw/xyV8P8clfD/HJXw/x2V8P8dlfD/HZXw/x2V8P8elvD/Hpbw/x6W + 8P8elvD/Hpbw/x+W8P8afsr/GXe+/xl3vv8djuP/H5bw/x+W8P8flvD/H5bw/yCW8P8glvD/IJbw/yCW + 8P8glvD/IJbw/yCW8P8glvD/H5bw/x+W8P8flvD/H5bw/x+W8P8flvD/H5bw/zWfyf9ispD/0+Pi/9bm + 5f94wqH/cL6b/2++m/9vvpr/b72a/269mf9ru5f/R6J5/z2bcf88m3D/PJpw/zuZb/86mW//OZhu/1Wm + g//H39n/oc69/8Pe1/9SpID/NZVq/zSVav9GoXj/Y7aR/2O1kf9itZD/Z7eU/6vVxv+TybP/mMu3/5vO + uv9dsYz/XLGM/1ywi/9bsIr/VKuE/yuOYv8ni17/Jope/yWKXf8kiVz/I4hb/zqWbf+Xzbf/f8Gl/0ul + ff+1zbz/9eTh//Xk4P/15OD/9eTg//Xk4P/15N//9eTf//Xk3//YyMT/uq2p/7qtqf////8A////AP// + /wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wBMTEz/TU1N/05O + Tv9OTk7/T09P/1BQUP8ZGRn/BwcH/1Go6v8blO//G5Tv/xuU7/8blPD/HJXw/xyV8P8clfD/HZXw/x2V + 8P8dlfD/Hpbw/x6W8P8elvD/Hpbw/x+W8P8flvD/H5bw/x+W8P8flvD/IJbw/xt/y/8xjKr/MYyq/x+P + 5P8hl/D/IZfw/yGX8P8hl/D/IZfw/yGX8P8hl/D/IZfw/yGX8P8hl/D/IZfw/yGX8P8hl/D/IZfw/yGX + 8P8hl/D/IJfw/yCX8P81n8n/YbKP/9Lj4f/V5uT/d8Gg/2++mv9vvZr/br2a/269mf9tvJn/arqW/0ah + eP89m3H/PJpw/zuab/87mW//Oplu/zmYbv9VpoP/xt/Z/4LAp/9Uq4X/gMCl/7/c0/9Po37/M5Rp/zKT + aP9EoHf/YrSQ/2G0j/9gs4//ZbWS/6fTw/+x18r/YrSQ/1yxi/9bsIv/W7CK/1qvif8xkmf/J4te/yaK + Xv8liV3/JIlc/yOIW/86lW3/l8y2/37ApP9LpX3/tc28//Xl4f/15eH/9eXh//Xk4f/15OD/9eTg//Xk + 4P/15N//9eTf/9jJxf+6rar/uq2p/////wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///wD///8A////AE1NTf9OTk7/T09P/09PT/9QUFD/UVFR/xoaGv8HBwf/Vank/xuU + 8P8clfD/HJXw/xyV8P8dlfD/HZXw/x2V8P8elvD/Hpbw/x6W8P8flvD/H5bw/x+W8P8flvD/IJbw/yCX + 8P8gl/D/IZfw/yGX8P8hl/D/M5S2/2Kyj/9Yroj/NZ7G/yKX8P8il/D/Ipjw/yKY8P8imPD/Ipjw/yKY + 8P8imPD/Ipjw/yKY8P8imPD/Ipjw/yKY8P8imPD/Ipjw/yKX8P8il/D/NZ/J/2Gxjv/R4+H/1eXj/3bA + oP9uvZr/br2Z/229mf9tvJn/bbyY/2m6lv9GoXj/PJpw/zuacP87mW//Oplv/zmYbv85mG3/VKaD/8Xe + 2P+CwKb/Xq+K/7nRwv9dror/fr6j/7vb0f9NoXz/MZJn/zGSZ/9CnnX/YLOO/1+zjv9eso3/Y7SR/3O7 + nP9csYv/W7CL/1qviv9Zr4n/PZtx/yeLXv8mil7/JYld/ySJXP8jiFv/OZVt/5bMtv9+wKT/SqR8/7XN + vP/15eL/9eXi//Xl4f/15eH/9eXh//Xk4f/15OD/9eTg//Xk4P/15N//2MnF/7uuq/+7rqr/////AP// + /wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8ATk5O/09P + T/9QUFD/UFBQ/1FRUf9SUlL/Ghoa/wcHB/9vtZz/J5nc/x2V8P8dlfD/HZXw/x6W8P8elvD/Hpbw/x+W + 8P8flvD/H5bw/yCW8P8gl/D/IZfw/yGX8P8hl/D/IZfw/yGX8P8il/D/Ipjw/zagyf9iso//3Ofp/77a + 0v9YrYf/NqDJ/yOY8P8jmPD/I5jw/yOY8P8jmPD/I5jw/yOY8P8jmPD/I5jw/yOY8P8jmPD/I5jw/yOY + 8P8jmPD/I5jw/zagyP9gsY7/0eLg/9Tl4/92wJ//bbyZ/228mf9tvJj/bLyY/2y7mP9ouZX/RaF4/zya + cP87mm//Oplv/zqZbv85mG7/OJht/1Slgv/E3tf/gb+m/12uiv/Y3NX/9ujn/9fc1P9crYn/e72i/7bZ + zf9LoHv/L5Fm/y+RZf9AnXT/XrKN/12xjP9csYz/XLCL/1uwiv9ar4r/Wa+J/0mje/8mi17/Jopd/yWJ + Xf8kiVz/I4hb/zmVbf+VzLX/fcCj/0qkfP+2zbz/9ubj//bl4v/25eL/9eXi//Xl4v/15eH/9eXh//Xk + 4f/15OD/9eTg//Xk4P/Yycb/u66r/7uuq/////8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD///8A////AP///wBPT0//UFBQ/1BQUP9RUVH/UlJS/1NTU/8aGhr/BwcH/1Sr + hf9Kp5n/IZfp/x6W8P8elvD/H5bw/x+W8P8glvD/IJfw/yCX8P8hl/D/IZfw/yGX8P8il/D/Ipjw/yKY + 8P8jmPD/I5jw/yOY8P82oMj/YbGO/9zn6f/P49//4ers/73Z0v9XrYf/N6DI/yWZ8P8lmfD/JZnw/yWZ + 8P8lmfD/JZnw/yWZ8P8lmfD/JZnw/yWZ8P8lmfD/JZnw/ySZ8P83oMj/X7CN/9Di3//T5eL/db+e/2y8 + mP9svJj/bLuY/2u7l/9ru5f/aLmU/0Sgd/87mm//O5lv/zqZbv85mG7/OZht/ziXbf9UpYL/xN7X/4C/ + pf9dron/2NzV//fo6P/36Oj/9+jo/9jc1f9brYj/ebyg/7LXyv9Innn/LpBk/y2PY/8+nHL/XLGL/1uw + i/9bsIr/Wq+J/1mvif9VrIb/KY1h/yaKXf8liV3/JIlc/yOIW/85lW3/lMu1/3y/o/9KpHz/tc29//bm + 4//25uP/9ubj//bl4v/25eL/9eXi//Xl4v/15eH/9eXh//Xl4f/15OD/9eTg/9nKxv+8r6z/vK+r//// + /wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AFBQ + UP9RUVH/UVFR/1JSUv9TU1P/VFRU/xoaGv8HBwf/U6uE/2m0k/9Kp5j/Ipfp/yCW8P8gl/D/IJfw/yGX + 8P8hl/D/IZfw/yKY8P8imPD/I5jw/yOY8P8jmPD/I5jw/ySY8P8kmfD/N6DI/2Cxjv/c5+j/4ers/3fA + oP93wKD/4ers/73Z0v9WrIb/OKDI/yaZ8P8mmfD/Jprw/yaa8P8mmvD/Jprw/yaa8P8mmvD/Jpnw/yaZ + 8P8mmfD/N6DI/16wjP/P4t//0uTi/3S/nf9su5f/a7uX/2u7l/9ru5f/arqW/2e4lP9EoHf/O5lv/zqZ + bv85mG7/OZht/ziXbf83l2z/U6WB/8Pe1v9/v6T/XK2J/9jc1f/36Oj/9+jo//fo6P/36Oj/9+jo/9jc + 1f9arIf/d7ue/67Wx/9GnXf/LI5j/yuOYv88mnH/Wq+K/1qvif9Zron/WK6I/zKTaP8lil3/JYlc/ySJ + XP8jiFv/OZVt/5PLtP98v6L/SaR7/7XNvf/25uT/9ubk//bm5P/25uP/9ubj//bm4//25eL/9eXi//Xl + 4v/15eH/9eXh//Xl4f/15OD/2crG/7yvrP+8r6z/////AP///wD///8A////AP///wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8AUVFR/1FRUf9SUlL/U1NT/1RUVP9VVVX/Gxsb/wcH + B/9TqoP/xt3Y/3O4m/9Ao6z/IZfw/yGX8P8il/D/Ipjw/yKY8P8jmPD/I5jw/yOY8P8kmPD/JJnw/ySZ + 8P8lmfD/JZnw/zegyP9fsI3/3Obo/+Dq7P92wJ//bbyZ/228mf92wJ//4Ors/73Z0f9VrIX/OKDI/yia + 8P8omvD/KJrw/yia8P8omvD/KJrw/yia8P8omvD/KJrw/zigyP9Uq4X/u9nQ/9Hk4f9zvp3/a7uX/2q6 + l/9qupb/arqW/2m6lv9mt5P/Q592/zqZb/86mG7/OZhu/ziYbf84l2z/N5ds/1Kkgf/C3db/f76k/3C1 + lf/t5eP/9+np//fp6f/36en/9+np//fp6f/36en/9+jo/9jc1f9Zq4b/dLqc/6rUxP9EnHX/Ko1h/ymN + YP87mW//WK6I/1iuiP8+nHL/JYpd/ySJXP8kiFz/I4hb/zmVbP+Ty7P/e7+h/0mje/+1zb3/9ubl//bm + 5P/25uT/9ubk//bm5P/25uP/9ubj//bm4//25eL/9uXi//Xl4v/15eH/9eXh//Xl4f/Zysf/vbCt/72w + rf////8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP// + /wBRUVH/UlJS/1NTU/9UVFT/VVVV/1ZWVv8bGxv/BwcH/1Kpg//R4eD/8O/3/2ezk/89orP/Ipjw/yOY + 8P8jmPD/I5jw/ySZ8P8kmfD/JZnw/yWZ8P8mmfD/Jpnw/yaa8P83oMj/Xq+M/9zm6P/g6ez/dL+e/2y7 + l/9su5j/bLuY/2y7mP91v57/4Ons/7zZ0f9Uq4T/OaHI/ymb8P8pm/D/KZvw/ymb8P8pm/D/KZvw/ymb + 8P85ocj/U6uE/7HUyf/Q4+D/cr2c/2q6lv9pupb/abqW/2m5lf9ouZX/ZbeS/0Ofdv86mG7/OZhu/ziY + bf84l23/N5ds/zaWbP9SpID/wd3V/36+o/9wtZX/7eXj//fp6f/36en/9+np//fp6f/36en/9+np//fp + 6f/36en/9+np/9fd1f9Yq4b/crma/6XSwf9BmnP/KIxg/yeLX/85mG7/TaZ//yWJXf8kiVz/I4hc/yKI + W/84lWz/ksuz/3q+of9Io3v/tc6+//bn5f/25+X/9ufl//bm5f/25uT/9ubk//bm5P/25uP/9ubj//bm + 4//25eL/9uXi//Xl4v/15eH/9eXh/9nLyP+9sK7/vbCt/////wD///8A////AP///wD///8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AFJSUv9TU1P/VFRU/1VVVf9WVlb/V1dX/xsb + G/8HBwf/UamC/9Hh4P/o7PH/2+bo/1yuiv81nsf/JJnw/ySZ8P8lmfD/JZnw/yaZ8P8mmfD/J5rw/yea + 8P8nmvD/N6DH/12vi//c5uj/4Onr/3O+nf9qupb/arqX/2q6l/9qupf/a7uX/2u7l/90vp3/4Onr/7zY + 0f9TqoT/OqHI/yuc8f8rnPH/K5zx/yuc8f8rnPH/OaHH/1Oqg/+w1Mj/z+Pg/3G8m/9puZX/aLmV/2i5 + lf9ouZX/Z7iU/2S2kv9CnnX/OZhu/ziYbf84l23/N5ds/zeWbP82lmv/bbKV/8rh3P99vaP/b7SV/+3l + 4//36er/9+nq//fp6v/36er/9+nq//fp6v/36er/9+np//fp6f/36en/9+np/9fc1f9XqoX/cLeZ/6HQ + vv8/mXH/Jope/yaKXf8liV3/JIlc/yOIW/8iiFv/OJVs/5HKsv96vqD/SKN6/7XNvv/25+b/9ufm//bn + 5f/25+X/9ufl//bm5f/25uT/9ubk//bm5P/25uT/9ubj//bm4//25eL/9uXi//Xl4v/15eH/2szI/76y + r/++sa7/////AP///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP// + /wD///8AU1NT/1RUVP9VVVX/VlZW/1dXV/9YWFj/Gxsb/wcHB/9QqIH/0OHg/4DCpv/y8Pj/0OHg/1Gp + gv8wndT/Jpnw/yaa8P8nmvD/J5rw/yia8P8omvD/KJrw/zigx/9SqYP/xt3Y/9/p6/9yvZz/abmV/2m5 + lf9puZX/abqW/2m6lv9nuJT/Z7iU/2m6lv9yvZz/3ejq/7nXzv9SqoP/OqHI/yyc8f8snPH/LJzx/zqh + yP9SqYP/r9TI/8/i3/9wvJr/aLiU/2e4lP9nuJT/Z7iU/2a4lP9jtpH/QZ51/ziYbf84l23/N5ds/zeW + bP82lmv/NZZr/22ylf/J4dv/fL2i/2+0lP/t5eP/9+nq//fp6v/36er/9+nq//fp6v/36er/9+nq//fp + 6v/36er/9+nq//fp6v/36er/9+np/9fc1f9WqYT/bbaX/53Pu/89l3D/JYlc/ySJXP8jiFv/Ioda/ziV + bP+QyrL/eb6g/1Kngf+/0sX/9ufn//bn5v/25+b/9ufm//bn5v/25+X/9ufl//bm5f/25uT/9ubk//bm + 5P/25uT/9ubj//bm4//25eL/9uXi//Xl4v/azMn/vrKv/76yr/////8A////AP///wD///8A////AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wBUVFT/VVVV/1ZWVv9XV1f/WFhY/1lZ + Wf8cHBz/BwcH/0+ogP/Q4d//icWs/3/Bpv/y8Pj/u9jQ/02niP8vndv/KJrw/yia8P8pm/D/KZvw/ymb + 8P84oMf/UamC/7vY0P/f6ev/cLyb/2e4lP9nuJT/aLiU/2i5lP9ouZX/ZbeT/0mje/9Io3r/ZbeT/2i5 + lf9xvJv/2ufn/7bWzP9RqYL/O6LH/y6d8f87osf/UamC/67Tx//O4t7/bruZ/2a4lP9muJP/ZreT/2a3 + k/9lt5P/YrWQ/0GddP84l23/N5ds/zeWbP82lmv/NZZr/zWVav9ssZT/yOHb/3y9ov9utJT/7Obk//fq + 6//36uv/9+rr//fq6//36uv/9+rr//fq6//36er/9+nq//fp6v/36er/9+nq//fp6v/36er/9+nq/9fc + 1f9VqIP/a7WV/5jNuP87lm7/I4hb/yKHWv83lGv/kMqx/3i9oP9SpoD/1dvT//bo5//26Of/9ufn//bn + 5v/25+b/9ufm//bn5v/25+X/9ufl//bn5f/25uX/9ubk//bm5P/25uT/9ubj//bm4//25eL/9uXi/9rM + yf+/s7D/vrKv/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AFVVVf9WVlb/V1dX/1hYWP9ZWVn/Wlpa/xwcHP8HBwf/TqeA/9Dh3/+IxKz/YrWQ/3/B + pf/79P//pc7A/0qmjv8rnOn/KZvw/yqb8P8qm/H/OKDH/1Cogf+72ND/3+nr/2+7mv9mt5P/ZreT/2a4 + k/9muJP/ZriT/2S2kv9Ionr/QJ10/0Cdc/9Honn/ZLaR/2e4lP9vu5r/1uXk/7PVyv9QqIH/RKSr/1Co + gf+u08b/zeLe/226mf9lt5P/ZbeT/2W3kv9lt5L/ZLaS/2K0j/9AnXP/N5ds/zeWbP82lmv/NZZr/zWV + av80lWr/bLGU/8fh2v97vKH/brOT/+zm5P/36uv/9+rr//fq6//36uv/9+rr//fq6//36uv/9+rr//fq + 6//36uv/9+rr//fq6//36uv/9+nq//fp6v/36er/9+nq/9bc1f9Up4L/aLST/5TMtf84lWz/N5Rr/4/J + sf94vZ//UqaA/9bb0//36Oj/9+jo//bo5//26Of/9ujn//bn5//25+b/9ufm//bn5v/25+X/9ufl//bn + 5f/25uX/9ubk//bm5P/25uT/9ubj//bm4//25eL/28zJ/7+zsP+/s7D/////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AVlZW/1dXV/9YWFj/WVlZ/1pa + Wv9bW1v/HBwc/wcHB/9Npn//0OHf/4fEq/9htI//YbSP/5vMuf/79P//j8Sw/0ellf8tner/K5zx/zmg + x/9Pp4D/u9fP/9/o6v9uupn/ZLaS/2W2kv9lt5L/ZbeS/2W3kv9itZD/RqJ5/z+dc/94t57/SqF7/z6c + cv9FoXj/Y7WQ/2W3k/9uupn/0uTh/6/TyP9PqID/rdLG/8zh3f9supj/ZLaS/2S2kv9ktpL/ZLaR/2O2 + kf9gtI//P5xz/zaWbP82lmv/NZVr/zWVav80lWr/NJRp/2uxk//H4Nn/eryg/22zk//s5uX/9+rs//fq + 7P/36uz/9+rs//fq7P/36uz/9+rs//fq6//36uv/9+rr//fq6//36uv/9+rr//fq6//36uv/9+rr//fq + 6//36er/9+nq/9bc1f9Tp4H/ZrOR/5DKsf+OybD/d72f/1GmgP/W29T/9+jo//fo6P/36Oj/9+jo//bo + 5//26Of/9ujn//bn5//25+b/9ufm//bn5v/25+X/9ufl//bn5f/25uX/9ubk//bm5P/25uT/9ubj//bm + 4//czcr/wbSx/7+zsP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wBXV1f/WFhY/1lZWf9aWlr/W1tb/1xcXP8cHBz/BwcH/0ymfv/P4d//hsOq/1+z + jv9gs47/YLOP/5rMuf/79P//brWX/0Gjqv81n9X/Tqd//7rXz//e6Or/bLmX/2O1kf9jtZH/Y7aR/2O2 + kf9jtpH/YbSP/0WheP8+nHL/g7ym//Xy+//R4eD/SKB6/z2bcf9EoHf/YbSP/2S2kv9suZf/zuLe/9Lj + 4f/L4dz/a7mX/2O2kf9jtZH/Y7WR/2O1kf9itZD/X7OO/z6ccv82lmv/NZVr/zWVav80lWr/NJRp/zOU + af9qsJP/xuDZ/3m7oP9ss5P/7Obl//fq7P/36uz/9+rs//fq7P/36uz/9+rs//fq7P/36uz/9+rs//fq + 7P/36uz/9+rs//fq7P/36uv/9+rr//fq6//36uv/9+rr//fq6//36uv/9+nq/9bc1f9SpoD/ZLKQ/3a9 + nv9Oo3z/x83G//fp6f/36en/9+np//fo6P/36Oj/9+jo//fo6P/26Of/9ujn//bn5//25+b/9ufm//bn + 5v/25+b/9ufl//bn5f/25uX/9ubk//bm5P/25uT/9ubj/9zNy//BtLH/wbSx/////wD///8A////AP// + /wD///8ATk5O/09PT/9QUFD/UVFR/1JSUv9TU1P/VFRU/1VVVf9WVlb/V1dX/1hYWP9ZWVn/Wlpa/1tb + W/9cXFz/XV1d/x0dHf8HBwf/S6V9/8/g3/+Fwqn/XrKN/16yjf9fso7/X7OO/7fYzv/w7/f/brWW/02m + fv+618//3ujq/2u4lv9htJD/YrSQ/2K1kP9itZD/YrWQ/2Czjv9EoHf/PZtx/4K8pf/q7fP/bbSW/7PU + yv/N393/R594/zuab/9Cnnb/YLOO/2K1kP9quJb/stbK/2q4lv9itZD/YrWQ/2K0kP9itJD/YbSQ/16y + jf8+m3L/NZVq/zWVav80lGr/NJRp/zOUaf8zk2j/abCS/73c0/9xt5n/bLKS/+3m5f/36uz/+Ovt//jr + 7f/46+3/+Ovt//jr7f/46+3/9+rs//fq7P/36uz/9+rs//fq7P/36uz/9+rs//fq7P/36uz/9+rs//fq + 7P/36uv/9+rr//fq6//36uv/9+rr/9bc1f9Qpn//TaJ8/6+3sP/g09P/9+np//fp6f/36en/9+np//fo + 6P/36Oj/9+jo//fo6P/26Of/9ujn//bo5//25+b/9ufm//bn5v/25+b/9ufl//bn5f/25uX/9ubk//bm + 5P/25uT/3M7L/8K1s//BtLH/////AP///wD///8A////AP///wBPT0//UFBQ/1FRUf9SUlL/U1NT/1RU + VP9VVVX/VlZW/1dXV/9YWFj/WVlZ/1paWv9bW1v/XFxc/11dXf9eXl7/HR0d/wcHB/9LpX3/z+De/4TC + qf9dsYz/XbGM/16yjf9eso3/XrKN/8Db1P/a5ef/udfP/97o6v9pt5X/YLOO/2Czj/9gtI//YLSP/2G0 + j/9eso3/Q592/zybcf+Bu6T/6e3y/2y0lf+Cu5//V6qF/7DTyP/J3tr/RZ53/zmYbv9BnXT/X7KN/2G0 + j/9htI//YbSP/2G0j/9htI//YLSP/2Czj/9dsYz/PZtx/zSVav80lGn/M5Rp/zOUaP8yk2j/MpNo/2mw + kv+93NL/YrCO/2Oqiv/a1dT/+Ovt//jr7f/46+3/+Ovt//jr7f/46+3/+Ovt//jr7f/46+3/+Ovt//jr + 7f/46+3/+Ovt//jr7f/36uz/9+rs//fq7P/36uz/9+rs//fq7P/36uz/9+rr//fq6//36uv/9+rr/8fO + yP+wuLH/yb2+/+DT1P/36er/9+nq//fp6f/36en/9+np//fp6f/36Oj/9+jo//fo6P/26Of/9ujn//bo + 5//25+b/9ufm//bn5v/25+b/9ufl//bn5f/25uX/9ubk//bm5P/czsz/wrWz/8K1s/////8A////AP// + /wD///8A////AFBQUP9RUVH/UlJS/1NTU/9UVFT/VVVV/1ZWVv9XV1f/WFhY/1lZWf9aWlr/W1tb/1xc + XP9dXV3/Xl5e/19fX/8dHR3/BwcH/0qkfP/P4N7/g8Go/1uwi/9csYv/XLGM/12xjP9dsYz/XbGM/8rf + 2//d6Or/aLaU/16yjf9eso3/X7KO/1+zjv9fs47/XbGM/0Kfdf87mnD/gLuj/+js8f9rs5X/damQ/+LU + 1P/M0cr/VKeC/63Sxv/F3Nf/Q511/ziXbf8/nHP/XbGM/2Czjv9gs47/X7OO/1+zjv9fs47/XLGL/zya + cP80lGn/M5Rp/zOTaP8yk2j/MpNo/zGSZ/9or5H/vNvR/2Gvjf9epoX/vLi3/9nNz//t4eP/7eHj/+3h + 4//t4eP/7eHj/+3h4//t4eP/7eHj/+3h4//t4eP/7eHj/+3h4//t4eP/7eHj/+3h4v/t4eL/7eDi/+zg + 4v/s4OH/7N/h/+zf4f/s3+H/7N/h/+zf4f/s3+D/1srL/8C1tv/Atbb/1cnK/+ve3//r3t//697f/+ve + 3v/r3t7/697e/+vd3f/r3d3/693d/+vd3P/q3Nz/6tzb/+rc2//p29v/6dva/+nb2v/p29r/6dvZ/+nb + 2f/p2tn/6drY/9HDwv+4rKv/uKup/////wD///8A////AP///wD///8AUFBQ/1JSUv9TU1P/VFRU/1VV + Vf9WVlb/V1dX/1hYWP9ZWVn/Wlpa/1tbW/9cXFz/XV1d/15eXv9fX1//X19f/x0dHf8HBwf/SaN7/8/g + 3v+CwKf/Wq+K/1uwiv9bsIr/W7CL/1ywi/9csYv/ZrWT/2a1k/9dsYz/XbGM/12xjP9dsoz/XrKN/1yw + i/9BnnX/Oplv/3+6o//n7PH/arOU/22iif+nnZ3/wre3/8vAwP+0u7T/U6eB/6rRw//B29T/QZx0/zaW + a/89m3L/XLCL/16yjf9eso3/XrKN/1uwi/87mnD/M5Ro/zKTaP8yk2j/MZNn/zGSZ/8xkmf/Z6+Q/7vb + 0f9gr4z/XqWF/6Wiof+roqT/vLK1/83Cxf/NwsX/zcLF/83Cxf/NwsX/zcLF/83Cxf/NwsX/zcLF/83C + xf/MwsT/zMLE/8zCxP/MwsP/zMLD/8zCw//LwcL/y8HC/8vBwv/LwcL/ysDB/8rAwf/Jv8H/yb/B/8m/ + wf+2ra7/o5uc/6ObnP+2rK3/yb2+/8i8vf/IvL3/yLy9/8i8vP/Hu7v/x7u7/8e7u//Gurr/xrq6/8a6 + uv/Furn/xLm4/8S5uP/EuLf/w7e2/8O3tv/Dt7X/w7e1/8O3tf/DtrX/rqKi/5qPj/+Zj47/////AP// + /wD///8A////AP///wBRUVH/UlJS/1NTU/9UVFT/VlZW/1dXV/9YWFj/WVlZ/1paWv9bW1v/XFxc/11d + Xf9eXl7/X19f/19fX/9gYGD/HR0d/wcHB/9Io3r/zuDe/4HApv9Zron/Wa+J/1qvif9ar4r/Wq+K/1uw + iv9bsIr/W7CL/1uwi/9csIv/XLGL/1yxi/9ar4r/QJ10/zmYbv9+uaL/5+zw/2myk/9toon/qJ6e/6mf + n//Dubn/zMHB/8zBwf+0vLX/UqaA/6fPwf++2dL/P5py/zWVav88mnD/Wq+K/12xjP9ar4r/Oplv/zKT + aP8yk2j/MZJn/zGSZ/8wkmb/MJFm/2eukP+629D/X66M/2Kpif+9ubn/q6Kl/6uipf+9s7b/zsPG/87E + xv/OxMb/zsPG/87Dxv/Ow8b/zcPF/83Dxf/Nw8X/zcLF/83Cxf/NwsX/zcLF/83Cxf/MwsT/zMLE/8zC + xP/MwsP/zMLD/8vBwv/LwcL/y8HC/8vBwv/KwMH/yb/B/7eur/+knJ3/pJyd/7atrv/Jvr//yb6//8m9 + vv/IvL3/yLy9/8i8vf/IvLz/x7u7/8e7u//Hu7v/xrq6/8a6uv/Furn/xLm4/8S5uP/EuLf/w7e2/8O3 + tv/Dt7X/w7e1/8O3tf+uo6L/mo+P/5qPj/////8A////AP///wD///8A////AFJSUv9TU1P/VFRU/1VV + Vf9WVlb/V1dX/1hYWP9ZWVn/Wlpa/1xcXP9dXV3/Xl5e/19fX/9fX1//YGBg/2FhYf8eHh7/BwcH/0ei + ev/O4N7/gL+l/1iuiP9Yroj/WK6I/1muif9Zr4n/Wa+J/1qvif9ar4n/Wq+K/1qviv9bsIr/Wa6I/z+c + c/84mG3/fbmh/+br7/9ospL/grac/7uwsP+yp6f/sqio/87Cwv/Xy8v/18vM/9fMzf+/xr//VKiC/6TO + v/+618//Pplx/zOUaf86mW//Vq2G/zqYbv8xkmf/MZJn/zCSZv8wkWb/L5Fm/y+RZf9mro//udrQ/1+u + i/9mro3/0czM/9DGyP+1rK7/ta2v/8e+wP/ZztH/2c7R/9nO0f/ZztH/2c7R/9nO0f/ZztH/2c7R/9nO + 0f/YztH/2M7Q/9jN0P/YzdD/2M3P/9jNz//YzM//18zP/9fMz//XzM7/18zO/9fMzv/XzM3/1szN/9bL + zf/Wy8z/wri5/66mpv+upqb/wbi5/9XKy//Vycr/1cnK/9XIyf/UyMn/1MfI/9THyP/Ux8f/08fH/9PH + x//Txsb/0sbG/9LGxv/SxsX/0cXE/9HExP/RxMP/0MPC/9DDwv/Qw8H/0MPB/7qurf+kmZn/pJmZ//// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A+fj8/11d + Xf9eXl7/X19f/19fX/9gYGD/YWFh/x4eHv8HBwf/RqF5/87f3v9/vqT/Vq2H/1eth/9XrYf/V62H/1iu + iP9Yroj/WK6I/1muiP9Zron/Wa+J/1eth/8+m3L/N5ds/3y4oP/l6+//Z7GR/4q9pP/36Oj/18vL/83C + wv/NwsL/7d/f//fp6v/36er/9+nq//fq6//W3db/U6eC/6HNvP+21sz/PJhv/zGTZ/8xkmf/MZJn/zCS + Zv8wkWb/L5Fl/y+RZf8ukGX/Za2P/7naz/9erYv/c7WX/+3n5//47O//7uLl/8/FyP/Pxcj/5Nnc//js + 7//47O//+Ozv//js7//47O//+Ozv//js7//47O//+Ozv//js7//47O//+Ozv//js7//47O//+Ozv//js + 7v/47O7/+Ovu//jr7v/46+7/+Ovu//jr7v/46+3/+Ovt//jr7f/i1tj/y8HC/8rAwf/h1df/9+rs//fq + 6//36uv/9+rr//fq6//36er/9+nq//fp6v/36en/9+np//fp6f/36Oj/9+jo//fo6P/26Of/9ujn//bn + 5//25+b/9ufm//bn5v/25+X/3c/O/8O3tf/DtrX/////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD5+Pz/Xl5e/19fX/9fX1//YGBg/2FhYf9iYmL/Hh4e/wcH + B/9FoXj/zt/d/36+pP9VrIb/VayG/1ashv9WrYb/Vq2H/1eth/9XrYf/V62H/1ith/9WrIb/PZtx/zaW + a/98uJ//5Oru/2awkf+JvKP/9+jo//fo6P/YzMz/zcLC/87Dw//t3+D/9+nq//fp6v/36uv/9+rr//fq + 6//W3db/UqeB/57Luv+y1Mn/Opdu/zCRZv8vkWX/L5Fl/y6QZf8ukGT/LpBk/2Stjv+42s7/Xa2K/4m+ + pf/47O//+Ozv//js7//u4+b/0MbJ/9DGyf/k2dz/+Ozw//js8P/47PD/+Ozw//js8P/47PD/+Ozw//js + 8P/47PD/+Ozw//js7//47O//+Ozv//js7//47O//+Ozv//js7//47O//+Ozu//js7v/46+7/+Ovu//jr + 7v/46+7/+Ovt/+LX2P/MwsP/zMLD/+HV1//36uz/9+rs//fq6//36uv/9+rr//fq6//36er/9+nq//fp + 6v/36en/9+np//fp6f/36Oj/9+jo//fo6P/26Of/9ujn//bn5//25+b/9ufm//bn5v/d0M7/xLi2/8S3 + tv////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////APn4 + /P9fX1//X19f/2BgYP9hYWH/YmJi/2NjY/8eHh7/BwcH/0Sgd//N393/fb2j/1SrhP9Uq4X/VauF/1Ws + hf9VrIb/VayG/1ashv9WrIb/VKuF/zuacP81lWr/b7GW/+7v9f9lsJD/fbec//fo6P/36Oj/9+np/9jN + zf/Ow8P/zsPD/+3g4P/36er/9+rr//fq6//36uv/9+rs//fq7P/W3db/UaaA/5rKuP+u08b/OJVs/y6Q + ZP8ukGT/LY9k/y2PY/9krI3/t9nO/1ysif+JvaX/+Ozv//js7//47O//+Ozv/+7j5v/Rx8r/0MbJ/+TZ + 3f/47PD/+Ozw//js8P/47PD/+Ozw//js8P/47PD/+Ozw//js8P/47PD/+Ozw//js8P/47PD/+Ozw//js + 7//47O//+Ozv//js7//47O//+Ozv//js7//47O7/+Ovu//jr7v/46+7/4tfZ/83CxP/MwsP/4tbY//fq + 7P/36uz/9+rs//fq7P/36uv/9+rr//fq6//36er/9+nq//fp6v/36en/9+np//fp6f/36Oj/9+jo//fo + 6P/26Of/9ujn//bn5//25+b/9ufm/93Qzv/EuLb/xLi2/////wD///8A////AP///wD///8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8A////AF9fX/9gYGD/YWFh/2JiYv9jY2P/ZGRk/x4e + Hv8HBwf/RKB3/83f3f99vKL/U6qD/1OqhP9Tq4T/VKuE/1SrhP9Uq4X/VKuF/1Oqg/86mW//NJRp/zSU + af8/mnL/yd3Z/6zRxP9QpX//1tvT//fp6f/36en/2M3N/87Dw//PxMT/7eDh//fq6//36uv/9+rr//fq + 7P/36uz/9+rs//fq7P/X3df/UKZ//5fJtv+q0cP/NpRr/yyPY/8sj2P/iMCp/7bZzf9brIj/iL2k//js + 7//47O//+Ozw//js8P/47PD/7uPn/9HHyv/RyMr/5drd//jt8P/47fD/+O3x//jt8f/47fH/+O3x//jt + 8f/47fH/+O3w//jt8P/47fD/+O3w//js8P/47PD/+Ozw//js8P/47PD/+Ozv//js7//47O//+Ozv//js + 7//47O//+Ozu//jr7v/j19r/zcLF/83CxP/i19j/+Ovt//fq7P/36uz/9+rs//fq7P/36uv/9+rr//fq + 6//36er/9+nq//fp6v/36en/9+np//fp6f/36Oj/9+jo//fo6P/26Of/9ujn//bn5v/25+b/3tDP/8W5 + t//Fubf/////AP///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP// + /wD///8AYGBg/2FhYf9iYmL/Y2Nj/2RkZP9lZWX/Hx8f/wcHB/9Dn3b/zd/d/3y8of9RqYL/UqmD/1Kq + g/9SqoP/U6qD/1OqhP9RqYL/OZhu/zOUaP8zk2j/MpNo/zKTaP9Jnnn/2+fo/5XGs/9PpX7/7OTi//fp + 6f/Zzc3/z8TE/8/ExP/t4OH/9+rr//fq6//36uz/9+rs//fq7P/36uz/+Ovt//jr7f/W3df/UKV//5TI + s/+mz8D/NZNp/4e/qf+12c3/W6uI/4i9pP/47PD/+Ozw//js8P/47PD/+Ozw//jt8P/u5Of/0snL/9LJ + zP/l297/+O3x//jt8f/47fH/+O3x//jt8f/47fH/+O3x//jt8f/47fH/+O3x//jt8f/47fH/+O3x//jt + 8P/47fD/+Ozw//js8P/47PD/+Ozw//js8P/47O//+Ozv//js7//47O//+Ozu/+PX2v/Ow8b/zcLF/+PX + 2f/46+3/+Ovt//jr7f/36uz/9+rs//fq7P/36uv/9+rr//fq6//36er/9+nq//fp6v/36en/9+np//fp + 6f/36Oj/9+jo//bo5//26Of/9ufn//bn5v/e0M//xbm4/8W5t/////8A////AP///wD///8A////AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP///wBhYWH/YmJi/2NjY/9kZGT/ZWVl/2Zm + Zv8fHx//BwcH/0Kedf/N393/e7ug/1Cogf9QqIH/UamC/1Gpgv9RqYL/UKiB/ziXbf8yk2j/MpNn/zGT + Z/8xkmf/MZJn/zGSZ/9So4D/1+Xl/368o/9lrYz/7OTi/9nNzv/QxMX/0MXG/+3h4v/36uv/9+rs//fq + 7P/36uz/+Ovt//jr7f/46+3/+Ovt//jr7v/W3dj/T6R+/5HGsf+02Mz/tNjM/1qqh/+HvKT/+Ozw//js + 8P/47PD/+O3w//jt8P/47fH/+O3x/+/k6P/Sycz/0snM/+Xb3//47fL/+O3y//jt8v/47fL/+O3y//jt + 8v/47fL/+O3y//jt8v/47fL/+O3x//jt8f/47fH/+O3x//jt8f/47fH/+O3w//jt8P/47PD/+Ozw//js + 8P/47PD/+Ozv//js7//47O//49jb/87Exv/Ow8b/49fa//jr7f/46+3/+Ovt//jr7f/36uz/9+rs//fq + 7P/36uv/9+rr//fq6//36er/9+nq//fp6v/36en/9+np//fo6P/36Oj/9+jo//bo5//26Of/9ufn/97R + 0P/Gurn/xbm4/////wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + /wD///8A////AGJiYv9jY2P/ZGRk/2VlZf9mZmb/Z2dn/x8fH/8HBwf/QZ50/83e3P96uqD/T6eA/0+o + gP9PqIH/UKiB/06nf/82lmz/MZJn/zCSZv8wkmb/MJJm/zCRZv8wkWb/L5Fm/y+RZf9QoX7/3unq/3y6 + of9lrYz/zsnH/9DFxv/Qxcb/7eHi//fq7P/36uz/9+rs//jr7f/46+3/+Ovt//jr7f/46+7/+Ovu//js + 7v/W3tj/TqR9/4bBqf9Zqof/h7yk//js8P/47PD/+O3w//jt8f/47fH/+O3x//jt8f/47fH/7+Tp/9PK + zv/Tys7/5tvg//nt8v/57fL/+e3y//nt8v/57fL/+e3y//nt8v/57fL/+e3y//nt8v/47fL/+O3y//jt + 8v/47fL/+O3x//jt8f/47fH/+O3x//jt8f/47fD/+Ozw//js8P/47PD/+Ozv//js7//k2dz/z8XI/87E + xv/j19r/+Ovu//jr7f/46+3/+Ovt//jr7f/36uz/9+rs//fq7P/36uv/9+rr//fq6//36er/9+nq//fp + 6f/36en/9+np//fo6P/36Oj/9+jo//bo5//26Of/3tHQ/8a6uf/Gurn/////AP///wD///8A////AP// + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8AYmJi/2NjY/9kZGT/ZmZm/2dn + Z/9oaGj/Hx8f/wcHB/9AnXT/4+nt/3i6nv9Op3//Tqd//06ngP9Mpn7/NZVq/y+RZv8vkWX/L5Fl/y+R + Zf8vkWX/L5Bl/y6QZf8ukGX/LpBk/y6QZP9vsZb/0OPg/16siv9uqo7/0cbH/9HGx//u4eL/9+rs//fq + 7P/46+3/+Ovt//jr7f/46+3/+Ovu//jr7v/47O7/+Ozv//js7//W3dj/TaN9/4a7o//47PD/+O3w//jt + 8f/47fH/+O3x//jt8f/47fL/+O3y//jt8v/v5On/1MrO/9TKzv/n3OD/+e3y//nu8//57vP/+e7z//nu + 8//57vP/+e7z//nu8//57vP/+e3y//nt8v/57fL/+e3y//nt8v/47fL/+O3y//jt8v/47fH/+O3x//jt + 8f/47fH/+O3w//js8P/47PD/+Ozw/+TZ3P/Pxcj/z8XI/+PY2//46+7/+Ovu//jr7f/46+3/+Ovt//jr + 7f/36uz/9+rs//fq7P/36uv/9+rr//fp6v/36er/9+nq//fp6f/36en/9+np//fo6P/36Oj/9ujn//bo + 5//f0dH/x7u6/8a6uf////8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8A////AP///wBjY2P/ZGRk/2VlZf9mZmb/Z2dn/2hoaP8gICD/BwcH/z+cc//38/z/drmd/0ym + fv9Npn7/S6V9/zSUaf8ukGX/LpBk/y6QZP8ukGT/LpBk/y2QZP8tkGT/LY9k/y2PZP8tj2P/LI9j/yyP + Y/9sr5T/zOHd/1yrif93rZP/0cbI/+7h4//36uz/9+rs//jr7f/46+3/+Ovt//jr7v/46+7/+Ozu//js + 7//47O//+Ozv//js8P/h4uH/+Ozw//jt8P/47fH/+O3x//jt8f/47fL/+O3y//jt8v/57fL/+e3y//Dl + 6v/Vy9D/1cvQ/+fd4v/57vP/+e7z//nu8//57vP/+e7z//nu8//57vP/+e7z//nu8//57vP/+e7z//nu + 8//57vP/+e3y//nt8v/57fL/+O3y//jt8v/47fL/+O3x//jt8f/47fH/+O3w//js8P/47PD/5Nnd/9DG + yf/Pxcj/5Nnb//js7v/46+7/+Ovu//jr7f/46+3/+Ovt//fq7P/36uz/9+rs//fq6//36uv/9+rr//fp + 6v/36er/9+nq//fp6f/36en/9+jo//fo6P/36Oj/9ujn/9/S0f/Hu7v/x7u6/////wD///8A////AP// + /wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AGRkZP9lZWX/ZmZm/2dn + Z/9oaGj/aWlp/yAgIP8HBwf/Ppxy//Xy+/91uJz/S6V9/0mke/8zk2j/LY9k/y2PY/8tj2P/LY9j/yyP + Y/8sj2P/LI9j/yyPY/8sjmP/LI5i/yuOYv8rjmL/K45i/yuOYv9+uaH/x9/a/1Kmgf93rZT/7uHj//fq + 7P/46+3/+Ovt//jr7f/46+7/+Ovu//js7v/47O//+Ozv//js7//47PD/+Ozw//js8P/47fH/+O3x//jt + 8f/47fL/+O3y//jt8v/57fL/+e3y//nu8//57vP/8OXq/9bM0f/WzNH/593i//nu8//57vP/+e7z//nu + 9P/57vT/+e70//nu9P/57vP/+e7z//nu8//57vP/+e7z//nu8//57vP/+e7z//nu8//57fL/+e3y//jt + 8v/47fL/+O3y//jt8f/47fH/+O3x//js8P/k2d3/0MbJ/9DGyf/k2dz/+Ozv//js7v/46+7/+Ovu//jr + 7f/46+3/+Ovt//fq7P/36uz/9+rs//fq6//36uv/9+rr//fp6v/36er/9+np//fp6f/36en/9+jo//fo + 6P/36Oj/39LS/8i8vP/Hu7r/////AP///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8A////AP///wD///8AZWVl/2ZmZv9nZ2f/aGho/2lpaf9qamr/ICAg/wcHB/89m3H/8vH5/3O3 + m/9Ionr/MZJn/yyOY/8sjmL/LI5i/yuOYv8rjmL/K45i/yuOYv8rjmL/K45i/yuOYv8qjWH/Ko1h/yqN + Yf8qjWH/KY1h/ymNYP+Qwq//stXJ/0ihev+wy73/+Ovt//jr7f/46+3/+Ovu//jr7v/47O7/+Ozv//js + 7//47O//+Ozw//js8P/47fD/+O3x//jt8f/47fH/+O3y//jt8v/57fL/+e3y//nu8//57vP/+e7z//nu + 8//w5uv/1szR/9bM0v/o3eP/+e70//nu9P/57vT/+e70//nu9P/57vT/+e70//nu9P/57vT/+e70//nu + 9P/57vT/+e7z//nu8//57vP/+e7z//nu8//57vP/+e3y//nt8v/47fL/+O3y//jt8f/47fH/+O3x/+Xa + 3f/Rx8r/0MbJ/+TZ3P/47O//+Ozv//js7v/46+7/+Ovu//jr7f/46+3/+Ovt//fq7P/36uz/9+rs//fq + 6//36uv/9+nq//fp6v/36er/9+np//fp6f/36en/9+jo//fo6P/f0tL/yLy8/8i8u/////8A////AP// + /wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP///wBmZmb/Z2dn/2ho + aP9paWn/ampq/2tra/8gICD/BwcH/zybcf/v8Pf/cLWY/zCRZv8rjmL/Ko1h/yqNYf8qjWH/Ko1h/yqN + Yf8qjWH/Ko1h/yqNYf8pjWH/KY1g/ymMYP8pjGD/KYxg/yiMYP8ojGD/KIxf/yiLX/+Nwa3/rtTG/0eg + eP+yzb//+Ovt//jr7v/46+7/+Ozu//js7//47O//+Ozv//js8P/47PD/+O3w//jt8f/47fH/+O3x//jt + 8v/57fL/+e3y//nu8//57vP/+e7z//nu8//57vP/+e70//Dm7P/XzdP/183T/+jd4//57vT/+e/0//nv + 9P/57/T/+e/0//nv9P/57/T/+e/0//nv9P/57vT/+e70//nu9P/57vT/+e70//nu9P/57vP/+e7z//nu + 8//57vP/+e7z//nt8v/57fL/+O3y//jt8f/47fH/5dve/9HIyv/Rx8r/5drd//js7//47O//+Ozv//js + 7v/46+7/+Ovu//jr7f/46+3/+Ovt//fq7P/36uz/9+rr//fq6//36uv/9+nq//fp6v/36er/9+np//fp + 6f/36Oj/9+jo/+DS0v/IvLz/yLy8/////wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA////AP///wD///8A////AGZmZv9oaGj/aWlp/2pqav9ra2v/bGxs/yAgIP8HBwf/PJpw/+3v + 9f+AuaL/WaWF/1mlhP9YpIT/V6SE/1ekg/9WpIP/VqOC/1Wjgv9Vo4L/VKOB/1Sjgf9TooD/U6KA/1Ki + f/9RoX//UaF//1Chfv9PoH7/T6B9/06gff+72tD/mcq3/z2bcf/J18//+Ovu//js7v/47O//+Ozv//js + 7//47PD/+Ozw//jt8P/47fH/+O3x//jt8v/47fL/+e3y//nt8v/57vP/+e7z//nu8//57vP/+e70//nu + 9P/57vT/8ebs/9fO0//XztP/6N/k//nv9f/57/X/+e/1//nv9f/57/X/+e/1//nv9f/57/X/+e/1//nv + 9f/57/X/+e/0//nv9P/57vT/+e70//nu9P/57vT/+e7z//nu8//57vP/+e7z//nt8v/57fL/+O3y//jt + 8v/l29//0snM/9HIy//l2t3/+Ozw//js7//47O//+Ozv//js7v/46+7/+Ovu//jr7f/46+3/9+rs//fq + 7P/36uz/9+rr//fq6//36uv/9+nq//fp6v/36en/9+np//fp6f/36Oj/4NPT/8m9vP/IvLz/////AP// + /wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8AZ2dn/2ho + aP9paWn/ampq/2xsbP9tbW3/ISEh/wcHB/87mW//vtnS/73Y0f+82ND/u9fP/7nXzv+41s3/ttbM/7XV + y/+01cv/stTK/7HUyf+w08j/r9PH/63Sxv+s0sX/qtHE/6nRw/+o0ML/ptDB/6XPwP+kz7//os6+/6HO + vf+fzbz/bbSW/0igeP/V3Nb/+Ozv//js7//47O//+Ozw//js8P/47fD/+O3x//jt8f/47fL/+O3y//nt + 8v/57fL/+e7z//nu8//57vP/+e70//nu9P/57vT/+e70//nv9P/x5+z/2M/U/9jP1P/p3+X/+e/1//nv + 9f/57/X/+e/1//nv9f/57/X/+e/1//nv9f/57/X/+e/1//nv9f/57/X/+e/1//nv9f/57/T/+e70//nu + 9P/57vT/+e70//nu8//57vP/+e7z//nt8v/57fL/+O3y/+Xb3//Sycz/0snM/+Xb3v/47PD/+Ozw//js + 7//47O//+Ozv//jr7v/46+7/+Ovt//jr7f/46+3/9+rs//fq7P/36uz/9+rr//fq6//36er/9+nq//fp + 6v/36en/9+np//fo6P/g09P/yb29/8m9vP////8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///wD///8A////AP///wBoaGj/aWlp/2pqav9ra2v/bGxs/21tbf8hISH/BwcH/zqZ + bv86mW7/Oplu/zqZb/86mW//Oplv/zqZb/87mW//O5lv/zuZb/87mW//O5pv/zuab/87mm//O5pw/zua + cP87mnD/O5pw/zuacP87mnD/PJpw/zyacP88mnD/PJpw/zyacP88mnD/PJpw/0efeP/g4t//+Ozv//js + 8P/47PD/+O3w//jt8f/47fH/+O3y//jt8v/57fL/+e3y//nu8//57vP/+e7z//nu9P/57vT/+e70//nv + 9P/57/X/+e/1//Hn7f/Yz9T/2M/U/+nf5f/57/b/+e/2//nv9v/57/b/+e/2//nv9v/57/b/+e/2//nv + 9v/57/b/+e/1//nv9f/57/X/+e/1//nv9f/57/X/+e/0//nu9P/57vT/+e70//nu8//57vP/+e7z//nt + 8v/57fL/5tzg/9PKzv/Tys3/5dve//jt8P/47PD/+Ozw//js7//47O//+Ozu//jr7v/46+7/+Ovt//jr + 7f/46+3/9+rs//fq7P/36uv/9+rr//fq6//36er/9+nq//fp6f/36en/9+np/+HT0//Kvr7/yb28//// + /wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8A////AGlp + af9qamr/a2tr/2xsbP9tbW3/bm5u/yEhIf8HBwf/9ubk//bm5P/25uX/9ufl//bn5f/25+b/9ufm//bn + 5//26Of/9ujn//fo6P/36Oj/9+np//fp6f/36er/9+nq//fp6v/36uv/9+rr//fq7P/36uz/3tLU/9bL + zP/Wy8z/8OPl//jr7v/47O7/+Ozv//js7//47O//+Ozw//js8P/47fH/+O3x//jt8f/47fL/+e3y//nt + 8v/57vP/+e7z//nu8//57vT/+e70//nv9P/57/X/+e/1//nv9f/57/X/8eft/9nQ1v/Z0Nb/6eDm//nv + 9v/57/b/+e/2//nv9v/57/b/+e/2//nv9v/57/b/+e/2//nv9v/57/b/+e/2//nv9v/57/X/+e/1//nv + 9f/57/X/+e/1//nv9P/57vT/+e70//nu8//57vP/+e7z//nt8v/n3OD/08rO/9PKzv/m3N//+O3x//js + 8P/47PD/+Ozv//js7//47O//+Ozu//jr7v/46+7/+Ovt//jr7f/36uz/9+rs//fq7P/36uv/9+rr//fp + 6v/36er/9+nq//fp6f/36en/4dPT/8q+vv/Kvr3/////AP///wD///8A////AP///wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD///8A////AP///wD///8Aampq/2tra/9sbGz/bW1t/25ubv9vb2//ISEh/wcH + B//25uT/9ubk//bm5f/25+X/9ufm//bn5v/25+b/9ujn//bo5//36Oj/9+jo//fo6P/36en/9+np//fp + 6v/36er/9+rr//fq6//36uv/9+rs//fq7P/f09T/18zN/9fMzf/w4+b/+Ovu//js7//47O//+Ozv//js + 8P/47PD/+O3w//jt8f/47fH/+O3y//nt8v/57fL/+e7z//nu8//57vP/+e70//nu9P/57/T/+e/1//nv + 9f/57/X/+e/1//nv9v/x5+7/2tHX/9rR1//p4Ob/+fD2//nw9v/58Pf/+fD3//nw9//58Pf/+fD3//nw + 9//58Pb/+fD2//nw9v/57/b/+e/2//nv9v/57/b/+e/1//nv9f/57/X/+e/1//nv9P/57vT/+e70//nu + 8//57vP/+e7z/+fc4f/Vy8//1MvP/+bc3//47fH/+O3w//js8P/47PD/+Ozv//js7//47O//+Ovu//jr + 7v/46+3/+Ovt//jr7f/36uz/9+rs//fq6//36uv/9+rr//fp6v/36er/9+np//fp6f/h1NT/y7+//8q+ + vv////8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP// + /wBqamr/a2tr/21tbf9ubm7/b29v/3BwcP8hISH/BwcH//bm5P/25uT/9ufl//bn5f/25+b/9ufm//bn + 5//26Of/9ujn//fo6P/36Oj/9+np//fp6f/36en/9+nq//fp6v/36uv/9+rr//fq7P/36uz/9+rs/9/U + 1f/XzM3/18zO//Dj5v/47O7/+Ozv//js7//47PD/+Ozw//jt8P/47fH/+O3x//jt8v/57fL/+e3y//nu + 8//57vP/+e7z//nu9P/57vT/+e/0//nv9f/57/X/+e/1//nv9v/57/b/+e/2//Ho7v/a0tf/2tLY/+rh + 5//58Pf/+fD3//nw9//58Pf/+fD3//nw9//58Pf/+fD3//nw9//58Pf/+fD3//nw9//58Pb/+e/2//nv + 9v/57/b/+e/2//nv9f/57/X/+e/1//nv9P/57vT/+e70//nu8//57vP/593i/9XLz//Vy8//5tzg//jt + 8f/47fH/+O3w//js8P/47PD/+Ozv//js7//47O7/+Ovu//jr7v/46+3/+Ovt//fq7P/36uz/9+rs//fq + 6//36uv/9+nq//fp6v/36er/9+np/+HU1P/Lv7//y7+//////wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AGtra/9sbGz/bW1t/25ubv9wcHD/cXFx/yIi + Iv8HBwf/9ubk//bm5f/25+X/9ufl//bn5v/25+b/9ufn//bo5//36Oj/9+jo//fo6P/36en/9+np//fp + 6v/36er/9+nq//fq6//36uv/9+rs//fq7P/46+3/4NTW/9jNzv/Yzc//8OTm//js7//47O//+Ozv//js + 8P/47PD/+O3x//jt8f/47fL/+O3y//nt8v/57vP/+e7z//nu8//57vT/+e70//nv9P/57/X/+e/1//nv + 9f/57/b/+e/2//nv9v/58Pb/8unv/9vT2f/b09n/6uHo//nw9//68Pf/+vD3//rw+P/68Pj/+vD4//rw + +P/68Pf/+vD3//nw9//58Pf/+fD3//nw9//58Pf/+fD2//nv9v/57/b/+e/2//nv9f/57/X/+e/1//nv + 9P/57vT/+e70//nu8//o3eL/1szR/9bM0P/n3OH/+O3y//jt8f/47fH/+Ozw//js8P/47O//+Ozv//js + 7//46+7/+Ovu//jr7f/46+3/+Ovt//fq7P/36uz/9+rr//fq6//36uv/9+nq//fp6v/36en/4dXV/8u/ + v//Lv7//////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8AbGxs/21tbf9ubm7/b29v/3BwcP9xcXH/IiIi/wcHB//25uT/9ubl//bn5f/25+b/9ufm//bn + 5v/26Of/9ujn//fo6P/36Oj/9+np//fp6f/36en/9+nq//fp6v/36uv/9+rr//fq7P/36uz/9+rs//jr + 7f/g1db/2M3P/9jNz//w5Of/+Ozv//js7//47PD/+Ozw//jt8P/47fH/+O3x//jt8v/57fL/+e7z//nu + 8//57vP/+e70//nu9P/57/T/+e/1//nv9f/57/X/+e/2//nv9v/57/b/+fD2//nw9//y6fD/29PZ/9zT + 2f/r4un/+vD4//rw+P/68Pj/+vD4//rw+P/68Pj/+vD4//rw+P/68Pj/+vD4//rw+P/68Pf/+fD3//nw + 9//58Pf/+fD3//nv9v/57/b/+e/2//nv9f/57/X/+e/1//nv9P/57vT/+e70/+jd4v/WzNH/1szR/+fd + 4f/47fL/+O3x//jt8f/47fD/+Ozw//js8P/47O//+Ozv//js7v/46+7/+Ovu//jr7f/46+3/9+rs//fq + 7P/36uz/9+rr//fq6//36er/9+nq//fp6f/i1dX/zMHB/8u/v/////8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////APn4/P9tbW3/bm5u/29vb/9wcHD/cXFx/3Jy + cv8iIiL/BwcH//bm5P/25+X/9ufl//bn5v/25+b/9ufm//bo5//26Of/9+jo//fo6P/36en/9+np//fp + 6v/36er/9+nq//fq6//36uv/9+rs//fq7P/46+3/+Ovt/+HV1//ZztD/2c7Q//Dl5//47O//+Ozv//js + 8P/47PD/+O3x//jt8f/47fL/+e3y//nt8v/57vP/+e7z//nu9P/57vT/+e/0//nv9f/57/X/+e/1//nv + 9v/57/b/+fD2//nw9//58Pf/+fD3//Pp8P/d1Nv/3dTb/+zi6v/68Pj/+vD4//rx+P/68fj/+vH4//rx + +P/68fj/+vH4//rw+P/68Pj/+vD4//rw+P/68Pj/+vD3//nw9//58Pf/+fD3//nw9v/57/b/+e/2//nv + 9f/57/X/+e/1//nv9P/57vT/6N7j/9fN0v/XzdL/6N3h//nt8v/47fL/+O3x//jt8f/47fD/+Ozw//js + 7//47O//+Ozv//jr7v/46+7/+Ovt//jr7f/46+3/9+rs//fq7P/36uv/9+rr//fp6v/36er/9+nq/+LV + 1f/MwcH/zMDA/////wD///8A////AP///wD///8AYmJi/2NjY/9kZGT/ZWVl/2ZmZv9oaGj/aWlp/2pq + av9ra2v/bGxs/21tbf9ubm7/cHBw/3Fxcf9ycnL/c3Nz/yIiIv8HBwf/9ubk//bn5f/25+X/9ufm//bn + 5v/25+f/9ujn//bo5//36Oj/9+jo//fp6f/36en/9+nq//fp6v/36uv/9+rr//fq6//36uz/9+rs//jr + 7f/46+3/4dXX/9nO0P/az9H/8OXo//js7//47PD/+Ozw//jt8P/47fH/+O3x//jt8v/57fL/+e7z//nu + 8//57vP/+e70//nu9P/57/X/+e/1//nv9f/57/b/+e/2//nw9v/58Pf/+fD3//nw9//68Pf/8+nx/93U + 2//d1dv/7OPq//rx+f/68fn/+vH5//rx+f/68fn/+vH5//rx+f/68fn/+vH5//rx+f/68fj/+vD4//rw + +P/68Pj/+vD3//nw9//58Pf/+fD3//nw9v/57/b/+e/2//nv9f/57/X/+e/1//nu9P/o3uT/183S/9fN + 0v/o3eL/+e3y//jt8v/47fL/+O3x//jt8P/47PD/+Ozw//js7//47O//+Ozu//jr7v/46+7/+Ovt//jr + 7f/36uz/9+rs//fq6//36uv/9+rr//fp6v/36er/4tbW/83Cwv/MwMD/////AP///wD///8A////AP// + /wBiYmL/ZGRk/2VlZf9mZmb/Z2dn/2hoaP9paWn/a2tr/2xsbP9tbW3/bm5u/29vb/9wcHD/cXFx/3Nz + c/90dHT/IiIi/wcHB//v4N7/7d/d/+3f3f/t397/7d/e/+3f3//t4N//7uDg/+/g4P/v4OD/7+Hh/+/h + 4f/v4eL/7+Hi/+/i4//v4+T/7+Pk/+/j5P/v4+X/8OTm//Dk5v/az9L/08jL/9PJy//p3uH/8eXo//Hl + 6f/x5en/8ebq//Hm6v/x5uv/8ubr//Ln7P/y5+z/8ufs//Ln7f/y5+3/8ujt//Lo7v/y6O7/8ujv//Lo + 7//y6e//8unw//Lp8P/z6fD/8+nx//Pp8f/s4+r/2NDW/9jQ1v/l3eT/8+ry//Pq8v/z6vL/8+ry//Pq + 8v/z6vL/8+ry//Pq8v/z6vL/8+ry//Pq8v/z6vH/8+rx//Pp8f/z6fH/8unw//Lp7//x6e//8ejv//Ho + 7v/x5+7/8efu//Hn7f/x5+3/8efs/+HX3P/Qx8z/0MbL/+DW2//w5er/8OXq/+/l6f/v5ej/7+Xo/+/k + 5//v4+f/7+Pm/+/j5v/v4+X/7uLl/+7i5f/u4uT/7uLk/+3h4//t4OL/7eDi/+3g4f/t4OH/7N/g/+zf + 4P/YzMz/xLq6/8S5uf////8A////AP///wD///8A////AGNjY/9kZGT/ZWVl/2dnZ/9oaGj/aWlp/2pq + av9ra2v/bGxs/25ubv9vb2//cHBw/3Fxcf9ycnL/c3Nz/3R0dP8jIyP/BwcH/9rNy//SxcT/0sXF/9LF + xf/Txsb/08fG/9PHxv/VyMj/1cjI/9XJyf/Wysr/1srK/9bKy//Xy8z/18zN/9fMzf/Yzc7/2M3O/9nO + z//Zzs//2s7Q/8a7vv+/trj/wLe5/9TKzP/b0NP/29DU/9vR1P/b0dX/3NLW/9zS1v/d0tb/3dPX/93T + 1//d09j/3dPY/93U2P/e1dn/3tXa/97V2v/e1dv/3tXb/97W3P/e1tz/3tbc/9/W3f/f1t3/39bd/9nR + 1//Gv8X/xr/F/9LK0f/e1t3/3tbe/97W3v/e1t7/3tbe/97W3v/e1t7/3dXd/93V3f/d1dz/3dXc/93V + 3P/c1Nv/3NTa/9zT2v/c09r/29LZ/9vS2P/a0tj/2tLX/9nR1v/Z0Nb/2dDV/9jP1P/Yz9T/ysHF/7uy + t/+6srf/yL/E/9bM0f/WzND/1czQ/9TLz//Uy87/1MvN/9PJzP/Tycz/0sjK/9LIyv/Sx8r/0cbJ/9HG + yP/Qxcf/0MXH/8/Exv/Ow8X/zsPE/83Dw//NwsP/zMHC/7uxsf+poKD/qaCg/////wD///8A////AP// + /wD///8AZGRk/2VlZf9mZmb/Z2dn/2hoaP9qamr/a2tr/2xsbP9tbW3/bm5u/29vb/9xcXH/cnJy/3Nz + c/90dHT/dXV1/yMjI/8HBwf/283M/9LFxP/SxcX/08bG/9PGxv/Tx8b/1MjH/9XIyP/Wycn/1srK/9bK + yv/Xy8v/18vM/9fLzP/XzM3/2M3O/9jNzv/Yzc7/2s7Q/9rO0P/aztD/x7y//8G4uf/BuLr/1crN/9vQ + 1P/c0dX/3NLV/9zS1v/c0tb/3dLW/93T1//e1Nj/3tTY/97U2f/e1Nn/3tXa/97V2v/e1dr/3tXb/97V + 2//e1tz/3tbc/9/W3P/f1t3/39bd/9/W3f/f197/2dHY/8e/xv/Hv8b/08vT/9/X3//f19//39ff/9/X + 3//e1t7/3tbe/97W3v/e1t7/3tbe/97W3v/d1d3/3dXc/93V3P/d1dz/3NTb/9zT2v/c09r/3NPa/9vS + 2P/a0tj/2tLX/9rR1//Z0Nb/2dDV/9nQ1f/Kwsb/vLO4/7uzt//JwMT/183S/9fM0f/WzND/1czQ/9TL + zv/Uy87/1MrN/9PJzP/Tycv/0sjK/9LIyv/Sx8r/0cbJ/9HGyP/Qxcf/z8TG/8/Exv/Ow8T/zsPE/83C + w//NwsP/u7Gy/6qhof+poKD/////AP///wD///8A////AP///wBkZGT/ZmZm/2dnZ/9oaGj/aWlp/2pq + av9ra2v/bW1t/25ubv9vb2//cHBw/3Fxcf9ycnL/dHR0/3V1df92dnb/IyMj/wcHB//i1NL/287M/9zO + zv/czs7/3M/P/93Qz//d0M//3tHR/97R0f/e0tL/39LS/9/T0//f09T/4NTV/+DU1f/g1NX/4NXW/+HV + 1v/i1df/4tXX/+LW2f/Ow8b/yL7A/8m+wf/c0dT/49jc/+PY3P/j2d3/49nd/+PZ3f/l2t7/5drf/+Xb + 3//l29//5dvg/+Xb4P/l3OH/5dzh/+Xc4v/m3OP/5t3j/+bd4//m3eT/5t3k/+fd5f/n3eX/597l/+fe + 5v/g2N//zsbN/87Gzv/a0tr/5t7m/+be5v/m3ub/5t7m/+be5v/m3ub/5t7m/+Xd5f/l3eX/5d3l/+Xd + 5f/l3eX/5Nzk/+Tc4//k3OP/5Nzj/+Tb4v/k2uL/49rh/+La4P/i2uD/4tnf/+LY3//h2N7/4djd/9PK + z//Du7//w7q//9LIzf/g1dr/4NXa/9/U2f/e1Nn/3tTY/93U1//d09b/3dLW/9zS1P/c0tT/3NHT/9zQ + 0//b0NP/28/R/9vP0f/ZztD/2c7Q/9jNzv/Yzc7/2MzN/9jMzf/Gu7z/s6qq/7Opqf////8A////AP// + /wD///8A////AGVlZf9mZmb/Z2dn/2lpaf9qamr/a2tr/2xsbP9tbW3/bm5u/3BwcP9xcXH/cnJy/3Nz + c/90dHT/dXV1/3d3d/8jIyP/BwcH//bn5f/25+X/9ufm//bn5v/25+f/9ujn//fo6P/36Oj/9+jo//fp + 6f/36en/9+nq//fp6v/36uv/9+rr//fq7P/36uz/9+rs//jr7f/46+3/+Ovu/+PX2v/c0dT/3NHU//Hl + 6f/47PD/+O3w//jt8f/47fH/+O3y//nt8v/57vP/+e7z//nu9P/57vT/+e/0//nv9f/57/X/+e/2//nv + 9v/58Pf/+fD3//rw9//68Pj/+vD4//rx+P/68fn/+vH5//Tr8//g1+D/4Njg/+3l7f/68vv/+vL7//ry + +//68vv/+vL7//ry+//68vv/+vL7//ry+//68vv/+vL6//ry+v/68fr/+vH5//rx+f/68fn/+vH4//rw + +P/68Pj/+vD3//nw9//58Pf/+e/2//nv9v/57/X/6uDm/9rR1f/Zz9T/6d/k//nu8//57vP/+e3y//jt + 8v/47fH/+O3x//jt8P/47PD/+Ozv//js7//47O//+Ovu//jr7v/46+3/+Ovt//fq7P/36uz/9+rs//fq + 6//36uv/9+nq/+PX1//PxMT/zsPD/////wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AHFxcf9zc3P/dHR0/3V1df92dnb/d3d3/yMjI/8HBwf/9ufl//bn + 5f/25+b/9ufm//bn5//26Of/9+jo//fo6P/36en/9+np//fp6f/36er/9+nq//fq6//36uv/9+rs//fq + 7P/46+3/+Ovt//jr7f/46+7/49ja/93S1f/d0tX/8ebp//js8P/47fD/+O3x//jt8v/57fL/+e3y//nu + 8//57vP/+e70//nu9P/57/X/+e/1//nv9f/57/b/+fD2//nw9//58Pf/+vD4//rw+P/68fj/+vH5//rx + +f/68fn/9Ov0/+HZ4f/h2eH/7ubu//ry+//68vv/+vL7//ry+//68vz/+vL8//ry+//68vv/+vL7//ry + +//68vv/+vL6//ry+v/68fr/+vH5//rx+f/68fn/+vH4//rw+P/68Pj/+fD3//nw9//58Pb/+e/2//nv + 9f/q4Ob/2tHW/9rQ1f/p3+T/+e7z//nu8//57fL/+e3y//jt8v/47fH/+O3w//js8P/47PD/+Ozv//js + 7//47O7/+Ovu//jr7f/46+3/+Ovt//fq7P/36uz/9+rr//fq6//36er/49fX/8/ExP/Ow8P/////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AcnJy/3Nz + c/90dHT/dnZ2/3d3d/94eHj/IyMj/wcHB//25+X/9ufl//bn5v/25+b/9ujn//bo5//36Oj/9+jo//fp + 6f/36en/9+np//fp6v/36er/9+rr//fq6//36uz/9+rs//jr7f/46+3/+Ovt//jr7v/k2Nv/3dLV/93S + 1f/x5ur/+Ozw//jt8f/47fH/+O3y//nt8v/57vP/+e7z//nu8//57vT/+e/0//nv9f/57/X/+e/2//nv + 9v/58Pb/+fD3//rw9//68Pj/+vD4//rx+f/68fn/+vH5//rx+v/07PT/4drh/+HZ4f/u5u7/+vL7//ry + /P/68vz/+vL8//rz/P/68/z/+vL8//ry/P/68vz/+vL7//ry+//68vv/+vL6//ry+v/68fr/+vH5//rx + +f/68fn/+vD4//rw+P/68Pf/+fD3//nw9v/57/b/+e/2/+rh5v/b0tf/2tHV/+rf5f/57vP/+e7z//nu + 8//57fL/+O3y//jt8f/47fH/+Ozw//js8P/47O//+Ozv//js7v/46+7/+Ovt//jr7f/46+3/9+rs//fq + 7P/36uv/9+rr//fp6v/j19f/z8TE/8/ExP////8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wBzc3P/dHR0/3V1df92dnb/d3d3/3l5ef8kJCT/BwcH//bn + 5f/25+X/9ufm//bn5v/26Of/9ujn//fo6P/36Oj/9+np//fp6f/36er/9+nq//fp6v/36uv/9+rr//fq + 7P/36uz/+Ovt//jr7f/46+7/+Ovu/+TZ2//e09b/3tPW//Lm6v/47PD/+O3x//jt8f/47fL/+e3y//nu + 8//57vP/+e70//nu9P/57/T/+e/1//nv9f/57/b/+e/2//nw9//58Pf/+vD3//rw+P/68fj/+vH5//rx + +f/68fr/+vH6//Ts9P/h2uL/4dri/+7m7//68vz/+vL8//rz/P/78/z/+/P8//vz/P/78/z/+vP8//ry + /P/68vz/+vL7//ry+//68vv/+vL6//rx+v/68fr/+vH5//rx+f/68fj/+vD4//rw9//58Pf/+fD3//nv + 9v/57/b/6uHm/9vS1//b0tb/6t/l//nu9P/57vP/+e7z//nt8v/47fL/+O3x//jt8f/47PD/+Ozw//js + 7//47O//+Ozu//jr7v/46+7/+Ovt//jr7f/36uz/9+rs//fq6//36uv/9+nq/+TX2P/QxMX/z8TE//// + /wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8A////AHNz + c/91dXX/dnZ2/3d3d/94eHj/eXl5/yQkJP8HBwf/9ufl//bn5v/25+b/9ufm//bo5//26Of/9+jo//fo + 6P/36en/9+np//fp6v/36er/9+nq//fq6//36uv/9+rs//fq7P/46+3/+Ovt//jr7v/46+7/5dnc/97T + 1v/e09f/8ubq//jt8P/47fH/+O3x//jt8v/57fL/+e7z//nu8//57vT/+e70//nv9f/57/X/+e/1//nv + 9v/58Pb/+fD3//nw9//68Pj/+vD4//rx+P/68fn/+vH5//rx+v/68vr/9Oz1/+Lb4//i2+P/7ubw//rz + /P/78/z/+/P9//vz/f/78/3/+/P9//vz/f/78/3/+/P8//rz/P/68vz/+vL7//ry+//68vv/+vL6//rx + +v/68fn/+vH5//rx+P/68Pj/+vD4//nw9//58Pf/+fD2//nv9v/r4ef/3NPY/9vS1//q4OX/+e70//nu + 8//57vP/+e3y//jt8v/47fH/+O3x//jt8P/47PD/+Ozv//js7//47O//+Ovu//jr7v/46+3/+Ovt//fq + 7P/36uz/9+rr//fq6//36er/5NfY/9DExf/QxMT/////AP///wD///8A////AP///wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD///8A////AP///wD///8AdHR0/3V1df92dnb/eHh4/3l5ef96enr/JCQk/wcH + B//25+X/9ufm//bn5v/25+b/9ujn//bo5//36Oj/9+jo//fp6f/36en/9+nq//fp6v/36uv/9+rr//fq + 6//36uz/9+rs//jr7f/46+3/+Ovu//jr7v/l2tz/39TX/9/U1//y5ur/+O3w//jt8f/47fH/+O3y//nt + 8v/57vP/+e7z//nu9P/57vT/+e/1//nv9f/57/b/+e/2//nw9v/58Pf/+vD3//rw+P/68Pj/+vH5//rx + +f/68fn/+vH6//ry+v/07PX/4tvj/+Lb5P/u5/D/+/P8//vz/f/78/3/+/P9//vz/f/78/3/+/P9//vz + /f/78/3/+/P8//ry/P/68vz/+vL7//ry+//68vr/+vH6//rx+f/68fn/+vH5//rw+P/68Pj/+vD3//nw + 9//58Pb/+e/2/+vh5//c09j/3NPY/+rg5f/57vT/+e7z//nu8//57fL/+O3y//jt8v/47fH/+O3w//js + 8P/47O//+Ozv//js7//46+7/+Ovu//jr7f/46+3/9+rs//fq7P/36uv/9+rr//fq6//k19j/0MTF/9DE + xP////8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP// + /wB1dXX/dnZ2/3d3d/94eHj/eXl5/3t7e/8kJCT/BwcH//bn5f/25+b/9ufm//bn5v/26Of/9ujn//fo + 6P/36Oj/9+np//fp6f/36er/9+nq//fq6//36uv/9+rr//fq7P/36uz/+Ovt//jr7f/46+7/+Ovu/+Xa + 3f/f1Nf/39TY//Lm6v/47fD/+O3x//jt8v/47fL/+e3y//nu8//57vP/+e70//nu9P/57/X/+e/1//nv + 9v/57/b/+fD2//nw9//68Pf/+vD4//rx+P/68fn/+vH5//rx+v/68vr/+vL6//Tt9f/j3OT/49zl/+/o + 8P/78/3/+/P9//vz/f/78/7/+/P+//vz/v/78/7/+/P9//vz/f/78/3/+vP8//ry/P/68vv/+vL7//ry + +v/68vr/+vH6//rx+f/68fn/+vH4//rw+P/68Pf/+fD3//nw9v/57/b/6+Lo/93U2f/c09j/6+Hm//nu + 9P/57vP/+e7z//nt8v/57fL/+O3y//jt8f/47fD/+Ozw//js8P/47O//+Ozv//jr7v/46+7/+Ovt//jr + 7f/36uz/9+rs//fq6//36uv/9+rr/+TX2P/Rxcb/0MTE/////wD///8A////AP///wD///8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8A////AHV1df93d3f/eHh4/3l5ef96enr/e3t7/yQk + JP8HBwf/////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA////AP///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP// + /wD///8AdnZ2/3d3d/94eHj/enp6/3t7e/98fHz/JCQk/wcHB/////8A////AP///wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////gEAAAAA//4D/////////4AAAAAAAAACA// + //////4AAAAAAAAAAAAH//////+AAAAAAAAAAAAAAB/////wAAAAAAAAAAAAAAAA////AAAAAAAAAAAA + AAAAAB//+AAAAAAAAAAAAAAAAAAD/+HAAAAAAAAAAAAAAAAAAP/BwAAAAAAAAAAAAAAAAAAfgcAAAAAA + AAAAAAAAAAAAH4HAAAAAAAAAAAAAAAAAAB+BwAAAAAAAAAAAAAAAAAAfwcAAAAAAAAAAAAAAAAAAH+PA + AAAAAAAAAAAAAAAAAB/7wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAA + AB//wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAA + AAAAAAAfAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAAAAfAAAAAAAA + AAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//A + AAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAA + AB//wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAA + AAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAAf/8AAAAAA + AAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//A + AAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAA + AB//wAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAA + AAAAAAAfAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAAAAf/8AAAAAA + AAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//A + AAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAA + AB//wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAA + AAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAAf/8AAAAAA + AAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//A + AAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAA + AB8AAAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAA + AAAAAAAf/4AAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAAf/8AAAAAA + AAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//A + AAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAA + AB//wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAA + AAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAAf/8AAAAAA + AAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAAHwAA + AAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAA + AB//wAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAA + AAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAB//wD///////////////////8A///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////8oAAAAQAAAAIAAAAABACAAAAAAAABAAAASCwAAEgsAAAAAAAAAAAAA////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsbG48cHBy/HR0dvx4e + Hr8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJycnvygoKL8oKCi/KSkpYAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLS2/LS0tvy0tLb8tLS2PAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAeHh6/Hh4e/x8fH/8gICD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkp + Kf8qKir/Kysr/ysrK4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALy8v/y8v + L/8vLy//Ly8vvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAICAgvyEhIf8iIiL/IyMj/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAsLCz/LS0t/y0tLf8uLi6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAADIyMv8yMjL/MjIy/zIyMr8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMjI78jIyP/JCQk/yUlJf8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALy8v/y8vL/8wMDD/MDAwgAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0NDT/NTU1/zU1Nf81NTW/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAFRUVYBYW + FoAYGBiAGBgYgBkZGYAbGxuAHBwcgB0dHYAfHx+AICAggCEhIYAiIiKAIyMjgCQkJIAlJSXfJiYm/ycn + J/8oKCj/KioqgCsrK4ArKyuALCwsgC0tLYAuLi6ALy8vgDAwMIAwMDCAMTExgDExMf8yMjL/MjIy/zMz + M780NDSANTU1gDU1NYA2NjaANjY2gDc3N4A3NzeANzc3gDg4OIA4ODiANzc3/zc3N/83Nzf/ODg43zk5 + OYA5OTmAOTk5gDk5OYA4ODiAODg4gDg4OIA4ODiAODg4gDg4OIA3NzeANzc3IP///wAAAAAAAAAAAAAA + AAAAAAAAAAAAABcXF78YGBj/GRkZ/xoaGv8bGxv/HBwc/x4eHv8fHx//ICAg/yIiIv8jIyP/JCQk/yUl + Jf8mJib/Jycn/ygoKP8pKSn/Kioq/ysrK/8sLCz/LS0t/y4uLv8vLy//MDAw/zExMf8yMjL/MjIy/zMz + M/80NDT/NDQ0/zU1Nf82Njb/NjY2/zc3N/83Nzf/ODg4/zg4OP84ODj/OTk5/zk5Of85OTn/Ojo6/zo6 + Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov85OTn/OTk5/zk5 + OUD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBi/GRkZ/xsbG/8cHBz/HR0d/x8fH/8gICD/ISEh/yMj + I/8kJCT/JSUl/yYmJv8oKCj/KSkp/yoqKv8rKyv/LCws/y0tLf8uLi7/Ly8v/zAwMP8xMTH/MjIy/zIy + Mv8zMzP/NDQ0/zU1Nf82Njb/NjY2/zc3N/84ODj/ODg4/zk5Of85OTn/Ojo6/zo6Ov86Ojr/Ozs7/zs7 + O/87Ozv/Ozs7/zs7O/88PDz/PDw8/zw8PP88PDz/PDw8/zw8PP88PDz/PDw8/zw8PP88PDz/PDw8/zw8 + PP87Ozv/Ozs7/zs7O/87OztA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAGhoavxwcHP8dHR3/HR0d/xkZ + Gf8aGhr/Gxsb/xwcHP8dHR3/Hh4e/x8fH/8gICD/ISEh/yIiIv8jIyP/IyMj/yQkJP8lJSX/JiYm/ycn + J/8nJyf/KCgo/ykpKf8pKSn/Kioq/ysrK/8rKyv/LCws/ywsLP8tLS3/LS0t/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Ly8v/y8vL/8vLy//MDAw/zAwMP8wMDD/MDAw/zAwMP8wMDD/MTEx/zExMf8xMTH/MTEx/zEx + Mf8xMTH/MDAw/zAwMP8wMDD/MDAw/zAwMP8wMDD/Ly8vQP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAB0d + Hb8eHh7/Hx8f/xoaGv8JIz//DD92/wxAd/8MQHf/DEB3/wxAd/8MQHf/DEB3/wxAd/8MQXf/DEF3/woy + XP8KM1z/DEF3/wxBd/8MQXf/DEF3/wxBd/8MQXf/DEF3/wxBd/8MQXf/DEF3/wxBd/8MQXf/CS5U/wo3 + Zf8MQHf/DEB3/wxAd/8MQHf/DEB3/ww/dv8MP3b/DD92/ww/dv8LP3b/Cz52/ws+dv8JMFv/CSxS/ws9 + dv8LPXb/Cz11/ws8df8LPHX/Czx1/ws7df8LO3X/Czt1/ws6df8KNmv/LSon/y0qJ0D///8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAfHx+/ICAg/yIiIv8cHBz/DEB3/xB55v8Qeeb/EHnm/xB65v8Qeuf/EHvn/xB7 + 5/8Qe+f/EHvn/xB75/8NX7L/DV+y/xB85/8RfOf/EXzn/xF85/8RfOf/EXzn/xF85/8QfOf/EHzn/xB8 + 5/8Qe+f/EHvn/wtWof8OaMT/EHvn/xB65/8Qeub/EHrm/xB55v8Qeeb/EHnm/xB45v8QeOb/EHfl/xB3 + 5f8QduX/DFqw/wpRnv8PdeT/D3Tk/w9z5P8Pc+T/D3Lk/w9y4/8PceP/D3Dj/w5v4/8Ob+L/DWXQ/6OU + i/+jlItA////ABoaGmAbGxu/HR0dvx4eHr8gICC/ISEh7yIiIv8kJCT/Hh4e/wxBd/8Qeuf/EHvn/xB7 + 5/8Qe+f/EHzn/xF85/8RfOf/EX3n/xF95/8Rfej/DWG0/w1htP8Rfej/EX3o/xF+6P8Rfuj/EX7o/xF+ + 6P8Rfej/EX3o/xF96P8Rfej/EX3o/xF96P8MWKP/DmrF/xF85/8QfOf/EHzn/xB75/8Qe+f/EHvn/xB6 + 5/8Qeub/EHnm/xB55v8QeOb/EHjm/wxcsf8LU5//EHbl/w925f8PdeX/D3Tk/w905P8Pc+T/D3Lk/w9y + 4/8PceP/D3Dj/w1m0P+klYz/pJWMQP///wAcHByAHR0d/x4eHv8gICD/IiIi/yMjI/8lJSX/JiYm/x8f + H/8LOmr/DV+y/w1gsv8NYLP/DWCz/w1hs/8NYbT/DWG0/w1itP8NYrT/DWK1/wpNjf8KTY3/DWO1/w1j + tf8NY7X/DWO1/w1jtv8NY7b/DWO2/w1jtv8NY7b/DWO2/w1jtv8NY7b/CkaB/wtUm/8NYrb/DWK1/w1h + tf8NYbX/DWG0/w1htP8NYbT/DGC0/wxfs/8MX7P/DF+z/wxesv8KSIr/CUF8/wxdsv8MXLH/DFux/wxb + sP8LWrD/C1mv/wtZrv8LWK7/C1eu/wtWrf8hbKP/fXJs/31ya0D///8AHh4egB8fH/8hISH/IiIi/yQk + JP8lJSX/Jycn/ygoKP8hISH/Cztq/w1hs/8NYbT/DWK0/w1itP8NYrT/DWO1/w1jtf8NZLX/DWS1/w1k + tv8KT47/C0+O/w1ltv8NZbb/DWW2/w1ltv8NZbb/DWW3/w1lt/8NZbf/DWW3/w1lt/8NZLf/DWS3/wpH + gv8MVpz/DWS2/w1jtv8NY7b/DWO2/w1itv8NYrb/DWK1/w1itf8NYbT/DWG0/wxgtP8MYLT/CkqL/wlC + fv8MXrL/DF2y/wxdsv8MXLH/DFyx/wxbsP8LWrD/C1mv/wtZrv8QXKn/XK6Q/35zbf9+c21A////ACAg + IGAhISG/IiIivyQkJL8mJia/Jycn7ykpKf8rKyv/IyMj/wxDeP8Rf+j/EX/o/xGA6f8RgOn/EYDp/xGB + 6f8Rgen/EYHp/xGB6f8Rgun/Dma3/w5mt/8Sgun/EoLp/xKC6v8Sgur/EoLq/xKC6v8Sgur/EoLp/xKC + 6f8Sgun/EYLp/xGC6f8MXaf/D2/I/xGB6f8Rgen/EYDp/xGA6f8Rf+j/EX/o/xF/6P8Rfuj/EX7o/xF9 + 6P8Rfef/EXzn/w1htf8LV6T/EHvn/xB65v8Qeeb/EHnm/xB45v8Qd+X/EHfl/w925f8PdeX/brK9/3m+ + of+nmZH/p5mQQP///wAAAAAAAAAAAAAAAAAAAAAAAAAAACoqKr8rKyv/LS0t/yQkJP8MRHj/EYDp/xGB + 6f8Rgen/EYLp/xKC6f8Sgur/EoPq/xKD6v8Sg+r/EoPq/w5ouf8OaLn/EoTq/xKE6v8ShOr/EoTq/xKE + 6v8ShOr/EoTq/xKE6v8ShOr/EoTq/xKD6v8Sg+r/DV+p/xBxyf8Sgur/EoLp/xGC6f8Rgen/EYHp/xGB + 6f8RgOn/EYDp/xF/6P8Rf+j/EX7o/xF+6P8NYrb/DFml/xF85/8Qe+f/EHvn/xB65/8Qeeb/EHnm/xB4 + 5v8Qd+X/O5XF/9Lk4v9/wKX/qZmS/6iZkkD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAsLCy/LS0t/y8v + L/8mJib/DER4/xKC6f8Sgur/EoPq/xKD6v8Sg+r/EoTq/xKE6v8ShOr/EoXq/xKF6/8Oabr/Dmm6/xKF + 6/8Shev/EoXr/xKG6/8Shuv/EoXr/xKF6/8Shev/EoXr/xKF6/8Shev/EoXq/w1gqv8Qcsr/EoTq/xKE + 6v8Sg+r/EoPq/xKD6v8Sgun/EYLp/xGB6f8Rgen/EYDp/xGA6f8Rf+j/DWS3/wxapv8Rfej/EX3o/xF8 + 5/8QfOf/EHvn/xB65/8Qeeb/H4TW/7HWyf+PyLH/fb+j/6qbk/+qmpNA////AAAAAAAAAAAAAAAAAAAA + AAAAAAAALi4uvzAwMP8xMTH/KCgo/w1Fef8Sg+r/EoTq/xKE6v8Sher/EoXr/xKF6/8Shuv/Eobr/xKG + 6/8Shuv/Dmu7/w5ru/8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKH6/8Sh+v/Eofr/xKG + 6/8NYqz/EHTL/xKG6/8Shev/EoXr/xKF6v8ShOr/EoTq/xKD6v8Sg+r/EoLq/xGC6f8Rgen/EYHp/w1m + uP8MXKf/EX/o/xF+6P8Rfuj/EX3o/xF85/8QfOf/FX7h/3i5u/+Ixaz/fcCk/3q+ov+rnJX/q5yVQP// + /wAAAAAAAAAAAAAAAAAAAAAAAAAAADAwML8yMjL/MzMz/ykpKf8NRnn/EoXr/xKF6/8Shuv/Eobr/xKH + 6/8Sh+v/Eofr/xKH6/8SiOz/E4js/w9tvP8Pbb3/E4ns/xOJ7P8Tiez/E4ns/xOJ7P8Tiez/E4ns/xOJ + 7P8TiOz/E4js/xOI7P8SiOz/DWSt/xB1zP8Sh+v/Eofr/xKH6/8Shuv/Eobr/xKF6/8Sher/EoTq/xKE + 6v8Sg+r/EoPq/xKC6f8OZ7n/DF6p/xGA6f8RgOn/EX/o/xF+6P8Rfuj/EX3o/1Gluv+m0cH/YLOP/3u/ + ov94vaD/rJ6W/6ydlkD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzO/NDQ0/zY2Nv8rKyv/DUd5/xKH + 6/8Sh+v/Eofr/xKI7P8TiOz/E4ns/xOJ7P8Tiez/E4ns/xOK7P8Pbr3/D2++/xOK7P8Tiuz/E4rs/xOK + 7f8Tiu3/E4rt/xOK7P8Tiuz/E4rs/xOK7P8Tiuz/E4ns/w5mr/8Rd83/E4ns/xOI7P8TiOz/Eojs/xKH + 6/8Sh+v/Eobr/xKG6/8Shev/EoXr/xKE6v8ShOr/Dmm7/w1gq/8Rgun/EYHp/xGB6f8RgOn/EX/o/ymO + zP+r1MX/abeV/1+zjv95vaD/drue/62fmP+snpdA////AAAAAAAAAAAAAAAAAAAAAAAAAAAANTU1vzY2 + Nv84ODj/LS0t/w1Hef8TiOz/E4ns/xOJ7P8Tiez/E4rs/xOK7P8Tiu3/E4vt/xOL7f8Ti+3/D3C//w9w + v/8TjO3/E4zt/xOM7f8TjO3/E4zt/xOM7f8TjO3/E4zt/xOM7f8Ti+3/E4vt/xOL7f8OaLH/EXnP/xOK + 7P8Tiuz/E4rs/xOJ7P8Tiez/E4js/xKI7P8Sh+v/Eofr/xKG6/8Shuv/EoXr/w5qvP8NYaz/EoPq/xKD + 6v8Sgun/EYHp/xuH3f+Vyb7/f8Gl/2Czjv9ar4r/WKeF/3O6nP+uoJr/rZ+ZQP///wAAAAAAAAAAAAAA + AAAAAAAAAAAAAjc3N8A4ODj/Ojo6/y4uLv8NSHr/E4rs/xOK7P8Ti+3/E4vt/xOL7f8TjO3/E4zt/xOM + 7f8Tje3/E43t/w9ywP8PcsD/E43u/xON7v8Tje7/E43u/xON7v8Tje7/E43u/xON7v8Tje7/E43u/xON + 7f8Tje3/Dmmy/xF70P8TjO3/E4vt/xOL7f8Ti+3/E4rt/xOK7P8Tiez/E4ns/xOI7P8SiOz/Eofr/xKH + 6/8ObL3/DWKt/xKF6v8ShOr/EoPq/xKD6v9gr7P/m825/2C0j/9eso3/O5lv/1Chfv9xuZr/r6Gb/66g + mkD///8AAAAAAAAAAAAAAAACAAAABQAAAAc4ODjBOjo6/zs7O/8vLy//DUl6/xOL7f8TjO3/E4zt/xOM + 7f8Tje3/E43u/xON7v8Tju7/FI7u/xSO7v8QdMH/EHTB/xSP7v8Uj+7/FI/u/xSP7v8Uj+7/FI/u/xSP + 7v8Uj+7/FI/u/xSP7v8Uju7/FI7u/w9rs/8RfNH/E43u/xON7v8Tje3/E4zt/xOM7f8Ti+3/E4vt/xOK + 7f8Tiuz/E4ns/xOJ7P8TiOz/D26+/w1kr/8Shuv/Eobr/xKF6/8+ncD/rdXH/2G0j/9fs47/SKJ6/yqN + Yf9NoHz/briY/7CjnP+vopxA////AAAAAAAAAAADAAAABgAAAAgAAAAKOjo6wjw8PP89PT3/MTEx/0Ve + dP8Tje3/E43u/xOO7v8Uju7/FI7u/xSP7v8Uj+7/FI/u/xSQ7/8UkO//EHXD/xB2w/8UkO//FJHv/xSR + 7/8Uke//FJHv/xSR7/8Uke//FJHv/xSQ7/8UkO//FJDv/xSQ7/8PbbX/En7S/xSP7v8Uj+7/FI7u/yKV + 3f8smtH/E43t/xOM7f8TjO3/E4vt/xOL7f8Tiuz/E4rs/w9vwP8OZrH/Eojs/xKH6/8gjtn/lcq1/2+6 + mv9gs47/VKuF/y6QZP8pjGD/S596/2y2lv+yo57/saOdQP///wAAAAAAAAAAAwAAAAUAAAAIAAAACjs7 + O8I+Pj7/Pz8//zIyMv9FX3X/FI7u/xSP7v8Uj+7/FI/u/xSQ7/8UkO//FJHv/xSR7/8Uke//FJHv/xB3 + xP8Qd8T/FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//FJHv/xSR7/8Uke//D2+3/xKA + 0/8Uke//FJDv/yOX3f+XysD/ttjN/zGcyv8Tju7/E43u/xON7f8TjO3/E4zt/xOL7f8PccH/Dmiy/xOJ + 7P8Xi+b/dLqw/4nGrf9gs4//W7CK/zSUav8pjGD/J4tf/0ideP9qtZT/s6Wf/7Okn0D///8ANjY2gDg4 + OP86Ojr/Ozs7/zw8PP8+Pj7/QEBA/0FBQf80NDT/RV1x/xOH4P8Th+D/E4jg/xOI4P8TiOH/E4jh/xOI + 4f8TiOH/E4jh/xOI4f8QcLn/EHG5/xSJ4f8UieH/FInh/xSJ4f8UieH/FInh/xSJ4f8UieH/FInh/xSJ + 4f8UieH/E4nh/w5prf8Recf/E4nh/yKT1v+Vyr//qtbF/6fUw/+62dD/MJrG/xOG4P8ThuD/EoXg/xKF + 3/8ShN//Dmu2/w1jqP8Sgt7/Sqat/6HQvv9gtI//XrKN/0GddP8pjWD/J4tf/yWKXf9GnHb/Z7ST/6ib + lv+om5ZA////ADg4OIA6Ojr/Ozs7/zw8PP8+Pj7/QEBA/0JCQv9DQ0P/NTU1/0RXZv8PbbT/D261/w9u + tf8PbrX/EG62/xButv8Qb7b/EG+3/xFwt/8RcLf/Dl2X/w5dmP8RcLj/EXC4/xFwuP8Rcbn/EXG5/xFx + uf8Rcbn/EXG5/xFxuf8Rcbn/EXG5/xFxuf8MV4//DmOk/x99sf+Ux7r/qNXE/3jDof92wp//oNK+/7PW + y/8sh6f/D263/w9ttv8Pbbb/D2y1/wxYlP8LUYn/KYOj/6TRwP9ntpT/X7KN/02mf/8pjWH/J4tf/yaK + Xf8kiFz/TJ97/2Wzkf+Fe3f/hXp3QP///wA6OjqAOzs7/z09Pf8+Pj7/QEBA/0JCQv9ERET/RUVF/zc3 + N/9FXnL/E4jh/xSI4f8UieH/FInh/xSJ4f8ViuH/FYrh/xWK4f8ViuH/Forh/xJzu/8Tc7v/Fori/xaL + 4v8Wi+L/Fovi/xaL4v8Wi+L/Fovi/xaK4v8WiuL/Fori/xaK4v8WiuL/EWuw/yCAtv+Sxrn/p9TC/3bC + oP90wZ7/c8Cd/3G/nP+bz7r/rdTG/y2Uu/8TiOH/E4jh/xOH4P8Pb7n/F26l/4G/rP95vqH/X7KN/1et + h/8tj2P/KItf/yaKXv8kiVz/O5Zu/3y+ov+Aspf/qp2Y/6qdmED///8AOzs7QDw8PIA+Pj6AQEBAgEJC + QoBERETfRkZG/0hISP85OTn/RmB2/xWS7/8Wku//FpLv/xeS7/8Xku//F5Pv/xiT7/8Yk+//GJPv/xiT + 7/8Uesf/FXvH/xmT7/8Zk+//GZTv/xmU7/8ZlO//GZTv/xmU7/8Zk+//GZPv/xmT7/8Zk+//GJPv/yF/ + sv+Rxrj/pdTB/3TBnv9zwJ3/b72a/0mje/9RqIH/br2Z/5XMtf+m0cL/LZzI/xSR7/8Uke//EHfG/1yq + nv+Wy7b/X7KN/12xjP8zlGn/KIxf/yaKXv8kiVz/OpZu/3u9of+MvaL/5dTP/7eppf+3qaRA////AAAA + AAAAAAAAAAAAAAAAAAAAAAAARkZGv0hISP9KSkr/Ojo6/0Zgdv8Xku//F5Lv/xiT7/8Yk+//GJPv/xmT + 7/8Zk+//GpTv/xqU7/8alO//FnvI/xZ8yP8blO//G5Tv/xuU8P8blPD/G5Tw/xuU8P8blO//G5Tv/xuU + 7/8blO//GpTv/yaZ3P+Qxbf/o9PA/3PAnf9ywJz/br2Z/0ijev8+m3L/PJpw/02mfv9qupb/j8mx/6DO + vf8tm8j/FJHv/zOWrP+YzLf/X7KN/12xjP9Cnnb/KIxf/yaKXv8kiVz/OpVu/3q9oP+MvaL/9ePe/+bV + 0P+4qqb/uKqmQP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAEhISL9KSkr/TExM/zw8PP9GYHb/GJPv/xiT + 7/8Zk+//GpTv/xqU7/8blO//G5Tv/xyV8P8clfD/HJXw/xh9yf8Yfcn/HZXw/x2V8P8dlfD/HZbw/x2W + 8P8dlvD/HZXw/x2V8P8dlfD/HZXw/yia3f+Pxrn/otK//3G/nP9xv5v/bLyY/0eief89m3H/O5pw/zqZ + b/84mG3/SaN7/2a4k/+Kxq3/msu4/zifs/+IxKv/b7qa/12xjP9Pp4D/KItf/yaKXv8kiVz/OpVt/3i8 + n/+LvaL/9eTf//Xj3//m1dH/uayn/7msp0D///8AAAAAAAAAAAAAAAAAAAAAAAAAAABKSkq/TExM/05O + Tv89PT3/R2F2/xqU7/8alO//G5Tv/xuU8P8clfD/HZXw/x2V8P8elvD/Hpbw/x6W8P8afsr/HoLH/x+W + 8P8flvD/IJbw/yCW8P8gl/D/IJbw/yCW8P8flvD/H5bw/yqb3f+Oxbj/oNG+/3C+m/9vvpr/a7uX/0ai + ef88mnD/O5lv/0Oddf+PxK//lMaz/zWVav9Jo3v/Y7WR/4TDqf+gz73/hcSq/1yxjP9Yrof/K45i/yaK + Xv8kiVz/OpVt/3e8nv+LvaL/9eTg//Xk4P/15N//5tbS/7qtqf+6ralA////AAAAAAAAAAAAAAAAAAAA + AAAAAAAATExMv05OTv9QUFD/Pz8//09kaf8flun/HJXw/x2V8P8dlfD/Hpbw/x+W8P8flvD/IJfw/yCX + 8P8hl/D/TKSt/2Kxp/8lmer/Ipjw/yKY8P8imPD/Ipjw/yKY8P8imPD/Ipjw/yyb3P+Mxbf/ntC8/269 + mv9tvJn/arqW/0WheP87mnD/Oplv/0Kddf+q0cT/icGo/4nDqv+Nw67/MZJn/06nf/9fs47/dLyd/1yx + i/9ar4r/N5Zs/yaKXf8kiVz/OZVt/3a7nf+rybb/9eXi//Xl4f/15OH/9eTg/+fX0v+7rqv/u66qQP// + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAE5OTr9QUFD/UlJS/0BAQP9WZ1z/QKOt/x6W8P8flvD/IJbw/yCX + 8P8hl/D/Ipfw/yKY8P8jmPD/Tam2/8Lc1v/X5eX/bLax/yea6f8lmfD/JZnw/yWZ8P8lmfD/JJnw/y2c + 3P+LxLb/nM+7/2y8mP9su5j/aLmV/0Sgd/86mW//OZhu/0GcdP+p0cP/iMCn/+3k4v/Y3NX/hMCn/4bA + qP8ukGT/SqR9/1uwi/9ar4n/Q592/yWKXf8kiVz/OZVs/3W7nf+1zb3/9ubj//bl4v/15eL/9eXh//Xk + 4f/n19P/vK+s/7yvq0D///8AAAAAAAAAAAAAAAAAAAAAAAAAAABQUFC/UlJS/1NTU/9CQkL/N1xL/7HU + yf89orP/IZfw/yKY8P8jmPD/JJjw/ySZ8P8lmfD/Tam1/8Hc1f92v5//dsCf/9bl5P9rtrD/Kpvp/yia + 8P8omvD/KJrw/zCd3P+Kw7X/m865/2u7l/9qupb/ZriT/0Ofdv85mG7/OJdt/0Cbc/+n0ML/h8Cm/+3l + 4v/36en/9+np/9jc1f+AvqP/f72j/yqNYf9Honn/TqeA/yWKXf8jiFz/OJVs/3O6nP+1zb3/9ubk//bm + 5P/25uP/9ubj//bl4v/15eH/59jU/72wrf+9sK1A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAUlJSv1RU + VP9VVVX/Q0ND/yxYRP/H3dn/vNjQ/zWfx/8kmfD/JZnw/yaa8P8nmvD/Tam0/8Db1P9zvp3/arqX/2q7 + l/9zvp3/1eXk/2q1r/8tnOr/K5zx/zKe3P+IwrT/mc24/2m5lf9ouZX/ZLaS/0Kedf84mG3/N5ds/z+a + cv+XyLX/d7ia/+3l4//36er/9+nq//fp6v/36en/19zV/3u8oP94uZ7/Jope/yiLX/8jiFv/OJVs/3K5 + m/+1zb7/9ufm//bn5f/25uX/9ubk//bm5P/25uP/9uXi/+fY1f++sa//vrGuQP///wAAAAAAAAAAAAAA + AAAAAAAAAAAAAFRUVL9VVVX/V1dX/0VFRf8rV0T/qtHE/5zNuv+mzsD/MZ3U/yia8P8pm/D/TKiz/7/b + 0/9wvJv/Z7iU/2i5lf9Zr4n/UKiA/3G8m//P4t//aLSt/zag1f+HwbL/l8u2/2a4lP9mt5P/Y7WQ/0Gd + dP83l2z/NpZr/z6acf+VyLT/drea/+3m5P/36uv/9+rr//fq6//36er/9+nq//fp6v/X3NX/drqc/3G2 + mf8jiFv/N5Rr/3G5mv+1zr7/9ujn//bn5v/25+b/9ufl//bn5f/25uT/9ubk//bm4//o2db/v7Ow/76y + r0D///8AAAAAAAAAAAAAAAAAAAAAAAAAAABWVla/V1dX/1lZWf9GRkb/KldD/6nRw/9htI//m8y5/43D + t/8xntz/TKiy/9Hi4P+Awqb/ZLaS/2W3kv9XrYf/S6J7/0qhe/9Npn7/brqZ/8jf2v+byrj/lcq1/2S2 + kv9ktpL/YbSP/z+cc/82lmv/NZVq/z2ZcP+Ux7P/dLeZ/+zm5f/36uz/9+rs//fq7P/36uv/9+rr//fq + 6//36uv/9+rr/9bc1f9yuJn/cria/3C4mf+1zr//9+jo//fo6P/26Of/9ufn//bn5v/25+X/9ufl//bm + 5P/25uT/6dnX/8C0sf+/s7BA////AE5OToBPT0//UVFR/1NTU/9VVVX/V1dX/1lZWf9bW1v/R0dH/ylW + Qv+o0ML/XrKN/1+zjv/A29T/eLmf/9Hh4P9+wKT/YbSQ/2K1kP9Uq4X/SaF6/7LTyf+w0sj/Rp94/0qk + fP9quJb/isat/2K1kP9itZD/XrKN/z6bcv80lWr/M5Rp/zyYb/+SxrL/kcCq//jr7f/46+3/+Ovt//jr + 7f/36uz/9+rs//fq7P/36uz/9+rs//fq6//36uv/1tzW/1+uiv+XsqP/9+np//fp6f/36Oj/9+jo//bo + 5//25+f/9ufm//bn5v/25+X/9ubk/+na2P/CtbL/wbSxQP///wBPT0+AUVFR/1NTU/9VVVX/V1dX/1lZ + Wf9bW1v/XV1d/0lJSf8oVUH/p8/B/1ywi/9csYz/XbGM/7bXzf97vqL/XrKN/1+zjv9SqYP/R594/7HS + yP+HtZ//jrul/6rPw/9DnXX/R6J5/2Czjv9fs47/XLGL/zyacP8zlGn/MpNo/zqXbv+RxbH/fK2X/9nN + z//t4eP/7eHj/+3h4//t4eP/7eHj/+3h4//t4eP/7eDi/+zg4v/s4OH/7N/h/+zf4f/LwMH/wLW2/+ve + 3//r3t7/697e/+vd3f/r3d3/6tzc/+rc2//p29r/6dvZ/+nb2f/dzs3/uKyq/7isqkD///8AUVFRgFJS + Uv9VVVX/V1dX/1lZWf9bW1v/XV1d/19fX/9JSUn/J1VB/6bOwP9Zr4n/Wq+J/1qviv9bsIr/W7CL/1yx + i/9PqID/RZ53/6/Rxv94p5H/saen/8zBwf+FtJ7/o82+/z+acv9En3f/Wq+K/zqZb/8yk2f/MZJn/zmW + bf+PxbD/grOd/6yjpf+9s7b/zsPG/87Dxv/Ow8b/zcPG/83Dxf/NwsX/zcLE/8zCxP/MwsP/y8HC/8vB + wv/KwMH/rqWm/6Scnf/Jvr//yb2+/8i8vf/IvLz/x7u7/8a6uv/Furn/xLm4/8O3tv/Dt7X/ua2s/5qP + j/+aj45A////AFJSUkBUVFSAVlZWgFhYWIBaWlqAXV1d315eXv9gYGD/S0tL/ydUQP+lzr//Vq2H/1et + h/9Yroj/WK6I/1muif9Mpn7/Q5x1/63Qxf+Uwqv/zsLC/87Dw//t3+D/7d/g/5PCrP+cyrn/PJhv/zOU + af8wkmb/L5Fl/zeVbP+OxK7/kcKr/+7i5f/HvcD/2tDT/+7i5f/u4uX/7uLl/+7i5f/u4uX/7eLl/+3i + 5f/t4uT/7eHk/+3h4//t4eP/7eHi/83CxP/BuLj/7N/h/+zf4P/r3+D/697f/+ve3v/r3d3/693d/+rc + 3P/q3Nv/6dva/93Qzv+5raz/uaysQP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAF5eXr9fX1//YWFh/0xM + TP8mVD//o82+/1SrhP9Vq4X/VayF/1ashv9KpHz/NZVq/8DZ0/99uJz/9+jo/9jMzP/Yzc3/9+nq//fq + 6//36uz/kcGr/5bHtP84lWz/LpBk/zaUav+Mw63/kMGr//js7//47PD/0cfK/+TZ3f/47PD/+Ozw//js + 8P/47PD/+Ozw//js8P/47PD/+Ozv//js7//47O//+Ozu//jr7v/YzM7/zMLD//fq7P/36uz/9+rr//fq + 6//36er/9+np//fp6f/36Oj/9ujn//bn5//q29r/xLi2/8S3tkD///8AAAAAAAAAAAAAAAAAAAAAAAAA + AABfX1+/YWFh/2NjY/9OTk7/JVM+/6LMvf9RqYL/UqqD/1Oqg/9Honr/M5Ro/zKTaP92tZv/jMGr/9Xb + 1P/Zzc3/2c3O//fq6//36uz/9+rs//jr7f+QwKr/kMSw/z6YcP+Lwqz/j8Cq//js8P/47PD/+O3w/9LI + y//l297/+O3x//jt8f/47fH/+O3x//jt8f/47fH/+O3w//js8P/47PD/+Ozw//js7//47O//2M3Q/83C + xf/46+3/9+rs//fq7P/36uv/9+rr//fp6v/36en/9+np//fo6P/26Of/6tzb/8W5uP/FubdA////AAAA + AAAAAAAAAAAAAAAAAAAAAAAAYWFhv2NjY/9lZWX/T09P/yRSPv+hy7z/T6eA/0+ogf9EoHf/MJJm/zCS + Zv8wkWb/L5Fm/3Gyl/+Hv6j/usK7/9rOz//36uz/9+rs//jr7f/46+3/+Ovu/47Aqf+Oxa//jsCp//js + 8P/47fH/+O3x//jt8f/Tys7/5tvg//nt8v/57fL/+e3y//nt8v/57fL/+O3y//jt8v/47fH/+O3x//jt + 8P/47PD/+Ozv/9nP0v/OxMf/+Ovu//jr7f/36uz/9+rs//fq6//36er/9+nq//fp6f/36Oj/9+jo/+rd + 3P/Gurn/xrq4QP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAGNjY79kZGT/ZmZm/1BQUP8jUj3/nsq6/0ym + fv9BnnX/LpBl/y6QZP8tkGT/LZBk/y2PY/8sj2P/gbqk/2+ylf/Jysb/9+rs//jr7f/46+7/+Ovu//js + 7//47O//s8/C//jt8P/47fH/+O3y//jt8v/57fL/1cvP/+fc4f/57vP/+e7z//nu8//57vP/+e7z//nu + 8//57fL/+e3y//jt8v/47fH/+O3x//js8P/az9P/z8XI//js7v/46+7/+Ovt//fq7P/36uz/9+rr//fp + 6v/36er/9+np//fo6P/r3dz/x7u7/8e7ukD///8AAAAAAAAAAAAAAAAAAAAAAAAAAABkZGS/ZmZm/2ho + aP9RUVH/IlE8/73Y0f8+nHL/LI5j/yuOYv8rjmL/K45i/yuOYv8qjWH/Ko1h/ymNYf+Hvqj/ebab/+zm + 5f/46+3/+Ovu//js7//47O//+Ozw//jt8f/47fH/+O3y//nt8v/57vP/+e7z/9bM0v/o3eP/+e70//nu + 9P/57vT/+e70//nu9P/57vT/+e7z//nu8//57vP/+e3y//jt8v/47fH/29HU/9DGyf/47O//+Ozu//jr + 7v/46+3/9+rs//fq7P/36uv/9+nq//fp6f/36en/693d/8i8vP/IvLtA////AAAAAAAAAAAAAAAAAAAA + AAAAAAAAZmZmv2hoaP9qamr/UlJS/yFQO//K3tr/WaWF/1ikhP9XpIP/VqOC/1Wjgf9TooH/UqKA/1Gh + f/9QoX7/T6B9/6jQwv95t5v/7Obm//js7//47O//+Ozw//jt8f/47fL/+e3y//nu8//57vP/+e70//nu + 9P/XztP/6N7k//nv9f/57/X/+e/1//nv9f/57/X/+e/0//nu9P/57vT/+e7z//nu8//57fL/+O3y/9vS + 1f/SyMv/+Ozw//js7//47O7/+Ovu//jr7f/36uz/9+rr//fq6//36er/9+np/+zd3f/Jvbz/yLy8QP// + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAGdnZ79paWn/a2tr/1RUVP84Wkn/lcGt/5TBrP+Twaz/ksGs/5LB + q/+RwKv/kMCr/4/Aqv+PwKr/jsCp/4a5o/+GuaL/e7ec/6bIt//47O//+Ozw//jt8f/47fL/+e3y//nu + 8//57vP/+e70//nv9P/57/X/2dDV/+nf5f/57/b/+e/2//nv9v/57/b/+e/2//nv9f/57/X/+e/1//nu + 9P/57vT/+e7z//nt8v/c09f/08rN//jt8P/47PD/+Ozv//jr7v/46+3/+Ovt//fq7P/36uv/9+nq//fp + 6f/s3t7/yr69/8m9vED///8AAAAAAAAAAAAAAAAAAAAAAAAAAABpaWm/a2tr/21tbf9VVVX/f3d1//bm + 5P/25+X/9ufm//bo5//36Oj/9+np//fp6f/36er/9+rr//fq7P/f09T/39TV//js7v/47O//+Ozw//jt + 8f/47fH/+e3y//nu8//57vP/+e70//nv9f/57/X/+e/2/9rR1//p4Ob/+fD3//nw9//58Pf/+fD3//nw + 9v/57/b/+e/2//nv9f/57/X/+e/0//nu9P/57vP/3tTY/9TLzv/47fH/+Ozw//js7//47O//+Ovu//jr + 7f/36uz/9+rr//fq6//36er/7N/f/8u/v//Kvr5A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAampqv2xs + bP9vb2//VlZW/393dv/25uX/9ufl//bn5v/26Of/9+jo//fp6f/36er/9+rr//fq6//36uz/4NTV/+DV + 1//47O//+Ozv//jt8P/47fH/+e3y//nu8//57vP/+e70//nv9f/57/X/+e/2//nw9v/b09n/6uHo//rw + 9//68Pj/+vD4//rw9//58Pf/+fD3//nw9//57/b/+e/2//nv9f/57/T/+e70/9/U2f/VzND/+O3y//jt + 8f/47PD/+Ozv//jr7v/46+3/+Ovt//fq7P/36uv/9+nq/+zf3//LwMD/y7+/QP///wBhYWFAY2NjgGVl + ZYBnZ2eAampqgGxsbN9ubm7/cHBw/1dXV/9/d3b/9ufl//bn5v/25+f/9ujn//fo6P/36en/9+nq//fq + 6//36uz/+Ovt/+HV1//h1tj/+Ozv//js8P/47fH/+O3y//nu8//57vP/+e70//nv9f/57/X/+e/2//nw + 9//58Pf/3dTa/+vi6f/68Pj/+vH4//rx+P/68fj/+vD4//rw+P/68Pf/+fD3//nw9v/57/b/+e/1//nv + 9P/f1dv/183R//nt8v/47fH/+Ozw//js7//47O//+Ovu//jr7f/36uz/9+rr//fp6v/s3+D/zMHB/8zA + wED///8AYmJigGRkZP9mZmb/aGho/2tra/9tbW3/b29v/3Jycv9YWFj/fHRz/+3e3f/t397/7d/f/+7g + 4P/v4eH/7+Hi/+/i4//v4+T/7+Pl//Dk5f/az9H/29DS//Hl6P/x5un/8ebq//Lm6//y5+z/8uft//Lo + 7v/y6O7/8unv//Lp8P/z6vD/8+rx/9jQ1v/l3eT/8+ry//Pq8v/z6vL/8+ry//Pq8v/z6vH/8+nx//Lp + 8P/x6e//8eju//Hn7v/x5+3/2c/U/9DGy//w5er/7+Xp/+/k6P/v4+f/7+Pm/+7i5f/u4uT/7eHj/+3g + 4v/t4OH/4tbX/8S5uf/EuLhA////AGNjY4BlZWX/Z2dn/2pqav9sbGz/bm5u/3Fxcf9zc3P/WVlZ/3Vu + bf/SxcT/08bG/9THx//VyMj/1srK/9fLy//XzM3/2M3O/9nNz//aztD/x72//8i+wP/b0NT/3NLV/9zS + 1v/d09f/3tTY/97U2f/e1dr/3tXb/97W3P/f1tz/39bd/9/X3v/Hv8b/08vT/9/X3//f19//3tbe/97W + 3v/e1t3/3dXc/93V2//c1Nr/29PZ/9rS2P/a0df/2dDV/8O7v/+7s7f/183S/9bM0P/Uy87/1MrN/9PJ + y//SyMr/0cbJ/9DFx//Ow8X/zsPE/8S6u/+qoaH/qaCgQP///wBlZWWAZmZm/2lpaf9ra2v/bW1t/3Bw + cP9ycnL/dHR0/1tbW/98dXT/7d/d/+3f3v/u4N//7+Dg/+/h4f/v4uL/7+Lj/+/j5P/w4+X/8eTm/9zR + 0//d0tX/8eXp//Hm6v/y5+v/8ufs//Lo7f/z6e7/8+nv//Pp8P/z6vH/9Orx//Tq8v/06/P/2tLa/+ff + 5//z6/T/8+v0//Pr9P/z6/T/8+v0//Pr8//z6vL/8+ry//Pp8f/y6fD/8ejv//Hn7v/a0db/0snN//Hm + 6//w5er/7+Xp/+/k6P/v4+f/7+Pm/+7i5f/u4uT/7eHj/+3g4f/j19f/xru7/8W7u0D///8AZmZmIGdn + Z0BqampAbGxsQG5ubkBxcXHPc3Nz/3Z2dv9cXFz/f3d2//bn5v/25+b/9ujn//fo6P/36en/9+nq//fq + 6//36uz/+Ovt//jr7v/k2Nv/5Nnc//js8P/47fH/+e3y//nu8//57vT/+e/1//nv9v/58Pf/+vD3//rw + +P/68fn/+vH6/+HZ4f/u5u7/+vL8//ry/P/68/z/+vL8//ry+//68vv/+vL6//rx+f/68fn/+vD4//nw + 9//57/b/4tnf/9rR1v/57vP/+e7z//jt8v/47fH/+Ozw//js7//46+7/+Ovt//fq7P/36uv/7eDh/8/E + xP/PxMRA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAc3Nzv3V1df93d3f/XV1d/393dv/25+b/9ufn//bo + 5//36Oj/9+np//fp6v/36uv/9+rs//jr7f/46+7/5dnc/+Xa3f/47fD/+O3y//nt8v/57vP/+e70//nv + 9f/57/b/+fD3//rw+P/68fj/+vH5//ry+v/i2+P/7ubw//vz/P/78/3/+/P9//vz/f/68vz/+vL7//ry + +//68fr/+vH5//rw+P/58Pf/+fD2/+Pa4P/b0tf/+e70//nu8//47fL/+O3x//js8P/47O//+Ovu//jr + 7f/36uz/9+rr/+3g4f/QxMX/z8TEQP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAHR0dL92dnb/eHh4/15e + Xv9/d3b/9ufm//bn5//26Of/9+jo//fp6f/36er/9+rr//fq7P/46+3/+Ovu/+Xa3f/m2t7/+O3w//jt + 8v/57vP/+e7z//nv9P/57/X/+e/2//nw9//68Pj/+vH5//rx+v/68vv/49zk/+/o8f/78/3/+/P+//vz + /v/78/3/+/P9//ry/P/68vv/+vH6//rx+f/68Pj/+vD3//nw9v/k2+D/3NPY//nu9P/57vP/+e3y//jt + 8f/47PD/+Ozv//jr7v/46+3/9+rs//fq6//u4eL/0cXF/9DExED///8AAAAAAAAAAAAAAAAAAAAAAAAA + AAB1dXW/d3d3/3p6ev9fX1//BwcHvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAA + AAAAAAAAAAAAAAAAAAAAAAAAdnZ2MHh4eEB6enpAX19fQAcHBzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + //////////////////////D/w/8P////8P/D/w/////w/8P/D/////D/w/8P//wAAAAAAAAA/AAAAAAA + AAD8AAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD8AAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAA + AAAAAAAA/AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA+AAAAAAA + AADgAAAAAAAAAMAAAAAAAAAAwAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAPwA + AAAAAAAA/AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/AAAAAAA + AAD8AAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAA/AAAAAAAAAD8AAAAAAAAAPwA + AAAAAAAA/AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAAgAAAAAAA + AACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD8H/////////wf + //////////////////////////////////////// + + + \ No newline at end of file diff --git a/MBN_STOCK_N/Properties/AssemblyInfo.cs b/MBN_STOCK_N/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..73502de --- /dev/null +++ b/MBN_STOCK_N/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 +// 이러한 특성 값을 변경하세요. +[assembly: AssemblyTitle("매일경제TV 증권송출 시스템")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("(주)비주얼리서치")] +[assembly: AssemblyProduct("MBN_STOCK_N")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("79711222-87a1-432b-a122-c67ab0e7237b")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 +// 기본값으로 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/MBN_STOCK_N/Properties/Resources.Designer.cs b/MBN_STOCK_N/Properties/Resources.Designer.cs new file mode 100644 index 0000000..73fd7a7 --- /dev/null +++ b/MBN_STOCK_N/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace MBN_STOCK_N.Properties { + using System; + + + /// + /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + /// + // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + // 클래스에서 자동으로 생성되었습니다. + // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을 + // 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MBN_STOCK_N.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을 + /// 재정의합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/MBN_STOCK_N/Properties/Resources.resx b/MBN_STOCK_N/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/MBN_STOCK_N/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MBN_STOCK_N/Properties/Settings.Designer.cs b/MBN_STOCK_N/Properties/Settings.Designer.cs new file mode 100644 index 0000000..b8b9ca6 --- /dev/null +++ b/MBN_STOCK_N/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace MBN_STOCK_N.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.5.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/MBN_STOCK_N/Properties/Settings.settings b/MBN_STOCK_N/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/MBN_STOCK_N/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/MBN_STOCK_N/Properties/licenses.licx b/MBN_STOCK_N/Properties/licenses.licx new file mode 100644 index 0000000..8e04a25 --- /dev/null +++ b/MBN_STOCK_N/Properties/licenses.licx @@ -0,0 +1 @@ +FarPoint.Win.Spread.FpSpread, FarPoint.Win.Spread, Version=4.0.3512.2008, Culture=neutral, PublicKeyToken=327c3516b1b18457 diff --git a/MBN_STOCK_N/RES/Find_16x16.png b/MBN_STOCK_N/RES/Find_16x16.png new file mode 100644 index 0000000..7d4d4c4 Binary files /dev/null and b/MBN_STOCK_N/RES/Find_16x16.png differ diff --git a/MBN_STOCK_N/RES/Find_32x32.png b/MBN_STOCK_N/RES/Find_32x32.png new file mode 100644 index 0000000..7ea837b Binary files /dev/null and b/MBN_STOCK_N/RES/Find_32x32.png differ diff --git a/MBN_STOCK_N/RES/Grow.bmp b/MBN_STOCK_N/RES/Grow.bmp new file mode 100644 index 0000000..1e132c2 Binary files /dev/null and b/MBN_STOCK_N/RES/Grow.bmp differ diff --git a/MBN_STOCK_N/RES/MmoneyCoder.ico b/MBN_STOCK_N/RES/MmoneyCoder.ico new file mode 100644 index 0000000..99ffbec Binary files /dev/null and b/MBN_STOCK_N/RES/MmoneyCoder.ico differ diff --git a/MBN_STOCK_N/RES/MmoneyCoder.ini b/MBN_STOCK_N/RES/MmoneyCoder.ini new file mode 100644 index 0000000..1bb1cd2 --- /dev/null +++ b/MBN_STOCK_N/RES/MmoneyCoder.ini @@ -0,0 +1,20 @@ +[Oracle] +//ConnectionName=211.42.188.8:50006/XE +//ID=system +//Pass=oracle +//ConnectionName=192.168.0.9:1521/orcl +//ID=system +//Pass=0915 +//---운영 DB ---- +ConnectionName=172.20.100.25:1521/mstock +//---TEST DB ----ConnectionName=172.20.150.161:1521/orcl +ID=moneys +Pass=moneys00 + +[UI] +ReportFontSize=15 +PlayListFont=15 +[SET] +QUERYMAXSIZE=100 +AUTOPLAYDELAY=5000 + diff --git a/MBN_STOCK_N/RES/MmoneyCoder.ini.bak b/MBN_STOCK_N/RES/MmoneyCoder.ini.bak new file mode 100644 index 0000000..17c9a9e --- /dev/null +++ b/MBN_STOCK_N/RES/MmoneyCoder.ini.bak @@ -0,0 +1,15 @@ +[Oracle] +ConnectionName=192.168.0.9:1521/orcl +ID=system +Pass=0915 +//ConnectionName=172.20.100.25:1521/mstock +//ID=moneys +//Pass=moneys00 + +[UI] +ReportFontSize=15 +PlayListFont=15 +[SET] +QUERYMAXSIZE=100 +AUTOPLAYDELAY=5000 + diff --git a/MBN_STOCK_N/RES/MmoneyCoder.zip b/MBN_STOCK_N/RES/MmoneyCoder.zip new file mode 100644 index 0000000..a11287c Binary files /dev/null and b/MBN_STOCK_N/RES/MmoneyCoder.zip differ diff --git a/MBN_STOCK_N/RES/MoveDown_16x16.png b/MBN_STOCK_N/RES/MoveDown_16x16.png new file mode 100644 index 0000000..5ad2922 Binary files /dev/null and b/MBN_STOCK_N/RES/MoveDown_16x16.png differ diff --git a/MBN_STOCK_N/RES/MoveUp_16x16.png b/MBN_STOCK_N/RES/MoveUp_16x16.png new file mode 100644 index 0000000..af5a7f8 Binary files /dev/null and b/MBN_STOCK_N/RES/MoveUp_16x16.png differ diff --git a/MBN_STOCK_N/RES/P.png b/MBN_STOCK_N/RES/P.png new file mode 100644 index 0000000..03f6049 Binary files /dev/null and b/MBN_STOCK_N/RES/P.png differ diff --git a/MBN_STOCK_N/RES/Preview.png b/MBN_STOCK_N/RES/Preview.png new file mode 100644 index 0000000..635f8c2 Binary files /dev/null and b/MBN_STOCK_N/RES/Preview.png differ diff --git a/MBN_STOCK_N/RES/VRIPNG.png b/MBN_STOCK_N/RES/VRIPNG.png new file mode 100644 index 0000000..0884b52 Binary files /dev/null and b/MBN_STOCK_N/RES/VRIPNG.png differ diff --git a/MBN_STOCK_N/RES/a.png b/MBN_STOCK_N/RES/a.png new file mode 100644 index 0000000..cec25f6 Binary files /dev/null and b/MBN_STOCK_N/RES/a.png differ diff --git a/MBN_STOCK_N/RES/aa.png b/MBN_STOCK_N/RES/aa.png new file mode 100644 index 0000000..16e778e Binary files /dev/null and b/MBN_STOCK_N/RES/aa.png differ diff --git a/MBN_STOCK_N/RES/dot.png b/MBN_STOCK_N/RES/dot.png new file mode 100644 index 0000000..e89a4fb Binary files /dev/null and b/MBN_STOCK_N/RES/dot.png differ diff --git a/MBN_STOCK_N/RES/green.png b/MBN_STOCK_N/RES/green.png new file mode 100644 index 0000000..3654f54 Binary files /dev/null and b/MBN_STOCK_N/RES/green.png differ diff --git a/MBN_STOCK_N/RES/icon.ico b/MBN_STOCK_N/RES/icon.ico new file mode 100644 index 0000000..66feb1f Binary files /dev/null and b/MBN_STOCK_N/RES/icon.ico differ diff --git a/MBN_STOCK_N/RES/logo.png b/MBN_STOCK_N/RES/logo.png new file mode 100644 index 0000000..ec6e4e1 Binary files /dev/null and b/MBN_STOCK_N/RES/logo.png differ diff --git a/MBN_STOCK_N/RES/pie.bmp b/MBN_STOCK_N/RES/pie.bmp new file mode 100644 index 0000000..415126e Binary files /dev/null and b/MBN_STOCK_N/RES/pie.bmp differ diff --git a/MBN_STOCK_N/RES/pro#00083.png b/MBN_STOCK_N/RES/pro#00083.png new file mode 100644 index 0000000..14244d9 Binary files /dev/null and b/MBN_STOCK_N/RES/pro#00083.png differ diff --git a/MBN_STOCK_N/RES/profit.bmp b/MBN_STOCK_N/RES/profit.bmp new file mode 100644 index 0000000..fdebca0 Binary files /dev/null and b/MBN_STOCK_N/RES/profit.bmp differ diff --git a/MBN_STOCK_N/RES/red.png b/MBN_STOCK_N/RES/red.png new file mode 100644 index 0000000..e9ae5f7 Binary files /dev/null and b/MBN_STOCK_N/RES/red.png differ diff --git a/MBN_STOCK_N/RES/sample_1.png b/MBN_STOCK_N/RES/sample_1.png new file mode 100644 index 0000000..05f4b8d Binary files /dev/null and b/MBN_STOCK_N/RES/sample_1.png differ diff --git a/MBN_STOCK_N/RES/sell.bmp b/MBN_STOCK_N/RES/sell.bmp new file mode 100644 index 0000000..308bc39 Binary files /dev/null and b/MBN_STOCK_N/RES/sell.bmp differ diff --git a/MBN_STOCK_N/RES/setup.ini b/MBN_STOCK_N/RES/setup.ini new file mode 100644 index 0000000..475e721 --- /dev/null +++ b/MBN_STOCK_N/RES/setup.ini @@ -0,0 +1,82 @@ +[] +1_⺻_üᰡ +1_⺻_簡 +1__ð +1__׸鰡 +1__PBR +1__ŷ +α׷_5 +α׷_20 +α׷_60 +α׷_120 +α׷_240 +ĵ׷_Ϻ +ĵ׷_5Ϻ +ĵ׷_1 +ĵ׷_3 +ĵ׷_6 +ĵ׷_12 +ĵ׷(ŷ)_Ϻ +ĵ׷(ŷ)_5Ϻ +ĵ׷(ŷ)_1 +ĵ׷(ŷ)_3 +ĵ׷(ŷ)_6 +ĵ׷(ŷ)_12 +ȣâ_ǥ׷ +ŷ_ǥ׷ +_ǥ׷() +ֿ _׷() +强 ǥ_׷() +_׷() +_׷() + + +[] +1_⺻ +μ׷_1 +μ׷_1 +μ׷_3 +μ׷_6 +μ׷_12 +ĵ׷_Ϻ +ĵ׷_5Ϻ +ĵ׷_1 +ĵ׷_3 +ĵ׷_6 +ĵ׷_12 +ĵ׷(ŷ)_Ϻ +ĵ׷(ŷ)_5Ϻ +ĵ׷(ŷ)_1 +ĵ׷(ŷ)_3 +ĵ׷(ŷ)_6 +ĵ׷(ŷ)_12 +5ǥ׷ + +[] +ڽ +ڽ +ڽ200 + +KRX100 + +[ȯؿ] +ȯ-޷ȯ +ȯ-ȯ +ȯ-ȯ +ȯ-ȯ +ؿ-ٿ +ؿ- +ؿ-S&P +ؿ- +ؿ- +ؿ- +ؿ- +ؿ-ȫ ׼ +ؿ-Ÿ̿ +ؿ-̰ +ؿ-± +ؿ-ʸ +ؿ-̽þ +ؿ-ε׽þ +ؿ-߱ + diff --git a/MBN_STOCK_N/RES/t.png b/MBN_STOCK_N/RES/t.png new file mode 100644 index 0000000..ffdcbcf Binary files /dev/null and b/MBN_STOCK_N/RES/t.png differ diff --git a/MBN_STOCK_N/RES/기타.ini b/MBN_STOCK_N/RES/기타.ini new file mode 100644 index 0000000..eb24767 --- /dev/null +++ b/MBN_STOCK_N/RES/기타.ini @@ -0,0 +1,39 @@ +[Ÿŵ] +ü Ÿŵ_ǥ׷ +ڽ Ÿŵ_ǥ׷ +ڽ Ÿŵ_α׷ +ڽ Ÿŵ_׷ +ڽ Ÿŵ_ǥ׷ +ڽ Ÿŵ_α׷ +ڽ Ÿŵ_׷ + Ÿŵ ׷ +ܱ Ÿŵ ׷ + Ÿŵ ׷ + ż Ȳ_ǥ׷ +α׷ Ÿ_ǥ׷ + ŵ () +ܱ ŵ () + ŵ () + + +[5 ǥ׷] +ڽ ðѾ +ڽ · +ڽ ϶ +ڽ ׸() +ڽ 52 Ű +ڽ 52 +ڽ VI ߵ() +ڽ ܱ ż /() +ڽ ð · +ڽ ð ϶ +ڽ ðѾ +ڽ · +ڽ ϶ +ڽ ׸ +ڽ 52 Ű +ڽ 52 +ڽ VI ߵ() +ڽ ܱ ż /() +ڽ ð · +ڽ ð ϶ \ No newline at end of file diff --git a/MBN_STOCK_N/RES/업종.ini b/MBN_STOCK_N/RES/업종.ini new file mode 100644 index 0000000..5daecf4 --- /dev/null +++ b/MBN_STOCK_N/RES/업종.ini @@ -0,0 +1,44 @@ +[ڽ] +2 +α׷_5 +α׷_20 +α׷_60 +α׷_120 +α׷_240 +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷(ŷ)_5 +ĵ׷(ŷ)_20 +ĵ׷(ŷ)_60 +ĵ׷(ŷ)_120 +ĵ׷(ŷ)_240 +5 ǥ ׷ +׸׷ + + +[ڽ] +2 +α׷_5 +α׷_20 +α׷_60 +α׷_120 +α׷_240 +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷(ŷ)_5 +ĵ׷(ŷ)_20 +ĵ׷(ŷ)_60 +ĵ׷(ŷ)_120 +ĵ׷(ŷ)_240 +5 ǥ ׷ +׸׷ + +[ ] + +ؿܾ \ No newline at end of file diff --git a/MBN_STOCK_N/RES/업종_코스닥.ini b/MBN_STOCK_N/RES/업종_코스닥.ini new file mode 100644 index 0000000..c5a92d4 --- /dev/null +++ b/MBN_STOCK_N/RES/업종_코스닥.ini @@ -0,0 +1,22 @@ +[ڽ] +1 +2 +ͷ׷_5 +ͷ׷_20 +ͷ׷_60 +ͷ׷_120 +ͷ׷_240 +ĵ׷_Ϻ +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷(ŷ)_Ϻ +ĵ׷(ŷ)_5 +ĵ׷(ŷ)_20 +ĵ׷(ŷ)_60 +ĵ׷(ŷ)_120 +ĵ׷(ŷ)_240 +5 ǥ׷ + diff --git a/MBN_STOCK_N/RES/업종_코스피.ini b/MBN_STOCK_N/RES/업종_코스피.ini new file mode 100644 index 0000000..076f1b2 --- /dev/null +++ b/MBN_STOCK_N/RES/업종_코스피.ini @@ -0,0 +1,23 @@ +[ڽ] +1 +2 +ͷ׷_5 +ͷ׷_20 +ͷ׷_60 +ͷ׷_120 +ͷ׷_240 +ĵ׷_Ϻ +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷(ŷ)_Ϻ +ĵ׷(ŷ)_5 +ĵ׷(ŷ)_20 +ĵ׷(ŷ)_60 +ĵ׷(ŷ)_120 +ĵ׷(ŷ)_240 +5 ǥ׷ +׸׷ + diff --git a/MBN_STOCK_N/RES/종목.ini b/MBN_STOCK_N/RES/종목.ini new file mode 100644 index 0000000..261f25f --- /dev/null +++ b/MBN_STOCK_N/RES/종목.ini @@ -0,0 +1,34 @@ +[] +1DZ⺻_üᰡ +1DZ⺻_簡 +1DZ⺻_ð +- +1ǻ_ð +1ǻ_׸鰡 +1ǻ_PBR +1ǻ_ŷ +- +ͷ׷_5 +ͷ׷_20 +ͷ׷_60 +ͷ׷_120 +ͷ׷_240 +ĵ׷_Ϻ +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷(ŷ)_Ϻ +ĵ׷(ŷ)_5 +ĵ׷(ŷ)_20 +ĵ׷(ŷ)_60 +ĵ׷(ŷ)_120 +ĵ׷(ŷ)_240 +ĵ׷(üᰡ)_5 +ĵ׷(üᰡ)_20 +ĵ׷(üᰡ)_60 +ĵ׷(üᰡ)_120 +ĵ׷(üᰡ)_240 +ȣâ_ǥ׷ +ŷ_ǥ׷ diff --git a/MBN_STOCK_N/RES/종목_0113.ini b/MBN_STOCK_N/RES/종목_0113.ini new file mode 100644 index 0000000..e97fcfc --- /dev/null +++ b/MBN_STOCK_N/RES/종목_0113.ini @@ -0,0 +1,32 @@ +[] +1DZ⺻_üᰡ +- +1DZ⺻_簡 +1ǻ_ð +1ǻ_׸鰡 +1ǻ_PBR +1ǻ_ŷ +ͷ׷_5 +ͷ׷_20 +ͷ׷_60 +ͷ׷_120 +ͷ׷_240 +ĵ׷_Ϻ +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷(ŷ)_Ϻ +ĵ׷(ŷ)_5 +ĵ׷(ŷ)_20 +ĵ׷(ŷ)_60 +ĵ׷(ŷ)_120 +ĵ׷(ŷ)_240 +ĵ׷(üᰡ)_5 +ĵ׷(üᰡ)_20 +ĵ׷(üᰡ)_60 +ĵ׷(üᰡ)_120 +ĵ׷(üᰡ)_240 +ȣâ_ǥ׷ +ŷ_ǥ׷ diff --git a/MBN_STOCK_N/RES/종목비교.ini b/MBN_STOCK_N/RES/종목비교.ini new file mode 100644 index 0000000..a594a0e --- /dev/null +++ b/MBN_STOCK_N/RES/종목비교.ini @@ -0,0 +1,42 @@ +[] +ڽ +ڽ +ڽ200 + +KRX100 +ȯ-޷ +ȯ- +ȯ- +ȯ- +ؿ-ٿ +ؿ- +ؿ-S&P +ؿ- +ؿ- +ؿ- +ؿ-Ϻ +ؿ-ȫ +ؿ-븸 +ؿ-̰ +ؿ-± +ؿ-ʸ +ؿ-̽þ +ؿ-ε׽þ +ؿ-߱ + +[2 ü] + +[2] + +[ 񱳺м_ĵ ׷] + +[ 񱳺м_ ׷] + +[ ͷ ] +5 +1 +3 +6 +12 + + diff --git a/MBN_STOCK_N/RES/지수.ini b/MBN_STOCK_N/RES/지수.ini new file mode 100644 index 0000000..69cb877 --- /dev/null +++ b/MBN_STOCK_N/RES/지수.ini @@ -0,0 +1,182 @@ +[ֿ] +3_ֿ[ڽ, ڽ, ڽ200] +3_ֿ[ڽ, ڽ, ] +3_ü[ڽ, ڽ, ڽ200] +3_ü[ڽ, ڽ, ] + +[ڽ] +1DZ⺻_ +1DZ⺻_ +ͷ׷_5 +ͷ׷_20 +ͷ׷_60 +ͷ׷_120 +ͷ׷_240 +ĵ׷_Ϻ +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷(ŷ)_Ϻ +ĵ׷(ŷ)_5 +ĵ׷(ŷ)_20 +ĵ׷(ŷ)_60 +ĵ׷(ŷ)_120 +ĵ׷(ŷ)_240 +ĵ׷()_5 +ĵ׷()_20 +ĵ׷()_60 +ĵ׷()_120 +ĵ׷()_240 + +[ڽ] +1DZ⺻_ +1DZ⺻_ +ͷ׷_5 +ͷ׷_20 +ͷ׷_60 +ͷ׷_120 +ͷ׷_240 +ĵ׷_Ϻ +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷(ŷ)_Ϻ +ĵ׷(ŷ)_5 +ĵ׷(ŷ)_20 +ĵ׷(ŷ)_60 +ĵ׷(ŷ)_120 +ĵ׷(ŷ)_240 +ĵ׷()_5 +ĵ׷()_20 +ĵ׷()_60 +ĵ׷()_120 +ĵ׷()_240 + +[ڽ200] +1DZ⺻_ +1DZ⺻_ +ͷ׷_5 +ͷ׷_20 +ͷ׷_60 +ͷ׷_120 +ͷ׷_240 +ĵ׷_Ϻ +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷(ŷ)_Ϻ +ĵ׷(ŷ)_5 +ĵ׷(ŷ)_20 +ĵ׷(ŷ)_60 +ĵ׷(ŷ)_120 +ĵ׷(ŷ)_240 +ĵ׷()_5 +ĵ׷()_20 +ĵ׷()_60 +ĵ׷()_120 +ĵ׷()_240 + +[] +1DZ⺻_ +1DZ⺻_ +ĵ׷_Ϻ +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷()_5 +ĵ׷()_20 +ĵ׷()_60 +ĵ׷()_120 +ĵ׷()_240 + +[KRX100] +1DZ⺻_ +1DZ⺻_ +ͷ׷_5 +ͷ׷_20 +ͷ׷_60 +ͷ׷_120 +ͷ׷_240 +ĵ׷_Ϻ +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷(ŷ)_Ϻ +ĵ׷(ŷ)_5 +ĵ׷(ŷ)_20 +ĵ׷(ŷ)_60 +ĵ׷(ŷ)_120 +ĵ׷(ŷ)_240 + + +[Ÿŵ] +ü Ÿŵ_ǥ׷ +ڽ Ÿŵ_ǥ׷ +ڽ Ÿŵ_α׷ +ڽ Ÿŵ_׷ +ڽ Ÿŵ_ǥ׷ +ڽ Ÿŵ_α׷ +ڽ Ÿŵ_׷ + Ÿŵ_α׷ +ܱ Ÿŵ_α׷ + Ÿŵ_α׷ + ż Ȳ_ǥ׷ +α׷ Ÿ_ǥ׷ + ŵ () +ܱ ŵ () + ŵ () + + +[5 ǥ׷] +ڽ ðѾ +ڽ ðѾ +ڽ · +ڽ ϶ +ڽ 52 Ű +ڽ 52 +ڽ ð · +ڽ ð ϶ +ڽ ðѾ +ڽ ðѾ +ڽ · +ڽ ϶ +ڽ 52 Ű +ڽ 52 +ڽ ð · +ڽ ð ϶ +ڽ 200 +ETF +VI ߵ() + + +[12 ǥ׷] +ڽ ðѾ +ڽ ðѾ +ڽ · +ڽ ϶ +ڽ 52 Ű +ڽ 52 +ڽ ð · +ڽ ð ϶ +ڽ ðѾ +ڽ ðѾ +ڽ · +ڽ ϶ +ڽ 52 Ű +ڽ 52 +ڽ ð · +ڽ ð ϶ +ڽ 200 +ETF +VI ߵ() + diff --git a/MBN_STOCK_N/RES/지수_0318.ini b/MBN_STOCK_N/RES/지수_0318.ini new file mode 100644 index 0000000..4c1a18e --- /dev/null +++ b/MBN_STOCK_N/RES/지수_0318.ini @@ -0,0 +1,158 @@ +[ֿ] +3_ֿ[ڽ, ڽ, ڽ200] +3_ֿ[ڽ, ڽ, ] +3_ü[ڽ, ڽ, ڽ200] +3_ü[ڽ, ڽ, ] + +[ڽ] +1DZ⺻_ +1DZ⺻_ +ͷ׷_5 +ͷ׷_20 +ͷ׷_60 +ͷ׷_120 +ͷ׷_240 +ĵ׷_Ϻ +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷(ŷ)_Ϻ +ĵ׷(ŷ)_5 +ĵ׷(ŷ)_20 +ĵ׷(ŷ)_60 +ĵ׷(ŷ)_120 +ĵ׷(ŷ)_240 +ĵ׷()_5 +ĵ׷()_20 +ĵ׷()_60 +ĵ׷()_120 +ĵ׷()_240 + +[ڽ] +1DZ⺻_ +1DZ⺻_ +ͷ׷_5 +ͷ׷_20 +ͷ׷_60 +ͷ׷_120 +ͷ׷_240 +ĵ׷_Ϻ +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷(ŷ)_Ϻ +ĵ׷(ŷ)_5 +ĵ׷(ŷ)_20 +ĵ׷(ŷ)_60 +ĵ׷(ŷ)_120 +ĵ׷(ŷ)_240 +ĵ׷()_5 +ĵ׷()_20 +ĵ׷()_60 +ĵ׷()_120 +ĵ׷()_240 + +[ڽ200] +1DZ⺻_ +1DZ⺻_ +ͷ׷_5 +ͷ׷_20 +ͷ׷_60 +ͷ׷_120 +ͷ׷_240 +ĵ׷_Ϻ +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷(ŷ)_Ϻ +ĵ׷(ŷ)_5 +ĵ׷(ŷ)_20 +ĵ׷(ŷ)_60 +ĵ׷(ŷ)_120 +ĵ׷(ŷ)_240 +ĵ׷()_5 +ĵ׷()_20 +ĵ׷()_60 +ĵ׷()_120 +ĵ׷()_240 + +[] +1DZ⺻_ +1DZ⺻_ +ĵ׷_Ϻ +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷()_5 +ĵ׷()_20 +ĵ׷()_60 +ĵ׷()_120 +ĵ׷()_240 + +[KRX100] +1DZ⺻_ +1DZ⺻_ +ͷ׷_5 +ͷ׷_20 +ͷ׷_60 +ͷ׷_120 +ͷ׷_240 +ĵ׷_Ϻ +ĵ׷_5 +ĵ׷_20 +ĵ׷_60 +ĵ׷_120 +ĵ׷_240 +ĵ׷(ŷ)_Ϻ +ĵ׷(ŷ)_5 +ĵ׷(ŷ)_20 +ĵ׷(ŷ)_60 +ĵ׷(ŷ)_120 +ĵ׷(ŷ)_240 + + +[Ÿŵ] +ü Ÿŵ_ǥ׷ +ڽ Ÿŵ_ǥ׷ +ڽ Ÿŵ_α׷ +ڽ Ÿŵ_׷ +ڽ Ÿŵ_ǥ׷ +ڽ Ÿŵ_α׷ +ڽ Ÿŵ_׷ + Ÿŵ_α׷ +ܱ Ÿŵ_α׷ + Ÿŵ_α׷ + ż Ȳ_ǥ׷ +α׷ Ÿ_ǥ׷ + ŵ () +ܱ ŵ () + ŵ () + + +[5 ǥ׷] +ڽ ðѾ +ڽ ðѾ +ڽ · +ڽ ϶ +ڽ 52 Ű +ڽ 52 +ڽ ð · +ڽ ð ϶ +ڽ ðѾ +ڽ ðѾ +ڽ · +ڽ ϶ +ڽ 52 Ű +ڽ 52 +ڽ ð · +ڽ ð ϶ +VI ߵ() + diff --git a/MBN_STOCK_N/RES/해외.ini b/MBN_STOCK_N/RES/해외.ini new file mode 100644 index 0000000..37a785e --- /dev/null +++ b/MBN_STOCK_N/RES/해외.ini @@ -0,0 +1,89 @@ +[1DZ⺻] +ٿ + +S&P + + + + +߱ +ȫ ׼ +븸 +̰ +± +ʸ +̽þ +ε׽þ +BDI +Ҹ + + + + + +Ŀ +ھ + +() + +() + +ö + +õ + +ȶ + +ƿ +ּ + +ȭ(ȭ) + + + + + +[2-] +깰[, ȭ(ȭ)] +[ , ] +[ , ] + +[3] +̱ [ٿ, , S&P] +ȭ [ȫ׼, , 븸] + [, , ] +ƽþ [, 븸, Ϻ] +̱ä[2, 3, 5] +äDZݸ(CD,CP,ݱݸ) +[ι, 귻Ʈ, WTI] +[, , ] +[, , ] +깰[Ҹ, , ] +깰[, , ] +깰[Ŀ, ھ, ] +깰[(), , ()] +[, ö, ] +[õ, , ȶ] +[, ƿ, ּ] + +[۷ι ] +۷ι +ƽþ +̱ + + +[̹ ׷] +̱ ٿ +̱ +̱ S&P +߱ +Ϻ + ι + WTI + 귻Ʈ + + +[̱] +ٿ + +S&P \ No newline at end of file diff --git a/MBN_STOCK_N/RES/환율.ini b/MBN_STOCK_N/RES/환율.ini new file mode 100644 index 0000000..e84056d --- /dev/null +++ b/MBN_STOCK_N/RES/환율.ini @@ -0,0 +1,55 @@ +[1DZ⺻] +޷ + + + + + +[3] +ؿȯ[޷, ȭ޷, δ޷] +ȯ[޷, , ] + + +[ͷ ׷] +޷_5 +޷_20 +޷_60 +޷_120 +޷_240 +_5 +_20 +_60 +_120 +_240 +_5 +_20 +_60 +_120 +_240 +_5 +_20 +_60 +_120 +_240 + +[ ׷] +޷_5 +޷_20 +޷_60 +޷_120 +޷_240 +_5 +_20 +_60 +_120 +_240 +_5 +_20 +_60 +_120 +_240 +_5 +_20 +_60 +_120 +_240 \ No newline at end of file diff --git a/MBN_STOCK_N/Scene/s5001.cs b/MBN_STOCK_N/Scene/s5001.cs new file mode 100644 index 0000000..6398193 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5001.cs @@ -0,0 +1,821 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; +using System.Diagnostics.Eventing.Reader; +using System.Reflection; + +namespace MBN_STOCK_N +{ + class s5001 //1열판 기본 + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + string kiho = string.Empty; + string value = string.Empty; + string txt = string.Empty; + + + string m_sub = string.Empty; + string m_code = string.Empty; + + public s5001(Form frm, int idx, string jname, string sub, string code) + { + try + { + // 현재가 + // 예상체결가 + // 시간외단일가 + DataSet ds = null; + string query = string.Empty; + m_code = code; m_sub = sub; + + 국내지수종류 recvDataType = 국내지수종류.KOSPI; + 판1그래프데이터지수류 recvDataList = 판1그래프데이터지수류.현재지수; + + + mf = (MainForm)frm; + + //================<<시장 mark 숨김>>================= + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(0); + //=================================================== + + string sql = string.Empty; + string value = string.Empty; + int idx1 = 0; int idx2 = 0; int idx3 = 0; int idx4 = 0; int idx5 = 0; + + if (jname == "BDI 지수" || jname == "소맥" || jname == "옥수수" || jname == "밀" || jname == "대두" || jname == "콩" || + jname == "현미" || jname == "커피" || jname == "코코아" || jname == "설탕" || jname == "생우(소)" || jname == "비육우" || + jname == "돈육(돼지)" || jname == "구리" || jname == "철광석" || jname == "니켈" || jname == "천연가스" || jname == "백금" || + jname == "팔라듐" || jname == "납" || jname == "아연" || jname == "주석" || jname == "원면" || jname == "목화(면화)" || jname == "국제 금" || + jname == "국제 은" || jname == "국내 금" || jname == "국내 은") + { + if (jname == "BDI 지수") + { + sql = "select a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, "; + sql = sql + "ABS(round(b.f_diff, 2)) part_chg, "; + sql = sql + "case when to_number(b.f_diff) > 0 then '+' "; + sql = sql + "when to_number(b.f_diff) < 0 then '-' else '' end sign, "; + sql = sql + "round(b.f_rate, 2) rate "; + sql = sql + "from t_world_future_master a, t_world_future_sise b "; + sql = sql + "where a.f_symb = b.f_symb "; + sql = sql + "and a.f_symb in ('MK@BDI') "; + mf.m_db.ViewQuery(mf.dataGridView1, sql); + + kiho = mf.dataGridView1.Rows[0].Cells[3].Value.ToString().Trim(); + if (kiho == "") + { + kiho = "보합"; + } + else if (kiho == " ") + { + kiho = "보합"; + } + + + value = kiho; + + if (value.Equals("상승") || value.Equals("+")) { txt = "1_"; } + else if (value.Equals("보합") || value.Equals("")) { txt = "2_"; } + else if (value.Equals("하락") || value.Equals("-")) { txt = "3_"; } + else { txt = "2_"; } + + mf.KAScene.GetObject("title").SetValue(mf.dataGridView1.Rows[0].Cells[0].Value.ToString()); + mf.KAObject = mf.KAScene.GetObject("price"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[1].Value.ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + txt); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[2].Value.ToString()))); + + mf.KAObject = mf.KAScene.GetObject("rate" + txt); + mf.KAObject.SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[4].Value.ToString()).ToString("##0.00")); + + mf.KAScene.GetObject("wonText" + txt).SetValue(""); + mf.KAScene.GetObject("unitText").SetValue("단위 : 달러"); + + mf.setObjectStockChange(mf.KAObject, kiho, 0); + mf.m_chkdata = true; + return; + + + } + else if (jname == "소맥" || jname == "옥수수" || jname == "밀") + { + if (jname == "소맥") + value = "MK@WHEAT"; + else if (jname == "옥수수") + value = "CBT$CORN"; + else if (jname == "밀") + value = "CBT@WHEAT"; + + + + } + else if (jname == "대두" || jname == "콩" || jname == "현미") + { + if (jname == "대두") + value = "CBT@SOYBEAN"; + else if (jname == "콩") + value = "MK@BEAN"; + else if (jname == "현미") + value = "MK@RICE"; + + } + else if (jname == "커피" || jname == "코코아" || jname == "설탕") + { + if (jname == "커피") + value = "NYB@KC"; + else if (jname == "코코아") + value = "MK@COCOA"; + else if (jname == "설탕") + value = "NYB@SB"; + + + } + else if (jname == "원면" || jname == "목화(면화)") + { + if (jname == "원면") + value = "MK@COTTON"; + else if (jname == "목화(면화)") + value = "NYB@CT"; + + } + else if (jname == "생우(소)" || jname == "비육우" || jname == "돈육(돼지)") + { + if (jname == "생우(소)") + value = "MK@LC"; + else if (jname == "비육우") + value = "MK@FC"; + else if (jname == "돈육(돼지)") + value = "MK@PORK"; + + } + else if (jname == "구리" || jname == "철광석" || jname == "니켈") + { + if (jname == "구리") + value = "LME@CDY"; + else if (jname == "철광석") + value = "MK@IRON"; + else if (jname == "니켈") + value = "LME@NDY"; + + } + else if (jname == "천연가스" || jname == "백금" || jname == "팔라듐") + { + if (jname == "천연가스") + value = "NYM@NG"; + else if (jname == "백금") + value = "NYM@PL"; + else if (jname == "팔라듐") + value = "NYM@PA"; + + } + else if (jname == "납" || jname == "아연" || jname == "주석") + { + if (jname == "납") + value = "MK@PDA"; + else if (jname == "아연") + value = "MK@ZDA"; + else if (jname == "주석") + value = "LME@SDY"; + + } + else if (jname == "국제 금" || jname == "국제 은" || jname == "국내 금" || jname == "국내 은") + { + if (jname == "국제 금") + value = "COM@GC"; + else if (jname == "국제 은") + value = "COM@SI"; + else if (jname == "국내 금") + value = "MK@GC"; + else if (jname == "국내 은") + value = "MK@SI"; + + } + + sql = sql + "select decode(a.f_symb, '" + value + "', 1) ss, "; + sql = sql + "a.f_input_name name, ABS(round(b.f_last, 2)) part_idx, "; + sql = sql + "round(b.f_diff, 2) part_chg, "; + sql = sql + "case when to_number(b.f_diff) > 0 then '+' "; + sql = sql + "when to_number(b.f_diff) < 0 then '-' else '' end sign, "; + sql = sql + "round(b.f_rate, 2) rate "; + sql = sql + "from t_world_future_master a, t_world_future_sise b "; + sql = sql + "where a.f_symb = b.f_symb "; + sql = sql + "and a.f_symb in ('" + value + "') "; + sql = sql + "order by ss "; + + idx1 = 4; idx2 = 2; idx3 = 3; idx4 = 5; idx5 = 1; + + mf.m_db.ViewQuery(mf.dataGridView1, sql); + + kiho = mf.dataGridView1.Rows[0].Cells[idx1].Value.ToString().Trim(); + + if (kiho == "") + { + kiho = "보합"; + } + else if (kiho == " ") + { + kiho = "보합"; + } + + value = kiho; + + if (value.Equals("상승") || value.Equals("+")) { txt = "1_"; } + else if (value.Equals("보합") || value.Equals("")) { txt = "2_"; } + else if (value.Equals("하락") || value.Equals("-")) { txt = "3_"; } + else { txt = "2_"; } + + mf.KAScene.GetObject("title").SetValue(mf.dataGridView1.Rows[0].Cells[idx5].Value.ToString()); + mf.KAObject = mf.KAScene.GetObject("price"); + mf.KAObject.SetValue(mf.dataGridView1.Rows[0].Cells[idx2].Value.ToString()); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + txt); + //mf.KAObject.SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[idx3].Value.ToString()))); + + string priceC = mf.dataGridView1.Rows[0].Cells[idx3].Value.ToString(); + + if (priceC.Substring(0, 1) == "-") + mf.KAObject.SetValue(priceC.Substring(1)); + else + mf.KAObject.SetValue(priceC); + + mf.KAObject = mf.KAScene.GetObject("rate" + txt); + mf.KAObject.SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[idx4].Value.ToString()).ToString("##0.00")); + + mf.KAScene.GetObject("wonText" + txt).SetValue(""); + mf.KAScene.GetObject("unitText").SetValue("단위 : 달러"); + + mf.setObjectStockChange(mf.KAObject, kiho, 0); + mf.m_chkdata = true; + return; + + + } + + if (idx == 0)//지수 (코스피, 코스닥, 코스피 200, 선물, KRX 100 + { + if (sub == "예상지수") + { + recvDataList = 판1그래프데이터지수류.예상지수; + } + else + recvDataList = 판1그래프데이터지수류.현재지수; + + + if (code == "코스피") + recvDataType = 국내지수종류.KOSPI; + else if (code == "코스닥") + recvDataType = 국내지수종류.KOSDAQ; + else if (code == "코스피200") + recvDataType = 국내지수종류.KOSPI200; + else if (code == "선물") + recvDataType = 국내지수종류.선물; + else if (code == "KRX100") + recvDataType = 국내지수종류.KRX100; + + ds = DataManager.getInstance().createPlateData(recvDataList, recvDataType); + mf.dataGridView1.DataSource = ds.Tables[0]; + + Data_View(0); + + } + else if (idx == 1) //해외지수 + { + if (jname == "다우") + ds = DataManager.getInstance().createPlateData(해외지수종류.다우, "DJI@DJI"); + else if (jname == "나스닥") + ds = DataManager.getInstance().createPlateData(해외지수종류.나스닥, "NAS@IXIC"); + else if (jname == "S&P") + ds = DataManager.getInstance().createPlateData(해외지수종류.SNP, "SPI@SPX"); + else if (jname == "독일") + ds = DataManager.getInstance().createPlateData(해외지수종류.독일, "XTR@DAX30"); + else if (jname == "영국") + ds = DataManager.getInstance().createPlateData(해외지수종류.영국, "LNS@FTSE100"); + else if (jname == "프랑스") + ds = DataManager.getInstance().createPlateData(해외지수종류.프랑스, "PAS@CAC40"); + else if (jname == "니케이") + ds = DataManager.getInstance().createPlateData(해외지수종류.니케이, "NII@NI225"); + else if (jname == "중국 상해") + ds = DataManager.getInstance().createPlateData(해외지수종류.중국상해, "SHS@000001"); + else if (jname == "홍콩 항셍") + ds = DataManager.getInstance().createPlateData(해외지수종류.홍콩항셍, "HSI@HSI"); + else if (jname == "대만 가권") + ds = DataManager.getInstance().createPlateData(해외지수종류.대만가권, "TWS@TI01"); + else if (jname == "싱가포르 지수") + ds = DataManager.getInstance().createPlateData(해외지수종류.싱가포르지수, "SGI@STI"); + else if (jname == "태국 지수") + ds = DataManager.getInstance().createPlateData(해외지수종류.태국지수, "THI@SET"); + else if (jname == "필리핀 지수") + ds = DataManager.getInstance().createPlateData(해외지수종류.필리핀, "PHI@COMP"); + else if (jname == "말레이시아 지수") + ds = DataManager.getInstance().createPlateData(해외지수종류.말레이시아, "MYI@JKSE"); + else if (jname == "인도네시아 지수") + ds = DataManager.getInstance().createPlateData(해외지수종류.인도네시아, "IDI@KLSE"); + + mf.dataGridView1.DataSource = ds.Tables[0]; + + Data_View(0); + } + else if (idx == 2) + { + if (jname == "원달러") + ds = DataManager.getInstance().createPlateData(원환율.원달러); + else if (jname == "원엔") + ds = DataManager.getInstance().createPlateData(원환율.원엔); + else if (jname == "원위엔") + ds = DataManager.getInstance().createPlateData(원환율.원위엔); + else if (jname == "원유로") + ds = DataManager.getInstance().createPlateData(원환율.원유로); + mf.dataGridView1.DataSource = ds.Tables[0]; + + Data_View(1); + } + + + else if (idx == 3) + { + if (code.Contains("코스피_NXT")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.지수업종, 국내시장종류.NXT_KOSPI, jname); + else if (code.Contains("코스닥_NXT")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.지수업종, 국내시장종류.NXT_KOSDAQ, jname); + else if (code.Contains("코스피")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.지수업종, 국내시장종류.KOSPI, jname); + else if (code.Contains("코스닥")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.지수업종, 국내시장종류.KOSDAQ, jname); + + //if (code.Contains("코스피")) + // ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.지수업종, 국내시장종류.KOSPI, jname); + //else + // ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.지수업종, 국내시장종류.KOSDAQ, jname); + mf.dataGridView1.DataSource = ds.Tables[0]; + + Data_View(0); + } + + else if (idx == 5) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터해외류.해외업종, jname); + mf.dataGridView1.DataSource = ds.Tables[0]; + Data_View(0); + + } + else if (idx == 6) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터해외류.해외종목, jname); + mf.dataGridView1.DataSource = ds.Tables[0]; + Data_View(0); + } + + else if (idx == 4) + { + mf.KAScene.GetObject("unitText").SetValue("단위 : 원"); + if (sub == "예상체결가") + { + if (code == "코스피") + { + //query = "SELECT DISTINCT b.f_stock_code stock_code, b.f_stock_nickname nickname, b.F_STOCK_WANNAME wanname, a.f_fore_price curr_price, "; + //query = query + "a.f_fore_vol net_vol, c.f_final_price final_price, "; + //query = query + "a.f_fore_price - c.f_final_price net_chg, a.f_net_chg, "; + //query = query + "case when(a.f_fore_price - c.f_final_price) > 0 then '+' "; + //query = query + "when(a.f_fore_price - c.f_final_price) = 0 then '' "; + //query = query + "when(a.f_fore_price - c.f_final_price) < 0 then '-' end chg_type, "; + //query = query + "round(((a.f_fore_price - c.f_final_price) / c.f_final_price) * 100, 2) rate "; + //query = query + "FROM t_online1 a, t_stock b, t_batch_day c "; + //query = query + "WHERE b.f_stock_code = a.f_stock_code "; + //query = query + "AND c.f_stock_code = a.f_stock_code "; + //query = query + "AND b.f_mkt_halt = 'N' "; + //query = query + "and b.f_STOCK_wanname = '" + jname + "' "; + //query = query + "and a.f_fore_price <> 0 "; + + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목예상체결가, 국내시장종류.KOSPI, jname); + + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + else if (code == "코스닥") + { + //query = "SELECT DISTINCT b.f_stock_code stock_code, b.f_stock_nickname nickname, b.F_STOCK_WANNAME wanname, a.f_fore_price curr_price, "; + //query = query + "a.f_fore_vol net_vol, c.f_final_price final_price, "; + //query = query + "a.f_fore_price - c.f_final_price net_chg, a.f_net_chg, "; + //query = query + "case when(a.f_fore_price - c.f_final_price) > 0 then '+' "; + //query = query + "when(a.f_fore_price - c.f_final_price) = 0 then '' "; + //query = query + "when(a.f_fore_price - c.f_final_price) < 0 then '-' end chg_type, "; + //query = query + "round(((a.f_fore_price - c.f_final_price) / c.f_final_price) * 100, 2) rate "; + //query = query + "FROM t_kosdaq_online1 a, t_kosdaq_stock b, t_kosdaq_batch_day c "; + //query = query + "WHERE a.f_stock_code = b.f_stock_code "; + //query = query + "AND b.f_mkt_halt = 'N' "; + //query = query + "AND c.f_stock_code = b.f_stock_code "; + //query = query + "and b.f_stock_wanname = '" + jname + "' "; + //query = query + "and a.f_fore_price <> 0 "; + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목예상체결가, 국내시장종류.KOSDAQ, jname); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + //m_db.ViewQuery(mf.dataGridView1, query); + mf.KAScene.GetObject("title").SetValue(jname + " " + sub); + + if (mf.dataGridView1.RowCount <= 1) + { + mf.m_chkdata = false; + //mf.KAScene.GetObject("price").SetValue(""); + //mf.KAScene.GetObject("changePrice").SetValue(""); + //mf.KAScene.GetObject("rate").SetValue(""); + //mf.KAScene.GetObject("wonText").SetValue(""); + + //mf.setObjectStockChange(mf.KAObject, "보합"); + } + else + + { + kiho = mf.dataGridView1.Rows[0].Cells[8].Value.ToString(); + if (kiho == "") + { + kiho = "보합"; + } + else if (kiho == " ") + { + kiho = "보합"; + } + + value = kiho; + + if (value.Equals("상한")) { txt = "1_"; } + else if (value.Equals("상승") || value.Equals("+")) { txt = "1_"; } + else if (value.Equals("보합") || value.Equals("")) { txt = "2_"; } + else if (value.Equals("하락") || value.Equals("-")) { txt = "3_"; } + else if (value.Equals("하한")) { txt = "3_"; } + + mf.KAObject = mf.KAScene.GetObject("price"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[3].Value.ToString()))); + + + + + if (mf.dataGridView1.Rows[0].Cells[8].Value.ToString() == "-") + { + mf.KAObject = mf.KAScene.GetObject("changePrice" + txt); + + if (mf.dataGridView1.Rows[0].Cells[6].Value.ToString().Substring(0, 1) == "-") + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[6].Value.ToString().Substring(1)))); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[6].Value.ToString()))); + + mf.KAObject = mf.KAScene.GetObject("rate" + txt); + + if (mf.dataGridView1.Rows[0].Cells[9].Value.ToString().Substring(0, 1) == "-") + mf.KAObject.SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[9].Value.ToString()).ToString("##0.00")); + else + mf.KAObject.SetValue("-" + Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[9].Value.ToString()).ToString("##0.00")); + } + + else + { + mf.KAObject = mf.KAScene.GetObject("changePrice" + txt); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[6].Value.ToString()))); + + + mf.KAObject = mf.KAScene.GetObject("rate" + txt); + mf.KAObject.SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[9].Value.ToString()).ToString("##0.00")); + } + + + mf.KAScene.GetObject("wonText" + txt).SetValue(""); + mf.KAScene.GetObject("unitText").SetValue("단위 : 원"); + + + mf.m_chkdata = true; + } + + } + else if (sub == "시간외단일가") + { + mf.KAScene.GetObject("title").SetValue(jname); + + if (sub.Contains("거래정지")) + { + if (code == "코스피") + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목시간외단일가, 국내시장종류.거래정지, jname); + } + else + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목시간외단일가, 국내시장종류.거래정지K, jname); + } + mf.dataGridView1.DataSource = ds.Tables[0]; + } + else + { + if (code == "코스피") + { + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목시간외단일가, 국내시장종류.KOSPI, jname); + + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + else + { + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목시간외단일가, 국내시장종류.KOSDAQ, jname); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + + } + + mf.KAScene.GetObject("title").SetValue(jname + " " + sub); + + if (mf.dataGridView1.RowCount <= 1) + { + mf.m_chkdata = false; + } + else + { + kiho = ds.Tables[0].Rows[0][3].ToString(); + if (kiho == "") + { + kiho = "보합"; + } + else if (kiho == " ") + { + kiho = "보합"; + } + value = kiho; + + if (value.Equals("상한")) { txt = "1_"; } + else if (value.Equals("상승") || value.Equals("+")) { txt = "1_"; } + else if (value.Equals("보합") || value.Equals("")) { txt = "2_"; } + else if (value.Equals("하락") || value.Equals("-")) { txt = "3_"; } + else if (value.Equals("하한")) { txt = "3_"; } + + mf.KAObject = mf.KAScene.GetObject("price"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[4].Value.ToString()))); // 현재가 + + mf.KAObject = mf.KAScene.GetObject("changePrice" + txt); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[2].Value.ToString()))); // 등락 + + mf.KAObject = mf.KAScene.GetObject("rate" + txt); + mf.KAObject.SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[5].Value.ToString()).ToString("##0.00")); // 등락율 + + mf.KAScene.GetObject("wonText" + txt).SetValue(""); + mf.KAScene.GetObject("unitText").SetValue("단위 : 원"); + + mf.m_chkdata = true; + + } + } + else // 현재가 + { +// mf.KAScene.GetObject("title").SetValue(jname); + mf.KAScene.GetObject("title").SetValue(jname.Replace("(NXT)", "")); + + if (sub.Contains("거래정지")) + { + if (code == "코스피") + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.거래정지, jname); + } + else if(code == "코스닥") + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.거래정지K, jname); + } + mf.dataGridView1.DataSource = ds.Tables[0]; + } + else + { + if (code == "코스피") + { + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.KOSPI, jname); + + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + else if (code == "코스닥") + { + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.KOSDAQ, jname); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + else if (code == "코스피_NXT") + { + foreach (DataRow r in mf.mDTNxtkospi.Rows) + { + if (r[0].Equals(jname)) + { +// ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.NXT_KOSPI, jname); + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.NXT_KOSPI, jname.Replace("(NXT)", "")); + + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + else if (code == "코스닥_NXT") + { + foreach (DataRow r in mf.mDTNxtkosdaq.Rows) + { + if (r[0].Equals(jname)) + { +// ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.NXT_KOSPI, jname); + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.NXT_KOSDAQ, jname.Replace("(NXT)", "")); + + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + } + + if (mf.dataGridView1.RowCount <= 1) + { + mf.m_chkdata = false; + } + else + { + kiho = ds.Tables[0].Rows[0][4].ToString(); + if (kiho == "") + { + kiho = "보합"; + } + else if (kiho == " ") + { + kiho = "보합"; + } + value = kiho; + + if (value.Equals("상한")) { txt = "1_"; } + else if (value.Equals("상승") || value.Equals("+")) { txt = "1_"; } + else if (value.Equals("보합") || value.Equals("")) { txt = "2_"; } + else if (value.Equals("하락") || value.Equals("-")) { txt = "3_"; } + else if (value.Equals("하한")) { txt = "3_"; } + + mf.KAObject = mf.KAScene.GetObject("price"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0][2].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + txt); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0][3].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("rate" + txt); + mf.KAObject.SetValue(Convert.ToDouble(ds.Tables[0].Rows[0][6].ToString()).ToString("##0.00")); + + mf.KAScene.GetObject("wonText" + txt).SetValue(""); + mf.KAScene.GetObject("unitText").SetValue("단위 : 원"); + + if ((code == "코스피_NXT") || (code == "코스닥_NXT")) + { + string m_file = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + + if (DateTime.Now.Hour <= 12) // 오전 + { + m_file = m_file + "\\Cuts\\Images\\프리마켓.png"; + // m_file = m_file + "프리마켓.png"; + } + else + { + m_file = m_file + "\\Cuts\\Images\\애프터마켓.png"; + //m_file = "애프터마켓.png"; + } + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetValue(m_file); + + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(0); + } + + mf.m_chkdata = true; + } + + } + } + + if (mf.m_chkdata) + mf.setObjectStockChange(mf.KAObject, kiho, 0); + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + + private void Data_View(int idx) + { + int ix1 = 0; int ix2 = 0; int ix3 = 0; int ix4 = 0; int ix5 = 0; + + if (idx == 0) + { + ix1 = 0; ix2 = 1; ix3 = 2; ix4 = 3; ix5 = 4; + if (m_code == "선물") + if (m_sub != "예상지수") + ix5 = 7; + } + else + { + ix1 = 1; ix2 = 2; ix3 = 4; ix4 = 3; ix5 = 5; + } + + if (mf.dataGridView1.RowCount <= 1) + mf.m_chkdata = false; + else + { + kiho = mf.dataGridView1.Rows[0].Cells[ix3].Value.ToString(); + + if (kiho == "") + { + kiho = "보합"; + } + else if (kiho == " ") + { + kiho = "보합"; + } + + value = kiho; + + if (value.Equals("상한")) { txt = "1_"; } + else if (value.Equals("상승") || value.Equals("+")) { txt = "1_"; } + else if (value.Equals("보합") || value.Equals("")) { txt = "2_"; } + else if (value.Equals("하락") || value.Equals("-")) { txt = "3_"; } + else if (value.Equals("하한")) { txt = "3_"; } + + if (m_code.Contains("업종_코스피")) + mf.KAScene.GetObject("title").SetValue("코스피 - " + mf.dataGridView1.Rows[0].Cells[ix1].Value.ToString()); + else if (m_code.Contains("업종_코스닥")) + mf.KAScene.GetObject("title").SetValue("코스닥 - " + mf.dataGridView1.Rows[0].Cells[ix1].Value.ToString()); + else + mf.KAScene.GetObject("title").SetValue(mf.dataGridView1.Rows[0].Cells[ix1].Value.ToString()); + + mf.KAScene.GetObject("price").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix2].Value.ToString()).ToString("#,##0.00")); + + if (mf.dataGridView1.Rows[0].Cells[ix4].Value.ToString().Substring(0, 1) == "-") + mf.KAScene.GetObject("changePrice" + txt).SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4].Value.ToString().Substring(1)).ToString("#,##0.00")); + else + mf.KAScene.GetObject("changePrice" + txt).SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4].Value.ToString()).ToString("#,##0.00")); + + if (mf.dataGridView1.Rows[0].Cells[ix3].Value.ToString() == "-") + { + if (mf.dataGridView1.Rows[0].Cells[ix5].Value.ToString().Substring(0, 1) == "-") + mf.KAScene.GetObject("rate" + txt).SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5].Value.ToString()).ToString("#,##0.00")); + else + mf.KAScene.GetObject("rate" + txt).SetValue("-" + Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5].Value.ToString()).ToString("#,##0.00")); + } + + else + mf.KAScene.GetObject("rate" + txt).SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5].Value.ToString()).ToString("#,##0.00")); + + mf.KAScene.GetObject("wonText" + txt).SetValue(""); + if (idx == 0) + { + if (m_code == "해외종목") + mf.KAScene.GetObject("unitText").SetValue("단위 : 달러"); + else + mf.KAScene.GetObject("unitText").SetValue("단위 : p"); + } + + else + mf.KAScene.GetObject("unitText").SetValue("단위 : 원"); + + + + mf.m_chkdata = true; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s5006.cs b/MBN_STOCK_N/Scene/s5006.cs new file mode 100644 index 0000000..cb1492c --- /dev/null +++ b/MBN_STOCK_N/Scene/s5006.cs @@ -0,0 +1,285 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5006 //1열판 상세 시가 + { + MainForm mf = null; + + public s5006(Form frm, string jname, string sub) + { + try + { + mf = (MainForm)frm; + string kiho = string.Empty; + string value = string.Empty; + string txt = string.Empty; + mf.KAScene.GetObject("title").SetValue(jname); + + + //----back 바뀌는지 test + // mf.KAScene.SetBackgroundVideo(mf.T2S_FOLDER_PATH + "\\video\\큐브배경.vrv", 1, true); + mf.KAScene.SetBackgroundVideo("E:\\매일경제TV\\비주얼리서치 소스\\MBN_STOCK_N\\MBN_STOCK_N\\bin\\Debug\\Cuts\\Video\\큐브배경.vrv", 1, 1); + //------------------- + + DataSet ds = null; + + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(국내시장종류.KOSPI, 상세판데이터분류.시가, r[1].ToString()); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(국내시장종류.KOSDAQ, 상세판데이터분류.시가, r[1].ToString()); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + + foreach (DataRow r in mf.mDTNxtkospi.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateNxtData(국내시장종류.NXT_KOSPI, 상세판데이터분류.시가, r[1].ToString()); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + foreach (DataRow r in mf.mDTNxtkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateNxtData(국내시장종류.NXT_KOSDAQ, 상세판데이터분류.시가, r[1].ToString()); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + kiho = ds.Tables[0].Rows[0]["CHG_TYPE"].ToString(); + value = kiho; + //kiho = ds.Tables[0].Rows[0]["RATE"].ToString(); + + //if (kiho == "0") + //{ + // value = ""; + //} + //else + //{ + // if (kiho.Substring(0,1) == "-") + // { + // value = "-"; + // } + // else + // { + // value = "+"; + + // } + //} + + + + if (value.Equals("상한")) { txt = "1_"; } + else if (value.Equals("상승") || value.Equals("+")) { txt = "1_"; } + else if (value.Equals("보합") || value.Equals("")) { txt = "2_"; } + else if (value.Equals("하락") || value.Equals("-")) { txt = "3_"; } + else if (value.Equals("하한")) { txt = "3_"; } + + mf.KAScene.GetObject("price").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["CURR_PRICE"].ToString()))); + mf.KAScene.GetObject("changePrice" + txt).SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["NET_CHG"].ToString()))); + + mf.KAScene.GetObject("rate" + txt).SetValue(Convert.ToDouble(ds.Tables[0].Rows[0]["RATE"].ToString()).ToString("##0.00")); + + mf.KAScene.GetObject("price1").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["INIT_PRICE"].ToString()))); + mf.KAScene.GetObject("ratio1").SetValue(Convert.ToDouble(ds.Tables[0].Rows[0]["INIT_RATE"].ToString()).ToString("##0.00")); + + + mf.KAScene.GetObject("price2").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["HIGH_PRICE"].ToString()))); + mf.KAScene.GetObject("ratio2").SetValue(Convert.ToDouble(ds.Tables[0].Rows[0]["HIGH_RATE"].ToString()).ToString("##0.00")); + + + mf.KAScene.GetObject("price3").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["LOW_PRICE"].ToString()))); + mf.KAScene.GetObject("ratio3").SetValue(Convert.ToDouble(ds.Tables[0].Rows[0]["LOW_RATE"].ToString()).ToString("##0.00")); + + double dd = Convert.ToDouble(ds.Tables[0].Rows[0]["RATE"].ToString()); + + mf.KAScene.GetObject("upup").SetVisible(0); + mf.KAScene.GetObject("up").SetVisible(0); + mf.KAScene.GetObject("flat").SetVisible(0); + mf.KAScene.GetObject("down").SetVisible(0); + mf.KAScene.GetObject("downdown").SetVisible(0); + + //kiho = "상한"; + + mf.setObjectStockChange(mf.KAObject, kiho, 0); + //mf.setObjectStockChange(mf.KAObject, value, 0); + //if (dd > 0) + //{ + // mf.KAScene.GetObject("up").SetVisible(1); + // mf.KAScene.GetObject("bg").SetFaceColor(170, 0, 0, 255); + + // mf.KAScene.GetObject("changePrice").SetFaceColor(170, 0, 0, 255); + // mf.KAScene.GetObject("rate").SetFaceColor(170, 0, 0, 255); + // mf.KAScene.GetObject("percent").SetFaceColor(170, 0, 0, 255); + //} + //else if (dd < 0) + //{ + // mf.KAScene.GetObject("down").SetVisible(1); + + // mf.KAScene.GetObject("bg").SetFaceColor(15, 99, 189, 255); + // mf.KAScene.GetObject("changePrice").SetFaceColor(15, 99, 189, 255); + // mf.KAScene.GetObject("rate").SetFaceColor(15, 99, 189, 255); + // mf.KAScene.GetObject("percent").SetFaceColor(15, 99, 189, 255); + //} + //else + //{ + // mf.KAScene.GetObject("flat").SetVisible(1); + // mf.KAScene.GetObject("bg").SetFaceColor(95, 95, 95, 255); + + // mf.KAScene.GetObject("changePrice").SetFaceColor(51, 51, 51, 255); + // mf.KAScene.GetObject("rate").SetFaceColor(51, 51, 51, 255); + // mf.KAScene.GetObject("percent").SetFaceColor(51, 51, 51, 255); + //} + mf.m_chkdata = true; + } + catch (Exception) + { + + } + } + public void setObjectStockChange(KAObject KAObject, string value, int cnt) + { + try + { + string v = string.Empty; + if (cnt == 0) + v = ""; + else if (cnt == 1) + v = "1"; + else if (cnt == 2) + v = "2"; + else if (cnt == 3) + v = ""; + + KAObject = mf.KAScene.GetObject("upup" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("up" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("flat" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("down" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("downdown" + v); + KAObject.SetVisible(0); + + if (value.Equals("상한")) + { + KAObject = mf.KAScene.GetObject("upup" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + + + } + else if (value.Equals("상승") || value.Equals("+")) + { + KAObject = mf.KAScene.GetObject("up" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + + } + else if (value.Equals("보합") || value.Equals("")) + { + KAObject = mf.KAScene.GetObject("flat" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(95, 95, 95, 255); + + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(52, 52, 52, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(52, 52, 52, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(52, 52, 52, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(52, 52, 52, 255); + + + } + else if (value.Equals("하락") || value.Equals("-")) + { + KAObject = mf.KAScene.GetObject("down" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + + + + } + else if (value.Equals("하한")) + { + KAObject = mf.KAScene.GetObject("downdown" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + + } + + + } + catch (Exception) + { + + } + + } + } +} diff --git a/MBN_STOCK_N/Scene/s5011.cs b/MBN_STOCK_N/Scene/s5011.cs new file mode 100644 index 0000000..032533e --- /dev/null +++ b/MBN_STOCK_N/Scene/s5011.cs @@ -0,0 +1,483 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; +using System.Diagnostics.Eventing.Reader; + +namespace MBN_STOCK_N +{ + class s5011 //1열판 상세 + { + MainForm mf = null; + string kiho = string.Empty; + string value = string.Empty; + string txt = string.Empty; + public s5011(Form frm, string jname, string sub) + { + try + { + //if (jname.Contains("(NXT)")) + // { + // MessageBox.Show("NXT 데이터가 없습니다!"); + // return; + //} + + mf = (MainForm)frm; + +// mf.KAScene.GetObject("title").SetValue(jname); + mf.KAScene.GetObject("title").SetValue(jname.Replace("(NXT)", "")); + + 상세판데이터분류 recvDataType2 = 상세판데이터분류.액면가; + + if (sub == "액면가") + { + recvDataType2 = 상세판데이터분류.액면가; + } + else if (sub == "거래량") + { + recvDataType2 = 상세판데이터분류.거래량; + } + else if (sub == "PBR") + { + recvDataType2 = 상세판데이터분류.PBR; + } + + DataSet ds = null; + + if (!jname.Contains("(NXT)")) // NXT 종목이 아니면 + { + foreach (DataRow r in mf.mDTkospi.Rows) + { + + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(국내시장종류.KOSPI, recvDataType2, r[1].ToString()); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(국내시장종류.KOSDAQ, recvDataType2, r[1].ToString()); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + else // NXT 종목일 경우 + { + foreach (DataRow r in mf.mDTNxtkospi.Rows) + { + + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateNxtData(국내시장종류.NXT_KOSPI, recvDataType2, r[1].ToString()); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + + foreach (DataRow r in mf.mDTNxtkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateNxtData(국내시장종류.NXT_KOSDAQ, recvDataType2, r[1].ToString()); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + + if (ds.Tables[0].Rows.Count <= 0) + { + // MessageBox.Show("데이터가 없습니다."); + mf.m_chkdata = false; + + return; + } + + if (sub == "액면가") + { + + mf.KAScene.GetObject("r_unit1").SetValue("원"); + mf.KAScene.GetObject("r_unit2").SetValue("억원"); + + mf.KAScene.GetObject("r_unit3").SetValue("억원"); + mf.KAScene.GetObject("r_unit4").SetValue("위"); + + mf.KAScene.GetObject("r_title1").SetValue("액면가"); + mf.KAScene.GetObject("r_title2").SetValue("자본금"); + + mf.KAScene.GetObject("r_title3").SetValue("시가총액"); + mf.KAScene.GetObject("r_title4").SetValue("시총순위"); + + //mf.KAScene.GetObject("r_value1").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["LIST_PRICE"].ToString())/1000)); + //mf.KAScene.GetObject("r_value2").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["CAPITAL_PRICE"].ToString()) / 100000000000)); + //-- 2024.03.20 shk + + if (ds.Tables[0].Rows[0]["LIST_PRICE"].ToString() == "") + { + mf.KAScene.GetObject("r_value1").SetValue(""); + } + else + { + mf.KAScene.GetObject("r_value1").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["LIST_PRICE"].ToString()))); + } + + if (ds.Tables[0].Rows[0]["CAPITAL_PRICE"].ToString() == "") + { + mf.KAScene.GetObject("r_value2").SetValue(""); + } + else + { + mf.KAScene.GetObject("r_value2").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["CAPITAL_PRICE"].ToString()) / 100000000)); + } + + if (ds.Tables[0].Rows[0]["SIGA_PRICE"].ToString() == "") + { + mf.KAScene.GetObject("r_value3").SetValue(""); + } + else + { + mf.KAScene.GetObject("r_value3").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["SIGA_PRICE"].ToString()) / 100000000)); + } + + if (ds.Tables[0].Rows[0]["RANK_NUM"].ToString() == "") + { + mf.KAScene.GetObject("r_value4").SetValue(""); + } + else + { + mf.KAScene.GetObject("r_value4").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["RANK_NUM"].ToString()))); + } + } + else if (sub == "PBR") + { + mf.KAScene.GetObject("r_unit1").SetValue("배"); + mf.KAScene.GetObject("r_unit2").SetValue("배"); + + mf.KAScene.GetObject("r_unit3").SetValue("원"); + mf.KAScene.GetObject("r_unit4").SetValue("원"); + + mf.KAScene.GetObject("r_title1").SetValue("PBR"); + mf.KAScene.GetObject("r_title2").SetValue("PER"); + + mf.KAScene.GetObject("r_title3").SetValue("BPS"); + mf.KAScene.GetObject("r_title4").SetValue("EPS"); + + + mf.KAScene.GetObject("r_value1").SetValue(ds.Tables[0].Rows[0]["PBR"].ToString()); + mf.KAScene.GetObject("r_value2").SetValue(ds.Tables[0].Rows[0]["PER"].ToString()); + + if (ds.Tables[0].Rows[0]["BPS"].ToString() == "") + { + mf.KAScene.GetObject("r_value3").SetValue("-"); + } + else + { + mf.KAScene.GetObject("r_value3").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["BPS"].ToString()))); + } + + if (ds.Tables[0].Rows[0]["EPS"].ToString() == "") + { + mf.KAScene.GetObject("r_value4").SetValue("-"); + } + else + { + mf.KAScene.GetObject("r_value4").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["EPS"].ToString()))); + } + } + else if (sub == "거래량") + { + mf.KAScene.GetObject("r_unit1").SetValue("주"); + mf.KAScene.GetObject("r_unit2").SetValue("백만"); + + mf.KAScene.GetObject("r_unit3").SetValue("원"); + mf.KAScene.GetObject("r_unit4").SetValue("원"); + + mf.KAScene.GetObject("r_title1").SetValue("거래량"); + mf.KAScene.GetObject("r_title2").SetValue("거래대금"); + + mf.KAScene.GetObject("r_title3").SetValue("5MA"); + mf.KAScene.GetObject("r_title4").SetValue("20MA"); + + if (ds.Tables[0].Rows[0]["NET_VOL"].ToString() == "") + { + mf.KAScene.GetObject("r_value1").SetValue("-"); + } + else + { + mf.KAScene.GetObject("r_value1").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["NET_VOL"].ToString()))); + } + + if (ds.Tables[0].Rows[0]["NET_TURNOVER"].ToString() == "") + { + mf.KAScene.GetObject("r_value2").SetValue("-"); + } + else + { + mf.KAScene.GetObject("r_value2").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["NET_TURNOVER"].ToString()) / 1000000)); + } + + if (ds.Tables[0].Rows[0]["AVG_5"].ToString() == "") + { + mf.KAScene.GetObject("r_value3").SetValue("-"); + } + else + { + mf.KAScene.GetObject("r_value3").SetValue(String.Format("{0:#,##0.###}", Convert.ToInt64(ds.Tables[0].Rows[0]["AVG_5"].ToString()))); + } + + if (ds.Tables[0].Rows[0]["AVG_20"].ToString() == "") + { + mf.KAScene.GetObject("r_value4").SetValue("-"); + } + else + { + mf.KAScene.GetObject("r_value4").SetValue(String.Format("{0:#,##0.###}", Convert.ToInt64(ds.Tables[0].Rows[0]["AVG_20"].ToString()))); + } + + } + + + kiho = ds.Tables[0].Rows[0]["CHG_TYPE"].ToString(); + value = kiho; + //kiho = ds.Tables[0].Rows[0]["RATE"].ToString(); + + //if (kiho == "0") + //{ + // value = ""; + //} + //else + //{ + // if (kiho.Substring(0, 1) == "-") + // { + // value = "-"; + // } + // else + // { + // value = "+"; + + // } + //} + + + + if (value.Equals("상한")) { txt = "1_"; } + else if (value.Equals("상승") || value.Equals("+")) { txt = "1_"; } + else if (value.Equals("보합") || value.Equals("")) { txt = "2_"; } + else if (value.Equals("하락") || value.Equals("-")) { txt = "3_"; } + else if (value.Equals("하한")) { txt = "3_"; } + + if (ds.Tables[0].Rows[0]["CURR_PRICE"].ToString() == "") + { + mf.KAScene.GetObject("price").SetValue("0"); + } + else + { + mf.KAScene.GetObject("price").SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["CURR_PRICE"].ToString()))); + } + + if (ds.Tables[0].Rows[0]["NET_CHG"].ToString() == "") + { + mf.KAScene.GetObject("changePrice" + txt).SetValue(""); + } + else + { + mf.KAScene.GetObject("changePrice" + txt).SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["NET_CHG"].ToString()))); + } + + if (ds.Tables[0].Rows[0]["RATE"].ToString() == "") + { + mf.KAScene.GetObject("rate" + txt).SetValue(""); + } + else + { + mf.KAScene.GetObject("rate" + txt).SetValue(Convert.ToDouble(ds.Tables[0].Rows[0]["RATE"].ToString()).ToString("##0.00")); + } + + double dd = Convert.ToDouble(ds.Tables[0].Rows[0]["RATE"].ToString()); + + mf.KAScene.GetObject("upup").SetVisible(0); + mf.KAScene.GetObject("up").SetVisible(0); + mf.KAScene.GetObject("flat").SetVisible(0); + mf.KAScene.GetObject("down").SetVisible(0); + mf.KAScene.GetObject("downdown").SetVisible(0); + + mf.setObjectStockChange(mf.KAObject, kiho, 0); + + mf.KAObject = mf.KAScene.GetObject("mart"); + if (jname.Contains("(NXT)")) + mf.KAObject.SetVisible(1); + else + mf.KAObject.SetVisible(0); + + //mf.setObjectStockChange(mf.KAObject, value, 0); + + //string kiho = "상승"; + //string kiho = ds.Tables[0].Rows[0]["CHG_TYPE"].ToString(); + + + //if (dd > 0) + //{ + // mf.KAScene.GetObject("up").SetVisible(1); + // mf.KAScene.GetObject("bg").SetFaceColor(170, 0, 0, 255); + + // mf.KAScene.GetObject("changePrice").SetFaceColor(170, 0, 0, 255); + // mf.KAScene.GetObject("rate").SetFaceColor(170, 0, 0, 255); + // mf.KAScene.GetObject("percent").SetFaceColor(170, 0, 0, 255); + //} + //else if (dd < 0) + //{ + // mf.KAScene.GetObject("down").SetVisible(1); + + // mf.KAScene.GetObject("bg").SetFaceColor(15, 99, 189, 255); + // mf.KAScene.GetObject("changePrice").SetFaceColor(15, 99, 189, 255); + // mf.KAScene.GetObject("rate").SetFaceColor(15, 99, 189, 255); + // mf.KAScene.GetObject("percent").SetFaceColor(15, 99, 189, 255); + //} + //else + //{ + // mf.KAScene.GetObject("flat").SetVisible(1); + // mf.KAScene.GetObject("bg").SetFaceColor(95, 95, 95, 255); + + // mf.KAScene.GetObject("changePrice").SetFaceColor(51, 51, 51, 255); + // mf.KAScene.GetObject("rate").SetFaceColor(51, 51, 51, 255); + // mf.KAScene.GetObject("percent").SetFaceColor(51, 51, 51, 255); + //} + mf.m_chkdata = true; + } + catch (Exception) + { + + } + } + + public void setObjectStockChange(KAObject KAObject, string value, int cnt) + { + try + { + string v = string.Empty; + if (cnt == 0) + v = ""; + else if (cnt == 1) + v = "1"; + else if (cnt == 2) + v = "2"; + else if (cnt == 3) + v = ""; + + KAObject = mf.KAScene.GetObject("upup" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("up" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("flat" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("down" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("downdown" + v); + KAObject.SetVisible(0); + + if (value.Equals("상한")) + { + KAObject = mf.KAScene.GetObject("upup" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + + + } + else if (value.Equals("상승") || value.Equals("+")) + { + KAObject = mf.KAScene.GetObject("up" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + + } + else if (value.Equals("보합") || value.Equals("")) + { + KAObject = mf.KAScene.GetObject("flat" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(95, 95, 95, 255); + + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(52, 52, 52, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(52, 52, 52, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(52, 52, 52, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(52, 52, 52, 255); + + } + else if (value.Equals("하락") || value.Equals("-")) + { + KAObject = mf.KAScene.GetObject("down" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + + } + else if (value.Equals("하한")) + { + KAObject = mf.KAScene.GetObject("downdown" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + + } + + + } + catch (Exception) + { + + } + + } + } +} diff --git a/MBN_STOCK_N/Scene/s5016.cs b/MBN_STOCK_N/Scene/s5016.cs new file mode 100644 index 0000000..f8139f6 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5016.cs @@ -0,0 +1,463 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5016 //3열판 + { + MainForm mf = null; + + public s5016(Form frm, string jname, string sub) + { + try + { + mf = (MainForm)frm; + DataSet ds = null; + string ntitle = string.Empty; + + mf.KAObject = mf.KAScene.GetObject("title"); + + if (sub == "") + { + if (jname.Contains("미국 지수")) + { + mf.KAObject.SetValue("미국 지수"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.미국지수); + } + else if (jname.Contains("중화권 지수")) + { + mf.KAObject.SetValue("중화권 지수"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.중화권지수); + } + else if (jname.Contains("유럽권 지수")) + { + mf.KAObject.SetValue("유럽 지수"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.유럽지수); + } + else if (jname.Contains("아시아 지수")) + { + mf.KAObject.SetValue("아시아 지수"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.아시아지수_상해_대만_일본); + } + else if (jname.Contains("미국국채")) + { + mf.KAObject.SetValue("미국 국채"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.미국국채); + } + else if (jname.Contains("채권금리")) + { + mf.KAObject.SetValue("채권 금리"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.채권금리); + } + else if (jname.Contains("유가")) + { + mf.KAObject.SetValue("유가"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.유가_두바이_WTI_브랜트); + } + else if (jname.Contains("광물")) + { + mf.KAObject.SetValue("광물"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.광물); + } + else if (jname.Contains("식자재")) + { + mf.KAObject.SetValue("식자재"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.식자재); + } + + else if (jname.Contains("해외환율")) + { + mf.KAObject.SetValue("해외 환율"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.달러환율_엔_위안_유로); + } + else if (jname.Contains("환율")) + { + mf.KAObject.SetValue("환율"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.원환율_달러_엔_유로); + } + else if (jname.Contains("소맥, 옥수수, 밀")) + { + mf.KAObject.SetValue("농산물"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.소맥_옥수수_밀); + } + + else if (jname.Contains("대두, 콩, 현미")) + { + mf.KAObject.SetValue("농산물"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.대두_콩_현미); + } + else if (jname.Contains("커피, 코코아, 설탕")) + { + mf.KAObject.SetValue("농산물"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.커피_코코아_설탕); + } + + else if (jname.Contains("생우(소), 비육우, 돈육(돼지)")) + { + mf.KAObject.SetValue("농산물"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.생우_비육우_돈육); + } + + else if (jname.Contains("구리, 철광석, 니켈")) + { + mf.KAObject.SetValue("원자재"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.구리_철광석_니켈); + } + + else if (jname.Contains("천연가스, 백금, 팔라듐")) + { + mf.KAObject.SetValue("원자재"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.천연가스_백금_팔라듐); + } + + else if (jname.Contains("납, 아연, 주석")) + { + mf.KAObject.SetValue("원자재"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.납_아연_주석); + } + ntitle = "주요지수"; + } + else + { + if (sub.Contains("주요지수[코스피, 코스닥, 코스피200]")) + { + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.주요지수_코스피_코스닥_코스피200); + ntitle = "주요지수"; + } + + else if (sub.Contains("주요지수[코스피, 코스닥, 선물]")) + { + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.주요지수_코스피_코스닥_선물); + ntitle = "주요지수"; + } + + else if (sub.Contains("예상체결지수[코스피, 코스닥, 코스피200]")) + { + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.예상체결지수_코스피_코스닥_코스피200); + ntitle = "예상체결지수"; + } + + else if (sub.Contains("예상체결지수[코스피, 코스닥, 선물]")) + { + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.예상체결지수_코스피_코스닥_선물); + ntitle = "예상체결지수"; + } + mf.KAScene.GetObject("title").SetValue(ntitle); + } + + mf.dataGridView1.DataSource = ds.Tables[0]; + + //--------------------배경이 되는지 test---- + //if (mf.back_CB.Checked == true) + //{ + // mf.KAScene.UseBackground(0); + // mf.KAScene.SetBackgroundVideo("E:\\매일경제TV\\머니 신그래픽\\매일경제TV\\매일경제TV\\Cuts\\Video\\1109_배경최종-1.vrv", 0, 0); + //} + //else + //{ + // mf.KAScene.UseBackground(1); + // mf.KAScene.SetBackgroundVideo("E:\\매일경제TV\\머니 신그래픽\\매일경제TV\\매일경제TV\\Cuts\\Video\\큐브배경.vrv", 0, 0); + //} + //--------------------- + + if (mf.dataGridView1.RowCount <= 3) + { + mf.m_chkdata = false; + } + else + { + + + for (int i = 0; i < 3; i++) + { + int index = i + 1; + + mf.KAObject = mf.KAScene.GetObject("flat" + index); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up" + index); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("upup" + index); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown" + index); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down" + index); + mf.KAObject.SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("title" + index); + + if (jname.Contains("채권금리")) + mf.KAObject.SetValue(ds.Tables[0].Rows[i]["PART_NAME"].ToString()); + else + mf.KAObject.SetValue(ds.Tables[0].Rows[i]["NAME"].ToString().Replace("KOSPI", "코스피").Replace("KOSQ", "코스닥")); + + mf.KAObject = mf.KAScene.GetObject("price" + index); + double value = Convert.ToDouble(ds.Tables[0].Rows[i]["PART_IDX"].ToString()); + mf.KAObject.SetValue(String.Format("{0:#,##0.00}", value)); + + string buho = string.Empty; + string pm = string.Empty; + + if (jname.Contains("유가") || jname.Contains("광물") || jname.Contains("식자재") || jname.Contains("농산물") || jname.Contains("원자재") || jname.Contains("유로달러")) + pm = ds.Tables[0].Rows[i]["SIGN"].ToString(); + else + pm = ds.Tables[0].Rows[i]["CHG_TYPE"].ToString(); + + + + //mf.KAObject = mf.KAScene.GetObject("bg" + index); + double rate = Convert.ToDouble(ds.Tables[0].Rows[i]["PART_CHG"].ToString()); + + + if (pm.Contains("-")) + { + if (rate == 0.00) + { + mf.KAScene.GetObject("bg" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("rate" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("percent" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("unit" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("unit" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("unit" + index + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("flat" + index); + mf.KAObject.SetVisible(1); + mf.KAObject = mf.KAScene.GetObject("changePrice" + index + "_2"); + } + else + { + mf.KAScene.GetObject("bg" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + index + "_3").SetVisible(1); + + mf.KAScene.GetObject("rate" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + index + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + index + "_3").SetVisible(1); + + mf.KAScene.GetObject("percent" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + index + "_3").SetVisible(1); + + mf.KAScene.GetObject("unit" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("unit" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("unit" + index + "_3").SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("down" + index); + mf.KAObject.SetVisible(1); + buho = "-"; + mf.KAObject = mf.KAScene.GetObject("changePrice" + index + "_3"); + } + + } + else if(pm.Contains("+")) + { + mf.KAScene.GetObject("bg" + index + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + index + "_1").SetVisible(1); + mf.KAScene.GetObject("rate" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + index + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + index + "_1").SetVisible(1); + mf.KAScene.GetObject("percent" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("unit" + index + "_1").SetVisible(1); + mf.KAScene.GetObject("unit" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("unit" + index + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("up" + index); + mf.KAObject.SetVisible(1); + mf.KAObject = mf.KAScene.GetObject("changePrice" + index + "_1"); + } + else + { + mf.KAScene.GetObject("bg" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("rate" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("percent" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("unit" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("unit" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("unit" + index + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("flat" + index); + mf.KAObject.SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + index + "_2"); + } + + + + string priceC = ds.Tables[0].Rows[i]["PART_CHG"].ToString(); + + + if (jname.Contains("해외환율")) + { + if (priceC.Substring(0, 1) == "-") + mf.KAObject.SetValue(String.Format("{0:#,##0.0000}", Convert.ToDouble(priceC.Substring(1)))); + else + mf.KAObject.SetValue(String.Format("{0:#,##0.0000}", Convert.ToDouble(priceC))); + } + + else + { + if (priceC.Substring(0, 1) == "-") + mf.KAObject.SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(priceC.Substring(1)))); + else + mf.KAObject.SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(priceC))); + } + + if (pm.Contains("-")) + { + if (rate == 0.00) + { + mf.KAObject = mf.KAScene.GetObject("rate" + index + "_2"); + } + else + { + mf.KAObject = mf.KAScene.GetObject("rate" + index + "_3"); + } + } + else if (pm.Contains("+")) + { + mf.KAObject = mf.KAScene.GetObject("rate" + index + "_1"); + } + else + { + mf.KAObject = mf.KAScene.GetObject("rate" + index + "_2"); + } + + //mf.KAObject = mf.KAScene.GetObject("rate" + index); + string ra = ds.Tables[0].Rows[i]["RATE"].ToString(); + + if (ra.Substring(0,1) == "-") + mf.KAObject.SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(ra))); + else + mf.KAObject.SetValue(buho + String.Format("{0:#,##0.00}", Convert.ToDouble(ra))); + + + //단위 + + if (jname.Contains("미국국채") || jname.Contains("채권금리")) + { + // 등락 단위 생략을 위해 + //mf.KAScene.GetObject("unit" + index + "_1").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_2").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_3").SetValue(""); + + mf.KAScene.GetObject("unitText").SetValue("단위 : %"); + } + else if (jname.Contains("광물") || jname.Contains("해외환율")) + { + // 등락 단위 생략을 위해 + //mf.KAScene.GetObject("unit" + index + "_1").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_2").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_3").SetValue(""); + mf.KAScene.GetObject("unitText").SetValue("단위 : $"); + } + else if (jname.Contains("유가")) + { + // 등락 단위 생략을 위해 + //mf.KAScene.GetObject("unit" + index + "_1").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_2").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_3").SetValue(""); + mf.KAScene.GetObject("unitText").SetValue("단위 : 배럴/달러"); + } + else if (jname.Contains("식자재")) + { + // 등락 단위 생략을 위해 + //mf.KAScene.GetObject("unit" + index + "_1").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_2").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_3").SetValue(""); + mf.KAScene.GetObject("unitText").SetValue("단위 : ¢"); + } + + else if (jname.Contains("원자재")) + { + // 등락 단위 생략을 위해 + //mf.KAScene.GetObject("unit" + index + "_1").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_2").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_3").SetValue(""); + mf.KAScene.GetObject("unitText").SetValue("단위 : $"); + } + + else if (jname.Contains("농산물")) + { + // 등락 단위 생략을 위해 + //mf.KAScene.GetObject("unit" + index + "_1").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_2").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_3").SetValue(""); + mf.KAScene.GetObject("unitText").SetValue("단위 : $"); + } + + else if (jname.Contains("환율")) + { + // 등락 단위 생략을 위해 + //mf.KAScene.GetObject("unit" + index + "_1").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_2").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_3").SetValue(""); + + mf.KAScene.GetObject("unitText").SetValue("단위 : 원"); + } + else + { + // 등락 단위 생략을 위해 + //mf.KAScene.GetObject("unit" + index + "_1").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_2").SetValue(""); + //mf.KAScene.GetObject("unit" + index + "_3").SetValue(""); + mf.KAScene.GetObject("unitText").SetValue("단위 : p"); + } + + mf.m_chkdata = true; + } + } + } + catch (Exception) + { + + } + } + } +} + diff --git a/MBN_STOCK_N/Scene/s50160.cs b/MBN_STOCK_N/Scene/s50160.cs new file mode 100644 index 0000000..d5d940f --- /dev/null +++ b/MBN_STOCK_N/Scene/s50160.cs @@ -0,0 +1,302 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s50160 //2열판 + { + MainForm mf = null; + + public s50160(Form frm, string jname, string sub) + { + try + { + mf = (MainForm)frm; + DataSet ds = null; + string ntitle = string.Empty; + + mf.KAObject = mf.KAScene.GetObject("title"); + + if (sub == "") + { + if (jname.Contains("원면, 목화(면화)")) + { + mf.KAObject.SetValue("농산물"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.원면_목화); + } + + else if (jname.Contains("국제 금, 국제 은")) + { + mf.KAObject.SetValue("원자재"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.국제금); + } + else if (jname.Contains("국내 금, 국내 은")) + { + mf.KAObject.SetValue("원자재"); + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.국내금); + } + + + //ntitle = "주요지수"; + } + else + { + + } + + mf.dataGridView1.DataSource = ds.Tables[0]; + + if (mf.dataGridView1.RowCount <= 2) + { + mf.m_chkdata = false; + } + else + { + for (int i = 0; i < 2; i++) + { + int index = i + 1; + + mf.KAObject = mf.KAScene.GetObject("flat" + index); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up" + index); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("upup" + index); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown" + index); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down" + index); + mf.KAObject.SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("title" + index); + + //if (jname.Contains("국제")) + //{ + // mf.KAObject.SetValue("국제 " + ds.Tables[0].Rows[i]["NAME"].ToString().Replace("KOSPI", "코스피").Replace("KOSQ", "코스닥")); + + //} + //else if (jname.Contains("국내")) + //{ + // mf.KAObject.SetValue("국내 " + ds.Tables[0].Rows[i]["NAME"].ToString().Replace("KOSPI", "코스피").Replace("KOSQ", "코스닥")); + + //} + + //else + // { + // mf.KAObject.SetValue(ds.Tables[0].Rows[i]["NAME"].ToString().Replace("KOSPI", "코스피").Replace("KOSQ", "코스닥")); + + //} + mf.KAObject.SetValue(ds.Tables[0].Rows[i]["NAME"].ToString().Replace("KOSPI", "코스피").Replace("KOSQ", "코스닥")); + + + mf.KAObject = mf.KAScene.GetObject("price" + index); + double value = Convert.ToDouble(ds.Tables[0].Rows[i]["PART_IDX"].ToString()); + mf.KAObject.SetValue(String.Format("{0:#,##0.00}", value)); + + string buho = string.Empty; + string pm = string.Empty; + + pm = ds.Tables[0].Rows[i]["SIGN"].ToString(); + + + + //mf.KAObject = mf.KAScene.GetObject("bg" + index); + double rate = Convert.ToDouble(ds.Tables[0].Rows[i]["PART_CHG"].ToString()); + + + if (pm.Contains("-")) + { + if (rate == 0.00) + { + mf.KAScene.GetObject("bg" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("rate" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("percent" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("unit" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("unit" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("unit" + index + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("flat" + index); + mf.KAObject.SetVisible(1); + mf.KAObject = mf.KAScene.GetObject("changePrice" + index + "_2"); + } + else + { + mf.KAScene.GetObject("bg" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + index + "_3").SetVisible(1); + + mf.KAScene.GetObject("rate" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + index + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + index + "_3").SetVisible(1); + + mf.KAScene.GetObject("percent" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + index + "_3").SetVisible(1); + + mf.KAScene.GetObject("unit" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("unit" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("unit" + index + "_3").SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("down" + index); + mf.KAObject.SetVisible(1); + buho = "-"; + mf.KAObject = mf.KAScene.GetObject("changePrice" + index + "_3"); + } + + } + else if (pm.Contains("+")) + { + mf.KAScene.GetObject("bg" + index + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + index + "_1").SetVisible(1); + mf.KAScene.GetObject("rate" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + index + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + index + "_1").SetVisible(1); + mf.KAScene.GetObject("percent" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("unit" + index + "_1").SetVisible(1); + mf.KAScene.GetObject("unit" + index + "_2").SetVisible(0); + mf.KAScene.GetObject("unit" + index + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("up" + index); + mf.KAObject.SetVisible(1); + mf.KAObject = mf.KAScene.GetObject("changePrice" + index + "_1"); + } + else + { + mf.KAScene.GetObject("bg" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("rate" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("percent" + index + "_3").SetVisible(0); + + mf.KAScene.GetObject("unit" + index + "_1").SetVisible(0); + mf.KAScene.GetObject("unit" + index + "_2").SetVisible(1); + mf.KAScene.GetObject("unit" + index + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("flat" + index); + mf.KAObject.SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + index + "_2"); + } + + + + string priceC = ds.Tables[0].Rows[i]["PART_CHG"].ToString(); + + + if (priceC.Substring(0, 1) == "-") + mf.KAObject.SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(priceC.Substring(1)))); + else + mf.KAObject.SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(priceC))); + + + if (pm.Contains("-")) + { + if (rate == 0.00) + { + mf.KAObject = mf.KAScene.GetObject("rate" + index + "_2"); + } + else + { + mf.KAObject = mf.KAScene.GetObject("rate" + index + "_3"); + } + } + else if (pm.Contains("+")) + { + mf.KAObject = mf.KAScene.GetObject("rate" + index + "_1"); + } + else + { + mf.KAObject = mf.KAScene.GetObject("rate" + index + "_2"); + } + + //mf.KAObject = mf.KAScene.GetObject("rate" + index); + string ra = ds.Tables[0].Rows[i]["RATE"].ToString(); + + if (ra.Substring(0, 1) == "-") + mf.KAObject.SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(ra))); + else + mf.KAObject.SetValue(buho + String.Format("{0:#,##0.00}", Convert.ToDouble(ra))); + + + //단위 + + if (jname.Contains("목화(면화)")) + { + mf.KAScene.GetObject("unit" + index + "_1").SetValue(""); + mf.KAScene.GetObject("unit" + index + "_2").SetValue(""); + mf.KAScene.GetObject("unit" + index + "_3").SetValue(""); + mf.KAScene.GetObject("unitText").SetValue("단위 : $"); + } + + else if (jname.Contains("국제 금")) + { + mf.KAScene.GetObject("unit" + index + "_1").SetValue(""); + mf.KAScene.GetObject("unit" + index + "_2").SetValue(""); + mf.KAScene.GetObject("unit" + index + "_3").SetValue(""); + mf.KAScene.GetObject("unitText").SetValue("단위 : $"); + } + + else if (jname.Contains("국내 금")) + { + mf.KAScene.GetObject("unit" + index + "_1").SetValue(""); + mf.KAScene.GetObject("unit" + index + "_2").SetValue(""); + mf.KAScene.GetObject("unit" + index + "_3").SetValue(""); + mf.KAScene.GetObject("unitText").SetValue("단위 : 원"); + } + + + mf.m_chkdata = true; + } + } + } + catch (Exception) + { + + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s5023.cs b/MBN_STOCK_N/Scene/s5023.cs new file mode 100644 index 0000000..33dea52 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5023.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5023 //매매동향 표그래프 + { + MainForm mf = null; + string tname = string.Empty; + + public s5023(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + DataSet ds = null; + + if (jname.Contains("코스피")) + { + tname = "코스피"; + ds = DataManager.getInstance().createGridChartData(그리드표그래프종류.지수별매매동향9번컷, 국내시장종류.KOSPI); + } + + else if (jname.Contains("코스닥")) + { + tname = "코스닥"; + ds = DataManager.getInstance().createGridChartData(그리드표그래프종류.지수별매매동향9번컷, 국내시장종류.KOSDAQ); + } + + mf.dataGridView1.DataSource = ds.Tables[0]; + mf.dataGridView2.DataSource = ds.Tables[1]; + /* + 20210114 860 511 -916 + 20210113 436 253 -582 + 20210112 2615 -868 -1534 + 20210111 860 337 -858 + 20210108 2854 -100 -2178 + + 15112 7113 -13220 + */ + + mf.KAObject = mf.KAScene.GetObject("title"); + mf.KAObject.SetValue(tname + " 매매동향"); + + for (int i = 0; i < 5; i++) + { + for (int j = 0; j < 4; j++) + { + mf.KAObject = mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1)); + + if (j == 0) + { + string value = ds.Tables[0].Rows[i][j].ToString().Substring(4); + value = value.Substring(0, 2) + "/" + value.Substring(2); + mf.KAObject.SetValue(value); + + } + else + { + int value = Convert.ToInt32(ds.Tables[0].Rows[i][j].ToString()); + + if (value < 0) + mf.KAObject.SetFaceColor(15, 99, 188, 255); + else if (value > 0) + mf.KAObject.SetFaceColor(171, 0, 0, 255); + else + mf.KAObject.SetFaceColor(47, 47, 47, 255); + + mf.KAObject.SetValue(String.Format("{0:#,##0}", value)); + } + } + } + + for (int i = 0; i < 3; i++) + { + mf.KAObject = mf.KAScene.GetObject("row6_value" + (i + 1)); + int sum = Convert.ToInt32(ds.Tables[1].Rows[0][i].ToString()); + mf.KAObject.SetValue(String.Format("{0:#,##0}", sum)); + + if (sum > 0) + { + mf.KAObject = mf.KAScene.GetObject("row6_bg" + (i + 1)); + mf.KAObject.SetFaceColor(171, 0, 0, 255); + } + else if (sum < 0) + { + mf.KAObject = mf.KAScene.GetObject("row6_bg" + (i + 1)); + mf.KAObject.SetFaceColor(15, 99, 189, 255); + } + else + { + mf.KAObject = mf.KAScene.GetObject("row6_bg" + (i + 1)); + mf.KAObject.SetFaceColor(95, 95, 95, 255); + } + } + mf.m_chkdata = true; + + + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s5024.cs b/MBN_STOCK_N/Scene/s5024.cs new file mode 100644 index 0000000..2949193 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5024.cs @@ -0,0 +1,154 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5024 //매매동향 막대그래프 + { + MainForm mf = null; + string tname = string.Empty; + + public s5024(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + DataSet ds = null; + + + if (jname.Contains("코스피")) + { + tname = "코스피"; + ds = DataManager.getInstance().createCut12StickData(국내시장종류.KOSPI); + } + + else if (jname.Contains("코스닥")) + { + tname = "코스닥"; + ds = DataManager.getInstance().createCut12StickData(국내시장종류.KOSDAQ); + } + + mf.dataGridView1.DataSource = ds.Tables[0]; + /* + INVEST_NAME AMT + 기관 -918 + 외국인 512 + 개인 860 + */ + + mf.KAObject = mf.KAScene.GetObject("title"); + mf.KAObject.SetValue(tname + " 매매동향"); + + double maxValue = 0; + double minValue = 0; + + double CENTER_MAX_Y = 245.0; + double CENTER_MIN_Y = -150.0; + double TEXT_HEIGHT = 50.0; + + double HEIGHT = (CENTER_MAX_Y - CENTER_MIN_Y) - TEXT_HEIGHT * 2.0; + + foreach (DataRow dr in ds.Tables[0].Rows) + { + double value =Convert.ToDouble(dr["AMT"].ToString()); + if (value > maxValue) + maxValue = value; + + if (value < minValue) + minValue = value; + } + + for (int i = 1; i < 4; i++) + { + for (int j = 1; j < 3; j++) + { + mf.KAObject = mf.KAScene.GetObject("barG" + i + "_" + j); + mf.KAObject.SetVisible(0); + } + } + + double fCenterY = 0.0; + if (minValue >= 0) + { + fCenterY = CENTER_MIN_Y; + } + else if (maxValue <= 0) + { + fCenterY = CENTER_MAX_Y; + } + else + { + fCenterY = CENTER_MIN_Y + TEXT_HEIGHT + HEIGHT * Math.Abs(minValue) / (maxValue + Math.Abs(minValue)); + } + mf.KAScene.GetObject("centerbar").SetPosition(0.0f, Convert.ToInt32(fCenterY), 0.0f, eKVectorType.VECTOR_TYPE_Y); + + + foreach (DataRow dr in ds.Tables[0].Rows) + { + string item = dr["INVEST_NAME"].ToString(); + double value = Convert.ToDouble(dr["AMT"].ToString()); + int index = 0; + int index2 = 1; + + if (item.Equals("개인")) + index = 1; + else if (item.Equals("외국인")) + index = 2; + else if (item.Equals("기관")) + index = 3; + + if (value < 0) + index2 = 2; + + mf.KAObject = mf.KAScene.GetObject("barG" + index + "_" + index2); + mf.KAObject.SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("bar" + index + "_" + index2); + + + double fRatio = 1.0; + if (value > 0) + { + fRatio = value / maxValue; + + if (minValue < 0.0f) + { + fRatio *= maxValue / (maxValue + Math.Abs(minValue)); + } + } + else + { + fRatio = Math.Abs(value) / Math.Abs(minValue); + + if (maxValue > 0.0) + { + fRatio *= Math.Abs(minValue) / (maxValue + Math.Abs(minValue)); + } + } + + mf.KAObject.SetScale(0, (float)(fRatio), 0, eKVectorType.VECTOR_TYPE_Y); + + mf.KAObject = mf.KAScene.GetObject("value" + index + "_" + index2); + mf.KAObject.SetValue(String.Format("{0:#,##0}", value)); + } + mf.m_chkdata = true; + + + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + + + } +} diff --git a/MBN_STOCK_N/Scene/s5025.cs b/MBN_STOCK_N/Scene/s5025.cs new file mode 100644 index 0000000..11fb966 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5025.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; +using System.IO; + +namespace MBN_STOCK_N +{ + class s5025 //순매도 (수동) + { + MainForm mf = null; + int row = 0; + string tname = string.Empty; + string[,] buf = new string[15, 10]; + + public s5025(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + string title = jname.Substring(0, jname.IndexOf(" ")); + + data_load(mf.m_DataPath + title + ".dat"); + + mf.KAScene.GetObject("title").SetValue(title + " 순매도 상위"); + + for (int i = 0; i < row - 1; i++) + { + mf.KAScene.GetObject("종목" + ((i * 2) + 1).ToString()).SetValue(buf[i, 0]); + mf.KAScene.GetObject("금액" + ((i * 2) + 1).ToString()).SetValue(buf[i, 1]); + + mf.KAScene.GetObject("종목" + ((i * 2) + 2).ToString()).SetValue(buf[i, 2]); + mf.KAScene.GetObject("금액" + ((i * 2) + 2).ToString()).SetValue(buf[i, 3]); + + } + + mf.m_chkdata = true; + + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + + public void data_load(string path) + { + try + { + string str = string.Empty; + + StreamReader sr = new StreamReader(path, Encoding.Default); + if (sr != null) + { + while (sr.Peek() > -1) + { + str = sr.ReadLine(); str = str.Trim(); + string[] rs = str.Split('^'); + + for (int i = 0; i < rs.Length; i++) + { + buf[row, i] = rs[i]; + } + row += 1; + } + sr.Close(); + } + } + catch (Exception) + { + + } + } + + } +} diff --git a/MBN_STOCK_N/Scene/s5026.cs b/MBN_STOCK_N/Scene/s5026.cs new file mode 100644 index 0000000..93341b1 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5026.cs @@ -0,0 +1,456 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5026 //2열판 비교분석 캔들형 + { + MainForm mf = null; + string[] m_rs = null; + + public s5026(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + + m_rs = jname.Split(','); + + DataSet ds1 = null; + DataSet ds2 = null; + + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(m_rs[0])) + { + ds1 = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스피종목, 봉차트세부종목.일반지수, 데이터기간.주, m_rs[0]); + } + if (r[0].Equals(m_rs[1])) + { + ds2 = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스피종목, 봉차트세부종목.일반지수, 데이터기간.주, m_rs[1]); + } + } + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(m_rs[0])) + { + ds1 = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스닥종목, 봉차트세부종목.일반지수, 데이터기간.주, m_rs[0]); + } + if (r[0].Equals(m_rs[1])) + { + ds2 = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스닥종목, 봉차트세부종목.일반지수, 데이터기간.주, m_rs[1]); + } + } + + if (ds2.Tables[0] == null || ds2.Tables[1] == null) + { + mf.m_chkdata = false; + } + else + { + mf.dataGridView1.DataSource = ds2.Tables[0]; + mf.dataGridView2.DataSource = ds2.Tables[1]; + + } + + + + mf.KAObject = mf.KAScene.GetObject("title1"); + mf.KAObject.SetValue(ds1.Tables[0].Rows[0]["STOCK_NAME"].ToString()); + mf.KAObject = mf.KAScene.GetObject("title2"); + mf.KAObject.SetValue(ds2.Tables[0].Rows[0]["STOCK_NAME"].ToString()); + + mf.KAObject = mf.KAScene.GetObject("price1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0]["CURR_PRICE"].ToString()))); + mf.KAObject = mf.KAScene.GetObject("price2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0]["CURR_PRICE"].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0]["NET_CHG"].ToString()))); + mf.KAObject = mf.KAScene.GetObject("changePrice2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0]["NET_CHG"].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("rate1"); + mf.KAObject.SetValue(Convert.ToDouble(ds1.Tables[0].Rows[0]["RATE"].ToString()).ToString("#,##0.00")); + mf.KAObject = mf.KAScene.GetObject("rate2"); + mf.KAObject.SetValue(Convert.ToDouble(ds2.Tables[0].Rows[0]["RATE"].ToString()).ToString("#,##0.00")); + + + double r1 = Convert.ToDouble(ds1.Tables[0].Rows[0]["RATE"].ToString()); + double r2 = Convert.ToDouble(ds2.Tables[0].Rows[0]["RATE"].ToString()); + + mf.KAObject = mf.KAScene.GetObject("up1"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat1"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down1"); + mf.KAObject.SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("up2"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat2"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down2"); + mf.KAObject.SetVisible(0); + + + string kiho1 = ds1.Tables[0].Rows[0]["CHG_TYPE"].ToString(); + setObjectStockChange(mf.KAObject, kiho1, 1); + + string kiho2 = ds2.Tables[0].Rows[0]["CHG_TYPE"].ToString(); + setObjectStockChange(mf.KAObject, kiho2, 2); + + //if (r1 > 0) + //{ + // mf.KAObject = mf.KAScene.GetObject("up1"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg1"); + // mf.KAObject.SetFaceColor(170, 0, 0, 255); + + //} + //else if (r1 < 0) + //{ + // mf.KAObject = mf.KAScene.GetObject("down1"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg1"); + // mf.KAObject.SetFaceColor(15, 99, 189, 255); + //} + //else + //{ + // mf.KAObject = mf.KAScene.GetObject("flat1"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg1"); + // mf.KAObject.SetFaceColor(95, 95, 95, 255); + //} + + //if (r2 > 0) + //{ + // mf.KAObject = mf.KAScene.GetObject("up2"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg2"); + // mf.KAObject.SetFaceColor(170, 0, 0, 255); + + //} + //else if (r2 < 0) + //{ + // mf.KAObject = mf.KAScene.GetObject("down2"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg2"); + // mf.KAObject.SetFaceColor(15, 99, 189, 255); + //} + //else + //{ + // mf.KAObject = mf.KAScene.GetObject("flat2"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg2"); + // mf.KAObject.SetFaceColor(95, 95, 95, 255); + //} + + //OPEN_DAY F_HIGH_PRICE F_LOW_PRICE F_INIT_PRICE F_CURR_PRICE F_MA5_PRICE F_MA20_PRICE + double min1 = double.MaxValue; + double max1 = double.MinValue; + //double maxV1 = double.MinValue; + + double min2 = double.MaxValue; + double max2 = double.MinValue; + //double maxV2 = double.MinValue; + + + //최대 최소 얻기 + foreach (DataRow dr in ds1.Tables[1].Rows) + { + if (min1 > Convert.ToDouble(dr["F_LOW_PRICE"])) + min1 = Convert.ToDouble(dr["F_LOW_PRICE"]); + if (max1 < Convert.ToDouble(dr["F_HIGH_PRICE"])) + max1 = Convert.ToDouble(dr["F_HIGH_PRICE"]); + } + foreach (DataRow dr in ds2.Tables[1].Rows) + { + if (min2 > Convert.ToDouble(dr["F_LOW_PRICE"])) + min2 = Convert.ToDouble(dr["F_LOW_PRICE"]); + if (max2 < Convert.ToDouble(dr["F_HIGH_PRICE"])) + max2 = Convert.ToDouble(dr["F_HIGH_PRICE"]); + } + + double gap1 = max1 - min1; + double gap2 = max2 - min2; + + double center1 = (max1 + min1) / 2; + double center2 = (max2 + min2) / 2; + + int index1 = 0; + int index2 = 0; + + foreach (DataRow dr in ds1.Tables[1].Rows) + { + index1++; + + + //날짜 + if (index1 == 1) + { + mf.KAObject = mf.KAScene.GetObject("date1_1"); + string date = dr["OPEN_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (index1 == ds1.Tables[1].Rows.Count) + { + mf.KAObject = mf.KAScene.GetObject("date1_5"); + string date = dr["OPEN_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (index1 == Math.Ceiling(Convert.ToDouble(ds1.Tables[1].Rows.Count) / 2)) + { + mf.KAObject = mf.KAScene.GetObject("date1_3"); + string date = dr["OPEN_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + + double HP = Convert.ToDouble(dr["F_HIGH_PRICE"].ToString()); + double LP = Convert.ToDouble(dr["F_LOW_PRICE"].ToString()); + double IP = Convert.ToDouble(dr["F_INIT_PRICE"].ToString()); + double CP = Convert.ToDouble(dr["F_CURR_PRICE"].ToString()); + + /* + //-657.57 ~ 670.65 + double len = 1328.22; + */ + //-730.57 ~ 738.65 + double sX = -730.57; + double eX = 738.65; + double len = eX - sX; + //double lsX = -657.57; + //double leX = 670.65; + double lenX = len / ds1.Tables[1].Rows.Count; + + //bar + mf.KAObject = mf.KAScene.GetObject("candlebar1_" + index1); + + double HPF = Math.Abs(100 * (HP - max1) / gap1); + double LPF = Math.Abs(100 * (LP - max1) / gap1); + + mf.KAObject.SetCropKey(1, 0, (float)HPF, 0, (float)LPF, eKCropKey.CROP_KEY_VERTICAL); + + //bady + mf.KAObject = mf.KAScene.GetObject("candlebody1_" + index1); + + double IPF = Math.Abs(100 * (IP - max1) / gap1); + double CPF = Math.Abs(100 * (CP - max1) / gap1); + + if (IP > CP) + { + mf.KAObject.SetCropKey(1, 0, (float)IPF, 0, (float)CPF, eKCropKey.CROP_KEY_VERTICAL); + mf.KAObject.SetFaceColor(15, 99, 189, 255); + mf.KAObject = mf.KAScene.GetObject("candlebar1_" + index1); + mf.KAObject.SetFaceColor(15, 99, 189, 255); + } + else if (IP < CP) + { + mf.KAObject.SetCropKey(1, 0, (float)CPF, 0, (float)IPF, eKCropKey.CROP_KEY_VERTICAL); + mf.KAObject.SetFaceColor(170, 0, 0, 255); + mf.KAObject = mf.KAScene.GetObject("candlebar1_" + index1); + mf.KAObject.SetFaceColor(170, 0, 0, 255); + + } + else + { + mf.KAObject.SetCropKey(1, 0, (float)CPF - 0.1f, 0, (float)IPF + 3f, eKCropKey.CROP_KEY_VERTICAL); + mf.KAObject.SetFaceColor(95, 95, 95, 255); + mf.KAObject = mf.KAScene.GetObject("candlebar1_" + index1); + mf.KAObject.SetFaceColor(95, 95, 95, 255); + + + } + } + + foreach (DataRow dr in ds2.Tables[1].Rows) + { + index2++; + + + //날짜 + if (index2 == 1) + { + mf.KAObject = mf.KAScene.GetObject("date2_1"); + string date = dr["OPEN_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (index2 == ds2.Tables[1].Rows.Count) + { + mf.KAObject = mf.KAScene.GetObject("date2_5"); + string date = dr["OPEN_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (index2 == Math.Ceiling(Convert.ToDouble(ds2.Tables[1].Rows.Count) / 2)) + { + mf.KAObject = mf.KAScene.GetObject("date2_3"); + string date = dr["OPEN_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + + double HP = Convert.ToDouble(dr["F_HIGH_PRICE"].ToString()); + double LP = Convert.ToDouble(dr["F_LOW_PRICE"].ToString()); + double IP = Convert.ToDouble(dr["F_INIT_PRICE"].ToString()); + double CP = Convert.ToDouble(dr["F_CURR_PRICE"].ToString()); + + /* + //-657.57 ~ 670.65 + double len = 1328.22; + */ + //-730.57 ~ 738.65 + double sX = -730.57; + double eX = 738.65; + double len = eX - sX; + //double lsX = -657.57; + //double leX = 670.65; + double lenX = len / ds2.Tables[1].Rows.Count; + + //bar + mf.KAObject = mf.KAScene.GetObject("candlebar2_" + index2); + + double HPF = Math.Abs(100 * (HP - max2) / gap2); + double LPF = Math.Abs(100 * (LP - max2) / gap2); + + mf.KAObject.SetCropKey(1, 0, (float)HPF, 0, (float)LPF, eKCropKey.CROP_KEY_VERTICAL); + + //bady + mf.KAObject = mf.KAScene.GetObject("candlebody2_" + index2); + + double IPF = Math.Abs(100 * (IP - max2) / gap2); + double CPF = Math.Abs(100 * (CP - max2) / gap2); + + if (IP > CP) + { + mf.KAObject.SetCropKey(1, 0, (float)IPF, 0, (float)CPF, eKCropKey.CROP_KEY_VERTICAL); + mf.KAObject.SetFaceColor(15, 99, 189, 255); + mf.KAObject = mf.KAScene.GetObject("candlebar2_" + index2); + mf.KAObject.SetFaceColor(15, 99, 189, 255); + } + else if (IP < CP) + { + mf.KAObject.SetCropKey(1, 0, (float)CPF, 0, (float)IPF, eKCropKey.CROP_KEY_VERTICAL); + mf.KAObject.SetFaceColor(170, 0, 0, 255); + mf.KAObject = mf.KAScene.GetObject("candlebar2_" + index2); + mf.KAObject.SetFaceColor(170, 0, 0, 255); + } + else + { + mf.KAObject.SetCropKey(1, 0, (float)CPF - 0.1f, 0, (float)IPF + 3f, eKCropKey.CROP_KEY_VERTICAL); + mf.KAObject.SetFaceColor(95, 95, 95, 255); + mf.KAObject = mf.KAScene.GetObject("candlebar2_" + index2); + mf.KAObject.SetFaceColor(95, 95, 95, 255); + } + mf.m_chkdata = true; + } + + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + + public void setObjectStockChange(KAObject KAObject, string value, int cnt) + { + try + { + string v = string.Empty; + if (cnt == 0) + v = ""; + else if (cnt == 1) + v = "1"; + else if (cnt == 2) + v = "2"; + else if (cnt == 3) + v = ""; + + KAObject = mf.KAScene.GetObject("upup" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("up" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("flat" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("down" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("downdown" + v); + KAObject.SetVisible(0); + + if (value.Equals("상한")) + { + KAObject = mf.KAScene.GetObject("upup" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(0); + + + } + else if (value.Equals("상승") || value.Equals("+")) + { + KAObject = mf.KAScene.GetObject("up" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(0); + + + } + else if (value.Equals("보합") || value.Equals("")) + { + KAObject = mf.KAScene.GetObject("flat" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(0); + + + + } + else if (value.Equals("하락") || value.Equals("-")) + { + KAObject = mf.KAScene.GetObject("down" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(1); + } + else if (value.Equals("하한")) + { + KAObject = mf.KAScene.GetObject("downdown" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(1); + + + } + + + } + catch (Exception) + { + + } + + } + } +} diff --git a/MBN_STOCK_N/Scene/s5029.cs b/MBN_STOCK_N/Scene/s5029.cs new file mode 100644 index 0000000..9bf79a7 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5029.cs @@ -0,0 +1,660 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5029 //종목별 수익률 비교 + { + MainForm mf = null; + string[] m_rs = null; + + public s5029(Form frm, string jname, string sub) + { + try + { + mf = (MainForm)frm; + 데이터기간 termT = 데이터기간.주; + + m_rs = jname.Split(','); + + DataSet ds1 = null; + DataSet ds2 = null; + DataSet ds3 = null; + DataSet ds4 = null; + + if (sub.Equals("일봉")) + { + termT = 데이터기간.일; + } + else if (sub.Equals("5일")) + { + termT = 데이터기간.주; + } + else if (sub.Equals("1개월")) + { + termT = 데이터기간.월; + } + else if (sub.Equals("3개월")) + { + termT = 데이터기간.분기; + } + else if (sub.Equals("6개월")) + { + termT = 데이터기간.반기; + } + else if (sub.Equals("12개월")) + { + termT = 데이터기간.연; + } + + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(m_rs[0])) + { + ds1 = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스피종목, 봉차트세부종목.일반지수, termT, m_rs[0]); + } + if (r[0].Equals(m_rs[1])) + { + ds2 = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스피종목, 봉차트세부종목.일반지수, termT, m_rs[1]); + } + } + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(m_rs[0])) + { + ds1 = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스닥종목, 봉차트세부종목.일반지수, termT, m_rs[0]); + } + if (r[0].Equals(m_rs[1])) + { + ds2 = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스닥종목, 봉차트세부종목.일반지수, termT, m_rs[1]); + } + } + + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(m_rs[0])) + { + ds3 = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스피종목수익률, termT, m_rs[0]); + } + if (r[0].Equals(m_rs[1])) + { + ds4 = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스피종목수익률, termT, m_rs[1]); + } + } + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(m_rs[0])) + { + ds3 = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스닥종목수익률, termT, m_rs[0]); + } + if (r[0].Equals(m_rs[1])) + { + ds4 = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스닥종목수익률, termT, m_rs[1]); + } + } + + + mf.dataGridView1.DataSource = ds3.Tables[0]; + mf.dataGridView2.DataSource = ds4.Tables[0]; + + + + + mf.KAObject = mf.KAScene.GetObject("title1"); + mf.KAObject.SetValue(m_rs[0]); + mf.KAObject = mf.KAScene.GetObject("title2"); + mf.KAObject.SetValue(m_rs[1]); + + mf.KAObject = mf.KAScene.GetObject("price1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0]["CURR_PRICE"].ToString()))); + mf.KAObject = mf.KAScene.GetObject("price2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0]["CURR_PRICE"].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0]["NET_CHG"].ToString()))); + mf.KAObject = mf.KAScene.GetObject("changePrice2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0]["NET_CHG"].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("rate1"); + mf.KAObject.SetValue(Convert.ToDouble(ds1.Tables[0].Rows[0]["RATE"].ToString()).ToString("#,##0.00")); + mf.KAObject = mf.KAScene.GetObject("rate2"); + mf.KAObject.SetValue(Convert.ToDouble(ds2.Tables[0].Rows[0]["RATE"].ToString()).ToString("#,##0.00")); + + double r1 = Convert.ToDouble(ds1.Tables[0].Rows[0]["RATE"].ToString()); + double r2 = Convert.ToDouble(ds2.Tables[0].Rows[0]["RATE"].ToString()); + + mf.KAObject = mf.KAScene.GetObject("upup1"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up1"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat1"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown1"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down1"); + mf.KAObject.SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("upup2"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up2"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat2"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown2"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down2"); + mf.KAObject.SetVisible(0); + + string kiho1 = ds1.Tables[0].Rows[0]["CHG_TYPE"].ToString(); + setObjectStockChange(mf.KAObject, kiho1, 1); + + string kiho2 = ds2.Tables[0].Rows[0]["CHG_TYPE"].ToString(); + setObjectStockChange(mf.KAObject, kiho2, 2); + + //if (r1 > 0) + //{ + // mf.KAObject = mf.KAScene.GetObject("up1"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg1"); + // mf.KAObject.SetFaceColor(170, 0, 0, 255); + + //} + //else if (r1 < 0) + //{ + // mf.KAObject = mf.KAScene.GetObject("down1"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg1"); + // mf.KAObject.SetFaceColor(15, 99, 189, 255); + //} + //else + //{ + // mf.KAObject = mf.KAScene.GetObject("flat1"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg1"); + // mf.KAObject.SetFaceColor(95, 95, 95, 255); + //} + + //if (r2 > 0) + //{ + // mf.KAObject = mf.KAScene.GetObject("up2"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg2"); + // mf.KAObject.SetFaceColor(170, 0, 0, 255); + + //} + //else if (r2 < 0) + //{ + // mf.KAObject = mf.KAScene.GetObject("down2"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg2"); + // mf.KAObject.SetFaceColor(15, 99, 189, 255); + //} + //else + //{ + // mf.KAObject = mf.KAScene.GetObject("flat2"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg2"); + // mf.KAObject.SetFaceColor(95, 95, 95, 255); + //} + + //라인 파트 + int price = 0; + int referencePrice = 0; + int MaxValue = Int32.MinValue; + int MinValue = Int32.MaxValue; + List prices = new List(); + + + for (int i = 0; i < ds3.Tables[0].Rows.Count; i++) + { + + //날짜 + if (i == 0) + { + mf.KAObject = mf.KAScene.GetObject("date1_5"); + string date = ds3.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == ds3.Tables[0].Rows.Count - 1) + { + mf.KAObject = mf.KAScene.GetObject("date1_1"); + string date = ds3.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds3.Tables[0].Rows.Count - 1) / 2)) + { + mf.KAObject = mf.KAScene.GetObject("date1_3"); + string date = ds3.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds3.Tables[0].Rows.Count - 1) / 4)) + { + mf.KAObject = mf.KAScene.GetObject("date1_4"); + string date = ds3.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds3.Tables[0].Rows.Count - 1) * 3 / 4)) + { + mf.KAObject = mf.KAScene.GetObject("date1_2"); + string date = ds3.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + + int pr = Convert.ToInt32(ds3.Tables[0].Rows[i][1].ToString()); + + if (i == ds3.Tables[0].Rows.Count - 1) //기준가 + { + referencePrice = pr; + } + else if (i == 0) + { + price = pr; + } + + if (pr > MaxValue) + MaxValue = pr; + if (pr < MinValue) + MinValue = pr; + + prices.Add(pr); + } + + int gap = MaxValue - MinValue; + int center = (MaxValue + MinValue) / 2; + + + prices.Reverse(); + + //Postion -75 ~ 150 + //gap => min 225 + mf.KAObject = mf.KAScene.GetObject("baseline1"); + float baseline = (float)((Convert.ToDouble(referencePrice - MinValue) / (gap)) * 150 - 50); + mf.KAObject.SetPosition(0, baseline, 0, eKVectorType.VECTOR_TYPE_Y); + + + double maxX = 812.0; + double gapX = maxX / (prices.Count - 1); + + List plusVector = new List(); + List minusVector = new List(); + int index = 0; + double beforePM = 0; + foreach (var v in prices) + { + index++; + double xpos = gapX * (index - 1); + double value = (Convert.ToDouble(referencePrice - v) / (gap)) * 150; + + if ((beforePM > 0 && value < 0) || // + => - + (beforePM < 0 && value > 0)) // - => + + + { + sKVector2f bufVector = new sKVector2f(); + bufVector.X = (float)(xpos - (gapX * (Math.Abs(value) / Math.Abs(beforePM - value)))); + bufVector.Y = 0; + + plusVector.Add(bufVector); + minusVector.Add(bufVector); + } + + + sKVector2f vector = new sKVector2f(); + vector.X = (float)xpos; + vector.Y = (float)value; + + if (value < 0) + { + plusVector.Add(vector); + } + if (value > 0) + { + minusVector.Add(vector); + } + if (value == 0) + { + plusVector.Add(vector); + minusVector.Add(vector); + } + beforePM = value; + + //최고 최저 바 + double sX = -383.48; + double eX = 359.28; + double len = eX - sX; + double lenX = len / (ds3.Tables[0].Rows.Count - 1); + + if (v.Equals(MaxValue)) + { + mf.KAObject = mf.KAScene.GetObject("highTag1"); + double XP = sX + ((index - 1) * lenX); + + mf.KAObject.SetPosition((float)XP, 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("highPrice1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", v)); + } + if (v.Equals(MinValue)) + { + mf.KAObject = mf.KAScene.GetObject("lowTag1"); + double XP = sX + ((index - 1) * lenX); + + mf.KAObject.SetPosition((float)XP, 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("lowPrice1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", v)); + + } + } + + mf.KAObject = mf.KAScene.GetObject("minusGraph1"); + mf.KAObject.SetPosition(0, baseline, 0, eKVectorType.VECTOR_TYPE_Y); + mf.KAObject.BeginPathShapePoint(); + mf.KAObject.ClearPathShapePoints(); + mf.KAObject.AddPathShapePoint(0, 0, 0); + + foreach (var v in minusVector) + { + mf.KAObject.AddPathShapePoint(v.X, -v.Y, 0); + } + + mf.KAObject.AddPathShapePoint((float)maxX, 0, 0); + mf.KAObject.EndPathShapePoint(); + + mf.KAObject = mf.KAScene.GetObject("plusGraph1"); + mf.KAObject.SetPosition(0, baseline, 0, eKVectorType.VECTOR_TYPE_Y); + mf.KAObject.BeginPathShapePoint(); + mf.KAObject.ClearPathShapePoints(); + mf.KAObject.AddPathShapePoint(0, 0, 0); + + foreach (var v in plusVector) + { + mf.KAObject.AddPathShapePoint(v.X, v.Y, 0); + } + + mf.KAObject.AddPathShapePoint((float)maxX, 0, 0); + mf.KAObject.EndPathShapePoint(); + + //라인 파트2 + price = 0; + referencePrice = 0; + MaxValue = Int32.MinValue; + MinValue = Int32.MaxValue; + prices = new List(); + + + for (int i = 0; i < ds4.Tables[0].Rows.Count; i++) + { + + //날짜 + if (i == 0) + { + mf.KAObject = mf.KAScene.GetObject("date2_5"); + string date = ds4.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == ds4.Tables[0].Rows.Count - 1) + { + mf.KAObject = mf.KAScene.GetObject("date2_1"); + string date = ds4.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds4.Tables[0].Rows.Count - 1) / 2)) + { + mf.KAObject = mf.KAScene.GetObject("date2_3"); + string date = ds4.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds4.Tables[0].Rows.Count - 1) / 4)) + { + mf.KAObject = mf.KAScene.GetObject("date2_4"); + string date = ds4.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds4.Tables[0].Rows.Count - 1) * 3 / 4)) + { + mf.KAObject = mf.KAScene.GetObject("date2_2"); + string date = ds4.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + + int pr = Convert.ToInt32(ds4.Tables[0].Rows[i][1].ToString()); + + if (i == ds4.Tables[0].Rows.Count - 1) //기준가 + { + referencePrice = pr; + } + else if (i == 0) + { + price = pr; + } + + if (pr > MaxValue) + MaxValue = pr; + if (pr < MinValue) + MinValue = pr; + + prices.Add(pr); + } + + gap = MaxValue - MinValue; + center = (MaxValue + MinValue) / 2; + + + prices.Reverse(); + + //Postion -75 ~ 150 + //gap => min 225 + mf.KAObject = mf.KAScene.GetObject("baseline2"); + baseline = (float)((Convert.ToDouble(referencePrice - MinValue) / (gap)) * 150 - 50); + mf.KAObject.SetPosition(0, baseline, 0, eKVectorType.VECTOR_TYPE_Y); + + + maxX = 812.0; + gapX = maxX / (prices.Count - 1); + + plusVector = new List(); + minusVector = new List(); + index = 0; + beforePM = 0; + foreach (var v in prices) + { + index++; + double xpos = gapX * (index - 1); + double value = (Convert.ToDouble(referencePrice - v) / (gap)) * 150; + + if ((beforePM > 0 && value < 0) || // + => - + (beforePM < 0 && value > 0)) // - => + + + { + sKVector2f bufVector = new sKVector2f(); + bufVector.X = (float)(xpos - (gapX * (Math.Abs(value) / Math.Abs(beforePM - value)))); + bufVector.Y = 0; + + plusVector.Add(bufVector); + minusVector.Add(bufVector); + } + + + sKVector2f vector = new sKVector2f(); + vector.X = (float)xpos; + vector.Y = (float)value; + + if (value < 0) + { + plusVector.Add(vector); + } + if (value > 0) + { + minusVector.Add(vector); + } + if (value == 0) + { + plusVector.Add(vector); + minusVector.Add(vector); + } + beforePM = value; + + //최고 최저 바 + double sX = -383.48; + double eX = 359.28; + double len = eX - sX; + double lenX = len / (ds4.Tables[0].Rows.Count - 1); + + if (v.Equals(MaxValue)) + { + mf.KAObject = mf.KAScene.GetObject("highTag2"); + double XP = sX + ((index - 1) * lenX); + + mf.KAObject.SetPosition((float)XP, 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("highPrice2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", v)); + } + if (v.Equals(MinValue)) + { + mf.KAObject = mf.KAScene.GetObject("lowTag2"); + double XP = sX + ((index - 1) * lenX); + + mf.KAObject.SetPosition((float)XP, 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("lowPrice2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", v)); + + } + } + + mf.KAObject = mf.KAScene.GetObject("minusGraph2"); + mf.KAObject.SetPosition(0, baseline, 0, eKVectorType.VECTOR_TYPE_Y); + mf.KAObject.BeginPathShapePoint(); + mf.KAObject.ClearPathShapePoints(); + mf.KAObject.AddPathShapePoint(0, 0, 0); + + foreach (var v in minusVector) + { + mf.KAObject.AddPathShapePoint(v.X, -v.Y, 0); + } + + mf.KAObject.AddPathShapePoint((float)maxX, 0, 0); + mf.KAObject.EndPathShapePoint(); + + mf.KAObject = mf.KAScene.GetObject("plusGraph2"); + mf.KAObject.SetPosition(0, baseline, 0, eKVectorType.VECTOR_TYPE_Y); + mf.KAObject.BeginPathShapePoint(); + mf.KAObject.ClearPathShapePoints(); + mf.KAObject.AddPathShapePoint(0, 0, 0); + + foreach (var v in plusVector) + { + mf.KAObject.AddPathShapePoint(v.X, v.Y, 0); + } + mf.KAObject.AddPathShapePoint((float)maxX, 0, 0); + mf.KAObject.EndPathShapePoint(); + + mf.m_chkdata = true; + + + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + + public void setObjectStockChange(KAObject KAObject, string value, int cnt) + { + try + { + string v = string.Empty; + if (cnt == 0) + v = ""; + else if (cnt == 1) + v = "1"; + else if (cnt == 2) + v = "2"; + else if (cnt == 3) + v = ""; + + KAObject = mf.KAScene.GetObject("upup" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("up" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("flat" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("down" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("downdown" + v); + KAObject.SetVisible(0); + + if (value.Equals("상한")) + { + KAObject = mf.KAScene.GetObject("upup" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(0); + + + + } + else if (value.Equals("상승") || value.Equals("+")) + { + KAObject = mf.KAScene.GetObject("up" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(0); + + } + else if (value.Equals("보합") || value.Equals("")) + { + KAObject = mf.KAScene.GetObject("flat" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(0); + + + } + else if (value.Equals("하락") || value.Equals("-")) + { + KAObject = mf.KAScene.GetObject("down" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(1); + + } + else if (value.Equals("하한")) + { + KAObject = mf.KAScene.GetObject("downdown" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(1); + } + + + } + catch (Exception) + { + + } + + } + } +} diff --git a/MBN_STOCK_N/Scene/s5032.cs b/MBN_STOCK_N/Scene/s5032.cs new file mode 100644 index 0000000..2ba1e8b --- /dev/null +++ b/MBN_STOCK_N/Scene/s5032.cs @@ -0,0 +1,340 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5032 //선물 포함 2열판 + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + string kiho1 = string.Empty; + string kiho2 = string.Empty; + string m_sub = string.Empty; + string m_code = string.Empty; + string m_jname = string.Empty; + + string[] m_rs = null; + int m_idx = 0; + + public s5032(Form frm, int idx, string jname, string sub, string code) + { + try + { + DataSet ds1 = null; + DataSet ds2 = null; + + string query = string.Empty; + m_code = code; m_sub = sub; m_jname = jname; + + + mf = (MainForm)frm; + + if (idx == 0)//지수 (코스피, 코스닥, 코스피 200, 선물, KRX 100 + { + m_rs = jname.Split(','); + + if (m_rs[0].Contains("선물")) + { + ds1 = Data_Selection(m_rs[1], 1); + ds2 = Data_Selection(m_rs[0], 2); + } + else + { + ds1 = Data_Selection(m_rs[0], 1); + ds2 = Data_Selection(m_rs[1], 2); + } + + + mf.dataGridView1.DataSource = ds1.Tables[0]; + mf.dataGridView2.DataSource = ds2.Tables[0]; + + + Data_View(0, 0); + + + } + else if (idx == 1) + { + m_rs = jname.Split(','); + + ds1 = jongmok_value(m_rs[0]); + ds2 = jongmok_value(m_rs[1]); + + mf.dataGridView1.DataSource = ds1.Tables[0]; + mf.dataGridView2.DataSource = ds2.Tables[0]; + + mf.KAScene.GetObject("title1").SetValue(ds1.Tables[0].Rows[0][1].ToString()); + mf.KAScene.GetObject("title2").SetValue(ds2.Tables[0].Rows[0][1].ToString()); + + mf.KAObject = mf.KAScene.GetObject("price1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0][2].ToString()))); + mf.KAObject = mf.KAScene.GetObject("price2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0][2].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0][3].ToString()))); + mf.KAObject = mf.KAScene.GetObject("changePrice2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0][3].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("rate1"); + mf.KAObject.SetValue(Convert.ToDouble(ds1.Tables[0].Rows[0][6].ToString()).ToString("##0.00")); + mf.KAObject = mf.KAScene.GetObject("rate2"); + mf.KAObject.SetValue(Convert.ToDouble(ds2.Tables[0].Rows[0][6].ToString()).ToString("##0.00")); + + mf.KAScene.GetObject("wonText1").SetValue(""); + mf.KAScene.GetObject("wonText2").SetValue(""); + + mf.KAScene.GetObject("unitText1").SetValue("단위 : 원"); + mf.KAScene.GetObject("unitText2").SetValue("단위 : 원"); + + mf.setObjectStockChange(mf.KAObject, ds1.Tables[0].Rows[0][4].ToString(), 1); + mf.setObjectStockChange(mf.KAObject, ds2.Tables[0].Rows[0][4].ToString(), 2); + + mf.m_chkdata = true; + } + + else if (idx == 3) + { + m_rs = jname.Split('-'); + if (code.Contains("코스피")) + { + ds1 = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.지수업종, 국내시장종류.KOSPI, m_rs[0]); + ds2 = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.지수업종, 국내시장종류.KOSPI, m_rs[1]); + } + else + { + ds1 = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.지수업종, 국내시장종류.KOSDAQ, m_rs[0]); + ds2 = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.지수업종, 국내시장종류.KOSDAQ, m_rs[1]); + } + + mf.dataGridView1.DataSource = ds1.Tables[0]; + mf.dataGridView2.DataSource = ds2.Tables[0]; + + Data_View(0, 0); + } + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + + private void SetDataText(int idx) + { + if (idx == 1) + { + mf.KAScene.GetObject("title1").SetValue(mf.dataGridView1.Rows[0].Cells[1].Value.ToString()); + mf.KAObject = mf.KAScene.GetObject("price1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[2].Value.ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[3].Value.ToString()))); + + mf.KAObject = mf.KAScene.GetObject("rate1"); + mf.KAObject.SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[6].Value.ToString()).ToString("##0.00")); + + mf.KAScene.GetObject("wonText1").SetValue(""); + mf.KAScene.GetObject("unitText1").SetValue("단위 : 원"); + + mf.setObjectStockChange(mf.KAObject, mf.dataGridView1.Rows[0].Cells[4].Value.ToString(), 1); + } + else + { + mf.KAScene.GetObject("title2").SetValue(mf.dataGridView2.Rows[0].Cells[1].Value.ToString()); + mf.KAObject = mf.KAScene.GetObject("price2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView2.Rows[0].Cells[2].Value.ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView2.Rows[0].Cells[3].Value.ToString()))); + + mf.KAObject = mf.KAScene.GetObject("rate2"); + mf.KAObject.SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[6].Value.ToString()).ToString("##0.00")); + + mf.KAScene.GetObject("wonText2").SetValue(""); + mf.KAScene.GetObject("unitText2").SetValue("단위 : 원"); + + mf.setObjectStockChange(mf.KAObject, mf.dataGridView2.Rows[0].Cells[4].Value.ToString(), 2); + } + } + + private DataSet jongmok_value(string jname) + { + DataSet ds = null; + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.KOSPI, jname); + } + } + + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.KOSDAQ, jname); + } + } + return ds; + } + + private DataSet Data_Selection(string jname, int idx) + { + DataSet ds = null; + + + if (jname.Contains("코스피")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.현재지수, 국내지수종류.KOSPI); + else if (jname.Contains("코스닥")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.현재지수, 국내지수종류.KOSDAQ); + else if (jname.Contains("코스피200")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.현재지수, 국내지수종류.KOSPI200); + else if (jname.Contains("선물")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.현재지수, 국내지수종류.선물); + else if (jname.Contains("KRX100")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.현재지수, 국내지수종류.KRX100); + + else if (jname.Contains("원달러")) + ds = DataManager.getInstance().createPlateData(원환율.원달러); + else if (jname.Contains("원엔")) + ds = DataManager.getInstance().createPlateData(원환율.원엔); + else if (jname.Contains("원위엔")) + ds = DataManager.getInstance().createPlateData(원환율.원위엔); + else if (jname.Contains("원유로")) + ds = DataManager.getInstance().createPlateData(원환율.원유로); + + else if (jname.Contains("다우")) + ds = DataManager.getInstance().createPlateData(해외지수종류.다우, "DJI@DJI"); + else if (jname.Contains("나스닥")) + ds = DataManager.getInstance().createPlateData(해외지수종류.나스닥, "NAS@IXIC"); + else if (jname.Contains("S&P")) + ds = DataManager.getInstance().createPlateData(해외지수종류.SNP, "SPI@SPX"); + else if (jname.Contains("독일")) + ds = DataManager.getInstance().createPlateData(해외지수종류.독일, "XTR@DAX30"); + else if (jname.Contains("영국")) + ds = DataManager.getInstance().createPlateData(해외지수종류.영국, "LNS@FTSE100"); + else if (jname.Contains("프랑스")) + ds = DataManager.getInstance().createPlateData(해외지수종류.프랑스, "PAS@CAC40"); + else if (jname.Contains("니케이")) + ds = DataManager.getInstance().createPlateData(해외지수종류.니케이, "NII@NI225"); + else if (jname.Contains("중국 상해")) + ds = DataManager.getInstance().createPlateData(해외지수종류.중국상해, "SHS@000001"); + else if (jname.Contains("홍콩 항셍")) + ds = DataManager.getInstance().createPlateData(해외지수종류.홍콩항셍, "HSI@HSI"); + else if (jname.Contains("대만 가권")) + ds = DataManager.getInstance().createPlateData(해외지수종류.대만가권, "TWS@TI01"); + else if (jname.Contains("싱가포르 지수")) + ds = DataManager.getInstance().createPlateData(해외지수종류.싱가포르지수, "SGI@STI"); + else if (jname.Contains("태국 지수")) + ds = DataManager.getInstance().createPlateData(해외지수종류.태국지수, "THI@SET"); + else if (jname.Contains("필리핀 지수")) + ds = DataManager.getInstance().createPlateData(해외지수종류.필리핀, "PHI@COMP"); + else if (jname.Contains("말레이시아 지수")) + ds = DataManager.getInstance().createPlateData(해외지수종류.말레이시아, "IDI@JKSE"); + else if (jname.Contains("인도네시아 지수")) + ds = DataManager.getInstance().createPlateData(해외지수종류.인도네시아, "MYI@KLSE"); + + else + { + ds = jongmok_value(jname); + m_idx = idx; + } + + return ds; + } + + private void Data_View(int idx, int index) + { + int ix1_1 = 0; int ix2_1 = 0; int ix3_1 = 0; int ix4_1 = 0; int ix5_1 = 0; + //int ix1_2 = 0; int ix2_2 = 0; int ix3_2 = 0; int ix4_2 = 0; int ix5_2 = 0; + + if (!m_rs[0].Contains("환율")) + { + ix1_1 = 0; ix2_1 = 1; ix3_1 = 2; ix4_1 = 3; ix5_1 = 4; + if (m_code == "선물") + ix5_1 = 7; + } + else if (m_rs[0].Contains("환율")) + { + ix1_1 = 1; ix2_1 = 2; ix3_1 = 4; ix4_1 = 3; ix5_1 = 5; + } + //if (!m_rs[1].Contains("환율")) + //{ + // ix1_2 = 0; ix2_2 = 1; ix3_2 = 2; ix4_2 = 3; ix5_2 = 4; + // if (m_code == "선물") + // ix5_2 = 7; + //} + //else if (m_rs[1].Contains("환율")) + //{ + // ix1_2 = 1; ix2_2 = 2; ix3_2 = 4; ix4_2 = 3; ix5_2 = 5; + //} + + if (mf.dataGridView1.RowCount <= 1) + mf.m_chkdata = false; + else + { + mf.KAScene.GetObject("title").SetValue(mf.dataGridView1.Rows[0].Cells[ix1_1].Value.ToString()); + mf.KAScene.GetObject("price").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix2_1].Value.ToString()).ToString("#,##0.00")); + + if (mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString().Substring(0, 1) == "-") + mf.KAScene.GetObject("changePrice").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString().Substring(1)).ToString("#,##0.00")); + else + mf.KAScene.GetObject("changePrice").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString()).ToString("#,##0.00")); + + if (mf.dataGridView1.Rows[0].Cells[2].Value.ToString().Substring(0, 1) == "-") + mf.KAScene.GetObject("rate").SetValue("-" + Convert.ToDouble( mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + else + mf.KAScene.GetObject("rate").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + + + kiho1 = mf.dataGridView1.Rows[0].Cells[ix3_1].Value.ToString(); + mf.setObjectStockChange(mf.KAObject, kiho1, 3); + + + mf.KAScene.GetObject("title1").SetValue(mf.dataGridView2.Rows[0].Cells[0].Value.ToString()); + mf.KAScene.GetObject("price1").SetValue(mf.dataGridView2.Rows[0].Cells[1].Value.ToString()); + mf.KAScene.GetObject("changePrice1").SetValue(mf.dataGridView2.Rows[0].Cells[3].Value.ToString()); + + if (mf.dataGridView2.Rows[0].Cells[2].Value.ToString() == "+") + { + mf.KAScene.GetObject("up1").SetVisible(1); + mf.KAScene.GetObject("upup1").SetVisible(0); + mf.KAScene.GetObject("down1").SetVisible(0); + mf.KAScene.GetObject("downdown1").SetVisible(0); + mf.KAScene.GetObject("flat1").SetVisible(0); + } + + else if (mf.dataGridView2.Rows[0].Cells[2].Value.ToString() == "-") + { + mf.KAScene.GetObject("up1").SetVisible(0); + mf.KAScene.GetObject("upup1").SetVisible(0); + mf.KAScene.GetObject("down1").SetVisible(1); + mf.KAScene.GetObject("downdown1").SetVisible(0); + mf.KAScene.GetObject("flat1").SetVisible(0); + } + else + { + mf.KAScene.GetObject("up1").SetVisible(0); + mf.KAScene.GetObject("upup1").SetVisible(0); + mf.KAScene.GetObject("down1").SetVisible(0); + mf.KAScene.GetObject("downdown1").SetVisible(0); + mf.KAScene.GetObject("flat1").SetVisible(1); + } + + mf.KAScene.GetObject("r_value1").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[4].Value.ToString()).ToString("#,##0")); + mf.KAScene.GetObject("r_value2").SetValue((Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[6].Value.ToString())/1000000).ToString("#,##0")); + mf.KAScene.GetObject("r_value3").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[5].Value.ToString()).ToString("#,##0")); + + mf.m_chkdata = true; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s5037.cs b/MBN_STOCK_N/Scene/s5037.cs new file mode 100644 index 0000000..1a46a6a --- /dev/null +++ b/MBN_STOCK_N/Scene/s5037.cs @@ -0,0 +1,299 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5037 + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + public s5037(Form frm, string jname, string code) + { + try + { + string query = string.Empty; + string table1 = string.Empty; + string table2 = string.Empty; + + mf = (MainForm)frm; + + mf.KAScene.GetObject("title").SetValue(jname); + + if (code == "코스피") + { + //query = "SELECT DISTINCT b.f_stock_code STOCK_CODE, "; + //query = query + "b.f_stock_wanname STOCK_NAME, "; + //query = query + "a.f_curr_price CURR_PRICE, "; + //query = query + "a.f_net_chg NET_CHG, "; + //query = query + "decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') CHG_TYPE, "; + //query = query + "round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), "; + //query = query + "'2', (a.f_curr_price - a.f_net_chg), "; + //query = query + "'3', (a.f_curr_price), "; + //query = query + "'4', -1 * (a.f_curr_price + a.f_net_chg), "; + //query = query + "'5', -1 * (a.f_curr_price + a.f_net_chg))) * 100, 2) rate "; + //query = query + "FROM t_online1 a, t_stock b "; + //query = query + "WHERE b.f_mkt_halt = 'N' "; + //query = query + "AND a.f_curr_price < > 0 "; + //query = query + "AND a.f_stock_code = b.f_stock_code "; + //query = query + "and b.f_stock_wanname in('" + jname + "')"; + + table1 = "t_online1"; + table2 = "t_stock"; + } + + else + { + table1 = "t_kosdaq_online1"; + table2 = "t_kosdaq_stock"; + + + } + query = "SELECT DISTINCT b.f_stock_code STOCK_CODE, "; + query = query + "b.f_stock_wanname STOCK_NAME, "; + query = query + "a.f_curr_price CURR_PRICE, "; + query = query + "a.f_net_chg NET_CHG, "; + query = query + "decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') CHG_TYPE, "; + query = query + "round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), "; + query = query + "'2', (a.f_curr_price - a.f_net_chg), "; + query = query + "'3', (a.f_curr_price), "; + query = query + "'4', -1*(a.f_curr_price + a.f_net_chg), "; + query = query + "'5', -1*(a.f_curr_price + a.f_net_chg))) * 100, 2) rate "; + query = query + "FROM " + table1 + " a, " + table2 + " b "; + query = query + " WHERE b.f_mkt_halt = 'N' "; + query = query + "AND a.f_curr_price < > 0 "; + query = query + "AND a.f_stock_code = b.f_stock_code "; + query = query + "and b.f_stock_wanname in('" + jname + "')"; + + mf.m_db.ViewQuery(mf.dataGridView1, query); + + + mf.KAObject = mf.KAScene.GetObject("unit"); + mf.KAObject.SetValue("단위 : 원"); + + mf.KAObject = mf.KAScene.GetObject("price"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[2].Value.ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[3].Value.ToString()))); + + mf.KAObject = mf.KAScene.GetObject("rate"); + mf.KAObject.SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[5].Value.ToString()).ToString("##0.00")); + + + mf.KAObject = mf.KAScene.GetObject("upup"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown"); + mf.KAObject.SetVisible(0); + + string updown = mf.dataGridView1.Rows[0].Cells[4].Value.ToString(); + + if (updown == "상한" || updown == "상승") + { + if (updown == "상한") + { + mf.KAObject = mf.KAScene.GetObject("upup"); + } + else + { + mf.KAObject = mf.KAScene.GetObject("up"); + } + + mf.KAObject.SetVisible(1); + + //mf.KAObject = mf.KAScene.GetObject("bg"); + //mf.KAObject.SetFaceColor(170, 0, 0, 255); + + mf.KAScene.GetObject("bg1").SetVisible(1); + mf.KAScene.GetObject("bg2").SetVisible(0); + mf.KAScene.GetObject("bg3").SetVisible(0); + + } + else if (updown == "하한" || updown == "하락") + { + if (updown == "하한") + { + mf.KAObject = mf.KAScene.GetObject("downdown"); + } + else + { + mf.KAObject = mf.KAScene.GetObject("down"); + } + mf.KAObject.SetVisible(1); + + //mf.KAObject = mf.KAScene.GetObject("bg"); + //mf.KAObject.SetFaceColor(15, 99, 189, 255); + mf.KAScene.GetObject("bg1").SetVisible(0); + mf.KAScene.GetObject("bg2").SetVisible(0); + mf.KAScene.GetObject("bg3").SetVisible(1); + } + else + { + //mf.KAObject = mf.KAScene.GetObject("bg"); + //mf.KAObject.SetFaceColor(95, 95, 95, 255); + + mf.KAScene.GetObject("bg1").SetVisible(0); + mf.KAScene.GetObject("bg2").SetVisible(1); + mf.KAScene.GetObject("bg3").SetVisible(0); + } + + query = ""; + + //query = "SELECT DISTINCT b.f_stock_code STOCK_CODE, "; + //query = query + "b.f_stock_wanname STOCK_NAME, "; + //query = query + "a.f_curr_price CURR_PRICE, "; + //query = query + "a.f_net_chg NET_CHG, "; + //query = query + "decode(a.f_chg_type, '1', '상한', '2', '상승', '3', '보합', '4', '하한', '5', '하락') CHG_TYPE, "; + //query = query + "round((a.f_net_chg / decode(a.f_chg_type, '1', (a.f_curr_price - a.f_net_chg), "; + //query = query + "'2', (a.f_curr_price - a.f_net_chg), "; + //query = query + "'3', (a.f_curr_price), "; + //query = query + "'4', -1 * (a.f_curr_price + a.f_net_chg), "; + //query = query + "'5', -1 * (a.f_curr_price + a.f_net_chg))) * 100, 2) rate "; + //query = query + "FROM " + table1 + " a, " + table2 + " b "; + //query = query + "WHERE b.f_mkt_halt = 'N' "; + //query = query + "AND a.f_curr_price < > 0 "; + //query = query + "AND a.f_stock_code = b.f_stock_code "; + //query = query + "and b.f_stock_wanname in('" + jname + "')"; + + if (code == "코스피") + { + //매수 + query = "select f_sale_nick_kname sale_name, f_buy_vol buy_vol from(select a.f_stock_code, "; + query = query + "b.f_sale_nick_kname, a.f_buy_dealer_vol_1 f_buy_vol from t_dealer a, t_sale_member b, t_stock c "; + query = query + "where c.f_stock_wanname = '" + jname + "' and c.f_mkt_halt = 'N' and a.f_buy_dealer_no_1 = b.f_sale_no "; + query = query + "and a.f_stock_code = c.f_stock_code union select a.f_stock_code, "; + query = query + "b.f_sale_nick_kname, a.f_buy_dealer_vol_2 f_buy_vol from t_dealer a, t_sale_member b, t_stock c "; + query = query + "where c.f_stock_wanname = '" + jname + "' and c.f_mkt_halt = 'N' and a.f_buy_dealer_no_2 = b.f_sale_no "; + query = query + "and a.f_stock_code = c.f_stock_code union select a.f_stock_code, "; + query = query + "b.f_sale_nick_kname, a.f_buy_dealer_vol_3 f_buy_vol from t_dealer a, t_sale_member b, t_stock c "; + query = query + "where c.f_stock_wanname = '" + jname + "' and c.f_mkt_halt = 'N' and a.f_buy_dealer_no_3 = b.f_sale_no "; + query = query + "and a.f_stock_code = c.f_stock_code union select a.f_stock_code, b.f_sale_nick_kname, a.f_buy_dealer_vol_4 f_buy_vol "; + query = query + "from t_dealer a, t_sale_member b, t_stock c where c.f_stock_wanname = '" + jname + "' "; + query = query + "and c.f_mkt_halt = 'N' and a.f_buy_dealer_no_4 = b.f_sale_no and a.f_stock_code = c.f_stock_code "; + query = query + "union select a.f_stock_code, b.f_sale_nick_kname, a.f_buy_dealer_vol_5 f_buy_vol "; + query = query + "from t_dealer a, t_sale_member b, t_stock c where c.f_stock_wanname = '" + jname + "'"; + query = query + "and c.f_mkt_halt = 'N' and a.f_buy_dealer_no_5 = b.f_sale_no and a.f_stock_code = c.f_stock_code)"; + query = query + "order by f_buy_vol desc"; + } + else + { + query = "select f_sale_nick_kname sale_name, f_buy_vol buy_vol from(select a.f_stock_code, "; + query = query + "b.f_sale_nick_kname, a.f_buy_dealer_vol_1 f_buy_vol from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c "; + query = query + "where c.f_stock_wanname = '" + jname + "' and c.f_mkt_halt = 'N' and a.f_buy_dealer_no_1 = b.f_sale_no "; + query = query + "and a.f_stock_code = c.f_stock_code union select a.f_stock_code, "; + query = query + "b.f_sale_nick_kname, a.f_buy_dealer_vol_2 f_buy_vol from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c "; + query = query + "where c.f_stock_wanname = '" + jname + "' and c.f_mkt_halt = 'N' and a.f_buy_dealer_no_2 = b.f_sale_no "; + query = query + "and a.f_stock_code = c.f_stock_code union select a.f_stock_code, "; + query = query + "b.f_sale_nick_kname, a.f_buy_dealer_vol_3 f_buy_vol from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c "; + query = query + "where c.f_stock_wanname = '" + jname + "' and c.f_mkt_halt = 'N' and a.f_buy_dealer_no_3 = b.f_sale_no "; + query = query + "and a.f_stock_code = c.f_stock_code union select a.f_stock_code, b.f_sale_nick_kname, a.f_buy_dealer_vol_4 f_buy_vol "; + query = query + "from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c where c.f_stock_wanname = '" + jname + "' "; + query = query + "and c.f_mkt_halt = 'N' and a.f_buy_dealer_no_4 = b.f_sale_no and a.f_stock_code = c.f_stock_code "; + query = query + "union select a.f_stock_code, b.f_sale_nick_kname, a.f_buy_dealer_vol_5 f_buy_vol "; + query = query + "from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c where c.f_stock_wanname = '" + jname + "'"; + query = query + "and c.f_mkt_halt = 'N' and a.f_buy_dealer_no_5 = b.f_sale_no and a.f_stock_code = c.f_stock_code)"; + query = query + "order by f_buy_vol desc"; + + } + + mf.m_db.ViewQuery(mf.dataGridView2, query); + + if (code == "코스피") + { + + query = "select f_sale_nick_kname sale_name, f_sell_vol sell_vol from(select a.f_stock_code, "; + query = query + "b.f_sale_nick_kname, a.f_sell_dealer_vol_1 f_sell_vol from t_dealer a, t_sale_member b, t_stock c "; + query = query + "where c.f_stock_wanname = '" + jname + "' and c.f_mkt_halt = 'N' and a.f_sell_dealer_no_1 = b.f_sale_no "; + query = query + "and a.f_stock_code = c.f_stock_code union select a.f_stock_code, "; + query = query + "b.f_sale_nick_kname, a.f_sell_dealer_vol_2 f_sell_vol from t_dealer a, t_sale_member b, t_stock c "; + query = query + "where c.f_stock_wanname = '" + jname + "' and c.f_mkt_halt = 'N' and a.f_sell_dealer_no_2 = b.f_sale_no "; + query = query + "and a.f_stock_code = c.f_stock_code union select a.f_stock_code, b.f_sale_nick_kname, a.f_sell_dealer_vol_3 f_sell_vol "; + query = query + "from t_dealer a, t_sale_member b, t_stock c where c.f_stock_wanname = '" + jname + "' "; + query = query + "and c.f_mkt_halt = 'N' and a.f_sell_dealer_no_3 = b.f_sale_no and a.f_stock_code = c.f_stock_code "; + query = query + "union select a.f_stock_code, b.f_sale_nick_kname, a.f_sell_dealer_vol_4 f_sell_vol "; + query = query + "from t_dealer a, t_sale_member b, t_stock c where c.f_stock_wanname = '" + jname + "' "; + query = query + "and c.f_mkt_halt = 'N' and a.f_sell_dealer_no_4 = b.f_sale_no and a.f_stock_code = c.f_stock_code "; + query = query + "union select a.f_stock_code, b.f_sale_nick_kname, a.f_sell_dealer_vol_5 f_sell_vol "; + query = query + "from t_dealer a, t_sale_member b, t_stock c where c.f_stock_wanname = '" + jname + "' "; + query = query + "and c.f_mkt_halt = 'N' and a.f_sell_dealer_no_5 = b.f_sale_no and a.f_stock_code = c.f_stock_code) "; + query = query + "order by f_sell_vol desc "; + } + + else + { + query = "select f_sale_nick_kname sale_name, f_sell_vol sell_vol from(select a.f_stock_code, "; + query = query + "b.f_sale_nick_kname, a.f_sell_dealer_vol_1 f_sell_vol from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c "; + query = query + "where c.f_stock_wanname = '" + jname + "' and c.f_mkt_halt = 'N' and a.f_sell_dealer_no_1 = b.f_sale_no "; + query = query + "and a.f_stock_code = c.f_stock_code union select a.f_stock_code, "; + query = query + "b.f_sale_nick_kname, a.f_sell_dealer_vol_2 f_sell_vol from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c "; + query = query + "where c.f_stock_wanname = '" + jname + "' and c.f_mkt_halt = 'N' and a.f_sell_dealer_no_2 = b.f_sale_no "; + query = query + "and a.f_stock_code = c.f_stock_code union select a.f_stock_code, b.f_sale_nick_kname, a.f_sell_dealer_vol_3 f_sell_vol "; + query = query + "from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c where c.f_stock_wanname = '" + jname + "' "; + query = query + "and c.f_mkt_halt = 'N' and a.f_sell_dealer_no_3 = b.f_sale_no and a.f_stock_code = c.f_stock_code "; + query = query + "union select a.f_stock_code, b.f_sale_nick_kname, a.f_sell_dealer_vol_4 f_sell_vol "; + query = query + "from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c where c.f_stock_wanname = '" + jname + "' "; + query = query + "and c.f_mkt_halt = 'N' and a.f_sell_dealer_no_4 = b.f_sale_no and a.f_stock_code = c.f_stock_code "; + query = query + "union select a.f_stock_code, b.f_sale_nick_kname, a.f_sell_dealer_vol_5 f_sell_vol "; + query = query + "from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c where c.f_stock_wanname = '" + jname + "' "; + query = query + "and c.f_mkt_halt = 'N' and a.f_sell_dealer_no_5 = b.f_sale_no and a.f_stock_code = c.f_stock_code) "; + query = query + "order by f_sell_vol desc "; + + + //query = "select f_sale_nick_kname sale_name, f_sell_vol sell_vol from( select a.f_stock_code, b.f_sale_nick_kname, a.f_buy_dealer_vol_1 f_sell_vol "; + //query = query + "from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c where c.f_stock_wanname = '" + jname + "' and c.f_mkt_halt = 'N' "; + //query = query + "and a.f_sell_dealer_no_1 = b.f_sale_no and a.f_stock_code = c.f_stock_code union select a.f_stock_code, b.f_sale_nick_kname, a.f_sell_dealer_vol_2 f_sell_vol "; + //query = query + "from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c where c.f_stock_wanname = '" + jname + "' "; + //query = query + "and c.f_mkt_halt = 'N' and a.f_sell_dealer_no_2 = b.f_sale_no and a.f_stock_code = c.f_stock_code "; + //query = query + "union select a.f_stock_code, b.f_sale_nick_kname, a.f_sell_dealer_vol_3 f_sell_vol from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c "; + //query = query + "where c.f_stock_wanname = '" + jname + "' and c.f_mkt_halt = 'N' and a.f_sell_dealer_no_3 = b.f_sale_no and a.f_stock_code = c.f_stock_code "; + //query = query + "union select a.f_stock_code, b.f_sale_nick_kname, a.f_sell_dealer_vol_4 f_sell_vol from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c "; + //query = query + "where c.f_stock_wanname = '" + jname + "' and c.f_mkt_halt = 'N' and a.f_sell_dealer_no_4 = b.f_sale_no union select a.f_stock_code, "; + //query = query + "b.f_sale_nick_kname, a.f_sell_dealer_vol_5 f_sell_vol from t_kosdaq_dealer a, t_sale_member b, t_kosdaq_stock c where c.f_stock_wanname = '" + jname + "' "; + //query = query + "and c.f_mkt_halt = 'N' and a.f_sell_dealer_no_5 = b.f_sale_no and a.f_stock_code = c.f_stock_code ) "; + //query = query + "order by f_sell_vol desc "; + } + + mf.m_db.ViewQuery(mf.dataGridView3, query); + + for (int i = 1; i < 6; i++) + { + mf.KAScene.GetObject("buy_title_" + i.ToString()).SetValue(""); + mf.KAScene.GetObject("buy_vol_" + i.ToString()).SetValue(""); + mf.KAScene.GetObject("sell_title_" + i.ToString()).SetValue(""); + mf.KAScene.GetObject("sell_vol_" + i.ToString()).SetValue(""); + } + + for (int i=0; i< mf.dataGridView2.RowCount-1; i++) + { + mf.KAScene.GetObject("buy_title_" + (i+1).ToString()).SetValue(mf.dataGridView2.Rows[i].Cells[0].Value.ToString()); + mf.KAScene.GetObject("buy_vol_" + (i + 1).ToString()).SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView2.Rows[i].Cells[1].Value.ToString()))); + } + + for (int i = 0; i < mf.dataGridView3.RowCount - 1; i++) + { + mf.KAScene.GetObject("sell_title_" + (i + 1).ToString()).SetValue(mf.dataGridView3.Rows[i].Cells[0].Value.ToString()); + mf.KAScene.GetObject("sell_vol_" + (i + 1).ToString()).SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView3.Rows[i].Cells[1].Value.ToString()))); + } + mf.m_chkdata = true; + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s5074.cs b/MBN_STOCK_N/Scene/s5074.cs new file mode 100644 index 0000000..cb8f7a2 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5074.cs @@ -0,0 +1,1444 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; +using System.Diagnostics.Eventing.Reader; +using System.Reflection; + +namespace MBN_STOCK_N +{ + class s5074 //5단 표그래프 + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + string m_sub = string.Empty; + bool m_chk = false; + + public s5074(Form frm, string code, string jname, string sub, int idx) + { + string mart; + try + { + mf = (MainForm)frm; + m_sub = sub; + + mf.dataGridView1.Columns.Clear(); + + //================<<시장 mark 숨김>>================= + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(0); + //======================================================== + + if (sub.Contains("VI")) + { + FileDataLoadView(jname, idx, "VI 발동", 0); + } + else if (sub.Contains("테마")) + { + + if (code.Contains("_NXT")) + { + mart = "NXT"; + mf.m_db.Nxt_ViewQuery(mf.dataGridView2, "SELECT SB_CODE FROM SB_LIST Where SB_TITLE = '" + jname.Replace("(NXT)", "") + "' AND SB_MARKET = 'NXT'"); + } + else + { + mart = "KRX"; + mf.m_db.ViewQuery(mf.dataGridView2, "SELECT SB_CODE FROM SB_LIST Where SB_TITLE = '" + jname + "' AND SB_MARKET = 'KRX'"); + } + + code = mf.dataGridView2.Rows[0].Cells[0].Value.ToString(); + //QueryDataLoadView(code, idx, jname, 0); + + //if (sub.Contains("예상")) + // QueryDataLoadView(code, idx, jname, 1); + //else + // QueryDataLoadView(code, idx, jname, 0); + string sort; + if (sub.Contains("(입력순)")) + sort = "입력순"; + else if (sub.Contains("(상승률순)")) + sort = "상승률순"; + else + sort = "하락률순"; + + if (sub.Contains("예상")) + QueryDataLoadView(code, idx, jname, 1, sort); + else + { + if (mart == "NXT") + Nxt_QueryDataLoadView(code, idx, jname, 0, sort); + else + QueryDataLoadView(code, idx, jname, 0, sort); + } + } + else if (sub.Contains("전문가")) + { + mf.m_db.ViewQuery(mf.dataGridView2, "SELECT EP_CODE FROM EXPERT_LIST Where EP_NAME = '" + jname + "'"); + ExpertDataLoadView(mf.dataGridView2.Rows[0].Cells[0].Value.ToString(), idx, jname, 0); + } + else + { + if (code.Contains("NXT")) + MariaDataLoadView(code, sub, idx); + else + OracleDataLoadView(code, sub, idx); + } + + + if (!m_chk) + { + if (mf.dataGridView1.RowCount <= 1) + mf.m_chkdata = false; + else + mf.m_chkdata = true; + } + else + { + mf.m_chkdata = false; + } + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + + private void FileDataLoadView(string jname, int idx, string tname, int para) + { + string[] rs = jname.Split(','); + string[] data = new string[10]; + DataSet ds = null; + int cnt = 0; + + 판1그래프데이터산업및종목류 rc = 판1그래프데이터산업및종목류.종목현재가; + + if (para == 0) + rc = 판1그래프데이터산업및종목류.종목현재가; + else + rc = 판1그래프데이터산업및종목류.종목예상체결가; + + int lcnt = 0; + if ((rs.Length % 5) != 0) + lcnt = 1; + + lcnt = (rs.Length / 5) + lcnt; + + string str = mf.PlayList.ActiveSheet.GetText(mf.m_crow, 5).Trim(); + + str = str.Substring(str.IndexOf("/") + 1, str.Length - str.IndexOf("/") - 1); + + if (int.Parse(str) > lcnt) + { + //idx = 0; + jname = jname + "," + jname + "," + jname + "," + jname + "," + jname; + rs = jname.Split(','); + } + + for (int i = 1; i <= 5; i++) + { + mf.KAScene.GetObject("row" + (i).ToString()).SetVisible(0); + } + + if (para == 0) + // mf.KAScene.GetObject("title").SetValue(tname); + mf.KAScene.GetObject("title").SetValue(tname.Replace("(NXT)", "")); + + else + mf.KAScene.GetObject("title").SetValue(tname + " 예상 체결가"); + + + //========================================= + if (tname.Contains("(NXT")) + { + string m_file = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + + if (DateTime.Now.Hour <= 12) // 오전 + { + m_file = m_file + "\\Cuts\\Images\\프리마켓.png"; + // m_file = m_file + "프리마켓.png"; + } + else + { + m_file = m_file + "\\Cuts\\Images\\애프터마켓.png"; + //m_file = "애프터마켓.png"; + } + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetValue(m_file); + + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(0); + } + //============================================ + + mf.KAScene.GetObject("unit").SetValue("단위 : 원"); + + if (m_sub.Contains("전문가")) + { + mf.KAScene.GetObject("column1").SetValue("매수가"); + mf.KAScene.GetObject("column2").SetValue("현재가"); + mf.KAScene.GetObject("column3").SetValue("수익률"); + } + else + { + mf.KAScene.GetObject("column1").SetValue("현재가"); + mf.KAScene.GetObject("column2").SetValue("등락가"); + mf.KAScene.GetObject("column3").SetValue("등락률"); + } + + + for (int i = 0; i < rs.Length; i++) + { + if (i > 5) break; + ds = null; + + if (tname.Contains("NXT")) + { + foreach (DataRow r in mf.mDTNxtkospi.Rows) + { + if (r[0].Equals(rs[i + (idx * 5)])) + { + ds = DataManager.getInstance().createPlateData(rc, 국내시장종류.NXT_KOSPI, rs[i + (idx * 5)].Replace("(NXT)","")); + + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + foreach (DataRow r in mf.mDTNxtkosdaq.Rows) + { + if (r[0].Equals(rs[i + (idx * 5)])) + { + ds = DataManager.getInstance().createPlateData(rc, 국내시장종류.NXT_KOSDAQ, rs[i + (idx * 5)].Replace("(NXT)", "")); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + else + { + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(rs[i + (idx * 5)])) + { + ds = DataManager.getInstance().createPlateData(rc, 국내시장종류.KOSPI, rs[i + (idx * 5)]); + + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(rs[i + (idx * 5)])) + { + ds = DataManager.getInstance().createPlateData(rc, 국내시장종류.KOSDAQ, rs[i + (idx * 5)]); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + + if (ds != null) + { + mf.dataGridView1.DataSource = ds.Tables[0]; + + if (m_sub.Contains("전문가")) + { + + for (int j = 0; j< mf.dataGridView2.RowCount - 1; j++) + { + if (mf.dataGridView2.Rows[j].Cells[2].Value.ToString().Trim() == rs[i + (idx * 5)].Trim()) + { + data[0] = mf.dataGridView2.Rows[j].Cells[3].Value.ToString(); + break; + } + } + data[1] = ds.Tables[0].Rows[0][2].ToString(); + + double d = Convert.ToDouble(data[1]) - Convert.ToDouble(data[0]); + + data[2] = Convert.ToDouble((d / Convert.ToDouble(data[0])) * 100.00).ToString("##0.00"); + + if (data[2].Substring(0, 1) == "-") + { + data[3] = "하락"; + + } + else if (Convert.ToDouble(data[2]) == 0.0) + { + data[3] = ""; + } + else + { + data[3] = "상승"; + } + + } + else + { + if (para == 0) + { + data[0] = ds.Tables[0].Rows[0][2].ToString(); + data[1] = ds.Tables[0].Rows[0][3].ToString(); + data[2] = ds.Tables[0].Rows[0][6].ToString(); + data[3] = ds.Tables[0].Rows[0][4].ToString(); + } + else + { + data[0] = ds.Tables[0].Rows[0][3].ToString(); + data[1] = ds.Tables[0].Rows[0][6].ToString(); + data[2] = ds.Tables[0].Rows[0][9].ToString(); + data[3] = ds.Tables[0].Rows[0][8].ToString(); + } + } + + mf.KAScene.GetObject("row" + (cnt + 1).ToString()).SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("title" + (cnt + 1)); + mf.KAObject.SetValue(rs[i + (idx * 5)].Trim().Replace("(NXT)","")); + + mf.KAObject = mf.KAScene.GetObject("price" + (cnt + 1)); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[0]))); + + //mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1)); + //mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[1]))); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[1]))); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[1]))); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_3"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[1]))); + + + mf.KAObject = mf.KAScene.GetObject("rate" + (cnt + 1)); + mf.KAObject.SetValue(Convert.ToDouble(data[2]).ToString("##0.00")); + + + mf.KAScene.GetObject("upup" + (cnt + 1)).SetVisible(0); + mf.KAScene.GetObject("up" + (cnt + 1)).SetVisible(0); + mf.KAScene.GetObject("flat" + (cnt + 1)).SetVisible(0); + mf.KAScene.GetObject("down" + (cnt + 1)).SetVisible(0); + mf.KAScene.GetObject("downdown" + (cnt + 1)).SetVisible(0); + + //string PMtype = ds.Tables[0].Rows[i + (idx * 5)][colums[4]].ToString(); + string PMtype = data[3]; + + //if (para == 1) + //{ + // if (data[2].Contains("-")) + // PMtype = "하락"; + // else + // PMtype = "상승"; + //} + + if (PMtype.Equals("하락") || PMtype.Equals("하한") || PMtype.Equals("-")) + { + //mf.KAObject = mf.KAScene.GetObject("bg" + (cnt + 1)); + //mf.KAObject.SetFaceColor(15, 99, 188, 255); + //mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1)); + //mf.KAObject.SetFaceColor(15, 99, 188, 255); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_3").SetVisible(1); + + if (PMtype.Equals("하한")) + { + mf.KAObject = mf.KAScene.GetObject("downdown" + (cnt + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAScene.GetObject("down" + (cnt + 1)).SetVisible(1); + } + } + else if (PMtype.Equals("상승") || PMtype.Equals("상한") || PMtype.Equals("+")) + { + //mf.KAObject = mf.KAScene.GetObject("bg" + (cnt + 1)); + //mf.KAObject.SetFaceColor(172, 0, 0, 255); + //mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1)); + //mf.KAObject.SetFaceColor(172, 0, 0, 255); + + mf.KAScene.GetObject("bg" + (cnt + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_3").SetVisible(0); + + if (PMtype.Equals("상한")) + { + mf.KAObject = mf.KAScene.GetObject("upup" + (cnt + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("up" + (cnt + 1)); + mf.KAObject.SetVisible(1); + } + } + else + { + mf.KAScene.GetObject("bg" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_3").SetVisible(0); + + //mf.KAObject = mf.KAScene.GetObject("bg" + (cnt + 1)); + //mf.KAObject.SetFaceColor(95, 95, 95, 255); + //mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1)); + //mf.KAObject.SetFaceColor(47, 47, 47, 255); + mf.KAObject = mf.KAScene.GetObject("flat" + (cnt + 1)); + mf.KAObject.SetVisible(1); + } + cnt += 1; + } + } + + } + + //테마 +// private void QueryDataLoadView(string code, int idx, string tname, int para, ) + + private void QueryDataLoadView(string code, int idx, string tname, int para, string sort) + { + //테마 종목 가져오기 + string query = string.Empty; + string jname = string.Empty; + + // query = "SELECT a.SB_I_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index "; + ///// 20240612 테마 order by 변경 + ////////query = "SELECT F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index "; + ////////query = query + "FROM SB_ITEM a, v_all_stock b "; + ////////query = query + "WHERE a.SB_M_CODE = '" + code + "' "; + ////////query = query + "and substr(a.sb_i_code, 2, 12) = b.f_stock_code "; + ////////query = query + "and b.f_mkt_halt = 'N' ORDER BY a.SB_I_INDEX"; + /// + + if (para == 0) + { + if (sort == "상승률순") + { + query = "SELECT b.F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + + " round((z.f_net_chg / decode(z.f_chg_type, " + + " '1', (z.f_curr_price - z.f_net_chg), " + + " '2', (z.f_curr_price - z.f_net_chg), " + + " '3', (z.f_curr_price), " + + " '4', -1 * (z.f_curr_price + z.f_net_chg), " + + " '5', -1 * (z.f_curr_price + z.f_net_chg))) * 100, 2) rate " + + " FROM SB_ITEM a, v_all_stock b, (select x.f_stock_code, x.f_curr_price, x.f_net_chg, x.f_chg_type from t_online1 x " + + "union " + + " select y.f_stock_code, y.f_curr_price, y.f_net_chg, y.f_chg_type from t_kosdaq_online1 y) z " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND z.f_stock_code = b.f_stock_code " + + " AND b.f_mkt_halt = 'N' " + + "ORDER BY rate desc "; + } + else if (sort == "하락률순") + { + query = "SELECT b.F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + + " round((z.f_net_chg / decode(z.f_chg_type, " + + " '1', (z.f_curr_price - z.f_net_chg), " + + " '2', (z.f_curr_price - z.f_net_chg), " + + " '3', (z.f_curr_price), " + + " '4', -1 * (z.f_curr_price + z.f_net_chg), " + + " '5', -1 * (z.f_curr_price + z.f_net_chg))) * 100, 2) rate " + + " FROM SB_ITEM a, v_all_stock b, (select x.f_stock_code, x.f_curr_price, x.f_net_chg, x.f_chg_type from t_online1 x " + + "union " + + " select y.f_stock_code, y.f_curr_price, y.f_net_chg, y.f_chg_type from t_kosdaq_online1 y) z " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND z.f_stock_code = b.f_stock_code " + + " AND b.f_mkt_halt = 'N' " + + "ORDER BY rate "; + } + else + { + query = "SELECT F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index "; + query = query + "FROM SB_ITEM a, v_all_stock b "; + query = query + "WHERE a.SB_M_CODE = '" + code + "' "; + query = query + "and substr(a.sb_i_code, 2, 12) = b.f_stock_code "; + query = query + "and b.f_mkt_halt = 'N' ORDER BY a.SB_I_INDEX"; + } + } + else if (para == 1) // 예상체결 + { + if (sort == "상승률순") + { + ////query = "SELECT b.F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + //// + " round(((z.f_fore_price - z.f_final_price) / z.f_final_price) * 100, 2) rate " + //// + " FROM SB_ITEM a, v_all_stock b, (select a.f_stock_code, a.f_fore_price, b.f_final_price from t_online1_call a, t_batch_day b " + //// + " where a.f_stock_code = b.f_stock_code " + //// + "union " + //// + " select y.f_stock_code, a.f_fore_price, b.f_final_price from t_kosdaq_online1_call a, t_kosdaq_batch_day b " + //// + " where a.f_stock_code = b.f_stock_code) z " + //// + "WHERE a.SB_M_CODE = '" + code + "' " + //// + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + //// + " AND z.f_stock_code = b.f_stock_code " + //// + " AND b.f_mkt_halt = 'N' " + //// + "ORDER BY rate desc, a.SB_I_INDEX "; + + + query = "SELECT b.F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + + " round(((z.f_fore_price - z.f_final_price) / z.f_final_price) * 100, 2) rate " + + " FROM SB_ITEM a, v_all_stock b, (select a.f_stock_code, a.f_fore_price, b.f_final_price from t_online1_call a, t_batch_day b " + + " where a.f_stock_code = b.f_stock_code " + + "union " + + " select a.f_stock_code, a.f_fore_price, b.f_final_price from t_kosdaq_online1_call a, t_kosdaq_batch_day b " + + " where a.f_stock_code = b.f_stock_code) z " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND z.f_stock_code = b.f_stock_code " + + " AND b.f_mkt_halt = 'N' " + + "ORDER BY rate desc "; + } + else if (sort == "하락률순") + { + ////query = "SELECT b.F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + //// + " round(((z.f_fore_price - z.f_final_price) / z.f_final_price) * 100, 2) rate " + //// + " FROM SB_ITEM a, v_all_stock b, (select a.f_stock_code, a.f_fore_price, b.f_final_price from t_online1_call a, t_batch_day b " + //// + " where a.f_stock_code = b.f_stock_code " + //// + "union " + //// + " select y.f_stock_code, a.f_fore_price, b.f_final_price from t_kosdaq_online1_call a, t_kosdaq_batch_day b " + //// + " where a.f_stock_code = b.f_stock_code) z " + //// + "WHERE a.SB_M_CODE = '" + code + "' " + //// + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + //// + " AND z.f_stock_code = b.f_stock_code " + //// + " AND b.f_mkt_halt = 'N' " + //// + "ORDER BY rate desc, a.SB_I_INDEX "; + + + query = "SELECT b.F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + + " round(((z.f_fore_price - z.f_final_price) / z.f_final_price) * 100, 2) rate " + + " FROM SB_ITEM a, v_all_stock b, (select a.f_stock_code, a.f_fore_price, b.f_final_price from t_online1_call a, t_batch_day b " + + " where a.f_stock_code = b.f_stock_code " + + "union " + + " select a.f_stock_code, a.f_fore_price, b.f_final_price from t_kosdaq_online1_call a, t_kosdaq_batch_day b " + + " where a.f_stock_code = b.f_stock_code) z " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND z.f_stock_code = b.f_stock_code " + + " AND b.f_mkt_halt = 'N' " + + "ORDER BY rate "; + } + else + { + query = "SELECT b.F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index " + + " FROM SB_ITEM a, v_all_stock b " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND b.f_mkt_halt = 'N' " + + "ORDER BY a.SB_I_INDEX "; + } + + } + + mf.m_db.ViewQuery(mf.dataGridView2, query); + + for (int i = 0; i < mf.dataGridView2.RowCount - 1; i++) + { + if (i > 0) + { + jname = jname + ","; + } + jname = jname + mf.dataGridView2.Rows[i].Cells[0].Value.ToString(); + } + + + FileDataLoadView(jname, idx, tname, para); + } + + private void Nxt_QueryDataLoadView(string code, int idx, string tname, int para, string sort) + { + //테마 종목 가져오기 + string query = string.Empty; + string jname = string.Empty; + + if (para == 0) + { + if (sort == "상승률순") + { + query = "SELECT b.F_STOCK_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + + " round((b.f_net_chg / case when b.f_chg_type = '1' then (b.f_curr_price - b.f_net_chg) " + + " when b.f_chg_type = '2' then (b.f_curr_price - b.f_net_chg) " + + " when b.f_chg_type = '3' then (b.f_curr_price) " + + " when b.f_chg_type = '4' then - 1 * (b.f_curr_price + b.f_net_chg) " + + " when b.f_chg_type = '5' then - 1 * (b.f_curr_price + b.f_net_chg) end) *100, 2) rate " + + " FROM SB_ITEM a, v_all_stock b " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND b.f_stop_gubun = 'N' " + + "ORDER BY rate desc "; + //query = "SELECT b.F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + // + " round((z.f_net_chg / decode(z.f_chg_type, " + // + " '1', (z.f_curr_price - z.f_net_chg), " + // + " '2', (z.f_curr_price - z.f_net_chg), " + // + " '3', (z.f_curr_price), " + // + " '4', -1 * (z.f_curr_price + z.f_net_chg), " + // + " '5', -1 * (z.f_curr_price + z.f_net_chg))) * 100, 2) rate " + // + " FROM SB_ITEM a, v_all_stock b, (select x.f_stock_code, x.f_curr_price, x.f_net_chg, x.f_chg_type from t_online1 x " + // + "union " + // + " select y.f_stock_code, y.f_curr_price, y.f_net_chg, y.f_chg_type from t_kosdaq_online1 y) z " + // + "WHERE a.SB_M_CODE = '" + code + "' " + // + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + // + " AND z.f_stock_code = b.f_stock_code " + // + " AND b.f_mkt_halt = 'N' " + // + "ORDER BY rate desc "; + } + else if (sort == "하락률순") + { + query = "SELECT b.F_STOCK_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + + " round((b.f_net_chg / case when b.f_chg_type = '1' then (b.f_curr_price - b.f_net_chg) " + + " when b.f_chg_type = '2' then (b.f_curr_price - b.f_net_chg) " + + " when b.f_chg_type = '3' then (b.f_curr_price) " + + " when b.f_chg_type = '4' then - 1 * (b.f_curr_price + b.f_net_chg) " + + " when b.f_chg_type = '5' then - 1 * (b.f_curr_price + b.f_net_chg) end) *100, 2) rate " + + " FROM SB_ITEM a, v_all_stock b " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND b.f_stop_gubun = 'N' " + + "ORDER BY rate "; + + //query = "SELECT b.F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + // + " round((z.f_net_chg / decode(z.f_chg_type, " + // + " '1', (z.f_curr_price - z.f_net_chg), " + // + " '2', (z.f_curr_price - z.f_net_chg), " + // + " '3', (z.f_curr_price), " + // + " '4', -1 * (z.f_curr_price + z.f_net_chg), " + // + " '5', -1 * (z.f_curr_price + z.f_net_chg))) * 100, 2) rate " + // + " FROM SB_ITEM a, v_all_stock b, (select x.f_stock_code, x.f_curr_price, x.f_net_chg, x.f_chg_type from n_online x " + // + "union " + // +" select y.f_stock_code, y.f_curr_price, y.f_net_chg, y.f_chg_type from n_kosdaq_online y) z " + // + "WHERE a.SB_M_CODE = '" + code + "' " + // + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + // + " AND z.f_stock_code = b.f_stock_code " + // + " AND b.f_mkt_halt = 'N' " + // + "ORDER BY rate "; + } + else + { + query = "SELECT b.F_STOCK_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index " + + " FROM SB_ITEM a, v_all_stock b " + + " WHERE a.SB_M_CODE = '" + code + "' " + + " and substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " and b.f_stop_gubun = 'N' ORDER BY a.SB_I_INDEX"; + + //query = "SELECT F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index "; + //query = query + "FROM SB_ITEM a, v_all_stock b "; + //query = query + "WHERE a.SB_M_CODE = '" + code + "' "; + //query = query + "and substr(a.sb_i_code, 2, 12) = b.f_stock_code "; + //query = query + "and b.f_mkt_halt = 'N' ORDER BY a.SB_I_INDEX"; + } + } + + mf.m_db.Nxt_ViewQuery(mf.dataGridView2, query); + + for (int i = 0; i < mf.dataGridView2.RowCount - 1; i++) + { + if (i > 0) + { + jname = jname + ","; +// jname = jname + "(NXT),"; + } + jname = jname + mf.dataGridView2.Rows[i].Cells[0].Value.ToString() + "(NXT)"; + } + + + FileDataLoadView(jname, idx, tname, para); + } + + private void ExpertDataLoadView(string code, int idx, string tname, int para) + { + //테마 종목 가져오기 + string query = string.Empty; + string jname = string.Empty; + + mf.m_db.ViewQuery(mf.dataGridView2, "SELECT * FROM RECOMMEND_LIST WHERE RC_CODE = '" + code + "' order by PLAYINDEX"); + + + for (int i = 0; i < mf.dataGridView2.RowCount - 1; i++) + { + if (i > 0) + { + jname = jname + ","; + } + jname = jname + mf.dataGridView2.Rows[i].Cells[2].Value.ToString(); + } + + + FileDataLoadView(jname, idx, tname, para); + } + + private void OracleDataLoadView(string code, string sub, int idx) + { + try + { + int lcnt = 0; + + if (code.Contains("업종")) + { + if (code.Contains("코스피")) + code = "코스피"; + else + code = "코스닥"; + sub = "업종지수"; + + } + + string[] colums = new string[] { "WANNAME", "F_CURR_PRICE", "NET_CHG", "RATE", "CHG_TYPE" }; + + DataSet ds = null; + + mf.KAObject = mf.KAScene.GetObject("title"); + + 국내시장종류 type = 국내시장종류.KOSPI; + + if (code.Equals("코스닥")) + { + type = 국내시장종류.KOSDAQ; + } + + bool isPoint = false; + + if (sub.Contains("예상가 시가총액 상위")) + { + colums = new string[] { "WANNAME", "CURR_PRICE", "NET_CHG", "RATE", "CHG_TYPE" }; + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.예상가시가총액상위); + mf.KAObject.SetValue(code + " 예상가 시가총액 상위"); + } + + else if (sub.Contains("시가총액")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.시가총액); + mf.KAObject.SetValue(code + " 시가총액 상위"); + colums[1] = "CURR_PRICE"; + } + else if (sub.Contains("업종지수")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.업종); + mf.KAObject.SetValue(code + " 업종"); + isPoint = true; + + colums[0] = "F_PART_NAME"; + colums[1] = "PART_IDX"; + colums[2] = "PART_CHG"; + colums[4] = "F_CHG_TYPE"; + } + else if (sub.Contains("시간외 상승")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.시간외상승률); + mf.KAObject.SetValue(code + " 시간외 상승률 상위"); + } + else if (sub.Contains("시간외 하락")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.시간외하락률); + mf.KAObject.SetValue(code + " 시간외 하락률 상위"); + } + else if (sub.Contains("상승률")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.상승률); + mf.KAObject.SetValue(code + " 상승률 상위"); + } + else if (sub.Contains("하락률")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.하락률); + mf.KAObject.SetValue(code + " 하락률 상위"); + } + + else if (sub.Contains("52주 신고가")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.신고가52주); + mf.KAObject.SetValue(code + " 52주 신고가"); + + colums[0] = "F_STOCK_WANNAME"; + colums[1] = "F_CURR_PRICE"; + colums[2] = "F_NET_CHG"; + colums[4] = "F_CHG_TYPE"; + } + else if (sub.Contains("52주 신저가")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.신저가52주); + mf.KAObject.SetValue(code + " 52주 신저가"); + + colums[0] = "F_STOCK_WANNAME"; + colums[1] = "F_CURR_PRICE"; + colums[2] = "F_NET_CHG"; + colums[4] = "F_CHG_TYPE"; + } + + + else if (sub.Contains("코스피 200 종목")) + { + + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.코스피200); + colums[1] = "CURR_PRICE"; + mf.KAObject.SetValue(code + " 200"); + } + + else if (sub.Contains("ETF 종목")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.ETF); + colums[1] = "CURR_PRICE"; + mf.KAObject.SetValue("ETF"); + } + + //ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.); + mf.dataGridView1.DataSource = ds.Tables[0]; + + for (int i = 1; i <= 5; i++) + { + mf.KAScene.GetObject("row" + (i).ToString()).SetVisible(0); + } + + + if (isPoint) + { + mf.KAObject = mf.KAScene.GetObject("unit"); + mf.KAObject.SetValue("단위 : p"); + + mf.KAObject = mf.KAScene.GetObject("column1"); + mf.KAObject.SetValue("현재"); + mf.KAObject = mf.KAScene.GetObject("column2"); + mf.KAObject.SetValue("등락"); + mf.KAObject = mf.KAScene.GetObject("column3"); + mf.KAObject.SetValue("등락률"); + + List rows = new List(); + + foreach (DataRow dr in ds.Tables[0].Rows) + { + string[] row = new string[] { dr[colums[0]].ToString(), dr[colums[1]].ToString() , + dr[colums[2]].ToString(), dr[colums[3]].ToString(),dr[colums[4]].ToString()}; + + rows.Add(row); + } + + //rows.Sort(delegate (string[] x, string[] y) + //{ + // return Convert.ToDouble(y[1]).CompareTo(Convert.ToDouble(x[1])); + //}); + + //mf.dataGridView1.RowCount - 1 + if (mf.dataGridView1.RowCount - 1 < 5) + { + lcnt = mf.dataGridView1.RowCount - 1; + } + else + { + lcnt = 5; + } + + for (int i = 0; i < lcnt; i++) + { + string jname = rows[i + (idx * 5)][0]; // ds.Tables[0].Rows[i][colums[0]].ToString(); + string price = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 5)][1])); + string priceChange = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 5)][2])); + string rate = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 5)][3])); + string PMtype = rows[i + (idx * 5)][4]; + + mf.KAScene.GetObject("row" + (i + 1).ToString()).SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("title" + (i + 1)); + mf.KAObject.SetValue(jname); + + mf.KAObject = mf.KAScene.GetObject("price" + (i + 1)); + mf.KAObject.SetValue(price); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_1"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_2"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_3"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + + if (PMtype.Equals("-")) + mf.KAObject.SetValue("-" + rate); + else + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(0); + + //SetFaceTextColor' + if (PMtype.Equals("-")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(1); + + + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else if (PMtype.Equals("+")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(1); + } + } + + } + else + { + mf.KAObject = mf.KAScene.GetObject("mart"); + + if ((code == "코스피_NXT") || (code == "코스닥_NXT")) + mf.KAObject.SetVisible(1); + else + mf.KAObject.SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("unit"); + mf.KAObject.SetValue("단위 : 원"); + + mf.KAObject = mf.KAScene.GetObject("column1"); + mf.KAObject.SetValue("현재가"); + mf.KAObject = mf.KAScene.GetObject("column2"); + mf.KAObject.SetValue("등락가"); + mf.KAObject = mf.KAScene.GetObject("column3"); + mf.KAObject.SetValue("등락률"); + + //mf.dataGridView1.RowCount - 1 + + if (mf.dataGridView1.RowCount - 1 < 5) + { + lcnt = mf.dataGridView1.RowCount - 1; + } + else + { + lcnt = 5; + } + + for (int i = 0; i < lcnt; i++) + { + string jname = ds.Tables[0].Rows[i + (idx * 5)][colums[0]].ToString(); + string price = String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[i + (idx * 5)][colums[1]].ToString())); + string priceChange = String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[i + (idx * 5)][colums[2]].ToString())); + string rate = String.Format("{0:#,##0.00}", Convert.ToDouble(ds.Tables[0].Rows[i + (idx * 5)][colums[3]].ToString())); + string PMtype = ds.Tables[0].Rows[i + (idx * 5)][colums[4]].ToString(); + + mf.KAScene.GetObject("row" + (i + 1).ToString()).SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("title" + (i + 1)); + mf.KAObject.SetValue(jname); + + mf.KAObject = mf.KAScene.GetObject("price" + (i + 1)); + mf.KAObject.SetValue(price); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_1"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_2"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_3"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(0); + + if (PMtype.Equals("4") || PMtype.Equals("5")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(1); + + if (PMtype.Equals("4")) + { + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAScene.GetObject("down" + (i + 1)).SetVisible(1); + } + + if (rate.Substring(0,1) != "-") + { + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + mf.KAObject.SetValue("-" + rate); + } + + } + else if (PMtype.Equals("1") || PMtype.Equals("2")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + if (PMtype.Equals("1")) + { + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(1); + } + } + else + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(1); + } + } + } + + mf.m_chkdata = true; + + + } + catch (Exception) + { + //MessageBox.Show(e.ToString()); + mf.m_chkdata = false; + } + } + private void MariaDataLoadView(string code, string sub, int idx) + { + try + { + int lcnt = 0; + + if (code.Contains("업종")) + { + if (code.Contains("코스피_NXT")) + code = "코스피_NXT"; + else + code = "코스닥_NXT"; + + sub = "업종지수"; + } + + string[] colums = new string[] { "WANNAME", "F_CURR_PRICE", "NET_CHG", "RATE", "CHG_TYPE" }; + + DataSet ds = null; + + + mf.KAObject = mf.KAScene.GetObject("title"); + + 국내시장종류 type = 국내시장종류.NXT_KOSPI; + + if (code.Equals("코스닥_NXT")) + { + type = 국내시장종류.NXT_KOSDAQ; + } + + bool isPoint = false; + + if (sub.Contains("시가총액")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.시가총액); + mf.KAObject.SetValue(code.Replace("_NXT", "") + " 시가총액 상위"); + colums[1] = "CURR_PRICE"; + } + else if (sub.Contains("시간외 상승")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.시간외상승률); + mf.KAObject.SetValue(code.Replace("_NXT", "") + " 시간외 상승률 상위"); + } + else if (sub.Contains("시간외 하락")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.시간외하락률); + mf.KAObject.SetValue(code.Replace("_NXT", "") + " 시간외 하락률 상위"); + } + else if (sub.Contains("상승률")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.상승률); + mf.KAObject.SetValue(code.Replace("_NXT", "") + " 상승률 상위"); + } + else if (sub.Contains("하락률")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.하락률); + mf.KAObject.SetValue(code.Replace("_NXT", "") + " 하락률 상위"); + } + else if (sub.Contains("거래량")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.거래량); + mf.KAObject.SetValue(code.Replace("_NXT", "") + " 거래량 상위"); + } + + //ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.); + mf.dataGridView1.DataSource = ds.Tables[0]; + + for (int i = 1; i <= 5; i++) + { + mf.KAScene.GetObject("row" + (i).ToString()).SetVisible(0); + } + + + if (isPoint) + { + mf.KAObject = mf.KAScene.GetObject("unit"); + mf.KAObject.SetValue("단위 : p"); + + mf.KAObject = mf.KAScene.GetObject("column1"); + mf.KAObject.SetValue("현재"); + mf.KAObject = mf.KAScene.GetObject("column2"); + mf.KAObject.SetValue("등락"); + mf.KAObject = mf.KAScene.GetObject("column3"); + mf.KAObject.SetValue("등락률"); + + List rows = new List(); + + foreach (DataRow dr in ds.Tables[0].Rows) + { + string[] row = new string[] { dr[colums[0]].ToString(), dr[colums[1]].ToString() , + dr[colums[2]].ToString(), dr[colums[3]].ToString(),dr[colums[4]].ToString()}; + + rows.Add(row); + } + + //rows.Sort(delegate (string[] x, string[] y) + //{ + // return Convert.ToDouble(y[1]).CompareTo(Convert.ToDouble(x[1])); + //}); + + //mf.dataGridView1.RowCount - 1 + if (mf.dataGridView1.RowCount - 1 < 5) + { + lcnt = mf.dataGridView1.RowCount - 1; + } + else + { + lcnt = 5; + } + + for (int i = 0; i < lcnt; i++) + { + string jname = rows[i + (idx * 5)][0]; // ds.Tables[0].Rows[i][colums[0]].ToString(); + string price = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 5)][1])); + string priceChange = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 5)][2])); + string rate = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 5)][3])); + string PMtype = rows[i + (idx * 5)][4]; + + mf.KAScene.GetObject("row" + (i + 1).ToString()).SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("title" + (i + 1)); + mf.KAObject.SetValue(jname); + + mf.KAObject = mf.KAScene.GetObject("price" + (i + 1)); + mf.KAObject.SetValue(price); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_1"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_2"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_3"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + + if (PMtype.Equals("-")) + mf.KAObject.SetValue("-" + rate); + else + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(0); + + //SetFaceTextColor' + if (PMtype.Equals("-")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(1); + + + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else if (PMtype.Equals("+")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(1); + } + } + + } + else + { + mf.KAObject = mf.KAScene.GetObject("mart"); + + if ((code == "코스피_NXT") || (code == "코스닥_NXT")) + { + string m_file = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + + if (DateTime.Now.Hour <= 12) // 오전 + { + m_file = m_file + "\\Cuts\\Images\\프리마켓.png"; + // m_file = m_file + "프리마켓.png"; + } + else + { + m_file = m_file + "\\Cuts\\Images\\애프터마켓.png"; + //m_file = "애프터마켓.png"; + } + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetValue(m_file); + + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(0); + } + + mf.KAObject = mf.KAScene.GetObject("unit"); + mf.KAObject.SetValue("단위 : 원"); + mf.KAObject = mf.KAScene.GetObject("column1"); + mf.KAObject.SetValue("현재가"); + mf.KAObject = mf.KAScene.GetObject("column2"); + mf.KAObject.SetValue("등락가"); + mf.KAObject = mf.KAScene.GetObject("column3"); + mf.KAObject.SetValue("등락률"); + + //mf.dataGridView1.RowCount - 1 + + if (mf.dataGridView1.RowCount - 1 < 5) + { + lcnt = mf.dataGridView1.RowCount - 1; + } + else + { + lcnt = 5; + } + + for (int i = 0; i < lcnt; i++) + { + string jname = ds.Tables[0].Rows[i + (idx * 5)][colums[0]].ToString(); + string price = String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[i + (idx * 5)][colums[1]].ToString())); + string priceChange = String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[i + (idx * 5)][colums[2]].ToString())); + string rate = String.Format("{0:#,##0.00}", Convert.ToDouble(ds.Tables[0].Rows[i + (idx * 5)][colums[3]].ToString())); + string PMtype = ds.Tables[0].Rows[i + (idx * 5)][colums[4]].ToString(); + + mf.KAScene.GetObject("row" + (i + 1).ToString()).SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("title" + (i + 1)); + mf.KAObject.SetValue(jname); + + mf.KAObject = mf.KAScene.GetObject("price" + (i + 1)); + mf.KAObject.SetValue(price); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_1"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_2"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_3"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(0); + + if (PMtype.Equals("4") || PMtype.Equals("5")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(1); + + if (PMtype.Equals("4")) + { + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAScene.GetObject("down" + (i + 1)).SetVisible(1); + } + + if (rate.Substring(0, 1) != "-") + { + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + mf.KAObject.SetValue("-" + rate); + } + + } + else if (PMtype.Equals("1") || PMtype.Equals("2")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + if (PMtype.Equals("1")) + { + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(1); + } + } + else + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(1); + } + } + } + + mf.m_chkdata = true; + + + } + catch (Exception) + { + //MessageBox.Show(e.ToString()); + mf.m_chkdata = false; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s5076.cs b/MBN_STOCK_N/Scene/s5076.cs new file mode 100644 index 0000000..56f9763 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5076.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; + +namespace MBN_STOCK_N +{ + class s5076 //주요매출 구성 + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + public s5076(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + + mf.m_db.ViewQuery(mf.dataGridView1, "SELECT * FROM INPUT_PIE WHERE STOCK_NAME = '" + jname + "'"); + + mf.KAScene.GetObject("title").SetValue(mf.dataGridView1.Rows[0].Cells[0].Value.ToString() + " 주요매출 구성"); + mf.KAScene.GetObject("date").SetValue(mf.dataGridView1.Rows[0].Cells[1].Value.ToString() + " 기준"); + + for (int i = 1; i < 6; i++) + { + mf.KAScene.GetObject("circle" + i).SetVisible(0); + mf.KAScene.GetObject("group" + i).SetVisible(0); + } + + double sAngle = 0; + + for (int i = 1; i < 6; i++) + { + string[] rs = mf.dataGridView1.Rows[0].Cells[i + 1].Value.ToString().Split('_'); + + if (rs[0] != "") + { + mf.KAScene.GetObject("circle" + i).SetVisible(1); + mf.KAScene.GetObject("group" + i).SetVisible(1); + + if (rs[1] == "" || rs[1] == "-") rs[1] = "0"; + mf.KAScene.GetObject("word" + i).SetValue(rs[0]); + mf.KAScene.GetObject("percent" + i).SetValue(rs[1]); + + + double percent = Convert.ToDouble(rs[1]); + double angle = (percent / 100) * 360; + + //변경 시작 - 원 시작 끝 설정 + mf.KAScene.GetObject("circle" + i).SetCircleAngleKey(0, (float)sAngle, (float)sAngle, eKAngleKey.ANGLE_KEY_ALL); + mf.KAScene.GetObject("circle" + i).SetCircleAngleKey(1, (float)sAngle, (float)(sAngle + angle), eKAngleKey.ANGLE_KEY_ALL); + //변경 끝 + + sAngle += angle; + + } + } + mf.m_chkdata = true; + } + catch(Exception) + { + mf.m_chkdata = false; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s5077.cs b/MBN_STOCK_N/Scene/s5077.cs new file mode 100644 index 0000000..bf60772 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5077.cs @@ -0,0 +1,1527 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; +using FarPoint.Win; +using FarPoint.Win.Spread.CellType.BarCode; +using System.Reflection; +using System.Diagnostics.Eventing.Reader; + +namespace MBN_STOCK_N +{ + class s5077 // 6종목 현재가 + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + string m_sub = string.Empty; + bool m_chk = false; + + public s5077(Form frm, string code, string jname, string sub, int idx) + { + string mart; + try + { + mf = (MainForm)frm; + m_sub = sub; + + mf.dataGridView1.Columns.Clear(); + + //================<<시장 mark 숨김>>================= + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(0); + //==================================================== + + if (sub.Contains("VI")) + { + FileDataLoadView(jname, idx, "VI 발동", 0); + } + else if (sub.Contains("테마")) + { + // if (jname.Contains("NXT")) + // mf.m_db.Nxt_ViewQuery(mf.dataGridView2, "SELECT SB_CODE FROM SB_LIST Where SB_TITLE = '" + jname.Replace("(NXT)","") + "'"); + //else + // mf.m_db.ViewQuery(mf.dataGridView2, "SELECT SB_CODE FROM SB_LIST Where SB_TITLE = '" + jname + "'"); + + + + if (code.Contains("_NXT")) + { + mart = "NXT"; + mf.m_db.Nxt_ViewQuery(mf.dataGridView2, "SELECT SB_CODE FROM SB_LIST Where SB_TITLE = '" + jname.Replace("(NXT)", "") + "' AND SB_MARKET = 'NXT'"); + } + else + { + mart = "KRX"; + mf.m_db.ViewQuery(mf.dataGridView2, "SELECT SB_CODE FROM SB_LIST Where SB_TITLE = '" + jname + "' AND SB_MARKET = 'KRX'"); + } + + code = mf.dataGridView2.Rows[0].Cells[0].Value.ToString(); + //QueryDataLoadView(code, idx, jname, 0); + string sort; + if (sub.Contains("(입력순)")) + sort = "입력순"; + else if(sub.Contains("(상승률순)")) + sort = "상승률순"; + else + sort = "하락률순"; + + if (sub.Contains("예상")) + { + QueryDataLoadView(code, idx, jname, 1, sort); + } + else + { + if (jname.Contains("NXT")) + NXT_QueryDataLoadView(code, idx, jname, 0, sort); + else + QueryDataLoadView(code, idx, jname, 0, sort); + } + + } + else if (sub.Contains("전문가")) + { + mf.m_db.ViewQuery(mf.dataGridView2, "SELECT EP_CODE FROM EXPERT_LIST Where EP_NAME = '" + jname + "'"); + ExpertDataLoadView(mf.dataGridView2.Rows[0].Cells[0].Value.ToString(), idx, jname, 0); + } + + else + { + if (code.Contains("NXT")) + MariaDataLoadView(code, sub, idx); + else + OracleDataLoadView(code, sub, idx); + } + + if (!m_chk) + { + if (mf.dataGridView1.RowCount <= 1) + mf.m_chkdata = false; + else + mf.m_chkdata = true; + } + else + { + mf.m_chkdata = false; + } + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + + private void FileDataLoadView(string jname, int idx, string tname, int para) + { + string[] rs = jname.Split(','); + string[] data = new string[10]; + DataSet ds = null; + int cnt = 0; + 판1그래프데이터산업및종목류 rc = 판1그래프데이터산업및종목류.종목현재가; + + if (para == 0) + rc = 판1그래프데이터산업및종목류.종목현재가; + else + rc = 판1그래프데이터산업및종목류.종목예상체결가; + + int lcnt = 0; + if ((rs.Length % 6) != 0) + lcnt = 1; + + lcnt = (rs.Length / 6) + lcnt; + + string str = mf.PlayList.ActiveSheet.GetText(mf.m_crow, 5).Trim(); + + str = str.Substring(str.IndexOf("/") + 1, str.Length - str.IndexOf("/") - 1); + + if (int.Parse(str) > lcnt) + { + //idx = 0; + jname = jname + "," + jname + "," + jname + "," + jname + "," + jname; + rs = jname.Split(','); + } + + for (int i = 1; i <= 6; i++) + { + mf.KAScene.GetObject("row" + (i).ToString()).SetVisible(0); + } + + if (para == 0) + mf.KAScene.GetObject("title").SetValue(tname); + else + mf.KAScene.GetObject("title").SetValue(tname + " 예상 체결가"); + + //========================================= + if (tname.Contains("(NXT")) + { + string m_file = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + + if (DateTime.Now.Hour <= 12) // 오전 + { + m_file = m_file + "\\Cuts\\Images\\프리마켓.png"; + // m_file = m_file + "프리마켓.png"; + } + else + { + m_file = m_file + "\\Cuts\\Images\\애프터마켓.png"; + //m_file = "애프터마켓.png"; + } + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetValue(m_file); + + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(0); + } + //============================================ + + mf.KAScene.GetObject("unit").SetValue("단위 : 원"); + + if (m_sub.Contains("전문가")) + { + mf.KAScene.GetObject("column1").SetValue("매수가"); + mf.KAScene.GetObject("column2").SetValue("현재가"); + mf.KAScene.GetObject("column3").SetValue("수익률"); + } + else + { + mf.KAScene.GetObject("column1").SetValue("현재가"); + mf.KAScene.GetObject("column2").SetValue("등락가"); + mf.KAScene.GetObject("column3").SetValue("등락률"); + } + + for (int i = 0; i < rs.Length; i++) + { + if (i > 6) break; + ds = null; + + if (tname.Contains("NXT")) + { + foreach (DataRow r in mf.mDTNxtkospi.Rows) + { + if (r[0].Equals(rs[i + (idx * 6)])) + { + ds = DataManager.getInstance().createPlateData(rc, 국내시장종류.NXT_KOSPI, rs[i + (idx * 6)].Replace("(NXT)", "")); + + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + foreach (DataRow r in mf.mDTNxtkosdaq.Rows) + { + if (r[0].Equals(rs[i + (idx * 6)])) + { + ds = DataManager.getInstance().createPlateData(rc, 국내시장종류.NXT_KOSDAQ, rs[i + (idx * 6)].Replace("(NXT)", "")); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + else + { + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(rs[i + (idx * 6)])) + { + ds = DataManager.getInstance().createPlateData(rc, 국내시장종류.KOSPI, rs[i + (idx * 6)]); + + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(rs[i + (idx * 6)])) + { + ds = DataManager.getInstance().createPlateData(rc, 국내시장종류.KOSDAQ, rs[i + (idx * 6)]); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + + if (ds != null) + { + mf.dataGridView1.DataSource = ds.Tables[0]; + + + if (para == 0) + { + data[0] = ds.Tables[0].Rows[0][2].ToString(); + data[1] = ds.Tables[0].Rows[0][3].ToString(); + data[2] = ds.Tables[0].Rows[0][6].ToString(); + data[3] = ds.Tables[0].Rows[0][4].ToString(); + } + else + { + data[0] = ds.Tables[0].Rows[0][3].ToString(); + data[1] = ds.Tables[0].Rows[0][6].ToString(); + data[2] = ds.Tables[0].Rows[0][9].ToString(); + data[3] = ds.Tables[0].Rows[0][8].ToString(); + } + + mf.KAScene.GetObject("row" + (cnt + 1).ToString()).SetVisible(1); + + + + mf.KAObject = mf.KAScene.GetObject("title" + (cnt + 1)); + //mf.KAObject.SetValue(rs[i + (idx * 6)].Trim()); + mf.KAObject.SetValue(rs[i + (idx * 6)].Trim().Replace("(NXT)", "")); + + mf.KAObject = mf.KAScene.GetObject("price" + (cnt + 1)); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[0]))); + + //mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1)); + //mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[1]))); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[1]))); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[1]))); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_3"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[1]))); + + mf.KAObject = mf.KAScene.GetObject("rate" + (cnt + 1) + "_1"); + mf.KAObject.SetValue(Convert.ToDouble(data[2]).ToString("##0.00")); + + mf.KAObject = mf.KAScene.GetObject("rate" + (cnt + 1) + "_2"); + mf.KAObject.SetValue(Convert.ToDouble(data[2]).ToString("##0.00")); + + mf.KAObject = mf.KAScene.GetObject("rate" + (cnt + 1) + "_3"); + mf.KAObject.SetValue(Convert.ToDouble(data[2]).ToString("##0.00")); + + + // mf.KAObject = mf.KAScene.GetObject("rate" + (cnt + 1)); + // mf.KAObject.SetValue(Convert.ToDouble(data[2]).ToString("##0.00")); + + mf.KAScene.GetObject("upup" + (cnt + 1)).SetVisible(0); + mf.KAScene.GetObject("up" + (cnt + 1)).SetVisible(0); + mf.KAScene.GetObject("flat" + (cnt + 1)).SetVisible(0); + mf.KAScene.GetObject("down" + (cnt + 1)).SetVisible(0); + mf.KAScene.GetObject("downdown" + (cnt + 1)).SetVisible(0); + + //string PMtype = ds.Tables[0].Rows[i + (idx * 5)][colums[4]].ToString(); + string PMtype = data[3]; + + //if (para == 1) + //{ + // if (data[2].Contains("-")) + // PMtype = "하락"; + // else + // PMtype = "상승"; + //} + + if (PMtype.Equals("하락") || PMtype.Equals("하한") || PMtype.Equals("-")) + { + //mf.KAObject = mf.KAScene.GetObject("bg" + (cnt + 1)); + //mf.KAObject.SetFaceColor(15, 99, 188, 255); + //mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1)); + //mf.KAObject.SetFaceColor(15, 99, 188, 255); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("rate" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (cnt + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("percent" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (cnt + 1) + "_3").SetVisible(1); + + if (PMtype.Equals("하한")) + { + mf.KAObject = mf.KAScene.GetObject("downdown" + (cnt + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAScene.GetObject("down" + (cnt + 1)).SetVisible(1); + } + } + else if (PMtype.Equals("상승") || PMtype.Equals("상한") || PMtype.Equals("+")) + { + //mf.KAObject = mf.KAScene.GetObject("bg" + (cnt + 1)); + //mf.KAObject.SetFaceColor(172, 0, 0, 255); + //mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1)); + //mf.KAObject.SetFaceColor(172, 0, 0, 255); + + mf.KAScene.GetObject("bg" + (cnt + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (cnt + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("rate" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (cnt + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (cnt + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("percent" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (cnt + 1) + "_3").SetVisible(0); + + if (PMtype.Equals("상한")) + { + mf.KAObject = mf.KAScene.GetObject("upup" + (cnt + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("up" + (cnt + 1)); + mf.KAObject.SetVisible(1); + } + } + else + { + mf.KAScene.GetObject("bg" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (cnt + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("rate" + (cnt + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (cnt + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("percent" + (cnt + 1) + "_3").SetVisible(0); + + //mf.KAObject = mf.KAScene.GetObject("bg" + (cnt + 1)); + //mf.KAObject.SetFaceColor(95, 95, 95, 255); + //mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1)); + //mf.KAObject.SetFaceColor(47, 47, 47, 255); + mf.KAObject = mf.KAScene.GetObject("flat" + (cnt + 1)); + mf.KAObject.SetVisible(1); + } + cnt += 1; + } + } + + } + + //테마 + private void QueryDataLoadView(string code, int idx, string tname, int para, string sort) + { + //테마 종목 가져오기 + string query = string.Empty; + string jname = string.Empty; + + // query = "SELECT F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index "; + // query = query + "FROM SB_ITEM a, v_all_stock b "; + //query = query + "WHERE a.SB_M_CODE = '" + code + "' "; + //query = query + "AND substr(a.sb_i_code, 2, 12) = b.f_stock_code "; + //query = query + "AND b.f_mkt_halt = 'N' "; + //query = query + "ORDER BY a.SB_I_INDEX"; + + if (sort == "상승률순") + { + query = "SELECT b.F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + + " round((z.f_net_chg / decode(z.f_chg_type, " + + " '1', (z.f_curr_price - z.f_net_chg), " + + " '2', (z.f_curr_price - z.f_net_chg), " + + " '3', (z.f_curr_price), " + + " '4', -1 * (z.f_curr_price + z.f_net_chg), " + + " '5', -1 * (z.f_curr_price + z.f_net_chg))) * 100, 2) rate " + + " FROM SB_ITEM a, v_all_stock b, (select x.f_stock_code, x.f_curr_price, x.f_net_chg, x.f_chg_type from t_online1 x " + + "union " + + " select y.f_stock_code, y.f_curr_price, y.f_net_chg, y.f_chg_type from t_kosdaq_online1 y) z " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND z.f_stock_code = b.f_stock_code " + + " AND b.f_mkt_halt = 'N' " + + "ORDER BY rate desc "; + } + else if (sort == "하락률순") + { + query = "SELECT b.F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + + " round((z.f_net_chg / decode(z.f_chg_type, " + + " '1', (z.f_curr_price - z.f_net_chg), " + + " '2', (z.f_curr_price - z.f_net_chg), " + + " '3', (z.f_curr_price), " + + " '4', -1 * (z.f_curr_price + z.f_net_chg), " + + " '5', -1 * (z.f_curr_price + z.f_net_chg))) * 100, 2) rate " + + " FROM SB_ITEM a, v_all_stock b, (select x.f_stock_code, x.f_curr_price, x.f_net_chg, x.f_chg_type from t_online1 x " + + "union " + + " select y.f_stock_code, y.f_curr_price, y.f_net_chg, y.f_chg_type from t_kosdaq_online1 y) z " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND z.f_stock_code = b.f_stock_code " + + " AND b.f_mkt_halt = 'N' " + + "ORDER BY rate "; + } + else + { + query = "SELECT F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index "; + query = query + "FROM SB_ITEM a, v_all_stock b "; + query = query + "WHERE a.SB_M_CODE = '" + code + "' "; + query = query + "AND substr(a.sb_i_code, 2, 12) = b.f_stock_code "; + query = query + "AND b.f_mkt_halt = 'N' "; + query = query + "ORDER BY a.SB_I_INDEX"; + } + + mf.m_db.ViewQuery(mf.dataGridView2, query); + + for (int i = 0; i < mf.dataGridView2.RowCount - 1; i++) + { + if (i > 0) + { + jname = jname + ","; + } + jname = jname + mf.dataGridView2.Rows[i].Cells[0].Value.ToString(); + } + + + FileDataLoadView(jname, idx, tname, para); + } + + private void NXT_QueryDataLoadView(string code, int idx, string tname, int para, string sort) + { + //테마 종목 가져오기 + string query = string.Empty; + string jname = string.Empty; + + // query = "SELECT F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index "; + // query = query + "FROM SB_ITEM a, v_all_stock b "; + //query = query + "WHERE a.SB_M_CODE = '" + code + "' "; + //query = query + "AND substr(a.sb_i_code, 2, 12) = b.f_stock_code "; + //query = query + "AND b.f_mkt_halt = 'N' "; + //query = query + "ORDER BY a.SB_I_INDEX"; + + if (sort == "상승률순") + { + query = "SELECT b.F_STOCK_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + + " round((b.f_net_chg / case when b.f_chg_type = '1' then (b.f_curr_price - b.f_net_chg) " + + " when b.f_chg_type = '2' then (b.f_curr_price - b.f_net_chg) " + + " when b.f_chg_type = '3' then (b.f_curr_price) " + + " when b.f_chg_type = '4' then - 1 * (b.f_curr_price + b.f_net_chg) " + + " when b.f_chg_type = '5' then - 1 * (b.f_curr_price + b.f_net_chg) end) *100, 2) rate " + + " FROM SB_ITEM a, v_all_stock b " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND b.f_stop_gubun = 'N' " + + "ORDER BY rate desc "; + //query = "SELECT b.F_STOCK_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + // + " round((z.f_net_chg / decode(z.f_chg_type, " + // + " '1', (z.f_curr_price - z.f_net_chg), " + // + " '2', (z.f_curr_price - z.f_net_chg), " + // + " '3', (z.f_curr_price), " + // + " '4', -1 * (z.f_curr_price + z.f_net_chg), " + // + " '5', -1 * (z.f_curr_price + z.f_net_chg))) * 100, 2) rate " + // + " FROM SB_ITEM a, v_all_stock b, (select x.f_stock_code, x.f_curr_price, x.f_net_chg, x.f_chg_type from n_online x " + // + "union " + // + " select y.f_stock_code, y.f_curr_price, y.f_net_chg, y.f_chg_type from n_kosdaq_online y) z " + // + "WHERE a.SB_M_CODE = '" + code + "' " + // + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + // + " AND z.f_stock_code = b.f_stock_code " + // + " AND b.f_stop_gubun = 'N' " + // + "ORDER BY rate desc "; + } + else if (sort == "하락률순") + { + query = "SELECT b.F_STOCK_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + + " round((b.f_net_chg / case when b.f_chg_type = '1' then (b.f_curr_price - b.f_net_chg) " + + " when b.f_chg_type = '2' then (b.f_curr_price - b.f_net_chg) " + + " when b.f_chg_type = '3' then (b.f_curr_price) " + + " when b.f_chg_type = '4' then - 1 * (b.f_curr_price + b.f_net_chg) " + + " when b.f_chg_type = '5' then - 1 * (b.f_curr_price + b.f_net_chg) end) *100, 2) rate " + + " FROM SB_ITEM a, v_all_stock b " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND b.f_stop_gubun = 'N' " + + "ORDER BY rate "; + } + else + { + query = "SELECT b.F_STOCK_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index " + + " FROM SB_ITEM a, v_all_stock b " + + " WHERE a.SB_M_CODE = '" + code + "' " + + " and substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " and b.f_stop_gubun = 'N' ORDER BY a.SB_I_INDEX"; + + //query = "SELECT F_STOCK_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index "; + //query = query + "FROM SB_ITEM a, v_all_stock b "; + //query = query + "WHERE a.SB_M_CODE = '" + code + "' "; + //query = query + "AND substr(a.sb_i_code, 2, 12) = b.f_stock_code "; + //query = query + "AND b.f_stop_gubun = 'N' "; + //query = query + "ORDER BY a.SB_I_INDEX"; + } + + mf.m_db.Nxt_ViewQuery(mf.dataGridView2, query); + + for (int i = 0; i < mf.dataGridView2.RowCount - 1; i++) + { + if (i > 0) + { + jname = jname + ","; + } + jname = jname + mf.dataGridView2.Rows[i].Cells[0].Value.ToString()+ "(NXT)"; + } + + FileDataLoadView(jname, idx, tname, para); + } + + private void ExpertDataLoadView(string code, int idx, string tname, int para) + { + //테마 종목 가져오기 + string query = string.Empty; + string jname = string.Empty; + + mf.m_db.ViewQuery(mf.dataGridView2, "SELECT * FROM RECOMMEND_LIST WHERE RC_CODE = '" + code + "' order by PLAYINDEX"); + + + for (int i = 0; i < mf.dataGridView2.RowCount - 1; i++) + { + if (i > 0) + { + jname = jname + ","; + } + jname = jname + mf.dataGridView2.Rows[i].Cells[2].Value.ToString(); + } + + + FileDataLoadView(jname, idx, tname, para); + } + + private void OracleDataLoadView(string code, string sub, int idx) + { + try + { + int lcnt = 0; + + if (code.Contains("업종")) + { + if (code.Contains("코스피")) + code = "코스피"; + else + code = "코스닥"; + sub = "업종지수"; + + } + + string[] colums = new string[] { "WANNAME", "F_CURR_PRICE", "NET_CHG", "RATE", "CHG_TYPE" }; + + DataSet ds = null; + + //mf.KAObject = mf.KAScene.GetObject("title"); + + 국내시장종류 type = 국내시장종류.KOSPI; + + if (code.Equals("코스닥")) + { + type = 국내시장종류.KOSDAQ; + } + + bool isPoint = false; + + if (sub.Contains("예상가 시가총액 상위")) + { + colums = new string[] { "WANNAME", "CURR_PRICE", "NET_CHG", "RATE", "CHG_TYPE" }; + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.예상가시가총액상위); + //mf.KAObject.SetValue(code + " 예상가 시가총액 상위"); + } + + else if (sub.Contains("시가총액")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.시가총액); +// mf.KAObject.SetValue(code + " 시가총액 상위"); + colums[1] = "CURR_PRICE"; + } + else if (sub.Contains("업종지수")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.업종); + //mf.KAObject.SetValue(code + " 업종"); + isPoint = true; + + colums[0] = "F_PART_NAME"; + colums[1] = "PART_IDX"; + colums[2] = "PART_CHG"; + colums[4] = "F_CHG_TYPE"; + } + else if (sub.Contains("시간외 상승")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.시간외상승률); + //mf.KAObject.SetValue(code + " 시간외 상승률 상위"); + } + else if (sub.Contains("시간외 하락")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.시간외하락률); + //mf.KAObject.SetValue(code + " 시간외 하락률 상위"); + } + else if (sub.Contains("상승률")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.상승률); + //mf.KAObject.SetValue(code + " 상승률 상위"); + } + else if (sub.Contains("하락률")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.하락률); + //mf.KAObject.SetValue(code + " 하락률 상위"); + } + + else if (sub.Contains("52주 신고가")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.신고가52주); + //mf.KAObject.SetValue(code + " 52주 신고가"); + + colums[0] = "F_STOCK_WANNAME"; + colums[1] = "F_CURR_PRICE"; + colums[2] = "F_NET_CHG"; + colums[4] = "F_CHG_TYPE"; + } + else if (sub.Contains("52주 신저가")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.신저가52주); + //mf.KAObject.SetValue(code + " 52주 신저가"); + + colums[0] = "F_STOCK_WANNAME"; + colums[1] = "F_CURR_PRICE"; + colums[2] = "F_NET_CHG"; + colums[4] = "F_CHG_TYPE"; + } + + + else if (sub.Contains("코스피 200 종목")) + { + + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.코스피200); + colums[1] = "CURR_PRICE"; + mf.KAObject.SetValue(code + " 200"); + } + + else if (sub.Contains("ETF 종목")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.ETF); + colums[1] = "CURR_PRICE"; + mf.KAObject.SetValue("ETF"); + } + + //ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.); + mf.dataGridView1.DataSource = ds.Tables[0]; + + for (int i = 1; i <= 6; i++) + { + mf.KAScene.GetObject("row" + (i).ToString()).SetVisible(0); + } + + + if (isPoint) + { + mf.KAObject = mf.KAScene.GetObject("unit"); + mf.KAObject.SetValue("단위 : p"); + + mf.KAObject = mf.KAScene.GetObject("column1"); + mf.KAObject.SetValue("현재"); + mf.KAObject = mf.KAScene.GetObject("column2"); + mf.KAObject.SetValue("등락"); + mf.KAObject = mf.KAScene.GetObject("column3"); + mf.KAObject.SetValue("등락률"); + + List rows = new List(); + + foreach (DataRow dr in ds.Tables[0].Rows) + { + string[] row = new string[] { dr[colums[0]].ToString(), dr[colums[1]].ToString() , + dr[colums[2]].ToString(), dr[colums[3]].ToString(),dr[colums[4]].ToString()}; + + rows.Add(row); + } + + //rows.Sort(delegate (string[] x, string[] y) + //{ + // return Convert.ToDouble(y[1]).CompareTo(Convert.ToDouble(x[1])); + //}); + + //mf.dataGridView1.RowCount - 1 + if (mf.dataGridView1.RowCount - 1 < 6) + { + lcnt = mf.dataGridView1.RowCount - 1; + } + else + { + lcnt = 6; + } + + for (int i = 0; i < lcnt; i++) + { + string jname = rows[i + (idx * 6)][0]; // ds.Tables[0].Rows[i][colums[0]].ToString(); + string price = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 6)][1])); + string priceChange = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 6)][2])); + string rate = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 6)][3])); + string PMtype = rows[i + (idx * 6)][4]; + + mf.KAScene.GetObject("row" + (i + 1).ToString()).SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("title" + (i + 1)); + mf.KAObject.SetValue(jname); + + mf.KAObject = mf.KAScene.GetObject("price" + (i + 1)); + mf.KAObject.SetValue(price); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_1"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_2"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_3"); + mf.KAObject.SetValue(priceChange); + + //mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_1"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_2"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_3"); + mf.KAObject.SetValue(rate); + + if (PMtype.Equals("-")) + mf.KAObject.SetValue("-" + rate); + else + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(0); + + //SetFaceTextColor' + if (PMtype.Equals("-")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else if (PMtype.Equals("+")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(1); + } + } + + } + else + { + //mf.KAObject = mf.KAScene.GetObject("mart"); + + //if ((code == "코스피_NXT") || (code == "코스닥_NXT")) + // mf.KAObject.SetVisible(1); + //else + // mf.KAObject.SetVisible(0); + + if ((code == "코스피_NXT") || (code == "코스닥_NXT")) + { + string m_file = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + + if (DateTime.Now.Hour <= 12) // 오전 + { + m_file = m_file + "\\Cuts\\Images\\프리마켓.png"; + // m_file = m_file + "프리마켓.png"; + } + else + { + m_file = m_file + "\\Cuts\\Images\\애프터마켓.png"; + //m_file = "애프터마켓.png"; + } + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetValue(m_file); + + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(0); + } + + mf.KAObject = mf.KAScene.GetObject("unit"); + mf.KAObject.SetValue("단위 : 원"); + + //mf.KAObject = mf.KAScene.GetObject("column1"); + //mf.KAObject.SetValue("현재가"); + //mf.KAObject = mf.KAScene.GetObject("column2"); + //mf.KAObject.SetValue("등락가"); + //mf.KAObject = mf.KAScene.GetObject("column3"); + //mf.KAObject.SetValue("등락률"); + + //mf.dataGridView1.RowCount - 1 + + if (mf.dataGridView1.RowCount - 1 < 6) + { + lcnt = mf.dataGridView1.RowCount - 1; + } + else + { + lcnt = 6; + } + + for (int i = 0; i < lcnt; i++) + { + string jname = ds.Tables[0].Rows[i + (idx * 6)][colums[0]].ToString(); + string price = String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[i + (idx * 6)][colums[1]].ToString())); + string priceChange = String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[i + (idx * 6)][colums[2]].ToString())); + string rate = String.Format("{0:#,##0.00}", Convert.ToDouble(ds.Tables[0].Rows[i + (idx * 6)][colums[3]].ToString())); + string PMtype = ds.Tables[0].Rows[i + (idx * 6)][colums[4]].ToString(); + + mf.KAScene.GetObject("row" + (i + 1).ToString()).SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("title" + (i + 1)); + mf.KAObject.SetValue(jname); + + mf.KAObject = mf.KAScene.GetObject("price" + (i + 1)); + mf.KAObject.SetValue(price); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_1"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_2"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_3"); + mf.KAObject.SetValue(priceChange); + + //mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + //mf.KAObject.SetValue(rate); + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_1"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_2"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_3"); + mf.KAObject.SetValue(rate); + + + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(0); + + if (PMtype.Equals("4") || PMtype.Equals("5")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(1); + + if (PMtype.Equals("4")) + { + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAScene.GetObject("down" + (i + 1)).SetVisible(1); + } + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(1); + + if (rate.Substring(0,1) != "-") + { + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + mf.KAObject.SetValue("-" + rate); + //mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + //mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + //mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(1); + + //mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + //mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + //mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(1); + } + + } + else if (PMtype.Equals("1") || PMtype.Equals("2")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + if (PMtype.Equals("1")) + { + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(1); + } + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + } + else + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(1); + } + } + } + + mf.m_chkdata = true; + + + } + catch (Exception) + { + //MessageBox.Show(e.ToString()); + mf.m_chkdata = false; + } + } + private void MariaDataLoadView(string code, string sub, int idx) + { + try + { + int lcnt = 0; + + if (code.Contains("업종")) + { + if (code.Contains("코스피_NXT")) + code = "코스피_NXT"; + else + code = "코스닥_NXT"; + + sub = "업종지수"; + } + + string[] colums = new string[] { "WANNAME", "F_CURR_PRICE", "NET_CHG", "RATE", "CHG_TYPE" }; + + DataSet ds = null; + + //mf.KAObject = mf.KAScene.GetObject("title"); + + 국내시장종류 type = 국내시장종류.NXT_KOSPI; + + if (code.Equals("코스닥_NXT")) + { + type = 국내시장종류.NXT_KOSDAQ; + } + + bool isPoint = false; + + if (sub.Contains("시가총액")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.시가총액); + colums[1] = "CURR_PRICE"; + } + else if (sub.Contains("시간외 상승")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.시간외상승률); + } + else if (sub.Contains("시간외 하락")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.시간외하락률); + } + else if (sub.Contains("상승률")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.상승률); + } + else if (sub.Contains("하락률")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.하락률); + } + else if (sub.Contains("거래량")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.거래량); + +// mf.KAObject.SetValue(code.Replace("_NXT", "") + " 거래량 상위"); + } + + //ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.); + mf.dataGridView1.DataSource = ds.Tables[0]; + + for (int i = 1; i <= 6; i++) + { + mf.KAScene.GetObject("row" + (i).ToString()).SetVisible(0); + } + + + if (isPoint) + { + mf.KAObject = mf.KAScene.GetObject("unit"); + mf.KAObject.SetValue("단위 : p"); + + mf.KAObject = mf.KAScene.GetObject("column1"); + mf.KAObject.SetValue("현재"); + mf.KAObject = mf.KAScene.GetObject("column2"); + mf.KAObject.SetValue("등락"); + mf.KAObject = mf.KAScene.GetObject("column3"); + mf.KAObject.SetValue("등락률"); + + List rows = new List(); + + foreach (DataRow dr in ds.Tables[0].Rows) + { + string[] row = new string[] { dr[colums[0]].ToString(), dr[colums[1]].ToString() , + dr[colums[2]].ToString(), dr[colums[3]].ToString(),dr[colums[4]].ToString()}; + + rows.Add(row); + } + + //rows.Sort(delegate (string[] x, string[] y) + //{ + // return Convert.ToDouble(y[1]).CompareTo(Convert.ToDouble(x[1])); + //}); + + //mf.dataGridView1.RowCount - 1 + if (mf.dataGridView1.RowCount - 1 < 6) + { + lcnt = mf.dataGridView1.RowCount - 1; + } + else + { + lcnt = 6; + } + + for (int i = 0; i < lcnt; i++) + { + string jname = rows[i + (idx * 6)][0]; // ds.Tables[0].Rows[i][colums[0]].ToString(); + string price = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 6)][1])); + string priceChange = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 6)][2])); + string rate = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 6)][3])); + string PMtype = rows[i + (idx * 6)][4]; + + mf.KAScene.GetObject("row" + (i + 1).ToString()).SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("title" + (i + 1)); + mf.KAObject.SetValue(jname); + + mf.KAObject = mf.KAScene.GetObject("price" + (i + 1)); + mf.KAObject.SetValue(price); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_1"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_2"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_3"); + mf.KAObject.SetValue(priceChange); + + //mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_1"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_2"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_3"); + mf.KAObject.SetValue(rate); + + if (PMtype.Equals("-")) + mf.KAObject.SetValue("-" + rate); + else + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(0); + + //SetFaceTextColor' + if (PMtype.Equals("-")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else if (PMtype.Equals("+")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(1); + } + } + + } + else + { + mf.KAObject = mf.KAScene.GetObject("mart"); + + //if ((code == "코스피_NXT") || (code == "코스닥_NXT")) + // mf.KAObject.SetVisible(1); + //else + // mf.KAObject.SetVisible(0); + + if ((code == "코스피_NXT") || (code == "코스닥_NXT")) + { + string m_file = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + + if (DateTime.Now.Hour <= 12) // 오전 + { + m_file = m_file + "\\Cuts\\Images\\프리마켓.png"; + // m_file = m_file + "프리마켓.png"; + } + else + { + m_file = m_file + "\\Cuts\\Images\\애프터마켓.png"; + //m_file = "애프터마켓.png"; + } + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetValue(m_file); + + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(1); // 보이기 + } + else + { + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(0); // 감추기 + } + + mf.KAObject = mf.KAScene.GetObject("unit"); + mf.KAObject.SetValue("단위 : 원"); + + //mf.KAObject = mf.KAScene.GetObject("column1"); + //mf.KAObject.SetValue("현재가"); + //mf.KAObject = mf.KAScene.GetObject("column2"); + //mf.KAObject.SetValue("등락가"); + //mf.KAObject = mf.KAScene.GetObject("column3"); + //mf.KAObject.SetValue("등락률"); + + //mf.dataGridView1.RowCount - 1 + + if (mf.dataGridView1.RowCount - 1 < 6) + { + lcnt = mf.dataGridView1.RowCount - 1; + } + else + { + lcnt = 6; + } + + for (int i = 0; i < lcnt; i++) + { + string jname = ds.Tables[0].Rows[i + (idx * 6)][colums[0]].ToString(); + string price = String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[i + (idx * 6)][colums[1]].ToString())); + string priceChange = String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[i + (idx * 6)][colums[2]].ToString())); + string rate = String.Format("{0:#,##0.00}", Convert.ToDouble(ds.Tables[0].Rows[i + (idx * 6)][colums[3]].ToString())); + string PMtype = ds.Tables[0].Rows[i + (idx * 6)][colums[4]].ToString(); + + mf.KAScene.GetObject("row" + (i + 1).ToString()).SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("title" + (i + 1)); + mf.KAObject.SetValue(jname); + + mf.KAObject = mf.KAScene.GetObject("price" + (i + 1)); + mf.KAObject.SetValue(price); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_1"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_2"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_3"); + mf.KAObject.SetValue(priceChange); + + //mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + //mf.KAObject.SetValue(rate); + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_1"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_2"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_3"); + mf.KAObject.SetValue(rate); + + + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(0); + + if (PMtype.Equals("4") || PMtype.Equals("5")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(1); + + if (PMtype.Equals("4")) + { + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAScene.GetObject("down" + (i + 1)).SetVisible(1); + } + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(1); + + if (rate.Substring(0, 1) != "-") + { + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + mf.KAObject.SetValue("-" + rate); + //mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + //mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + //mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(1); + + //mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + //mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + //mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(1); + } + + } + else if (PMtype.Equals("1") || PMtype.Equals("2")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + if (PMtype.Equals("1")) + { + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(1); + } + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + } + else + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(1); + } + } + } + + mf.m_chkdata = true; + + + } + catch (Exception) + { + //MessageBox.Show(e.ToString()); + mf.m_chkdata = false; + } + } + + + } +} diff --git a/MBN_STOCK_N/Scene/s5078.cs b/MBN_STOCK_N/Scene/s5078.cs new file mode 100644 index 0000000..ce3b904 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5078.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5078 //섹터지수 + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + public s5078(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + DataSet ds = null; + + double buho = 1.0; + //double account = 0.0; + + if (jname == "다우") + { ds = DataManager.getInstance().createCut21StickData(섹터지수막대그래프분류.다우); buho = -1.0; } + else if (jname == "나스닥") + { ds = DataManager.getInstance().createCut21StickData(섹터지수막대그래프분류.나스닥); buho = -1.0;} + else if (jname == "S&P") + { ds = DataManager.getInstance().createCut21StickData(섹터지수막대그래프분류.SNP); buho = -1.0; } + else if (jname == "코스피") + ds = DataManager.getInstance().createCut21StickData(섹터지수막대그래프분류.코스피); + else if (jname == "코스닥") + ds = DataManager.getInstance().createCut21StickData(섹터지수막대그래프분류.코스닥); + + mf.dataGridView1.DataSource = ds.Tables[0]; + + List p = new List(); + string rvalue = string.Empty; + + if (mf.dataGridView1.RowCount <= 1) + { + mf.m_chkdata = false; + } + else + { + mf.KAScene.GetObject("title").SetValue(jname + " 섹터지수"); + + for (int i = 0; i < 10; i++) + { + mf.KAScene.GetObject("bar" + (i + 1).ToString() + "_1").SetVisible(0); + mf.KAScene.GetObject("value" + (i + 1).ToString() + "_1").SetVisible(0); + mf.KAScene.GetObject("bar" + (i + 1).ToString() + "_2").SetVisible(0); + mf.KAScene.GetObject("value" + (i + 1).ToString() + "_2").SetVisible(0); + + rvalue = mf.dataGridView1.Rows[i].Cells[4].Value.ToString(); + + //if (rvalue.Substring(0, 1) == "-") + // rvalue = rvalue.Substring(1); + + double value = Convert.ToDouble(rvalue); + p.Add(Math.Abs(value)); + } + + //category + for (int i = 0; i < mf.dataGridView1.RowCount-1; i++) + { + //mf.KAScene.GetObject("category" + (i+1).ToString()).SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(dr["RATE"].ToString()))); + mf.KAScene.GetObject("category" + (i + 1).ToString()).SetValue(mf.dataGridView1.Rows[i].Cells[0].Value.ToString()); + + double valu = Convert.ToDouble(mf.dataGridView1.Rows[i].Cells[4].Value.ToString()); + p.Max(); + double scaleX = valu / p.Max(); + + + if (mf.dataGridView1.Rows[i].Cells[2].Value.ToString().Trim() != "-") + { + + mf.KAScene.GetObject("bar" + (i + 1).ToString() + "_2").SetVisible(1); + mf.KAScene.GetObject("value" + (i + 1).ToString() + "_2").SetVisible(1); + + mf.KAScene.GetObject("bar" + (i + 1).ToString() + "_2").SetScale((float)scaleX , 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAScene.GetObject("value" + (i + 1).ToString() + "_2").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[i].Cells[4].Value.ToString()).ToString("##0.00")); + + } + else + { + mf.KAScene.GetObject("bar" + (i + 1).ToString() + "_1").SetVisible(1); + mf.KAScene.GetObject("value" + (i + 1).ToString() + "_1").SetVisible(1); + + mf.KAScene.GetObject("bar" + (i + 1).ToString() + "_1").SetScale((float)(scaleX * buho) , 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAScene.GetObject("value" + (i + 1).ToString() + "_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[i].Cells[4].Value.ToString()).ToString("##0.00")); + + } + + } + mf.m_chkdata = true; + + } + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s5079.cs b/MBN_STOCK_N/Scene/s5079.cs new file mode 100644 index 0000000..cbf10bf --- /dev/null +++ b/MBN_STOCK_N/Scene/s5079.cs @@ -0,0 +1,181 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; + +namespace MBN_STOCK_N +{ + class s5079 + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + public s5079(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + //float[] xPos = new float[] { 0, 368, 740, 1110 }; + + mf.m_db.ViewQuery(mf.dataGridView1, "SELECT * FROM INPUT_GROW WHERE STOCK_NAME = '" + jname + "'"); + + mf.KAScene.GetObject("title").SetValue(mf.dataGridView1.Rows[0].Cells[0].Value.ToString() + " 성장성 지표"); + + List p = new List(); + + string[] rs = null; + string[ , ] trs = new string[5, 10]; + + for (int i = 1; i <=4; i++) + { + rs = mf.dataGridView1.Rows[0].Cells[i].Value.ToString().Split('_'); + + for (int j = 0; j p = new List(); + + for (int i = 1; i < 7; i++) + { + string[] rs = mf.dataGridView1.Rows[0].Cells[i].Value.ToString().Split('_'); + + int value = Convert.ToInt32(getValue(rs[1])); + p.Add(value); + + mf.KAObject = mf.KAScene.GetObject("barG" + i + "_1"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("barG" + i + "_2"); + mf.KAObject.SetVisible(0); + + int index = 1; + + if (value < 0) + { + index = 2; + } + + mf.KAObject = mf.KAScene.GetObject("barG" + i + "_" + index); + mf.KAObject.SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("value" + i + "_" + index); + mf.KAObject.SetValue(String.Format("{0:#,##0}", value)); + } + + + //센터를 맞추는 작업 + if (p.Max() > 0 && p.Min() > 0) + { + //모두 양수인 경우 : -235 + mf.KAObject = mf.KAScene.GetObject("centerbar"); + mf.KAObject.SetPositionKey(0, 0, (float)(-240), 0, eKVectorType.VECTOR_TYPE_Y); + } + else if (p.Max() < 0 && p.Min() < 0) + { + //모두 음수인 경우 : 120 + mf.KAObject = mf.KAScene.GetObject("centerbar"); + mf.KAObject.SetPositionKey(0, 0, (float)(115), 0, eKVectorType.VECTOR_TYPE_Y); + } + else + { + //양수와 음수가 공존하는 경우 :계산 + double scaleY = (Convert.ToDouble(355 * Math.Abs(p.Min())) / (p.Max() + Math.Abs(p.Min()))) - 250; + + mf.KAObject = mf.KAScene.GetObject("centerbar"); + mf.KAObject.SetPositionKey(0, 0, (float)(scaleY), 0, eKVectorType.VECTOR_TYPE_Y); + } + + for (int i = 1; i < 7; i++) + { + string[] rs = mf.dataGridView1.Rows[0].Cells[i].Value.ToString().Split('_'); + double value = Convert.ToDouble(getValue(rs[1])); + double scaleY = 1.8 * Math.Abs(value / p.Max()); + + if (!((p.Max() > 0 && p.Min() > 0) || (p.Max() < 0 && p.Min() < 0))) + { + scaleY = 1.8 * Math.Abs(value / (p.Max() - p.Min())); + } + if (p.Max() < 0 && p.Min() < 0) + { + scaleY = 1.8 * Math.Abs(value / p.Min()); + } + + int index = 1; + + if (value < 0) + { + index = 2; + } + + mf.KAObject = mf.KAScene.GetObject("bar" + i + "_" + index); + mf.KAObject.SetScale(0, (float)scaleY, 0, eKVectorType.VECTOR_TYPE_Y); + } + mf.m_chkdata = true; + } + catch (Exception) + { + mf.m_chkdata = false; + } + + /* + try + { + mf = (MainForm)frm; + + mf.m_db.ViewQuery(mf.dataGridView1, "SELECT * FROM INPUT_SELL WHERE STOCK_NAME = '" + jname + "'"); + + mf.KAScene.GetObject("title").SetValue(mf.dataGridView1.Rows[0].Cells[0].Value.ToString() + " 매출액"); + + List p = new List(); + for (int i = 1; i < 7; i++) + { + string[] rs = mf.dataGridView1.Rows[0].Cells[i].Value.ToString().Split('_'); + + mf.KAObject = mf.KAScene.GetObject("quarter" + i); + mf.KAObject.SetValue(rs[0]); + + if (rs[1] != "") + { + + int value = Convert.ToInt32(rs[1]); + p.Add(value); + + mf.KAObject = mf.KAScene.GetObject("sales" + i); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt32(rs[1]))); + } + + } + + for (int i = 1; i < 7; i++) + { + string[] rs = mf.dataGridView1.Rows[0].Cells[i].Value.ToString().Split('_'); + if (rs[1] != "") + { + + double valu = Convert.ToDouble(rs[1]); + p.Max(); + double scaleY = valu / p.Max(); + + mf.KAObject = mf.KAScene.GetObject("shape" + i); + mf.KAObject.SetScale(0, (float)scaleY, 0, eKVectorType.VECTOR_TYPE_Y); + mf.KAObject = mf.KAScene.GetObject("bar" + i); + mf.KAObject.SetScale(0, (float)scaleY, 0, eKVectorType.VECTOR_TYPE_Y); + + mf.KAScene.GetObject("bar" + i).SetVisible(1); + mf.KAScene.GetObject("sales" + i).SetVisible(1); + mf.KAScene.GetObject("shape" + i).SetVisible(1); + } + else + { + mf.KAScene.GetObject("sales" + i).SetVisible(0); + mf.KAScene.GetObject("shape" + i).SetVisible(0); + mf.KAScene.GetObject("bar" + i).SetVisible(0); + } + } + mf.m_chkdata = true; + } + catch(Exception) + { + mf.m_chkdata = false; + } + */ + } + public string getValue(string value) + { + if (value == "") + { + value = "0"; + } + return value; + } + + } + +} diff --git a/MBN_STOCK_N/Scene/s5081.cs b/MBN_STOCK_N/Scene/s5081.cs new file mode 100644 index 0000000..49e2bd5 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5081.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; + +namespace MBN_STOCK_N +{ + class s5081 //영업이익 + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + public s5081(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + + mf.m_db.ViewQuery(mf.dataGridView1, "SELECT * FROM INPUT_PROFIT WHERE STOCK_NAME = '" + jname + "'"); + + mf.KAScene.GetObject("title").SetValue(mf.dataGridView1.Rows[0].Cells[0].Value.ToString() + " 영업이익"); + + + for (int i = 1; i < 7; i++) + { + string[] rs = mf.dataGridView1.Rows[0].Cells[i].Value.ToString().Split('_'); + + mf.KAObject = mf.KAScene.GetObject("quarter" + i); + mf.KAObject.SetValue(rs[0]); + } + + List p = new List(); + + for (int i = 1; i < 7; i++) + { + string[] rs = mf.dataGridView1.Rows[0].Cells[i].Value.ToString().Split('_'); + + int value = Convert.ToInt32(getValue(rs[1])); + p.Add(value); + + mf.KAObject = mf.KAScene.GetObject("barG" + i + "_1"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("barG" + i + "_2"); + mf.KAObject.SetVisible(0); + + int index = 1; + + if (value < 0) + { + index = 2; + } + + mf.KAObject = mf.KAScene.GetObject("barG" + i + "_" + index); + mf.KAObject.SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("value" + i + "_" + index); + mf.KAObject.SetValue(String.Format("{0:#,##0}", value)); + } + + + //센터를 맞추는 작업 + if (p.Max() > 0 && p.Min() > 0) + { + //모두 양수인 경우 : -235 + mf.KAObject = mf.KAScene.GetObject("centerbar"); + mf.KAObject.SetPositionKey(0, 0, (float)(-240), 0, eKVectorType.VECTOR_TYPE_Y); + } + else if (p.Max() < 0 && p.Min() < 0) + { + //모두 음수인 경우 : 120 + mf.KAObject = mf.KAScene.GetObject("centerbar"); + mf.KAObject.SetPositionKey(0, 0, (float)(115), 0, eKVectorType.VECTOR_TYPE_Y); + } + else + { + //양수와 음수가 공존하는 경우 :계산 + double scaleY = (Convert.ToDouble(355 * Math.Abs(p.Min())) / (p.Max() + Math.Abs(p.Min()))) - 250; + + mf.KAObject = mf.KAScene.GetObject("centerbar"); + mf.KAObject.SetPositionKey(0, 0, (float)(scaleY), 0, eKVectorType.VECTOR_TYPE_Y); + } + + for (int i = 1; i < 7; i++) + { + string[] rs = mf.dataGridView1.Rows[0].Cells[i].Value.ToString().Split('_'); + double value = Convert.ToDouble(getValue(rs[1])); + double scaleY = 1.8 * Math.Abs(value / p.Max()); + + if (!((p.Max() > 0 && p.Min() > 0) || (p.Max() < 0 && p.Min() < 0))) + { + scaleY = 1.8 * Math.Abs(value / (p.Max() - p.Min())); + } + if (p.Max() < 0 && p.Min() < 0) + { + scaleY = 1.8 * Math.Abs(value / p.Min()); + } + + int index = 1; + + if (value < 0) + { + index = 2; + } + + mf.KAObject = mf.KAScene.GetObject("bar" + i + "_" + index); + mf.KAObject.SetScale(0, (float)scaleY, 0, eKVectorType.VECTOR_TYPE_Y); + } + mf.m_chkdata = true; + } + catch (Exception) + { + mf.m_chkdata = false; + } + + } + + public string getValue(string value) + { + if (value == "") + { + value = "0"; + } + return value; + } + } +} diff --git a/MBN_STOCK_N/Scene/s5082.cs b/MBN_STOCK_N/Scene/s5082.cs new file mode 100644 index 0000000..3f5e844 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5082.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5082 //주체별 매매동향 + { + MainForm mf = null; + + public s5082(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + DataSet ds = DataManager.getInstance().createGridChartData(그리드표그래프종류.주체별매매동향8번컷, null); + mf.dataGridView1.DataSource = ds.Tables[0]; + + for (int i = 0; i < 3; i++) + { + for (int j = 0; j < 3; j++) + { + //mf.KAObject = mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_1"); + //mf.KAObject = mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_2"); + //mf.KAObject = mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_3"); + + int value = Convert.ToInt32(ds.Tables[0].Rows[i][j + 1].ToString()); + + if (value < 0) + { + //mf.KAObject.SetFaceColor(15, 99, 188, 255); + + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_1").SetValue(String.Format("{0:#,##0}", value)); + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_2").SetValue(String.Format("{0:#,##0}", value)); + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_3").SetValue(String.Format("{0:#,##0}", value)); + + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_3").SetVisible(1); + } + + else if (value > 0) + { + //mf.KAObject.SetFaceColor(171, 0, 0, 255); + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_1").SetValue(String.Format("{0:#,##0}", value)); + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_2").SetValue(String.Format("{0:#,##0}", value)); + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_3").SetValue(String.Format("{0:#,##0}", value)); + + + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_3").SetVisible(0); + } + + else + { + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_1").SetValue(String.Format("{0:#,##0}", value)); + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_2").SetValue(String.Format("{0:#,##0}", value)); + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_3").SetValue(String.Format("{0:#,##0}", value)); + + + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("row" + (i + 1) + "_value" + (j + 1) + "_3").SetVisible(0); + //mf.KAObject.SetFaceColor(47, 47, 47, 255); + } + + + //mf.KAObject.SetValue(String.Format("{0:#,##0}", value)); + + + } + } + mf.m_chkdata = true; + + + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s5083.cs b/MBN_STOCK_N/Scene/s5083.cs new file mode 100644 index 0000000..f035777 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5083.cs @@ -0,0 +1,184 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5083 //개인, 기관, 외국인 매매동향 + { + MainForm mf = null; + string tname = string.Empty; + string dname = string.Empty; + + + public s5083(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + DataSet ds = null; + + + if (jname.Contains("개인")) + { + tname = "개인"; dname = "NAME"; + ds = DataManager.getInstance().createLineGraphData(선그래프데이터분류.개인매매동향, 데이터기간.일, null); + } + + else if (jname.Contains("기관")) + { + tname = "기관"; dname = "F_NAME"; + ds = DataManager.getInstance().createLineGraphData(선그래프데이터분류.기관매매동향, 데이터기간.일, null); + } + else if (jname.Contains("외국인")) + { + tname = "외국인"; dname = "NAME"; + ds = DataManager.getInstance().createLineGraphData(선그래프데이터분류.외국인매매동향, 데이터기간.일, null); + } + + mf.dataGridView1.DataSource = ds.Tables[0]; + mf.dataGridView2.DataSource = ds.Tables[1]; + + mf.KAObject = mf.KAScene.GetObject("title"); + mf.KAObject.SetValue(tname + " 매매동향"); + + foreach (DataRow v in ds.Tables[0].Rows) + { + string name = v[dname].ToString(); + string value = String.Format("{0:#,##0}", Convert.ToInt32(v["AMT"].ToString())); + + if (name.Equals("코스피")) + { + mf.KAObject = mf.KAScene.GetObject("price1"); + mf.KAObject.SetValue(value); + } + else if (name.Equals("코스닥")) + { + mf.KAObject = mf.KAScene.GetObject("price2"); + mf.KAObject.SetValue(value); + } + else if (name.Equals("코스피200")) + { + mf.KAObject = mf.KAScene.GetObject("price3"); + mf.KAObject.SetValue(value); + } + } + + double lineMaxWidth = 1212.26; + + //22.06.21 수정사항 + //전체 길이에서 비례하는 만큼 최대 수치값을 변경하여 적용한다 + + //마지막 라인의 4자리 값만 필요 + string fdatatime = ds.Tables[1].Rows[ds.Tables[1].Rows.Count - 1]["F_DATA_TIME"].ToString(); + fdatatime = fdatatime.Substring(fdatatime.Length - 4); + //해당 시간 데이터가 15시30분 보다 작은 경우만 최대 값이 변동된다. + int bufTime = Convert.ToInt32(fdatatime); + if (bufTime < 1530) + { + //1,2자리는 시 3,4자리는 분 + //9시 ~ 15시30분 => 540~930 이므로 비례해서 계산한다 + int TimeToMin = (Convert.ToInt32(fdatatime.Substring(0, 2)) * 60) + Convert.ToInt32(fdatatime.Substring(2, 2)); + + lineMaxWidth = lineMaxWidth * Convert.ToDouble(TimeToMin - 540) / 390; + } + + double GRAPH_Y = 48.0; + + double maxValue = 0.0; + double minValue = 0.0; + List kospi = new List(); + List kosdaq = new List(); + List kospi200 = new List(); + + + foreach (DataRow v in ds.Tables[1].Rows) + { + //int value = Math.Abs(Convert.ToInt32(v["PRICE"].ToString())); + double value = Convert.ToDouble(v["PRICE"].ToString()); + + if (maxValue < value) + maxValue = value; + + if (minValue > value) + minValue = value; + + if (v["F_NAME"].ToString().Equals("코스피")) + kospi.Add(Convert.ToInt32(v["PRICE"].ToString())); + if (v["F_NAME"].ToString().Equals("코스닥")) + kosdaq.Add(Convert.ToInt32(v["PRICE"].ToString())); + if (v["F_NAME"].ToString().Equals("코스피200")) + kospi200.Add(Convert.ToInt32(v["PRICE"].ToString())); + } + + double fRange = maxValue - minValue; + double fBase = -138 + (0.0f - minValue) / fRange * 266; + int baseYPos = Convert.ToInt32(GRAPH_Y + fBase); + mf.KAScene.GetObject("baseline").SetPosition(0.0f, baseYPos, 0.0f, eKVectorType.VECTOR_TYPE_Y); + //mf.KAScene.GetObject("baseline").SetPosition(0.0f, Convert.ToInt32(GRAPH_Y + fBase), 0.0f, eKVectorType.VECTOR_TYPE_Y); + + int index = 0; + mf.KAObject = mf.KAScene.GetObject("path1"); + mf.KAObject.BeginPathPoint(); + mf.KAObject.ClearPathPoints(); + mf.KAObject.AddPathPoint(0, (float)fBase, 0); + foreach (var v in kospi) + { + index++; + //double xPos = (lineMaxWidth / (kospi.Count - 1)) * (index - 1); + double xPos = (lineMaxWidth / (kospi.Count - 1)) * (index - 1); + //double yPos = ((Convert.ToDouble(v) / maxValue) * 150); + double yPos = -138 + (Convert.ToDouble(v) - minValue) / fRange * 266; + mf.KAObject.AddPathPoint((float)xPos, (float)yPos, 0); + } + mf.KAObject.EndPathPoint(); + + index = 0; + mf.KAObject = mf.KAScene.GetObject("path2"); + mf.KAObject.BeginPathPoint(); + mf.KAObject.ClearPathPoints(); + mf.KAObject.AddPathPoint(0, (float)fBase, 0); + foreach (var v in kosdaq) + { + index++; + //double xPos = (lineMaxWidth / (kospi.Count - 1)) * (index - 1); + double xPos = (lineMaxWidth / (kospi.Count)) * (index); + //double yPos = ((Convert.ToDouble(v) / maxValue) * 150); + double yPos = -138 + (Convert.ToDouble(v) - minValue) / fRange * 266; + mf.KAObject.AddPathPoint((float)xPos, (float)yPos, 0); + } + mf.KAObject.EndPathPoint(); + + index = 0; + mf.KAObject = mf.KAScene.GetObject("path3"); + mf.KAObject.BeginPathPoint(); + mf.KAObject.ClearPathPoints(); + mf.KAObject.AddPathPoint(0, (float)fBase, 0); + foreach (var v in kospi200) + { + index++; + //double xPos = (lineMaxWidth / (kospi200.Count - 1)) * (index - 1); + double xPos = (lineMaxWidth / (kospi200.Count)) * (index); + //double yPos = ((Convert.ToDouble(v) / maxValue) * 150); + double yPos = -138 + (Convert.ToDouble(v) - minValue) / fRange * 266; + mf.KAObject.AddPathPoint((float)xPos, (float)yPos, 0); + } + mf.KAObject.EndPathPoint(); + mf.m_chkdata = true; + + + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s5084.cs b/MBN_STOCK_N/Scene/s5084.cs new file mode 100644 index 0000000..50b1295 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5084.cs @@ -0,0 +1,187 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5084 //매매동향 라인그래프 + { + MainForm mf = null; + string tname = string.Empty; + + public s5084(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + DataSet ds = null; + + if (jname.Contains("코스피")) + { + tname = "코스피"; + ds = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스피매매동향, 데이터기간.일, null); + } + + else if (jname.Contains("코스닥")) + { + tname = "코스닥"; + ds = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스닥매매동향, 데이터기간.일, null); + } + + + mf.dataGridView1.DataSource = ds.Tables[0]; + mf.dataGridView2.DataSource = ds.Tables[1]; + + mf.KAObject = mf.KAScene.GetObject("title"); + mf.KAObject.SetValue(tname + " 매매동향"); + + mf.KAObject = mf.KAScene.GetObject("price1"); + string price = String.Format("{0:#,##0}", Convert.ToInt32(ds.Tables[0].Rows[0]["개인"].ToString())); + mf.KAObject.SetValue(price); + mf.KAObject = mf.KAScene.GetObject("price2"); + price = String.Format("{0:#,##0}", Convert.ToInt32(ds.Tables[0].Rows[0]["외국인"].ToString())); + mf.KAObject.SetValue(price); + mf.KAObject = mf.KAScene.GetObject("price3"); + price = String.Format("{0:#,##0}", Convert.ToInt32(ds.Tables[0].Rows[0]["기관"].ToString())); + mf.KAObject.SetValue(price); + + + + + + double lineMaxWidth = 1212.26; + + //22.06.15 수정사항 + //전체 길이에서 비례하는 만큼 최대 수치값을 변경하여 적용한다 + + //마지막 라인의 4자리 값만 필요 + string fdatatime = ds.Tables[1].Rows[ds.Tables[1].Rows.Count - 1]["F_DATA_TIME"].ToString(); + fdatatime = fdatatime.Substring(fdatatime.Length - 4); + //해당 시간 데이터가 15시30분 보다 작은 경우만 최대 값이 변동된다. + int bufTime = Convert.ToInt32(fdatatime); + if (bufTime < 1530) + { + //1,2자리는 시 3,4자리는 분 + //9시 ~ 15시30분 => 540~930 이므로 비례해서 계산한다 + int TimeToMin = (Convert.ToInt32(fdatatime.Substring(0, 2)) * 60) + Convert.ToInt32(fdatatime.Substring(2, 2)); + + lineMaxWidth = lineMaxWidth * Convert.ToDouble(TimeToMin - 540) / 390; + } + + double GRAPH_Y = 48.0; + + double maxValue = 0.0; + double minValue = 0.0; + + //int maxValue = 0; + List retail = new List(); + List foreign = new List(); + List institutional = new List(); + + foreach (DataRow v in ds.Tables[1].Rows) + { + //int r = Math.Abs(Convert.ToInt32(v["개인"].ToString())); + //int f = Math.Abs(Convert.ToInt32(v["외국인"].ToString())); + //int i = Math.Abs(Convert.ToInt32(v["기관"].ToString())); + + double value1 = Convert.ToDouble(v["개인"].ToString()); + double value2 = Convert.ToDouble(v["외국인"].ToString()); + double value3 = Convert.ToDouble(v["기관"].ToString()); + + if (maxValue < value1) + maxValue = value1; + + if (minValue > value1) + minValue = value1; + + if (maxValue < value2) + maxValue = value2; + + if (minValue > value2) + minValue = value2; + + if (maxValue < value3) + maxValue = value3; + + if (minValue > value3) + minValue = value3; + + // if (maxValue < r) + // maxValue = r; + //if (maxValue < f) + // maxValue = f; + //if (maxValue < i) + // maxValue = i; + + retail.Add(Convert.ToInt32(v["개인"].ToString())); + foreign.Add(Convert.ToInt32(v["외국인"].ToString())); + institutional.Add(Convert.ToInt32(v["기관"].ToString())); + } + + double fRange = maxValue - minValue; + double fBase = -138 + (0.0f - minValue) / fRange * 266; + int baseYPos = Convert.ToInt32(GRAPH_Y + fBase); + mf.KAScene.GetObject("baseline").SetPosition(0.0f, baseYPos, 0.0f, eKVectorType.VECTOR_TYPE_Y); + + int index = 0; + mf.KAObject = mf.KAScene.GetObject("path1"); + mf.KAObject.BeginPathPoint(); + mf.KAObject.ClearPathPoints(); + mf.KAObject.AddPathPoint(0, (float)fBase, 0); + foreach (var v in retail) + { + index++; + double xPos = (lineMaxWidth / (retail.Count )) * (index ); + //double yPos = (Convert.ToDouble(v) / maxValue) * 150; + double yPos = -138 + (Convert.ToDouble(v) - minValue) / fRange * 266; + mf.KAObject.AddPathPoint((float)xPos, (float)yPos, 0); + } + mf.KAObject.EndPathPoint(); + + index = 0; + mf.KAObject = mf.KAScene.GetObject("path2"); + mf.KAObject.BeginPathPoint(); + mf.KAObject.ClearPathPoints(); + mf.KAObject.AddPathPoint(0, (float)fBase, 0); + foreach (var v in foreign) + { + index++; + double xPos = (lineMaxWidth / (foreign.Count)) * (index ); + double yPos = -138 + (Convert.ToDouble(v) - minValue) / fRange * 266; + //double yPos = (Convert.ToDouble(v) / maxValue) * 150; + mf.KAObject.AddPathPoint((float)xPos, (float)yPos, 0); + } + mf.KAObject.EndPathPoint(); + + index = 0; + mf.KAObject = mf.KAScene.GetObject("path3"); + mf.KAObject.BeginPathPoint(); + mf.KAObject.ClearPathPoints(); + mf.KAObject.AddPathPoint(0, (float)fBase, 0); + foreach (var v in institutional) + { + index++; + double xPos = (lineMaxWidth / (institutional.Count)) * (index ); + double yPos = -138 + (Convert.ToDouble(v) - minValue) / fRange * 266; + //double yPos = (Convert.ToDouble(v) / maxValue) * 150; + mf.KAObject.AddPathPoint((float)xPos, (float)yPos, 0); + } + mf.KAObject.EndPathPoint(); + mf.m_chkdata = true; + + + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s5085.cs b/MBN_STOCK_N/Scene/s5085.cs new file mode 100644 index 0000000..18b845f --- /dev/null +++ b/MBN_STOCK_N/Scene/s5085.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5085 //프로그램 매매 + { + MainForm mf = null; + + public s5085(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + DataSet ds = DataManager.getInstance().createGridChartData(그리드표그래프종류.프로그램매매13번컷, null); + mf.dataGridView1.DataSource = ds.Tables[0]; + + foreach (DataRow dr in ds.Tables[0].Rows) + { + int i = 1; + + if (dr[0].Equals("순매수")) + i = 1; + else if (dr[0].Equals("차익")) + i = 2; + else if (dr[0].Equals("비차익")) + i = 3; + else if (dr[0].Equals("베이시스")) + i = 4; + else if (dr[0].Equals("코스피200")) + i = 5; + else if (dr[0].Equals("선물")) + i = 6; + + + mf.KAObject = mf.KAScene.GetObject("title" + i); + mf.KAObject.SetValue(dr[0].ToString()); + mf.KAObject = mf.KAScene.GetObject("price" + i); + double value = Convert.ToDouble(dr[1].ToString()); + + if (value < 0) + mf.KAObject.SetFaceColor(15, 99, 188, 255); + else if (value > 0) + mf.KAObject.SetFaceColor(171, 0, 0, 255); + else + mf.KAObject.SetFaceColor(47, 47, 47, 255); + + mf.KAObject.SetValue(String.Format("{0:#,##0.##}", value)); + } + mf.m_chkdata = true; + + + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s5086.cs b/MBN_STOCK_N/Scene/s5086.cs new file mode 100644 index 0000000..6f43142 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5086.cs @@ -0,0 +1,418 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5086 //수익률그래프 + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + public s5086(Form frm, string jname, string sub, string code) + { + try + { + mf = (MainForm)frm; + double price = 0; + int col = 0; + string format = string.Empty; + double referencePrice = 0; + double MaxValue = Int32.MinValue; + double MinValue = Int32.MaxValue; + string tname = string.Empty; + + List prices = new List(); + + DataSet ds = null; + + 데이터기간 termT = 데이터기간.주; + 선그래프데이터분류 lineindex = 선그래프데이터분류.원달러; + + //double lineMaxWidth = 0; + string day = string.Empty; + + if (sub.Equals("5일")) + { + termT = 데이터기간.주; + //lineMaxWidth = 1188; + day = "1주일"; + } + else if (sub.Equals("20일")) + { + termT = 데이터기간.월; + //lineMaxWidth = 1398; + day = "1개월"; + } + else if (sub.Equals("60일")) + { + termT = 데이터기간.분기; + //lineMaxWidth = 1442; + day = "3개월"; + } + else if (sub.Equals("120일")) + { + termT = 데이터기간.반기; + //lineMaxWidth = 1452; + day = "6개월"; + } + else if (sub.Equals("240일")) + { + termT = 데이터기간.연; + //lineMaxWidth = 1464; + day = "12개월"; + } + mf.KAScene.GetObject("subtitle").SetValue(day); + + + if (jname.Contains("원달러") || jname.Contains("원엔") || jname.Contains("원위엔") || jname.Contains("원유로")) + { + mf.KAScene.GetObject("unit").SetValue("단위 : 원"); + if (jname.Contains("원달러")) + lineindex = 선그래프데이터분류.원달러; + else if (jname.Contains("원엔")) + lineindex = 선그래프데이터분류.원엔; + else if (jname.Contains("원위엔")) + lineindex = 선그래프데이터분류.원위엔; + else if (jname.Contains("원유로")) + lineindex = 선그래프데이터분류.원유로; + + mf.KAScene.GetObject("title").SetValue(jname + " 수익률"); + col = 3; + format = "{0:#,##0.00}"; + ds = DataManager.getInstance().createLineGraphData(lineindex, termT); + } + else if (jname == "지수") + { + mf.KAScene.GetObject("unit").SetValue("단위 : p"); + if (code =="코스피") + { + lineindex = 선그래프데이터분류.코스피수익률; + } + else if (code == "코스닥") + { + lineindex = 선그래프데이터분류.코스닥수익률; + } + else if (code == "코스피200") + { + lineindex = 선그래프데이터분류.코스피200수익률; + } + else if (code == "KRX100") + { + lineindex = 선그래프데이터분류.KRX100수익률; + } + mf.KAScene.GetObject("title").SetValue(code + " 수익률"); + col = 1; + format = "{0:#,##0.00}"; + ds = DataManager.getInstance().createLineGraphData(lineindex, termT); + + mf.KAScene.GetObject("unit").SetValue("단위 : p"); + } + else if (code.Contains("업종")) + { + + col = 1; + format = "{0:#,##0.00}"; + if (code.Contains("코스피")) + { + tname = "코스피 - "; + ds = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스피업종지수수익률, termT, Get_PartCode(0, jname)); + } + else + { + tname = "코스닥 - "; + ds = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스닥업종지수수익률, termT, Get_PartCode(1, jname)); + } + mf.KAScene.GetObject("title").SetValue(tname + jname); + mf.KAScene.GetObject("unit").SetValue("단위 : p"); + } + else + { + mf.KAScene.GetObject("unit").SetValue("단위 : 원"); + mf.KAScene.GetObject("title").SetValue(jname); + col = 1; + format = "{0:#,##0}"; + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스피종목수익률, termT, jname); + } + } + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스닥종목수익률, termT, jname); + + } + } + } + + + mf.dataGridView1.DataSource = ds.Tables[0]; + + if (mf.dataGridView1.RowCount <= 1) + mf.m_chkdata = false; + else + { + + bool firstErr = false; + + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) + { + try + { + //날짜 + if (i == 0) + { + string date = ds.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAScene.GetObject("date5").SetValue(date); + } + else if (i == ds.Tables[0].Rows.Count - 1) + { + string date = ds.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAScene.GetObject("date1").SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds.Tables[0].Rows.Count - 1) / 2)) + { + string date = ds.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAScene.GetObject("date3").SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds.Tables[0].Rows.Count - 1) / 4)) + { + string date = ds.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAScene.GetObject("date4").SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds.Tables[0].Rows.Count - 1) * 3 / 4)) + { + string date = ds.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAScene.GetObject("date2").SetValue(date); + } + + try + { + double pr = Convert.ToDouble(ds.Tables[0].Rows[i][col].ToString()); + + if (i == ds.Tables[0].Rows.Count - 1) //기준가 + { + referencePrice = pr; + } + else if (i == 0) + { + price = pr; + } + + if (pr > MaxValue) + MaxValue = pr; + if (pr < MinValue) + MinValue = pr; + + prices.Add(pr); + } + catch(Exception) + { + if (!firstErr) + { + //없는 데이터에서 Exception이 발생 하게 되어 있으므로, 이전 값이 들어오면 기준가가 된다. + double pr = Convert.ToDouble(ds.Tables[0].Rows[i - 1][col].ToString()); + referencePrice = pr; + firstErr = true; + + + } + } + + } + catch(Exception) + { + + } + } + + double gap = MaxValue - MinValue; + double center = (MaxValue + MinValue) / 2; + + + mf.KAScene.GetObject("price").SetValue(String.Format(format, price)); + mf.KAScene.GetObject("referencePrice").SetValue(String.Format(format, referencePrice)); + mf.KAScene.GetObject("rate").SetValue(String.Format("{0:0.00}", (Convert.ToDouble(price - referencePrice) / referencePrice) * 100)); + + if (Convert.ToDouble(price - referencePrice) / referencePrice > 0) + { + //mf.KAScene.GetObject("bg").SetFaceColor(170, 0, 0, 255); + mf.KAScene.GetObject("bg1").SetVisible(1); + mf.KAScene.GetObject("bg2").SetVisible(0); + mf.KAScene.GetObject("bg3").SetVisible(0); + } + else if (Convert.ToDouble(price - referencePrice) / referencePrice < 0) + { + //mf.KAScene.GetObject("bg").SetFaceColor(15, 99, 189, 255); + mf.KAScene.GetObject("bg1").SetVisible(0); + mf.KAScene.GetObject("bg2").SetVisible(0); + mf.KAScene.GetObject("bg3").SetVisible(1); + } + else + { + //mf.KAScene.GetObject("bg").SetFaceColor(95, 95, 95, 255); + mf.KAScene.GetObject("bg1").SetVisible(0); + mf.KAScene.GetObject("bg2").SetVisible(1); + mf.KAScene.GetObject("bg3").SetVisible(0); + } + + //카운트가 적은 경우 값이 빈 것이므로 referencePrice로 추가해서 넣어 준다. + while (prices.Count < ds.Tables[0].Rows.Count) + { + prices.Add(referencePrice); + } + + prices.Reverse(); + + //Postion -75 ~ 150 + //gap => min 225 + float baseline = (float)((Convert.ToDouble(referencePrice - MinValue) / (gap)) * 225 - 75); + mf.KAScene.GetObject("baseline").SetPosition(0, baseline, 0, eKVectorType.VECTOR_TYPE_Y); + + + double maxX = 1333.0; + double gapX = maxX / (prices.Count - 1); + + List plusVector = new List(); + List minusVector = new List(); + int index = 0; + double beforePM = 0; + foreach (var v in prices) + { + index++; + double xpos = gapX * (index - 1); + double value = (Convert.ToDouble(referencePrice - v) / (gap)) * 225; + + if ((beforePM > 0 && value < 0) || // + => - + (beforePM < 0 && value > 0)) // - => + + + { + sKVector2f bufVector = new sKVector2f(); + bufVector.X = (float)(xpos - (gapX * (Math.Abs(value) / Math.Abs(beforePM - value)))); + bufVector.Y = 0; + + plusVector.Add(bufVector); + minusVector.Add(bufVector); + } + + + sKVector2f vector = new sKVector2f(); + vector.X = (float)xpos; + vector.Y = (float)value; + + if (value < 0) + { + plusVector.Add(vector); + } + if (value > 0) + { + minusVector.Add(vector); + } + if (value == 0) + { + plusVector.Add(vector); + minusVector.Add(vector); + } + beforePM = value; + + //최고 최저 바 + double sX = -647.50; + double eX = 653.79; + double len = eX - sX; + double lenX = len / (ds.Tables[0].Rows.Count - 1); + + if (v.Equals(MaxValue)) + { + mf.KAObject = mf.KAScene.GetObject("highTag"); + double XP = sX + ((index - 1) * lenX); + + mf.KAObject.SetPosition((float)XP, 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("highPrice"); + mf.KAObject.SetValue(String.Format(format, v)); + } + if (v.Equals(MinValue)) + { + mf.KAObject = mf.KAScene.GetObject("lowTag"); + double XP = sX + ((index - 1) * lenX); + + mf.KAObject.SetPosition((float)XP, 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("lowPrice"); + mf.KAObject.SetValue(String.Format(format, v)); + + } + } + + + + mf.KAObject = mf.KAScene.GetObject("minusGraph"); + mf.KAObject.SetPosition((float)-659.82, baseline, 0, eKVectorType.VECTOR_TYPE_XYZ); + mf.KAObject.BeginPathShapePoint(); + mf.KAObject.ClearPathShapePoints(); + mf.KAObject.AddPathShapePoint(0, 0, 0); + foreach (var v in minusVector) + { + mf.KAObject.AddPathShapePoint(v.X, -v.Y, 0); + } + + mf.KAObject.AddPathShapePoint(1333, 0, 0); + mf.KAObject.EndPathShapePoint(); + + mf.KAObject = mf.KAScene.GetObject("plusGraph"); + mf.KAObject.SetPosition((float)-659.82, baseline, 0, eKVectorType.VECTOR_TYPE_XYZ); + mf.KAObject.BeginPathShapePoint(); + mf.KAObject.ClearPathShapePoints(); + mf.KAObject.AddPathShapePoint(0, 0, 0); + + + foreach (var v in plusVector) + { + mf.KAObject.AddPathShapePoint(v.X, v.Y, 0); + } + mf.KAObject.AddPathShapePoint(1333, 0, 0); + mf.KAObject.EndPathShapePoint(); + + mf.m_chkdata = true; + } + } + catch (Exception ex) + { + Console. WriteLine(ex.Message); + } + } + + public string Get_PartCode(int idx, string pName) + { + string query = string.Empty; + string pCode = string.Empty; + + + if (idx == 0) + query = "Select * From T_PART"; + else + query = "Select * From T_KOSDAQ_PART"; + + mf.m_db.ViewQuery(mf.dataGridView2, query); + + for (int i = 0; i< mf.dataGridView2.RowCount-1; i++) + { + if (pName == mf.dataGridView2.Rows[i].Cells[1].Value.ToString()) + { + pCode = mf.dataGridView2.Rows[i].Cells[0].Value.ToString(); + break; + } + } + return pCode; + } + } +} diff --git a/MBN_STOCK_N/Scene/s50860.cs b/MBN_STOCK_N/Scene/s50860.cs new file mode 100644 index 0000000..deb9e51 --- /dev/null +++ b/MBN_STOCK_N/Scene/s50860.cs @@ -0,0 +1,410 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s50860 //라인 그래프 + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + public s50860(Form frm, string jname, string sub, string code) + { + try + { + mf = (MainForm)frm; + double price = 0; + int col = 0; + string format = string.Empty; + double referencePrice = 0; + double MaxValue = Int32.MinValue; + double MinValue = Int32.MaxValue; + string tname = string.Empty; + + List prices = new List(); + + DataSet ds = null; + + 데이터기간 termT = 데이터기간.주; + 선그래프데이터분류 lineindex = 선그래프데이터분류.원달러; + + //double lineMaxWidth = 0; + string day = string.Empty; + + if (sub.Equals("5일")) + { + termT = 데이터기간.주; + //lineMaxWidth = 1188; + day = "1주일"; + } + else if (sub.Equals("20일")) + { + termT = 데이터기간.월; + //lineMaxWidth = 1398; + day = "1개월"; + } + else if (sub.Equals("60일")) + { + termT = 데이터기간.분기; + //lineMaxWidth = 1442; + day = "3개월"; + } + else if (sub.Equals("120일")) + { + termT = 데이터기간.반기; + //lineMaxWidth = 1452; + day = "6개월"; + } + else if (sub.Equals("240일")) + { + termT = 데이터기간.연; + //lineMaxWidth = 1464; + day = "12개월"; + } + mf.KAScene.GetObject("subtitle").SetValue(day); + + + if (jname.Contains("원달러") || jname.Contains("원엔") || jname.Contains("원위엔") || jname.Contains("원유로")) + { + mf.KAScene.GetObject("unit").SetValue("단위 : 원"); + if (jname.Contains("원달러")) + lineindex = 선그래프데이터분류.원달러; + else if (jname.Contains("원엔")) + lineindex = 선그래프데이터분류.원엔; + else if (jname.Contains("원위엔")) + lineindex = 선그래프데이터분류.원위엔; + else if (jname.Contains("원유로")) + lineindex = 선그래프데이터분류.원유로; + + mf.KAScene.GetObject("title").SetValue(jname.Substring(0,1) + "/" + jname.Substring(1, jname.Length-1)); + col = 3; + format = "{0:#,##0.00}"; + ds = DataManager.getInstance().createLineGraphData(lineindex, termT); + } + else if (jname == "지수") + { + mf.KAScene.GetObject("unit").SetValue("단위 : p"); + if (code == "코스피") + { + lineindex = 선그래프데이터분류.코스피수익률; + } + else if (code == "코스닥") + { + lineindex = 선그래프데이터분류.코스닥수익률; + } + else if (code == "코스피200") + { + lineindex = 선그래프데이터분류.코스피200수익률; + } + else if (code == "KRX100") + { + lineindex = 선그래프데이터분류.KRX100수익률; + } + mf.KAScene.GetObject("title").SetValue(code + " 수익률"); + col = 1; + format = "{0:#,##0.00}"; + ds = DataManager.getInstance().createLineGraphData(lineindex, termT); + + mf.KAScene.GetObject("unit").SetValue("단위 : p"); + } + else if (code.Contains("업종")) + { + + col = 1; + format = "{0:#,##0.00}"; + if (code.Contains("코스피")) + { + tname = "코스피 - "; + ds = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스피업종지수수익률, termT, Get_PartCode(0, jname)); + } + else + { + tname = "코스닥 - "; + ds = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스닥업종지수수익률, termT, Get_PartCode(1, jname)); + } + mf.KAScene.GetObject("title").SetValue(tname + jname); + mf.KAScene.GetObject("unit").SetValue("단위 : p"); + } + else + { + mf.KAScene.GetObject("unit").SetValue("단위 : 원"); + mf.KAScene.GetObject("title").SetValue(jname); + col = 1; + format = "{0:#,##0}"; + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스피종목수익률, termT, jname); + } + } + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스닥종목수익률, termT, jname); + + } + } + } + + + mf.dataGridView1.DataSource = ds.Tables[0]; + + if (mf.dataGridView1.RowCount <= 1) + mf.m_chkdata = false; + else + { + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) + { + + //날짜 + if (i == 0) + { + string date = ds.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAScene.GetObject("date5").SetValue(date); + } + else if (i == ds.Tables[0].Rows.Count - 1) + { + string date = ds.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAScene.GetObject("date1").SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds.Tables[0].Rows.Count - 1) / 2)) + { + string date = ds.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAScene.GetObject("date3").SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds.Tables[0].Rows.Count - 1) / 4)) + { + string date = ds.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAScene.GetObject("date4").SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds.Tables[0].Rows.Count - 1) * 3 / 4)) + { + string date = ds.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAScene.GetObject("date2").SetValue(date); + } + + + + double pr = Convert.ToDouble(ds.Tables[0].Rows[i][col].ToString()); + + if (i == ds.Tables[0].Rows.Count - 1) //기준가 + { + referencePrice = pr; + } + else if (i == 0) + { + price = pr; + } + + if (pr > MaxValue) + MaxValue = pr; + if (pr < MinValue) + MinValue = pr; + + prices.Add(pr); + } + + double gap = MaxValue - MinValue; + double center = (MaxValue + MinValue) / 2; + + string str = mf.dataGridView1.Rows[0].Cells[4].Value.ToString(); + + if (str.Substring(0, 1) == "-") + str = str.Substring(1); + mf.KAScene.GetObject("price").SetValue(String.Format(format, price)); + mf.KAScene.GetObject("changePrice").SetValue(String.Format("{0:0.00}", (Convert.ToDouble(str)))); + mf.KAScene.GetObject("rate").SetValue(String.Format("{0:0.00}", (Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[6].Value.ToString())))); + + //mf.dataGridView2.Rows[i] + //mf.KAScene.GetObject("rate").SetValue(String.Format("{0:0.00}", (Convert.ToDouble(price - referencePrice) / referencePrice) * 100)); + + + mf.KAScene.GetObject("up").SetVisible(0); + mf.KAScene.GetObject("flat").SetVisible(0); + mf.KAScene.GetObject("down").SetVisible(0); + + + if (mf.dataGridView1.Rows[0].Cells[5].Value.ToString().Equals("+")) + { + + mf.KAScene.GetObject("up").SetVisible(1); + mf.KAScene.GetObject("bg").SetFaceColor(170, 0, 0, 255); + } + else if (mf.dataGridView1.Rows[0].Cells[5].Value.ToString().Equals("-")) + { + mf.KAScene.GetObject("down").SetVisible(1); + mf.KAScene.GetObject("bg").SetFaceColor(15, 99, 189, 255); + } + else + { + mf.KAScene.GetObject("flat").SetVisible(1); + mf.KAScene.GetObject("bg").SetFaceColor(95, 95, 95, 255); + } + + + //if (Convert.ToDouble(price - referencePrice) / referencePrice > 0) + //{ + // mf.KAScene.GetObject("bg").SetFaceColor(170, 0, 0, 255); + //} + //else if (Convert.ToDouble(price - referencePrice) / referencePrice < 0) + //{ + // mf.KAScene.GetObject("bg").SetFaceColor(15, 99, 189, 255); + //} + //else + //{ + // mf.KAScene.GetObject("bg").SetFaceColor(95, 95, 95, 255); + //} + + prices.Reverse(); + + //Postion -75 ~ 150 + //gap => min 225 + float baseline = (float)((Convert.ToDouble(referencePrice - MinValue) / (gap)) * 225 - 75); + mf.KAScene.GetObject("baseline").SetPosition(0, baseline, 0, eKVectorType.VECTOR_TYPE_Y); + + + double maxX = 1333.0; + double gapX = maxX / (prices.Count - 1); + + List plusVector = new List(); + List minusVector = new List(); + int index = 0; + double beforePM = 0; + foreach (var v in prices) + { + index++; + double xpos = gapX * (index - 1); + double value = (Convert.ToDouble(referencePrice - v) / (gap)) * 225; + + if ((beforePM > 0 && value < 0) || // + => - + (beforePM < 0 && value > 0)) // - => + + + { + sKVector2f bufVector = new sKVector2f(); + bufVector.X = (float)(xpos - (gapX * (Math.Abs(value) / Math.Abs(beforePM - value)))); + bufVector.Y = 0; + + plusVector.Add(bufVector); + minusVector.Add(bufVector); + } + + + sKVector2f vector = new sKVector2f(); + vector.X = (float)xpos; + vector.Y = (float)value; + + if (value < 0) + { + plusVector.Add(vector); + } + if (value > 0) + { + minusVector.Add(vector); + } + if (value == 0) + { + plusVector.Add(vector); + minusVector.Add(vector); + } + beforePM = value; + + //최고 최저 바 + double sX = -647.50; + double eX = 653.79; + double len = eX - sX; + double lenX = len / (ds.Tables[0].Rows.Count - 1); + + if (v.Equals(MaxValue)) + { + mf.KAObject = mf.KAScene.GetObject("highTag"); + double XP = sX + ((index - 1) * lenX); + + mf.KAObject.SetPosition((float)XP, 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("highPrice"); + mf.KAObject.SetValue(String.Format(format, v)); + } + if (v.Equals(MinValue)) + { + mf.KAObject = mf.KAScene.GetObject("lowTag"); + double XP = sX + ((index - 1) * lenX); + + mf.KAObject.SetPosition((float)XP, 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("lowPrice"); + mf.KAObject.SetValue(String.Format(format, v)); + + } + } + + + + mf.KAObject = mf.KAScene.GetObject("minusGraph"); + mf.KAObject.SetPosition((float)-659.82, baseline, 0, eKVectorType.VECTOR_TYPE_XYZ); + mf.KAObject.BeginPathShapePoint(); + mf.KAObject.ClearPathShapePoints(); + mf.KAObject.AddPathShapePoint(0, 0, 0); + foreach (var v in minusVector) + { + mf.KAObject.AddPathShapePoint(v.X, -v.Y, 0); + } + + mf.KAObject.AddPathShapePoint(1333, 0, 0); + mf.KAObject.EndPathShapePoint(); + + mf.KAObject = mf.KAScene.GetObject("plusGraph"); + mf.KAObject.SetPosition((float)-659.82, baseline, 0, eKVectorType.VECTOR_TYPE_XYZ); + mf.KAObject.BeginPathShapePoint(); + mf.KAObject.ClearPathShapePoints(); + mf.KAObject.AddPathShapePoint(0, 0, 0); + + + foreach (var v in plusVector) + { + mf.KAObject.AddPathShapePoint(v.X, v.Y, 0); + } + mf.KAObject.AddPathShapePoint(1333, 0, 0); + mf.KAObject.EndPathShapePoint(); + + mf.m_chkdata = true; + } + } + catch (Exception) + { + + } + } + + public string Get_PartCode(int idx, string pName) + { + string query = string.Empty; + string pCode = string.Empty; + + + if (idx == 0) + query = "Select * From T_PART"; + else + query = "Select * From T_KOSDAQ_PART"; + + mf.m_db.ViewQuery(mf.dataGridView2, query); + + for (int i = 0; i < mf.dataGridView2.RowCount - 1; i++) + { + if (pName == mf.dataGridView2.Rows[i].Cells[1].Value.ToString()) + { + pCode = mf.dataGridView2.Rows[i].Cells[0].Value.ToString(); + break; + } + } + return pCode; + } + } +} diff --git a/MBN_STOCK_N/Scene/s5087.cs b/MBN_STOCK_N/Scene/s5087.cs new file mode 100644 index 0000000..a2e0ca0 --- /dev/null +++ b/MBN_STOCK_N/Scene/s5087.cs @@ -0,0 +1,631 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s5087 //2열판 비교분석 라인그래프 + { + MainForm mf = null; + string[] m_rs = null; + + public s5087(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + + m_rs = jname.Split(','); + + DataSet ds1 = null; + DataSet ds2 = null; + DataSet ds3 = null; + DataSet ds4 = null; + + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(m_rs[0])) + { + ds1 = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스피종목, 봉차트세부종목.일반지수, 데이터기간.주, m_rs[0]); + } + if (r[0].Equals(m_rs[1])) + { + ds2 = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스피종목, 봉차트세부종목.일반지수, 데이터기간.주, m_rs[1]); + } + } + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(m_rs[0])) + { + ds1 = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스닥종목, 봉차트세부종목.일반지수, 데이터기간.주, m_rs[0]); + } + if (r[0].Equals(m_rs[1])) + { + ds2 = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스닥종목, 봉차트세부종목.일반지수, 데이터기간.주, m_rs[1]); + } + } + + + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(m_rs[0])) + { + ds3 = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스피종목수익률, 데이터기간.주, m_rs[0]); + } + if (r[0].Equals(m_rs[1])) + { + ds4 = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스피종목수익률, 데이터기간.주, m_rs[1]); + } + } + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(m_rs[0])) + { + ds3 = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스닥종목수익률, 데이터기간.주, m_rs[0]); + } + if (r[0].Equals(m_rs[1])) + { + ds4 = DataManager.getInstance().createLineGraphData(선그래프데이터분류.코스닥종목수익률, 데이터기간.주, m_rs[1]); + } + } + + mf.dataGridView1.DataSource = ds1.Tables[0]; + mf.dataGridView2.DataSource = ds2.Tables[0]; + + + mf.KAObject = mf.KAScene.GetObject("title1"); + mf.KAObject.SetValue(ds1.Tables[0].Rows[0]["STOCK_NAME"].ToString()); + mf.KAObject = mf.KAScene.GetObject("title2"); + mf.KAObject.SetValue(ds2.Tables[0].Rows[0]["STOCK_NAME"].ToString()); + + mf.KAObject = mf.KAScene.GetObject("price1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0]["CURR_PRICE"].ToString()))); + mf.KAObject = mf.KAScene.GetObject("price2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0]["CURR_PRICE"].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0]["NET_CHG"].ToString()))); + mf.KAObject = mf.KAScene.GetObject("changePrice2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0]["NET_CHG"].ToString()))); + + //mf.KAObject = mf.KAScene.GetObject("rate1"); + //mf.KAObject.SetValue(ds1.Tables[0].Rows[0]["RATE"].ToString()); + //mf.KAObject = mf.KAScene.GetObject("rate2"); + //mf.KAObject.SetValue(ds2.Tables[0].Rows[0]["RATE"].ToString()); + + mf.KAObject = mf.KAScene.GetObject("rate1"); + mf.KAObject.SetValue(Convert.ToDouble(ds1.Tables[0].Rows[0]["RATE"].ToString()).ToString("#,##0.00")); + mf.KAObject = mf.KAScene.GetObject("rate2"); + mf.KAObject.SetValue(Convert.ToDouble(ds2.Tables[0].Rows[0]["RATE"].ToString()).ToString("#,##0.00")); + + + double r1 = Convert.ToDouble(ds1.Tables[0].Rows[0]["RATE"].ToString()); + double r2 = Convert.ToDouble(ds2.Tables[0].Rows[0]["RATE"].ToString()); + + mf.KAObject = mf.KAScene.GetObject("up1"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("upup1"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat1"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down1"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown1"); + mf.KAObject.SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("upup2"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up2"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat2"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down2"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown2"); + mf.KAObject.SetVisible(0); + + + string kiho1 = ds1.Tables[0].Rows[0]["CHG_TYPE"].ToString(); + setObjectStockChange(mf.KAObject, kiho1, 1); + + string kiho2 = ds2.Tables[0].Rows[0]["CHG_TYPE"].ToString(); + setObjectStockChange(mf.KAObject, kiho2, 2); + + //if (r1 > 0) + //{ + // mf.KAObject = mf.KAScene.GetObject("up1"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg1"); + // mf.KAObject.SetFaceColor(170, 0, 0, 255); + + //} + //else if (r1 < 0) + //{ + // mf.KAObject = mf.KAScene.GetObject("down1"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg1"); + // mf.KAObject.SetFaceColor(15, 99, 189, 255); + //} + //else + //{ + // mf.KAObject = mf.KAScene.GetObject("flat1"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg1"); + // mf.KAObject.SetFaceColor(95, 95, 95, 255); + //} + + //if (r2 > 0) + //{ + // mf.KAObject = mf.KAScene.GetObject("up2"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg2"); + // mf.KAObject.SetFaceColor(170, 0, 0, 255); + + //} + //else if (r2 < 0) + //{ + // mf.KAObject = mf.KAScene.GetObject("down2"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg2"); + // mf.KAObject.SetFaceColor(15, 99, 189, 255); + //} + //else + //{ + // mf.KAObject = mf.KAScene.GetObject("flat2"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("bg2"); + // mf.KAObject.SetFaceColor(95, 95, 95, 255); + //} + + //라인 파트 + int price = 0; + int referencePrice = 0; + int MaxValue = Int32.MinValue; + int MinValue = Int32.MaxValue; + List prices = new List(); + + + for (int i = 0; i < ds3.Tables[0].Rows.Count; i++) + { + + //날짜 + if (i == 0) + { + mf.KAObject = mf.KAScene.GetObject("date1_5"); + string date = ds3.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == ds3.Tables[0].Rows.Count - 1) + { + mf.KAObject = mf.KAScene.GetObject("date1_1"); + string date = ds3.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds3.Tables[0].Rows.Count - 1) / 2)) + { + mf.KAObject = mf.KAScene.GetObject("date1_3"); + string date = ds3.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds3.Tables[0].Rows.Count - 1) / 4)) + { + mf.KAObject = mf.KAScene.GetObject("date1_4"); + string date = ds3.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds3.Tables[0].Rows.Count - 1) * 3 / 4)) + { + mf.KAObject = mf.KAScene.GetObject("date1_2"); + string date = ds3.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + + int pr = Convert.ToInt32(ds3.Tables[0].Rows[i][1].ToString()); + + if (i == ds3.Tables[0].Rows.Count - 1) //기준가 + { + referencePrice = pr; + } + else if (i == 0) + { + price = pr; + } + + if (pr > MaxValue) + MaxValue = pr; + if (pr < MinValue) + MinValue = pr; + + prices.Add(pr); + } + + int gap = MaxValue - MinValue; + int center = (MaxValue + MinValue) / 2; + + + prices.Reverse(); + + //Postion -75 ~ 150 + //gap => min 225 + mf.KAObject = mf.KAScene.GetObject("baseline1"); + float baseline = (float)((Convert.ToDouble(referencePrice - MinValue) / (gap)) * 150 - 170); + mf.KAObject.SetPosition(0, baseline, 0, eKVectorType.VECTOR_TYPE_Y); + + + double maxX = 700; + double gapX = maxX / (prices.Count - 1); + + List plusVector = new List(); + List minusVector = new List(); + int index = 0; + double beforePM = 0; + foreach (var v in prices) + { + index++; + double xpos = gapX * (index - 1); + double value = (Convert.ToDouble(referencePrice - v) / (gap)) * 150; + + if ((beforePM > 0 && value < 0) || // + => - + (beforePM < 0 && value > 0)) // - => + + + { + sKVector2f bufVector = new sKVector2f(); + bufVector.X = (float)(xpos - (gapX * (Math.Abs(value) / Math.Abs(beforePM - value)))); + bufVector.Y = 0; + + plusVector.Add(bufVector); + minusVector.Add(bufVector); + } + + + sKVector2f vector = new sKVector2f(); + vector.X = (float)xpos; + vector.Y = (float)value; + + if (value < 0) + { + plusVector.Add(vector); + } + if (value > 0) + { + minusVector.Add(vector); + } + if (value == 0) + { + plusVector.Add(vector); + minusVector.Add(vector); + } + beforePM = value; + + //최고 최저 바 + double sX = -383.48; + double eX = 359.28; + double len = eX - sX; + double lenX = len / (ds3.Tables[0].Rows.Count - 1); + + if (v.Equals(MaxValue)) + { + mf.KAObject = mf.KAScene.GetObject("highTag1"); + double XP = sX + ((index - 1) * lenX); + + mf.KAObject.SetPosition((float)XP, 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("highPrice1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", v)); + } + if (v.Equals(MinValue)) + { + mf.KAObject = mf.KAScene.GetObject("lowTag1"); + double XP = sX + ((index - 1) * lenX); + + mf.KAObject.SetPosition((float)XP, 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("lowPrice1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", v)); + + } + } + + mf.KAObject = mf.KAScene.GetObject("minusGraph1"); + mf.KAObject.SetPosition(0, baseline, 0, eKVectorType.VECTOR_TYPE_Y); + mf.KAObject.BeginPathShapePoint(); + mf.KAObject.ClearPathShapePoints(); + mf.KAObject.AddPathShapePoint(0, 0, 0); + + foreach (var v in minusVector) + { + mf.KAObject.AddPathShapePoint(v.X, -v.Y, 0); + } + + mf.KAObject.AddPathShapePoint((float)maxX, 0, 0); + mf.KAObject.EndPathShapePoint(); + + mf.KAObject = mf.KAScene.GetObject("plusGraph1"); + mf.KAObject.SetPosition(0, baseline, 0, eKVectorType.VECTOR_TYPE_Y); + mf.KAObject.BeginPathShapePoint(); + mf.KAObject.ClearPathShapePoints(); + mf.KAObject.AddPathShapePoint(0, 0, 0); + + foreach (var v in plusVector) + { + mf.KAObject.AddPathShapePoint(v.X, v.Y, 0); + } + + mf.KAObject.AddPathShapePoint((float)maxX, 0, 0); + mf.KAObject.EndPathShapePoint(); + + //라인 파트2 + price = 0; + referencePrice = 0; + MaxValue = Int32.MinValue; + MinValue = Int32.MaxValue; + prices = new List(); + + + for (int i = 0; i < ds4.Tables[0].Rows.Count; i++) + { + + //날짜 + if (i == 0) + { + mf.KAObject = mf.KAScene.GetObject("date2_5"); + string date = ds4.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == ds4.Tables[0].Rows.Count - 1) + { + mf.KAObject = mf.KAScene.GetObject("date2_1"); + string date = ds4.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds4.Tables[0].Rows.Count - 1) / 2)) + { + mf.KAObject = mf.KAScene.GetObject("date2_3"); + string date = ds4.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds4.Tables[0].Rows.Count - 1) / 4)) + { + mf.KAObject = mf.KAScene.GetObject("date2_4"); + string date = ds4.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (i == Math.Ceiling(Convert.ToDouble(ds4.Tables[0].Rows.Count - 1) * 3 / 4)) + { + mf.KAObject = mf.KAScene.GetObject("date2_2"); + string date = ds4.Tables[0].Rows[i]["DATA_DAY"].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + + int pr = Convert.ToInt32(ds4.Tables[0].Rows[i][1].ToString()); + + if (i == ds4.Tables[0].Rows.Count - 1) //기준가 + { + referencePrice = pr; + } + else if (i == 0) + { + price = pr; + } + + if (pr > MaxValue) + MaxValue = pr; + if (pr < MinValue) + MinValue = pr; + + prices.Add(pr); + } + + gap = MaxValue - MinValue; + center = (MaxValue + MinValue) / 2; + + + prices.Reverse(); + + //Postion -75 ~ 150 + //gap => min 225 + mf.KAObject = mf.KAScene.GetObject("baseline2"); + baseline = (float)((Convert.ToDouble(referencePrice - MinValue) / (gap)) * 150 - 170); + mf.KAObject.SetPosition(0, baseline, 0, eKVectorType.VECTOR_TYPE_Y); + + + gapX = maxX / (prices.Count - 1); + + plusVector = new List(); + minusVector = new List(); + index = 0; + beforePM = 0; + foreach (var v in prices) + { + index++; + double xpos = gapX * (index - 1); + double value = (Convert.ToDouble(referencePrice - v) / (gap)) * 150; + + if ((beforePM > 0 && value < 0) || // + => - + (beforePM < 0 && value > 0)) // - => + + + { + sKVector2f bufVector = new sKVector2f(); + bufVector.X = (float)(xpos - (gapX * (Math.Abs(value) / Math.Abs(beforePM - value)))); + bufVector.Y = 0; + + plusVector.Add(bufVector); + minusVector.Add(bufVector); + } + + + sKVector2f vector = new sKVector2f(); + vector.X = (float)xpos; + vector.Y = (float)value; + + if (value < 0) + { + plusVector.Add(vector); + } + if (value > 0) + { + minusVector.Add(vector); + } + if (value == 0) + { + plusVector.Add(vector); + minusVector.Add(vector); + } + beforePM = value; + + //최고 최저 바 + double sX = -383.48; + double eX = 359.28; + double len = eX - sX; + double lenX = len / (ds4.Tables[0].Rows.Count - 1); + + if (v.Equals(MaxValue)) + { + mf.KAObject = mf.KAScene.GetObject("highTag2"); + double XP = sX + ((index - 1) * lenX); + + mf.KAObject.SetPosition((float)XP, 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("highPrice2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", v)); + } + if (v.Equals(MinValue)) + { + mf.KAObject = mf.KAScene.GetObject("lowTag2"); + double XP = sX + ((index - 1) * lenX); + + mf.KAObject.SetPosition((float)XP, 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("lowPrice2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", v)); + + } + } + + mf.KAObject = mf.KAScene.GetObject("minusGraph2"); + mf.KAObject.SetPosition(0, baseline, 0, eKVectorType.VECTOR_TYPE_Y); + mf.KAObject.BeginPathShapePoint(); + mf.KAObject.ClearPathShapePoints(); + mf.KAObject.AddPathShapePoint(0, 0, 0); + + foreach (var v in minusVector) + { + mf.KAObject.AddPathShapePoint(v.X, -v.Y, 0); + } + + mf.KAObject.AddPathShapePoint((float)maxX, 0, 0); + mf.KAObject.EndPathShapePoint(); + + mf.KAObject = mf.KAScene.GetObject("plusGraph2"); + mf.KAObject.SetPosition(0, baseline, 0, eKVectorType.VECTOR_TYPE_Y); + mf.KAObject.BeginPathShapePoint(); + mf.KAObject.ClearPathShapePoints(); + mf.KAObject.AddPathShapePoint(0, 0, 0); + + foreach (var v in plusVector) + { + mf.KAObject.AddPathShapePoint(v.X, v.Y, 0); + } + + mf.KAObject.AddPathShapePoint((float)maxX, 0, 0); + mf.KAObject.EndPathShapePoint(); + + mf.m_chkdata = true; + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + public void setObjectStockChange(KAObject KAObject, string value, int cnt) + { + try + { + string v = string.Empty; + if (cnt == 0) + v = ""; + else if (cnt == 1) + v = "1"; + else if (cnt == 2) + v = "2"; + else if (cnt == 3) + v = ""; + + KAObject = mf.KAScene.GetObject("upup" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("up" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("flat" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("down" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("downdown" + v); + KAObject.SetVisible(0); + + if (value.Equals("상한")) + { + KAObject = mf.KAScene.GetObject("upup" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(0); + } + else if (value.Equals("상승") || value.Equals("+")) + { + KAObject = mf.KAScene.GetObject("up" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(0); + } + else if (value.Equals("보합") || value.Equals("")) + { + KAObject = mf.KAScene.GetObject("flat" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(0); + + } + else if (value.Equals("하락") || value.Equals("-")) + { + KAObject = mf.KAScene.GetObject("down" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(1); + } + else if (value.Equals("하한")) + { + KAObject = mf.KAScene.GetObject("downdown" + v); + KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg" + v + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + v + "_3").SetVisible(1); + + } + + + } + catch (Exception) + { + + } + + } + } +} diff --git a/MBN_STOCK_N/Scene/s5088.cs b/MBN_STOCK_N/Scene/s5088.cs new file mode 100644 index 0000000..48b6c3c --- /dev/null +++ b/MBN_STOCK_N/Scene/s5088.cs @@ -0,0 +1,1479 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; +using System.Reflection; + +namespace MBN_STOCK_N +{ + class s5088 // 12종목 현재가 + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + string m_sub = string.Empty; + bool m_chk = false; + + public s5088(Form frm, string code, string jname, string sub, int idx) + { + string mart; + try + { + mf = (MainForm)frm; + m_sub = sub; + + mf.dataGridView1.Columns.Clear(); + + //================<<시장 mark 숨김>>================= + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(0); + //==================================================== + + if (sub.Contains("VI")) + { + FileDataLoadView(jname, idx, "VI 발동", 0); + } + else if (sub.Contains("테마")) + { +// mf.m_db.ViewQuery(mf.dataGridView2, "SELECT SB_CODE FROM SB_LIST Where SB_TITLE = '" + jname + "'"); + + if (code.Contains("_NXT")) + { + mart = "NXT"; + mf.m_db.Nxt_ViewQuery(mf.dataGridView2, "SELECT SB_CODE FROM SB_LIST Where SB_TITLE = '" + jname.Replace("(NXT)", "") + "' AND SB_MARKET = 'NXT'"); + } + else + { + mart = "KRX"; + mf.m_db.ViewQuery(mf.dataGridView2, "SELECT SB_CODE FROM SB_LIST Where SB_TITLE = '" + jname + "' AND SB_MARKET = 'KRX'"); + } + + code = mf.dataGridView2.Rows[0].Cells[0].Value.ToString(); + //QueryDataLoadView(code, idx, jname, 0); + + string sort; + if (sub.Contains("(입력순)")) + sort = "입력순"; + else if (sub.Contains("(상승률순)")) + sort = "상승률순"; + else + sort = "하락률순"; + + //if (sub.Contains("예상")) + // QueryDataLoadView(code, idx, jname, 1, sort); + //else + // QueryDataLoadView(code, idx, jname, 0, sort); + + if (sub.Contains("예상")) + { + QueryDataLoadView(code, idx, jname, 1, sort); + } + else + { + if (jname.Contains("NXT")) + NXT_QueryDataLoadView(code, idx, jname, 0, sort); + else + QueryDataLoadView(code, idx, jname, 0, sort); + } + + + } + else if (sub.Contains("전문가")) + { + mf.m_db.ViewQuery(mf.dataGridView2, "SELECT EP_CODE FROM EXPERT_LIST Where EP_NAME = '" + jname + "'"); + ExpertDataLoadView(mf.dataGridView2.Rows[0].Cells[0].Value.ToString(), idx, jname, 0); + } + + else + { + if (code.Contains("NXT")) + MariaDataLoadView(code, sub, idx); + else + OracleDataLoadView(code, sub, idx); + } + + + if (!m_chk) + { + if (mf.dataGridView1.RowCount <= 1) + mf.m_chkdata = false; + else + mf.m_chkdata = true; + } + else + { + mf.m_chkdata = false; + } + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + + private void FileDataLoadView(string jname, int idx, string tname, int para) + { + string[] rs = jname.Split(','); + string[] data = new string[10]; + DataSet ds = null; + int cnt = 0; + 판1그래프데이터산업및종목류 rc = 판1그래프데이터산업및종목류.종목현재가; + + if (para == 0) + rc = 판1그래프데이터산업및종목류.종목현재가; + else + rc = 판1그래프데이터산업및종목류.종목예상체결가; + + int lcnt = 0; + if ((rs.Length % 12) != 0) + lcnt = 1; + + lcnt = (rs.Length / 12) + lcnt; + + string str = mf.PlayList.ActiveSheet.GetText(mf.m_crow, 5).Trim(); + + str = str.Substring(str.IndexOf("/") + 1, str.Length - str.IndexOf("/") - 1); + + if (int.Parse(str) > lcnt) + { + //idx = 0; + jname = jname + "," + jname + "," + jname + "," + jname + "," + jname; + rs = jname.Split(','); + } + + for (int i = 1; i <= 12; i++) + { + mf.KAScene.GetObject("row" + (i).ToString()).SetVisible(0); + } + + if (para == 0) + mf.KAScene.GetObject("title").SetValue(tname.Replace("_NXT","")); + else + mf.KAScene.GetObject("title").SetValue(tname + " 예상 체결가"); + + //========================================= + if (tname.Contains("(NXT")) + { + string m_file = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + + if (DateTime.Now.Hour <= 12) // 오전 + { + m_file = m_file + "\\Cuts\\Images\\프리마켓.png"; + // m_file = m_file + "프리마켓.png"; + } + else + { + m_file = m_file + "\\Cuts\\Images\\애프터마켓.png"; + //m_file = "애프터마켓.png"; + } + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetValue(m_file); + + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("mart"); + mf.KAObject.SetVisible(0); + } + //============================================ + + mf.KAScene.GetObject("unit").SetValue("단위 : 원"); + + if (m_sub.Contains("전문가")) + { + mf.KAScene.GetObject("column1").SetValue("매수가"); + mf.KAScene.GetObject("column2").SetValue("현재가"); + mf.KAScene.GetObject("column3").SetValue("수익률"); + } + else + { + mf.KAScene.GetObject("column1").SetValue("현재가"); + mf.KAScene.GetObject("column2").SetValue("등락가"); + mf.KAScene.GetObject("column3").SetValue("등락률"); + } + + for (int i = 0; i < rs.Length; i++) + { + if (i > 12) break; + ds = null; + + if (tname.Contains("NXT")) + { + foreach (DataRow r in mf.mDTNxtkospi.Rows) + { + if (r[0].Equals(rs[i + (idx * 5)])) + { + ds = DataManager.getInstance().createPlateData(rc, 국내시장종류.NXT_KOSPI, rs[i + (idx * 12)].Replace("(NXT)", "")); + + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + foreach (DataRow r in mf.mDTNxtkosdaq.Rows) + { + if (r[0].Equals(rs[i + (idx * 5)])) + { + ds = DataManager.getInstance().createPlateData(rc, 국내시장종류.NXT_KOSDAQ, rs[i + (idx * 12)].Replace("(NXT)", "")); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + else + { + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(rs[i + (idx * 12)])) + { + ds = DataManager.getInstance().createPlateData(rc, 국내시장종류.KOSPI, rs[i + (idx * 12)]); + + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(rs[i + (idx * 12)])) + { + ds = DataManager.getInstance().createPlateData(rc, 국내시장종류.KOSDAQ, rs[i + (idx * 12)]); + mf.dataGridView1.DataSource = ds.Tables[0]; + } + } + } + + if (ds != null) + { + mf.dataGridView1.DataSource = ds.Tables[0]; + + + if (para == 0) + { + data[0] = ds.Tables[0].Rows[0][2].ToString(); + data[1] = ds.Tables[0].Rows[0][3].ToString(); + data[2] = ds.Tables[0].Rows[0][6].ToString(); + data[3] = ds.Tables[0].Rows[0][4].ToString(); + } + else + { + data[0] = ds.Tables[0].Rows[0][3].ToString(); + data[1] = ds.Tables[0].Rows[0][6].ToString(); + data[2] = ds.Tables[0].Rows[0][9].ToString(); + data[3] = ds.Tables[0].Rows[0][8].ToString(); + } + + mf.KAScene.GetObject("row" + (cnt + 1).ToString()).SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("title" + (cnt + 1)); + //mf.KAObject.SetValue(rs[i + (idx * 12)].Trim()); + mf.KAObject.SetValue(rs[i + (idx * 12)].Trim().Replace("(NXT)", "")); + + mf.KAObject = mf.KAScene.GetObject("price" + (cnt + 1)); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[0]))); + + //mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1)); + //mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[1]))); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[1]))); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[1]))); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_3"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(data[1]))); + + mf.KAObject = mf.KAScene.GetObject("rate" + (cnt + 1) + "_1"); + mf.KAObject.SetValue(Convert.ToDouble(data[2]).ToString("##0.00")); + + mf.KAObject = mf.KAScene.GetObject("rate" + (cnt + 1) + "_2"); + mf.KAObject.SetValue(Convert.ToDouble(data[2]).ToString("##0.00")); + + mf.KAObject = mf.KAScene.GetObject("rate" + (cnt + 1) + "_3"); + mf.KAObject.SetValue(Convert.ToDouble(data[2]).ToString("##0.00")); + + + // mf.KAObject = mf.KAScene.GetObject("rate" + (cnt + 1)); + // mf.KAObject.SetValue(Convert.ToDouble(data[2]).ToString("##0.00")); + + mf.KAScene.GetObject("upup" + (cnt + 1)).SetVisible(0); + mf.KAScene.GetObject("up" + (cnt + 1)).SetVisible(0); + mf.KAScene.GetObject("flat" + (cnt + 1)).SetVisible(0); + mf.KAScene.GetObject("down" + (cnt + 1)).SetVisible(0); + mf.KAScene.GetObject("downdown" + (cnt + 1)).SetVisible(0); + + //string PMtype = ds.Tables[0].Rows[i + (idx * 5)][colums[4]].ToString(); + string PMtype = data[3]; + + //if (para == 1) + //{ + // if (data[2].Contains("-")) + // PMtype = "하락"; + // else + // PMtype = "상승"; + //} + + if (PMtype.Equals("하락") || PMtype.Equals("하한") || PMtype.Equals("-")) + { + //mf.KAObject = mf.KAScene.GetObject("bg" + (cnt + 1)); + //mf.KAObject.SetFaceColor(15, 99, 188, 255); + //mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1)); + //mf.KAObject.SetFaceColor(15, 99, 188, 255); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("rate" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (cnt + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("percent" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (cnt + 1) + "_3").SetVisible(1); + + if (PMtype.Equals("하한")) + { + mf.KAObject = mf.KAScene.GetObject("downdown" + (cnt + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAScene.GetObject("down" + (cnt + 1)).SetVisible(1); + } + } + else if (PMtype.Equals("상승") || PMtype.Equals("상한") || PMtype.Equals("+")) + { + //mf.KAObject = mf.KAScene.GetObject("bg" + (cnt + 1)); + //mf.KAObject.SetFaceColor(172, 0, 0, 255); + //mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1)); + //mf.KAObject.SetFaceColor(172, 0, 0, 255); + + mf.KAScene.GetObject("bg" + (cnt + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (cnt + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("rate" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (cnt + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (cnt + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("percent" + (cnt + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (cnt + 1) + "_3").SetVisible(0); + + if (PMtype.Equals("상한")) + { + mf.KAObject = mf.KAScene.GetObject("upup" + (cnt + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("up" + (cnt + 1)); + mf.KAObject.SetVisible(1); + } + } + else + { + mf.KAScene.GetObject("bg" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (cnt + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (cnt + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (cnt + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("rate" + (cnt + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (cnt + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (cnt + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("percent" + (cnt + 1) + "_3").SetVisible(0); + + //mf.KAObject = mf.KAScene.GetObject("bg" + (cnt + 1)); + //mf.KAObject.SetFaceColor(95, 95, 95, 255); + //mf.KAObject = mf.KAScene.GetObject("changePrice" + (cnt + 1)); + //mf.KAObject.SetFaceColor(47, 47, 47, 255); + mf.KAObject = mf.KAScene.GetObject("flat" + (cnt + 1)); + mf.KAObject.SetVisible(1); + } + cnt += 1; + } + } + + } + + //테마 + private void QueryDataLoadView(string code, int idx, string tname, int para, string sort) + { + //테마 종목 가져오기 + string query = string.Empty; + string jname = string.Empty; + + ////// // query = "SELECT a.SB_I_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index "; + ////// query = "SELECT F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index "; + ////// query = query + "FROM SB_ITEM a, v_all_stock b "; + //////query = query + "WHERE a.SB_M_CODE = '" + code + "' "; + //////query = query + "and substr(a.sb_i_code, 2, 12) = b.f_stock_code "; + //////query = query + "and b.f_mkt_halt = 'N' ORDER BY a.SB_I_INDEX"; + + if (sort == "상승률순") + { + query = "SELECT b.F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + + " round((z.f_net_chg / decode(z.f_chg_type, " + + " '1', (z.f_curr_price - z.f_net_chg), " + + " '2', (z.f_curr_price - z.f_net_chg), " + + " '3', (z.f_curr_price), " + + " '4', -1 * (z.f_curr_price + z.f_net_chg), " + + " '5', -1 * (z.f_curr_price + z.f_net_chg))) * 100, 2) rate " + + " FROM SB_ITEM a, v_all_stock b, (select x.f_stock_code, x.f_curr_price, x.f_net_chg, x.f_chg_type from t_online1 x " + + "union " + + " select y.f_stock_code, y.f_curr_price, y.f_net_chg, y.f_chg_type from t_kosdaq_online1 y) z " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND z.f_stock_code = b.f_stock_code " + + " AND b.f_mkt_halt = 'N' " + + "ORDER BY rate desc "; + } + else if (sort == "하락률순") + { + query = "SELECT b.F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + + " round((z.f_net_chg / decode(z.f_chg_type, " + + " '1', (z.f_curr_price - z.f_net_chg), " + + " '2', (z.f_curr_price - z.f_net_chg), " + + " '3', (z.f_curr_price), " + + " '4', -1 * (z.f_curr_price + z.f_net_chg), " + + " '5', -1 * (z.f_curr_price + z.f_net_chg))) * 100, 2) rate " + + " FROM SB_ITEM a, v_all_stock b, (select x.f_stock_code, x.f_curr_price, x.f_net_chg, x.f_chg_type from t_online1 x " + + "union " + + " select y.f_stock_code, y.f_curr_price, y.f_net_chg, y.f_chg_type from t_kosdaq_online1 y) z " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND z.f_stock_code = b.f_stock_code " + + " AND b.f_mkt_halt = 'N' " + + "ORDER BY rate "; + } + else + { + query = "SELECT F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index "; + query = query + "FROM SB_ITEM a, v_all_stock b "; + query = query + "WHERE a.SB_M_CODE = '" + code + "' "; + query = query + "and substr(a.sb_i_code, 2, 12) = b.f_stock_code "; + query = query + "and b.f_mkt_halt = 'N' ORDER BY a.SB_I_INDEX"; + } + + mf.m_db.ViewQuery(mf.dataGridView2, query); + + for (int i = 0; i < mf.dataGridView2.RowCount - 1; i++) + { + if (i > 0) + { + jname = jname + ","; + } + jname = jname + mf.dataGridView2.Rows[i].Cells[0].Value.ToString(); + } + + + FileDataLoadView(jname, idx, tname, para); + } + private void NXT_QueryDataLoadView(string code, int idx, string tname, int para, string sort) + { + //테마 종목 가져오기 + string query = string.Empty; + string jname = string.Empty; + + // query = "SELECT F_STOCK_WANNAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index "; + // query = query + "FROM SB_ITEM a, v_all_stock b "; + //query = query + "WHERE a.SB_M_CODE = '" + code + "' "; + //query = query + "AND substr(a.sb_i_code, 2, 12) = b.f_stock_code "; + //query = query + "AND b.f_mkt_halt = 'N' "; + //query = query + "ORDER BY a.SB_I_INDEX"; + + if (sort == "상승률순") + { + query = "SELECT b.F_STOCK_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + + " round((b.f_net_chg / case when b.f_chg_type = '1' then (b.f_curr_price - b.f_net_chg) " + + " when b.f_chg_type = '2' then (b.f_curr_price - b.f_net_chg) " + + " when b.f_chg_type = '3' then (b.f_curr_price) " + + " when b.f_chg_type = '4' then - 1 * (b.f_curr_price + b.f_net_chg) " + + " when b.f_chg_type = '5' then - 1 * (b.f_curr_price + b.f_net_chg) end) *100, 2) rate " + + " FROM SB_ITEM a, v_all_stock b " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND b.f_stop_gubun = 'N' " + + "ORDER BY rate desc "; + //query = "SELECT b.F_STOCK_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + // + " round((z.f_net_chg / decode(z.f_chg_type, " + // + " '1', (z.f_curr_price - z.f_net_chg), " + // + " '2', (z.f_curr_price - z.f_net_chg), " + // + " '3', (z.f_curr_price), " + // + " '4', -1 * (z.f_curr_price + z.f_net_chg), " + // + " '5', -1 * (z.f_curr_price + z.f_net_chg))) * 100, 2) rate " + // + " FROM SB_ITEM a, v_all_stock b, (select x.f_stock_code, x.f_curr_price, x.f_net_chg, x.f_chg_type from n_online x " + // + "union " + // + " select y.f_stock_code, y.f_curr_price, y.f_net_chg, y.f_chg_type from n_kosdaq_online y) z " + // + "WHERE a.SB_M_CODE = '" + code + "' " + // + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + // + " AND z.f_stock_code = b.f_stock_code " + // + " AND b.f_stop_gubun = 'N' " + // + "ORDER BY rate desc "; + } + else if (sort == "하락률순") + { + query = "SELECT b.F_STOCK_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index, " + + " round((b.f_net_chg / case when b.f_chg_type = '1' then (b.f_curr_price - b.f_net_chg) " + + " when b.f_chg_type = '2' then (b.f_curr_price - b.f_net_chg) " + + " when b.f_chg_type = '3' then (b.f_curr_price) " + + " when b.f_chg_type = '4' then - 1 * (b.f_curr_price + b.f_net_chg) " + + " when b.f_chg_type = '5' then - 1 * (b.f_curr_price + b.f_net_chg) end) *100, 2) rate " + + " FROM SB_ITEM a, v_all_stock b " + + "WHERE a.SB_M_CODE = '" + code + "' " + + " AND substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " AND b.f_stop_gubun = 'N' " + + "ORDER BY rate "; + } + else + { + query = "SELECT b.F_STOCK_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index " + + " FROM SB_ITEM a, v_all_stock b " + + " WHERE a.SB_M_CODE = '" + code + "' " + + " and substr(a.sb_i_code, 2, 12) = b.f_stock_code " + + " and b.f_stop_gubun = 'N' ORDER BY a.SB_I_INDEX"; + + //query = "SELECT F_STOCK_NAME, a.SB_I_CODE, a.sb_m_code, a.sb_i_index "; + //query = query + "FROM SB_ITEM a, v_all_stock b "; + //query = query + "WHERE a.SB_M_CODE = '" + code + "' "; + //query = query + "AND substr(a.sb_i_code, 2, 12) = b.f_stock_code "; + //query = query + "AND b.f_stop_gubun = 'N' "; + //query = query + "ORDER BY a.SB_I_INDEX"; + } + + mf.m_db.Nxt_ViewQuery(mf.dataGridView2, query); + + for (int i = 0; i < mf.dataGridView2.RowCount - 1; i++) + { + if (i > 0) + { + //jname = jname + "(NXT),"; + jname = jname + ","; + } + jname = jname + mf.dataGridView2.Rows[i].Cells[0].Value.ToString() + "(NXT)"; + } + + + FileDataLoadView(jname, idx, tname, para); + } + + private void ExpertDataLoadView(string code, int idx, string tname, int para) + { + //테마 종목 가져오기 + string query = string.Empty; + string jname = string.Empty; + + mf.m_db.ViewQuery(mf.dataGridView2, "SELECT * FROM RECOMMEND_LIST WHERE RC_CODE = '" + code + "' order by PLAYINDEX"); + + + for (int i = 0; i < mf.dataGridView2.RowCount - 1; i++) + { + if (i > 0) + { + jname = jname + ","; + } + jname = jname + mf.dataGridView2.Rows[i].Cells[2].Value.ToString(); + } + + + FileDataLoadView(jname, idx, tname, para); + } + + private void OracleDataLoadView(string code, string sub, int idx) + { + try + { + int lcnt = 0; + + if (code.Contains("업종")) + { + if (code.Contains("코스피")) + code = "코스피"; + else + code = "코스닥"; + sub = "업종지수"; + + } + + string[] colums = new string[] { "WANNAME", "F_CURR_PRICE", "NET_CHG", "RATE", "CHG_TYPE" }; + + DataSet ds = null; + + mf.KAObject = mf.KAScene.GetObject("title"); + + 국내시장종류 type = 국내시장종류.KOSPI; + + if (code.Equals("코스닥")) + { + type = 국내시장종류.KOSDAQ; + } + + bool isPoint = false; + + if (sub.Contains("예상가 시가총액 상위")) + { + colums = new string[] { "WANNAME", "CURR_PRICE", "NET_CHG", "RATE", "CHG_TYPE" }; + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.예상가시가총액상위); + mf.KAObject.SetValue(code + " 예상가 시가총액 상위"); + } + + else if (sub.Contains("시가총액")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.시가총액); + mf.KAObject.SetValue(code + " 시가총액 상위"); + colums[1] = "CURR_PRICE"; + } + else if (sub.Contains("업종지수")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.업종); + mf.KAObject.SetValue(code + " 업종"); + isPoint = true; + + colums[0] = "F_PART_NAME"; + colums[1] = "PART_IDX"; + colums[2] = "PART_CHG"; + colums[4] = "F_CHG_TYPE"; + } + else if (sub.Contains("시간외 상승")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.시간외상승률); + mf.KAObject.SetValue(code + " 시간외 상승률 상위"); + } + else if (sub.Contains("시간외 하락")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.시간외하락률); + mf.KAObject.SetValue(code + " 시간외 하락률 상위"); + } + else if (sub.Contains("상승률")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.상승률); + mf.KAObject.SetValue(code + " 상승률 상위"); + } + else if (sub.Contains("하락률")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.하락률); + mf.KAObject.SetValue(code + " 하락률 상위"); + } + + else if (sub.Contains("52주 신고가")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.신고가52주); + mf.KAObject.SetValue(code + " 52주 신고가"); + + colums[0] = "F_STOCK_WANNAME"; + colums[1] = "F_CURR_PRICE"; + colums[2] = "F_NET_CHG"; + colums[4] = "F_CHG_TYPE"; + } + else if (sub.Contains("52주 신저가")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.신저가52주); + mf.KAObject.SetValue(code + " 52주 신저가"); + + colums[0] = "F_STOCK_WANNAME"; + colums[1] = "F_CURR_PRICE"; + colums[2] = "F_NET_CHG"; + colums[4] = "F_CHG_TYPE"; + } + + + else if (sub.Contains("코스피 200 종목")) + { + + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.코스피200); + colums[1] = "CURR_PRICE"; + mf.KAObject.SetValue(code + " 200"); + } + + else if (sub.Contains("ETF 종목")) + { + ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.ETF); + colums[1] = "CURR_PRICE"; + mf.KAObject.SetValue("ETF"); + } + + //ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.); + mf.dataGridView1.DataSource = ds.Tables[0]; + + for (int i = 1; i <= 12; i++) + { + mf.KAScene.GetObject("row" + (i).ToString()).SetVisible(0); + } + + + if (isPoint) + { + mf.KAObject = mf.KAScene.GetObject("unit"); + mf.KAObject.SetValue("단위 : p"); + + mf.KAObject = mf.KAScene.GetObject("column1"); + mf.KAObject.SetValue("현재"); + mf.KAObject = mf.KAScene.GetObject("column2"); + mf.KAObject.SetValue("등락"); + mf.KAObject = mf.KAScene.GetObject("column3"); + mf.KAObject.SetValue("등락률"); + + List rows = new List(); + + foreach (DataRow dr in ds.Tables[0].Rows) + { + string[] row = new string[] { dr[colums[0]].ToString(), dr[colums[1]].ToString() , + dr[colums[2]].ToString(), dr[colums[3]].ToString(),dr[colums[4]].ToString()}; + + rows.Add(row); + } + + //rows.Sort(delegate (string[] x, string[] y) + //{ + // return Convert.ToDouble(y[1]).CompareTo(Convert.ToDouble(x[1])); + //}); + + //mf.dataGridView1.RowCount - 1 + if (mf.dataGridView1.RowCount - 1 < 12) + { + lcnt = mf.dataGridView1.RowCount - 1; + } + else + { + lcnt = 12; + } + + for (int i = 0; i < lcnt; i++) + { + string jname = rows[i + (idx * 12)][0]; // ds.Tables[0].Rows[i][colums[0]].ToString(); + string price = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 12)][1])); + string priceChange = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 12)][2])); + string rate = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 12)][3])); + string PMtype = rows[i + (idx * 12)][4]; + + mf.KAScene.GetObject("row" + (i + 1).ToString()).SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("title" + (i + 1)); + mf.KAObject.SetValue(jname); + + mf.KAObject = mf.KAScene.GetObject("price" + (i + 1)); + mf.KAObject.SetValue(price); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_1"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_2"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_3"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_1"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_2"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_3"); + mf.KAObject.SetValue(rate); + + if (PMtype.Equals("-")) + mf.KAObject.SetValue("-" + rate); + else + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(0); + + //SetFaceTextColor' + if (PMtype.Equals("-")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else if (PMtype.Equals("+")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(1); + } + } + + } + else + { + mf.KAObject = mf.KAScene.GetObject("mart"); + + if ((code == "코스피_NXT") || (code == "코스닥_NXT")) + mf.KAObject.SetVisible(1); + else + mf.KAObject.SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("unit"); + mf.KAObject.SetValue("단위 : 원"); + + //mf.KAObject = mf.KAScene.GetObject("column1"); + //mf.KAObject.SetValue("현재가"); + //mf.KAObject = mf.KAScene.GetObject("column2"); + //mf.KAObject.SetValue("등락가"); + //mf.KAObject = mf.KAScene.GetObject("column3"); + //mf.KAObject.SetValue("등락률"); + + //mf.dataGridView1.RowCount - 1 + + //////////////////////ssssssssssssssssssssssss + //mf.KAScene.GetObject("title").SetValue(sub); + //////===================sssssssssssss + if (mf.dataGridView1.RowCount - 1 < 12) + { + lcnt = mf.dataGridView1.RowCount - 1; + } + else + { + lcnt = 12; + } + + for (int i = 0; i < lcnt; i++) + { + string jname = ds.Tables[0].Rows[i + (idx * 12)][colums[0]].ToString(); + string price = String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[i + (idx * 12)][colums[1]].ToString())); + string priceChange = String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[i + (idx * 12)][colums[2]].ToString())); + string rate = String.Format("{0:#,##0.00}", Convert.ToDouble(ds.Tables[0].Rows[i + (idx * 12)][colums[3]].ToString())); + string PMtype = ds.Tables[0].Rows[i + (idx * 12)][colums[4]].ToString(); + + mf.KAScene.GetObject("row" + (i + 1).ToString()).SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("title" + (i + 1)); + mf.KAObject.SetValue(jname); + + mf.KAObject = mf.KAScene.GetObject("price" + (i + 1)); + mf.KAObject.SetValue(price); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_1"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_2"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_3"); + mf.KAObject.SetValue(priceChange); + + //mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + //mf.KAObject.SetValue(rate); + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_1"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_2"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_3"); + mf.KAObject.SetValue(rate); + + + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(0); + + if (PMtype.Equals("4") || PMtype.Equals("5")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(1); + + if (PMtype.Equals("4")) + { + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAScene.GetObject("down" + (i + 1)).SetVisible(1); + } + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(1); + + if (rate.Substring(0,1) != "-") + { + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + mf.KAObject.SetValue("-" + rate); + //mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + //mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + //mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(1); + + //mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + //mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + //mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(1); + } + + } + else if (PMtype.Equals("1") || PMtype.Equals("2")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + if (PMtype.Equals("1")) + { + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(1); + } + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + } + else + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(1); + } + } + } + + mf.m_chkdata = true; + + + } + catch (Exception) + { + //MessageBox.Show(e.ToString()); + mf.m_chkdata = false; + } + } + + private void MariaDataLoadView(string code, string sub, int idx) + { + try + { + int lcnt = 0; + + if (code.Contains("업종")) + { + if (code.Contains("코스피_NXT")) + code = "코스피_NXT"; + else + code = "코스닥_NXT"; + + sub = "업종지수"; + } + + string[] colums = new string[] { "WANNAME", "F_CURR_PRICE", "NET_CHG", "RATE", "CHG_TYPE" }; + + DataSet ds = null; + + mf.KAObject = mf.KAScene.GetObject("title"); + + 국내시장종류 type = 국내시장종류.NXT_KOSPI; + + if (code.Equals("코스닥_NXT")) + { + type = 국내시장종류.NXT_KOSDAQ; + } + + bool isPoint = false; + + if (sub.Contains("시가총액")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.시가총액); + mf.KAObject.SetValue(code.Replace("_NXT","") + " 시가총액 상위"); + colums[1] = "CURR_PRICE"; + } + else if (sub.Contains("시간외 상승")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.시간외상승률); + mf.KAObject.SetValue(code.Replace("_NXT", "") + " 시간외 상승률 상위"); + } + else if (sub.Contains("시간외 하락")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.시간외하락률); + mf.KAObject.SetValue(code.Replace("_NXT", "") + " 시간외 하락률 상위"); + } + else if (sub.Contains("상승률")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.상승률); + mf.KAObject.SetValue(code.Replace("_NXT", "") + " 상승률 상위"); + } + else if (sub.Contains("하락률")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.하락률); + mf.KAObject.SetValue(code.Replace("_NXT", "") + " 하락률 상위"); + } + else if (sub.Contains("거래량")) + { + ds = DataManager.getInstance().Nxt_create5DanDataIndex(type, 데이터5단판지수별.거래량); + mf.KAObject.SetValue(code.Replace("_NXT", "") + " 거래량 상위"); + } + + //ds = DataManager.getInstance().create5DanDataIndex(type, 데이터5단판지수별.); + mf.dataGridView1.DataSource = ds.Tables[0]; + + for (int i = 1; i <= 12; i++) + { + mf.KAScene.GetObject("row" + (i).ToString()).SetVisible(0); + } + + + if (isPoint) + { + mf.KAObject = mf.KAScene.GetObject("unit"); + mf.KAObject.SetValue("단위 : p"); + + mf.KAObject = mf.KAScene.GetObject("column1"); + mf.KAObject.SetValue("현재"); + mf.KAObject = mf.KAScene.GetObject("column2"); + mf.KAObject.SetValue("등락"); + mf.KAObject = mf.KAScene.GetObject("column3"); + mf.KAObject.SetValue("등락률"); + + List rows = new List(); + + foreach (DataRow dr in ds.Tables[0].Rows) + { + string[] row = new string[] { dr[colums[0]].ToString(), dr[colums[1]].ToString() , + dr[colums[2]].ToString(), dr[colums[3]].ToString(),dr[colums[4]].ToString()}; + + rows.Add(row); + } + + //rows.Sort(delegate (string[] x, string[] y) + //{ + // return Convert.ToDouble(y[1]).CompareTo(Convert.ToDouble(x[1])); + //}); + + //mf.dataGridView1.RowCount - 1 + if (mf.dataGridView1.RowCount - 1 < 12) + { + lcnt = mf.dataGridView1.RowCount - 1; + } + else + { + lcnt = 12; + } + + for (int i = 0; i < lcnt; i++) + { + string jname = rows[i + (idx * 12)][0]; // ds.Tables[0].Rows[i][colums[0]].ToString(); + string price = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 12)][1])); + string priceChange = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 12)][2])); + string rate = String.Format("{0:#,##0.00}", Convert.ToDouble(rows[i + (idx * 12)][3])); + string PMtype = rows[i + (idx * 12)][4]; + + mf.KAScene.GetObject("row" + (i + 1).ToString()).SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("title" + (i + 1)); + mf.KAObject.SetValue(jname); + + mf.KAObject = mf.KAScene.GetObject("price" + (i + 1)); + mf.KAObject.SetValue(price); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_1"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_2"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_3"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_1"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_2"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_3"); + mf.KAObject.SetValue(rate); + + if (PMtype.Equals("-")) + mf.KAObject.SetValue("-" + rate); + else + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(0); + + //SetFaceTextColor' + if (PMtype.Equals("-")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else if (PMtype.Equals("+")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(1); + } + } + + } + else + { + mf.KAObject = mf.KAScene.GetObject("mart"); + if ((code == "코스피_NXT") || (code == "코스닥_NXT")) + mf.KAObject.SetVisible(1); + else + mf.KAObject.SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("unit"); + mf.KAObject.SetValue("단위 : 원"); + + //mf.KAObject = mf.KAScene.GetObject("column1"); + //mf.KAObject.SetValue("현재가"); + //mf.KAObject = mf.KAScene.GetObject("column2"); + //mf.KAObject.SetValue("등락가"); + //mf.KAObject = mf.KAScene.GetObject("column3"); + //mf.KAObject.SetValue("등락률"); + + //mf.dataGridView1.RowCount - 1 + + //////////////////////ssssssssssssssssssssssss + //mf.KAScene.GetObject("title").SetValue(sub); + //////===================sssssssssssss + if (mf.dataGridView1.RowCount - 1 < 12) + { + lcnt = mf.dataGridView1.RowCount - 1; + } + else + { + lcnt = 12; + } + + for (int i = 0; i < lcnt; i++) + { + string jname = ds.Tables[0].Rows[i + (idx * 12)][colums[0]].ToString(); + string price = String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[i + (idx * 12)][colums[1]].ToString())); + string priceChange = String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[i + (idx * 12)][colums[2]].ToString())); + string rate = String.Format("{0:#,##0.00}", Convert.ToDouble(ds.Tables[0].Rows[i + (idx * 12)][colums[3]].ToString())); + string PMtype = ds.Tables[0].Rows[i + (idx * 12)][colums[4]].ToString(); + + mf.KAScene.GetObject("row" + (i + 1).ToString()).SetVisible(1); + + mf.KAObject = mf.KAScene.GetObject("title" + (i + 1)); + mf.KAObject.SetValue(jname); + + mf.KAObject = mf.KAScene.GetObject("price" + (i + 1)); + mf.KAObject.SetValue(price); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_1"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_2"); + mf.KAObject.SetValue(priceChange); + + mf.KAObject = mf.KAScene.GetObject("changePrice" + (i + 1) + "_3"); + mf.KAObject.SetValue(priceChange); + + //mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + //mf.KAObject.SetValue(rate); + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_1"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_2"); + mf.KAObject.SetValue(rate); + + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1) + "_3"); + mf.KAObject.SetValue(rate); + + + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down" + (i + 1)); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(0); + + if (PMtype.Equals("4") || PMtype.Equals("5")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(1); + + if (PMtype.Equals("4")) + { + mf.KAObject = mf.KAScene.GetObject("downdown" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAScene.GetObject("down" + (i + 1)).SetVisible(1); + } + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(1); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(1); + + if (rate.Substring(0, 1) != "-") + { + mf.KAObject = mf.KAScene.GetObject("rate" + (i + 1)); + mf.KAObject.SetValue("-" + rate); + //mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + //mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + //mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(1); + + //mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + //mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + //mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(1); + } + + } + else if (PMtype.Equals("1") || PMtype.Equals("2")) + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + if (PMtype.Equals("1")) + { + mf.KAObject = mf.KAScene.GetObject("upup" + (i + 1)); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("up" + (i + 1)); + mf.KAObject.SetVisible(1); + } + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + } + else + { + mf.KAScene.GetObject("bg" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("bg" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("bg" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("changePrice" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("changePrice" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("rate" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("rate" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("rate" + (i + 1) + "_3").SetVisible(0); + + mf.KAScene.GetObject("percent" + (i + 1) + "_1").SetVisible(0); + mf.KAScene.GetObject("percent" + (i + 1) + "_2").SetVisible(1); + mf.KAScene.GetObject("percent" + (i + 1) + "_3").SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("flat" + (i + 1)); + mf.KAObject.SetVisible(1); + } + } + } + + mf.m_chkdata = true; + + + } + catch (Exception) + { + //MessageBox.Show(e.ToString()); + mf.m_chkdata = false; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s6001.cs b/MBN_STOCK_N/Scene/s6001.cs new file mode 100644 index 0000000..7d962a7 --- /dev/null +++ b/MBN_STOCK_N/Scene/s6001.cs @@ -0,0 +1,358 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s6001 //이미지 그래프 + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + public s6001(Form frm, string jname) + { + try + { + DataSet ds = null; + string query = string.Empty; + string kiho = string.Empty; + int idx = 0; + mf = (MainForm)frm; + + string vpath = mf.T2S_FOLDER_PATH + "Video\\20201008_"; + string nation = string.Empty; + //지수 (코스피, 코스닥, 코스피 200, 선물, KRX 100 + + if (jname.Contains("유가") || jname.Contains("금")) + idx = 1; + else + idx = 0; + + if (idx == 0) + { + if (jname.Contains("다우")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.다우, "DJI@DJI"); nation = "미국"; } + else if (jname.Contains("나스닥")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.나스닥, "NAS@IXIC"); nation = "미국"; } + else if (jname.Contains("S&P")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.SNP, "SPI@SPX"); nation = "미국"; } + else if (jname.Contains("독일")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.독일, "XTR@DAX30"); nation = "독일"; } + else if (jname.Contains("영국")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.영국, "LNS@FTSE100"); nation = "영국"; } + else if (jname.Contains("프랑스")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.프랑스, "PAS@CAC40"); nation = "프랑스"; } + else if (jname.Contains("일본")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.니케이, "NII@NI225"); nation = "일본"; } + else if (jname.Contains("중국")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.중국상해, "SHS@000001"); nation = "중국"; } + else if (jname.Contains("홍콩")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.홍콩항셍, "HSI@HSI"); nation = "홍콩"; } + else if (jname.Contains("대만")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.대만가권, "TWS@TI01"); nation = "대만"; } + else if (jname.Contains("싱가포르")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.싱가포르지수, "SGI@STI"); nation = "싱가포르"; } + else if (jname.Contains("태국")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.태국지수, "THI@SET"); nation = "태국"; } + else if (jname.Contains("필리핀")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.필리핀, "PHI@COMP"); nation = "필리핀"; } + else if (jname.Contains("말레이시아")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.말레이시아, "IDI@JKSE"); nation = "말레이시아"; } + else if (jname.Contains("인도네시아")) + { ds = DataManager.getInstance().createPlateData(해외지수종류.인도네시아, "MYI@KLSE"); nation = "인도네시아"; } + + mf.dataGridView1.DataSource = ds.Tables[0]; + + if (mf.dataGridView1.RowCount <= 1) + mf.m_chkdata = false; + else + { + mf.KAScene.GetObject("title").SetValue(mf.dataGridView1.Rows[0].Cells[0].Value.ToString()); + mf.KAScene.GetObject("movie").SetValue(vpath + nation + ".vrv"); + + + mf.KAScene.GetObject("price").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[1].Value.ToString()).ToString("#,##0.00")); + + if (mf.dataGridView1.Rows[0].Cells[3].Value.ToString().Substring(0, 1) == "-") + mf.KAScene.GetObject("changePrice").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[3].Value.ToString().Substring(1)).ToString("#,##0.00")); + else + mf.KAScene.GetObject("changePrice").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[3].Value.ToString()).ToString("#,##0.00")); + + if (mf.dataGridView1.Rows[0].Cells[2].Value.ToString() == "-") + { + if (mf.dataGridView1.Rows[0].Cells[4].Value.ToString().Substring(0, 1) == "-") + mf.KAScene.GetObject("rate").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[4].Value.ToString()).ToString("#,##0.00")); + else + mf.KAScene.GetObject("rate").SetValue("-" + Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[4].Value.ToString()).ToString("#,##0.00")); + } + + else + mf.KAScene.GetObject("rate").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[4].Value.ToString()).ToString("#,##0.00")); + + mf.KAScene.GetObject("wonText").SetValue(""); + mf.KAScene.GetObject("unit").SetValue("단위 : p"); + kiho = mf.dataGridView1.Rows[0].Cells[2].Value.ToString(); + setObjectStockChange(mf.KAObject, kiho, 0); + } + + mf.m_chkdata = true; + } + + else + { + if (jname.Contains("유가")) + { + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.유가_두바이_WTI_브랜트); + mf.KAScene.GetObject("movie").SetValue(mf.T2S_FOLDER_PATH + "images\\주유기merge.png"); + mf.KAScene.GetObject("unit").SetValue("단위 : 배럴/달러"); + + } + else + { + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.광물); + mf.KAScene.GetObject("movie").SetValue(mf.T2S_FOLDER_PATH + "images\\35752913_l.jpg"); + mf.KAScene.GetObject("unit").SetValue("단위 : 달러/온스"); + + } + mf.dataGridView1.DataSource = ds.Tables[0]; + + int s = 0; + + if (mf.dataGridView1.RowCount <= 1) + mf.m_chkdata = false; + else + { + if (jname.Contains("유가")) + { + if (jname.Contains("WTI")) + s = 2; + else if (jname.Contains("브렌트")) + s = 1; + else if (jname.Contains("두바이")) + s = 0; + + mf.KAObject = mf.KAScene.GetObject("title"); + mf.KAObject.SetValue(mf.dataGridView1.Rows[s].Cells[1].Value.ToString()); + + + mf.KAScene.GetObject("price").SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(mf.dataGridView1.Rows[s].Cells[2].Value.ToString()))); + mf.KAScene.GetObject("changePrice").SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(mf.dataGridView1.Rows[s].Cells[3].Value.ToString()))); + + + mf.KAScene.GetObject("rate").SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(mf.dataGridView1.Rows[s].Cells[5].Value.ToString()))); + + mf.KAScene.GetObject("wonText").SetValue(""); + + kiho = mf.dataGridView1.Rows[s].Cells[4].Value.ToString(); + setObjectStockChange(mf.KAObject, kiho, 0); + } + else + { + foreach (DataRow dr in ds.Tables[0].Rows) + { + if (jname.Contains(dr[1].ToString())) + { + mf.KAObject = mf.KAScene.GetObject("title"); + mf.KAObject.SetValue(dr[1].ToString()); + + + mf.KAScene.GetObject("price").SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(dr[2].ToString()))); + mf.KAScene.GetObject("changePrice").SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(dr[3].ToString()))); + + + mf.KAScene.GetObject("rate").SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(dr[5].ToString()))); + + mf.KAScene.GetObject("wonText").SetValue(""); + + kiho = dr[4].ToString(); + setObjectStockChange(mf.KAObject, kiho, 0); + } + } + + } + mf.m_chkdata = true; + } + } + } + catch (Exception) + { + + } + } + public void setObjectStockChange(KAObject KAObject, string value, int cnt) + { + try + { + string v = string.Empty; + if (cnt == 0) + v = ""; + else if (cnt == 1) + v = "1"; + else if (cnt == 2) + v = "2"; + else if (cnt == 3) + v = ""; + + KAObject = mf.KAScene.GetObject("upup" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("up" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("flat" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("down" + v); + KAObject.SetVisible(0); + KAObject = mf.KAScene.GetObject("downdown" + v); + KAObject.SetVisible(0); + + if (value.Equals("상한")) + { + KAObject = mf.KAScene.GetObject("upup" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + + mf.KAScene.GetObject("pattern" + v).SetValue(mf.T2S_FOLDER_PATH + "Images\\그림_빨강.png"); + + if (cnt != 0) + { + KAObject = mf.KAScene.GetObject("unit" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + } + } + else if (value.Equals("상승") || value.Equals("+")) + { + KAObject = mf.KAScene.GetObject("up" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + + if (cnt != 0) + { + KAObject = mf.KAScene.GetObject("unit" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + } + + if (cnt == 3) + { + KAObject = mf.KAScene.GetObject("price" + v); + KAObject.SetFaceColor(170, 0, 0, 255); + } + mf.KAScene.GetObject("pattern" + v).SetValue(mf.T2S_FOLDER_PATH + "Images\\그림_빨강.png"); + } + else if (value.Equals("보합") || value.Equals("")) + { + KAObject = mf.KAScene.GetObject("flat" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(95, 95, 95, 255); + + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(52, 52, 52, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(52, 52, 52, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(52, 52, 52, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(52, 52, 52, 255); + + if (cnt != 0) + { + KAObject = mf.KAScene.GetObject("unit" + v); + KAObject.SetFaceColor(52, 52, 52, 255); + } + if (cnt == 3) + { + KAObject = mf.KAScene.GetObject("price" + v); + KAObject.SetFaceColor(52, 52, 52, 255); + } + mf.KAScene.GetObject("pattern" + v).SetValue(mf.T2S_FOLDER_PATH + "Images\\그림_검정.png"); + } + else if (value.Equals("하락") || value.Equals("-")) + { + KAObject = mf.KAScene.GetObject("down" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + + if (cnt != 0) + { + KAObject = mf.KAScene.GetObject("unit" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + } + + if (cnt == 3) + { + KAObject = mf.KAScene.GetObject("price" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + } + mf.KAScene.GetObject("pattern" + v).SetValue(mf.T2S_FOLDER_PATH + "Images\\그림_파랑.png"); + } + else if (value.Equals("하한")) + { + KAObject = mf.KAScene.GetObject("downdown" + v); + KAObject.SetVisible(1); + + KAObject = mf.KAScene.GetObject("bg" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("changePrice" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("wonText" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("rate" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + KAObject = mf.KAScene.GetObject("percent" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + + if (cnt != 0) + { + KAObject = mf.KAScene.GetObject("unit" + v); + KAObject.SetFaceColor(15, 99, 189, 255); + } + mf.KAScene.GetObject("pattern" + v).SetValue(mf.T2S_FOLDER_PATH + "Images\\그림_파랑.png"); + } + + + } + catch (Exception) + { + + } + + } + } +} diff --git a/MBN_STOCK_N/Scene/s6067.cs b/MBN_STOCK_N/Scene/s6067.cs new file mode 100644 index 0000000..f678869 --- /dev/null +++ b/MBN_STOCK_N/Scene/s6067.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s6067 //기관 순매수 현황 + { + MainForm mf = null; + string tname = string.Empty; + + public s6067(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + + DataSet ds = DataManager.getInstance().createGridChartData(그리드표그래프종류.기관순매수현황11번컷, null); + mf.dataGridView1.DataSource = ds.Tables[0]; + + foreach (DataRow dr in ds.Tables[0].Rows) + { + int i = 3; + int j = 1; + + if (dr[0].Equals("코스피")) + i = 1; + else if (dr[0].Equals("코스닥")) + i = 2; + + if (dr[1].Equals("증권")) + j = 1; + else if (dr[1].Equals("보험")) + j = 2; + else if (dr[1].Equals("투신")) + j = 3; + else if (dr[1].Equals("은행")) + j = 4; + else if (dr[1].Equals("기금")) + j = 5; + //코스닥 기금 -327 + + + mf.KAObject = mf.KAScene.GetObject("row" + i + "_value" + j); + int value = Convert.ToInt32(dr[2].ToString()); + + if (value < 0) + mf.KAObject.SetFaceColor(15, 99, 188, 255); + else if (value > 0) + mf.KAObject.SetFaceColor(171, 0, 0, 255); + else + mf.KAObject.SetFaceColor(47, 47, 47, 255); + + mf.KAObject.SetValue(String.Format("{0:#,##0}", value)); + } + mf.m_chkdata = true; + + + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s8001.cs b/MBN_STOCK_N/Scene/s8001.cs new file mode 100644 index 0000000..6ca19bb --- /dev/null +++ b/MBN_STOCK_N/Scene/s8001.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s8001 // + { + MainForm mf = null; + string tname = string.Empty; + + public s8001(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + DataSet ds = null; + + + if (jname == "코스피") + ds = DataManager.getInstance().createSquareChartData_Cut20(국내시장종류.KOSPI); + else + ds = DataManager.getInstance().createSquareChartData_Cut20(국내시장종류.KOSDAQ); + + foreach (DataRow dr in ds.Tables[0].Rows) + { + string name = dr[0].ToString(); + string pm = dr[2].ToString(); + string value = dr[4].ToString(); + double valueD = Convert.ToDouble(value); + + mf.KAObject = mf.KAScene.GetObject(name + "_등락"); + + //pm = pm.Replace("+", ""); + + if (pm == "+") + mf.KAObject.SetValue(value); + else + mf.KAObject.SetValue(pm + value); + + mf.KAObject = mf.KAScene.GetObject(name + "_큐브"); + + if (pm.Equals("+")) + { + if (valueD < 1) + mf.KAObject.SetFaceColor(206, 61, 59, 255); + else if (valueD < 3) + mf.KAObject.SetFaceColor(181, 28, 39, 255); + else if (valueD < 5) + mf.KAObject.SetFaceColor(154, 28, 39, 255); + else if (valueD < 10) + mf.KAObject.SetFaceColor(131, 28, 39, 255); + else + mf.KAObject.SetFaceColor(174, 0, 0, 255); + } + else if (pm.Equals("-")) + { + if (valueD < 1) + mf.KAObject.SetFaceColor(66, 128, 185, 255); + else if (valueD < 3) + mf.KAObject.SetFaceColor(52, 117, 157, 255); + else if (valueD < 5) + mf.KAObject.SetFaceColor(52, 78, 126, 255); + else if (valueD < 10) + mf.KAObject.SetFaceColor(42, 61, 124, 255); + else + mf.KAObject.SetFaceColor(42, 47, 124, 255); + } + + } + + mf.dataGridView1.DataSource = ds.Tables[0]; + mf.m_chkdata = true; + + + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s8003.cs b/MBN_STOCK_N/Scene/s8003.cs new file mode 100644 index 0000000..7021aed --- /dev/null +++ b/MBN_STOCK_N/Scene/s8003.cs @@ -0,0 +1,254 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s8003 + { + MainForm mf = null; + + public s8003(Form frm, string jname) + { + try + { + + mf = (MainForm)frm; + + mf.KAScene.GetObject("title").SetValue(jname); + + + DataSet ds = null; + + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createCut26Data(국내시장종류.KOSPI, r[1].ToString()); + } + } + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createCut26Data(국내시장종류.KOSDAQ, r[1].ToString()); + } + } + + mf.dataGridView1.DataSource = ds.Tables[0]; + + mf.KAObject = mf.KAScene.GetObject("unit"); + mf.KAObject.SetValue("단위 : 원"); + + int price = Convert.ToInt32(ds.Tables[0].Rows[0]["F_CURR_PRICE"].ToString()); + mf.KAObject = mf.KAScene.GetObject("price"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", price)); + + mf.KAObject = mf.KAScene.GetObject("changePrice"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds.Tables[0].Rows[0]["NET_CHG"].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("rate"); + mf.KAObject.SetValue(Convert.ToDouble(ds.Tables[0].Rows[0]["RATE"].ToString()).ToString("##0.00")); + + + string valueChnageInfo = ds.Tables[0].Rows[0]["CHG_TYPE"].ToString(); + + mf.KAObject = mf.KAScene.GetObject("upup"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown"); + mf.KAObject.SetVisible(0); + + if (valueChnageInfo.Equals("상한") || valueChnageInfo.Equals("상승")) + { + + if (valueChnageInfo.Equals("상한")) + { + mf.KAObject = mf.KAScene.GetObject("upup"); + } + else + { + mf.KAObject = mf.KAScene.GetObject("up"); + } + + mf.KAObject.SetVisible(1); + + //mf.KAObject = mf.KAScene.GetObject("bg"); + //mf.KAObject.SetFaceColor(170, 0, 0, 255); + mf.KAScene.GetObject("bg1").SetVisible(1); + mf.KAScene.GetObject("bg2").SetVisible(0); + mf.KAScene.GetObject("bg3").SetVisible(0); + + } + else if (valueChnageInfo.Equals("하한") || valueChnageInfo.Equals("하락")) + { + if (valueChnageInfo.Equals("하한")) + { + mf.KAObject = mf.KAScene.GetObject("downdown"); + } + else + { + mf.KAObject = mf.KAScene.GetObject("down"); + } + mf.KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg1").SetVisible(0); + mf.KAScene.GetObject("bg2").SetVisible(0); + mf.KAScene.GetObject("bg3").SetVisible(1); + + //mf.KAObject = mf.KAScene.GetObject("bg"); + //mf.KAObject.SetFaceColor(15, 99, 189, 255); + } + else + { + //mf.KAObject = mf.KAScene.GetObject("bg"); + //mf.KAObject.SetFaceColor(95, 95, 95, 255); + + mf.KAScene.GetObject("bg1").SetVisible(0); + mf.KAScene.GetObject("bg2").SetVisible(1); + mf.KAScene.GetObject("bg3").SetVisible(0); + } + + int sell1 = Convert.ToInt32(ds.Tables[0].Rows[0]["F_CALL_SELL_1"].ToString()); + int sell2 = Convert.ToInt32(ds.Tables[0].Rows[0]["F_CALL_SELL_2"].ToString()); + int sell3 = Convert.ToInt32(ds.Tables[0].Rows[0]["F_CALL_SELL_3"].ToString()); + + int sell_jan_1 = Convert.ToInt32(ds.Tables[0].Rows[0]["F_CALL_SELL_JAN_1"].ToString()); + int sell_jan_2 = Convert.ToInt32(ds.Tables[0].Rows[0]["F_CALL_SELL_JAN_2"].ToString()); + int sell_jan_3 = Convert.ToInt32(ds.Tables[0].Rows[0]["F_CALL_SELL_JAN_3"].ToString()); + + int sell_jan = Convert.ToInt32(ds.Tables[0].Rows[0]["F_T_CALL_SELL_JAN"].ToString()); + + int buy1 = Convert.ToInt32(ds.Tables[0].Rows[0]["F_CALL_BUY_1"].ToString()); + int buy2 = Convert.ToInt32(ds.Tables[0].Rows[0]["F_CALL_BUY_2"].ToString()); + int buy3 = Convert.ToInt32(ds.Tables[0].Rows[0]["F_CALL_BUY_3"].ToString()); + + int buy_jan_1 = Convert.ToInt32(ds.Tables[0].Rows[0]["F_CALL_BUY_JAN_1"].ToString()); + int buy_jan_2 = Convert.ToInt32(ds.Tables[0].Rows[0]["F_CALL_BUY_JAN_2"].ToString()); + int buy_jan_3 = Convert.ToInt32(ds.Tables[0].Rows[0]["F_CALL_BUY_JAN_3"].ToString()); + + int buy_jan = Convert.ToInt32(ds.Tables[0].Rows[0]["F_T_CALL_BUY_JAN"].ToString()); + + int maxJan = 0; + + if (maxJan < sell_jan_1) + maxJan = sell_jan_1; + if (maxJan < sell_jan_2) + maxJan = sell_jan_2; + if (maxJan < sell_jan_3) + maxJan = sell_jan_3; + if (maxJan < buy_jan_1) + maxJan = buy_jan_1; + if (maxJan < buy_jan_2) + maxJan = buy_jan_2; + if (maxJan < buy_jan_3) + maxJan = buy_jan_3; + + mf.KAObject = mf.KAScene.GetObject("price_buy_1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", buy1)); + if (price < buy1) + mf.KAObject.SetFaceColor(172, 0, 0, 255); + else if (price > buy1) + mf.KAObject.SetFaceColor(19, 73, 170, 255); + else + mf.KAObject.SetFaceColor(50, 51, 50, 255); + + mf.KAObject = mf.KAScene.GetObject("price_buy_2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", buy2)); + if (price < buy2) + mf.KAObject.SetFaceColor(172, 0, 0, 255); + else if (price > buy2) + mf.KAObject.SetFaceColor(19, 73, 170, 255); + else + mf.KAObject.SetFaceColor(50, 51, 50, 255); + + mf.KAObject = mf.KAScene.GetObject("price_buy_3"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", buy3)); + if (price < buy3) + mf.KAObject.SetFaceColor(172, 0, 0, 255); + else if (price > buy3) + mf.KAObject.SetFaceColor(19, 73, 170, 255); + else + mf.KAObject.SetFaceColor(50, 51, 50, 255); + + mf.KAObject = mf.KAScene.GetObject("buy_jan_1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", buy_jan_1)); + mf.KAObject = mf.KAScene.GetObject("buy_jan_2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", buy_jan_2)); + mf.KAObject = mf.KAScene.GetObject("buy_jan_3"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", buy_jan_3)); + + mf.KAObject = mf.KAScene.GetObject("price_sell_1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", sell1)); + if (price < sell1) + mf.KAObject.SetFaceColor(172, 0, 0, 255); + else if (price > sell1) + mf.KAObject.SetFaceColor(19, 73, 170, 255); + else + mf.KAObject.SetFaceColor(50, 51, 50, 255); + + mf.KAObject = mf.KAScene.GetObject("price_sell_2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", sell2)); + if (price < sell2) + mf.KAObject.SetFaceColor(172, 0, 0, 255); + else if (price > sell2) + mf.KAObject.SetFaceColor(19, 73, 170, 255); + else + mf.KAObject.SetFaceColor(50, 51, 50, 255); + + mf.KAObject = mf.KAScene.GetObject("price_sell_3"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", sell3)); + if (price < sell3) + mf.KAObject.SetFaceColor(172, 0, 0, 255); + else if (price > sell3) + mf.KAObject.SetFaceColor(19, 73, 170, 255); + else + mf.KAObject.SetFaceColor(50, 51, 50, 255); + + mf.KAObject = mf.KAScene.GetObject("sell_jan_1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", sell_jan_1)); + mf.KAObject = mf.KAScene.GetObject("sell_jan_2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", sell_jan_2)); + mf.KAObject = mf.KAScene.GetObject("sell_jan_3"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", sell_jan_3)); + + mf.KAObject = mf.KAScene.GetObject("buy_jan_total"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", buy_jan)); + mf.KAObject = mf.KAScene.GetObject("sell_jan_total"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", sell_jan)); + + mf.KAObject = mf.KAScene.GetObject("buy_bar_1"); + mf.KAObject.SetScale((float)(Convert.ToDouble(buy_jan_1) / maxJan), 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("buy_bar_2"); + mf.KAObject.SetScale((float)(Convert.ToDouble(buy_jan_2) / maxJan), 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("buy_bar_3"); + mf.KAObject.SetScale((float)(Convert.ToDouble(buy_jan_3) / maxJan), 0, 0, eKVectorType.VECTOR_TYPE_X); + + mf.KAObject = mf.KAScene.GetObject("sell_bar_1"); + mf.KAObject.SetScale((float)(Convert.ToDouble(sell_jan_1) / maxJan), 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("sell_bar_2"); + mf.KAObject.SetScale((float)(Convert.ToDouble(sell_jan_2) / maxJan), 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("sell_bar_3"); + mf.KAObject.SetScale((float)(Convert.ToDouble(sell_jan_3) / maxJan), 0, 0, eKVectorType.VECTOR_TYPE_X); + + mf.m_chkdata = true; + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s8010.cs b/MBN_STOCK_N/Scene/s8010.cs new file mode 100644 index 0000000..4311ecc --- /dev/null +++ b/MBN_STOCK_N/Scene/s8010.cs @@ -0,0 +1,819 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; +using System.ComponentModel; + + +namespace MBN_STOCK_N +{ + class s8010 + { + MainForm mf = null; + + public s8010(Form frm, string jname, string cut, string sub, string code) + { + try + { + + + + mf = (MainForm)frm; + + if (cut.Equals("캔들그래프(예상체결가)")) + mf.KAScene.GetObject("title").SetValue(jname + " 예상체결"); + else + mf.KAScene.GetObject("title").SetValue(jname); + + DataSet ds = null; + string format = string.Empty; + + double lineMaxWidth = 0; + + string [] bufA = { "CURR_PRICE", "CHG_TYPE", "NET_CHG", "RATE", "F_CHG_TYPE", "F_NET_CHG", "F_HIGH_PRICE", "F_LOW_PRICE", "F_INIT_PRICE", "F_CURR_PRICE", "F_MA5_PRICE", "F_MA20_PRICE", "OPEN_DAY", "F_NET_VOL"}; + string [] bufB = { "PART_IDX", "CHG_TYPE", "PART_CHG", "RATE", "CHG_TYPE", "PART_CHG", "PART_HIGH_IDX", "PART_LOW_IDX", "PART_INIT_IDX", "PART_IDX", "PART_MA5_IDX", "PART_MA20_IDX", "F_DATA_DAY", "PART_VOL"}; + string [] bufD = { "PART_IDX", "CHG_TYPE", "PART_CHG", "RATE", "CHG_TYPE", "PART_CHG", "HIGH", "LOW", "OPEN", "PART_IDX", "", "", "YMD", "" }; + string[] bufE = { "PART_IDX", "CHG_TYPE", "PART_CHG", "RATE", "F_CHG_TYPE", "F_PART_CHG", "A.F_PART_HIGH_IDX/100", "A.F_PART_LOW_IDX/100", "A.F_PART_INIT_IDX/100", "A.F_PART_IDX/100", "", "", "F_DATA_DAY", "" }; + string[] bufC = new string[14]; + + 데이터기간 termT = 데이터기간.주; + 봉차트데이터분류 tag1 = 봉차트데이터분류.KOSPI; + + if (sub.Equals("일봉")) + { + termT = 데이터기간.일; + lineMaxWidth = 0; + } + else if (sub.Equals("5일")) + { + termT = 데이터기간.주; + lineMaxWidth = 1188; + } + else if (sub.Equals("20일")) + { + termT = 데이터기간.월; + lineMaxWidth = 1398; + } + else if (sub.Equals("60일")) + { + termT = 데이터기간.분기; + lineMaxWidth = 1442; + } + else if (sub.Equals("120일")) + { + termT = 데이터기간.반기; + lineMaxWidth = 1452; + } + else if (sub.Equals("240일")) + { + termT = 데이터기간.연; + lineMaxWidth = 1464; + } + + if (jname == "지수") + { + format = "{0:#,##0.00}"; + + for (int i = 0; i< 14; i++) + { + bufC[i] = bufB[i]; + + if (code == "선물") + { + if (!cut.Contains("예상")) + { + if (i > 5 && i < 12) + bufC[i] = bufC[i] + "/100"; + } + if (sub == "일봉") + { + bufC[i] = bufE[i]; + } + + + } + } + + + + if (code == "코스피") + { + tag1 = 봉차트데이터분류.KOSPI; + } + else if(code == "코스닥") + { + tag1 = 봉차트데이터분류.KOSDAQ; + } + else if (code == "코스피200") + { + tag1 = 봉차트데이터분류.KOSPI200; + } + else if (code == "KRX100") + { + tag1 = 봉차트데이터분류.KRX100; + } + else if (code == "선물") + { + tag1 = 봉차트데이터분류.선물; + } + + + if (cut == "캔들그래프") + { + ds = DataManager.getInstance().createCandleChartData(tag1, 봉차트세부종목.일반지수, termT); + } + else if (cut == "캔들그래프(거래량)") + { + ds = DataManager.getInstance().createCandleChartData(tag1, 봉차트세부종목.거래량, termT); + } + else + { + ds = DataManager.getInstance().createCandleChartData(tag1, 봉차트세부종목.예상지수, termT); + } + } + else if (code.Contains("업종")) + { + format = "{0:#,##0.00}"; + + for (int i = 0; i < 14; i++) + { + bufC[i] = bufB[i]; + } + + if (code == "업종_코스피") + tag1 = 봉차트데이터분류.코스피업종지수; + + else if (code == "업종_코스닥") + tag1 = 봉차트데이터분류.코스닥업종지수; + + if (cut == "캔들그래프") + ds = DataManager.getInstance().createCandleChartData(tag1, 봉차트세부종목.일반지수, termT, jname); + else if (cut == "캔들그래프(거래량)") + ds = DataManager.getInstance().createCandleChartData(tag1, 봉차트세부종목.거래량, termT, jname); + else + ds = DataManager.getInstance().createCandleChartData(tag1, 봉차트세부종목.예상지수, termT, jname); + } + + else if (code.Contains("해외지수") || code.Contains("해외종목")) + { + format = "{0:#,##0.00}"; + + for (int i = 0; i < 14; i++) + { + bufC[i] = bufD[i]; + } + + + if (code.Contains("해외지수")) + ds = DataManager.getInstance().createCandleChartData(봉차트데이터분류.해외지수, 봉차트세부종목.일반지수, termT, jname); + else + ds = DataManager.getInstance().createCandleChartData(봉차트데이터분류.해외종목, 봉차트세부종목.일반지수, termT, jname); + + } + else if (cut.Contains("거래정지")) + { + format = "{0:#,##0}"; + for (int i = 0; i < 14; i++) + { + bufC[i] = bufA[i]; + } + + if (code == "코스피") + ds = DataManager.getInstance().createCandleChartData(봉차트데이터분류.거래정지, 봉차트세부종목.일반지수, termT, jname); + else + ds = DataManager.getInstance().createCandleChartData(봉차트데이터분류.거래정지k, 봉차트세부종목.일반지수, termT, jname); + + } + + else + { + + format = "{0:#,##0}"; + for (int i = 0; i < 14; i++) + { + bufC[i] = bufA[i]; + } + + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(jname)) + { + if (cut.Equals("캔들그래프")) + { + ds = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스피종목, 봉차트세부종목.일반지수, termT, jname); + } + else if (cut.Equals("캔들그래프(거래량)")) + { + ds = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스피종목, 봉차트세부종목.거래량, termT, jname); + } + else + { + ds = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스피종목, 봉차트세부종목.예상지수, termT, jname); + } + + } + } + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스닥종목, 봉차트세부종목.일반지수, termT, jname); + + if (cut.Equals("캔들그래프")) + { + ds = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스닥종목, 봉차트세부종목.일반지수, termT, jname); + } + else if (cut.Equals("캔들그래프(거래량)")) + { + ds = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스닥종목, 봉차트세부종목.거래량, termT, jname); + } + else + { + ds = DataManager.getInstance().createCandleChartData(봉차트데이터분류.코스닥종목, 봉차트세부종목.예상지수, termT, jname); + } + + } + } + } + + + mf.dataGridView1.DataSource = ds.Tables[0]; + mf.dataGridView2.DataSource = ds.Tables[1]; + + + //if (cut.Equals("캔들그래프(예상체결가)")) + // mf.dataGridView2.Sort(mf.dataGridView2.Columns[0], ListSortDirection.Ascending); + + + //Line + List VectorMA5 = new List(); + List VectorMA20 = new List(); + + + mf.KAObject = mf.KAScene.GetObject("ma5"); + mf.KAObject.BeginPathPoint(); + mf.KAObject.ClearPathPoints(); + mf.KAObject.EndPathPoint(); + mf.KAObject = mf.KAScene.GetObject("ma20"); + mf.KAObject.BeginPathPoint(); + mf.KAObject.ClearPathPoints(); + mf.KAObject.EndPathPoint(); + + mf.KAObject = mf.KAScene.GetObject("title"); + + + if (code == "해외종목") + { + mf.KAScene.GetObject("unit").SetValue("단위 : 달러"); + } + else if (code == "해외지수") + { + mf.KAScene.GetObject("unit").SetValue("단위 : p"); + } + else + { + if (jname == "지수") + { + if (cut.Contains("예상")) + mf.KAObject.SetValue(code + " 예상체결지수"); + else + mf.KAObject.SetValue(code + " 지수"); + + mf.KAScene.GetObject("unit").SetValue("단위 : p"); + } + else + { + if (cut.Contains("예상")) + mf.KAObject.SetValue(ds.Tables[0].Rows[0]["WANNAME"].ToString() + " 예상체결"); + else + { + if (code == "업종_코스피") + { + jname = "코스피 - " + jname; + mf.KAScene.GetObject("unit").SetValue("단위 : p"); + } + + else if (code == "업종_코스닥") + { + jname = "코스닥 - " + jname; + mf.KAScene.GetObject("unit").SetValue("단위 : p"); + } + else + { + mf.KAScene.GetObject("unit").SetValue("단위 : 원"); + } + mf.KAObject.SetValue(jname); + } + + } + } + + + + mf.KAObject = mf.KAScene.GetObject("price"); + mf.KAObject.SetValue(String.Format(format, Convert.ToDouble(ds.Tables[0].Rows[0][bufC[0]].ToString()))); + //mf.KAObject.SetValue(ds.Tables[0].Rows[0][bufC[0]].ToString()); + + mf.KAObject = mf.KAScene.GetObject("changePrice"); + mf.KAObject.SetValue(String.Format(format, Convert.ToDouble(ds.Tables[0].Rows[0][bufC[2]].ToString()))); + + string valueChnageInfo = ds.Tables[0].Rows[0][bufC[1]].ToString(); + + mf.KAObject = mf.KAScene.GetObject("rate"); + //mf.KAObject.SetValue(ds.Tables[0].Rows[0]["RATE"].ToString()); + + if (Convert.ToDouble(ds.Tables[0].Rows[0][bufC[3]].ToString()) > 0) + { + if (valueChnageInfo.Equals("-")) + { + mf.KAObject.SetValue("-" + Convert.ToDouble(ds.Tables[0].Rows[0][bufC[3]].ToString()).ToString("##0.00")); + } + else + { + mf.KAObject.SetValue(Convert.ToDouble(ds.Tables[0].Rows[0][bufC[3]].ToString()).ToString("##0.00")); + } + } + else + { + mf.KAObject.SetValue(Convert.ToDouble(ds.Tables[0].Rows[0][bufC[3]].ToString()).ToString("##0.00")); + } + + + mf.KAObject = mf.KAScene.GetObject("upup"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("up"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("downdown"); + mf.KAObject.SetVisible(0); + + if (valueChnageInfo.Equals("상한") || valueChnageInfo.Equals("상승") || valueChnageInfo.Equals("+")) + { + + if (valueChnageInfo.Equals("상한")) + { + mf.KAObject = mf.KAScene.GetObject("upup"); + } + else + { + mf.KAObject = mf.KAScene.GetObject("up"); + } + + mf.KAObject.SetVisible(1); + + //mf.KAObject = mf.KAScene.GetObject("bg"); + //mf.KAObject.SetFaceColor(170, 0, 0, 255); + + mf.KAScene.GetObject("bg1").SetVisible(1); + mf.KAScene.GetObject("bg2").SetVisible(0); + mf.KAScene.GetObject("bg3").SetVisible(0); + + } + else if (valueChnageInfo.Equals("하한") || valueChnageInfo.Equals("하락") || valueChnageInfo.Equals("-")) + { + if (valueChnageInfo.Equals("하한")) + { + mf.KAObject = mf.KAScene.GetObject("downdown"); + } + else + { + mf.KAObject = mf.KAScene.GetObject("down"); + } + mf.KAObject.SetVisible(1); + + mf.KAScene.GetObject("bg1").SetVisible(0); + mf.KAScene.GetObject("bg2").SetVisible(0); + mf.KAScene.GetObject("bg3").SetVisible(1); + //mf.KAObject = mf.KAScene.GetObject("bg"); + //mf.KAObject.SetFaceColor(15, 99, 189, 255); + } + else + { + mf.KAScene.GetObject("bg1").SetVisible(0); + mf.KAScene.GetObject("bg2").SetVisible(1); + mf.KAScene.GetObject("bg3").SetVisible(0); + //mf.KAObject.SetFaceColor(95, 95, 95, 255); + } + + //OPEN_DAY F_HIGH_PRICE F_LOW_PRICE F_INIT_PRICE F_CURR_PRICE F_MA5_PRICE F_MA20_PRICE + double min = double.MaxValue; + double max = double.MinValue; + double maxV = double.MinValue; + + double minA = double.MaxValue; + double maxA = double.MinValue; + + //최대 최소 얻기 + foreach (DataRow dr in ds.Tables[1].Rows) + { + if (dr[bufC[7]].ToString() != "") + { + if (minA > Convert.ToDouble(dr[bufC[7]])) + minA = Convert.ToDouble(dr[bufC[7]]); + if (maxA < Convert.ToDouble(dr[bufC[6]])) + maxA = Convert.ToDouble(dr[bufC[6]]); + + if (min > Convert.ToDouble(dr[bufC[7]])) + min = Convert.ToDouble(dr[bufC[7]]); + if (max < Convert.ToDouble(dr[bufC[6]])) + max = Convert.ToDouble(dr[bufC[6]]); + + //22.06.23 - 최대 최소를 추가하기 위한 검사 추가 + if (!(code.Contains("업종") || jname.Contains("지수"))) + { + + if (mf.ck1.Checked) + { + try + { + double MA5 = Convert.ToDouble(dr[bufC[10]].ToString()); + if (min > MA5) min = MA5; + if (max < MA5) max = MA5; + } + catch (Exception ex) { } + } + if (mf.ck2.Checked) + { + try + { + double MA20 = Convert.ToDouble(dr[bufC[11]].ToString()); + if (min > MA20) min = MA20; + if (max < MA20) max = MA20; + } + catch (Exception ex) { } + } + } + //22.06.23 추가 종료 + + if (cut.Equals("캔들그래프(거래량)")) + { + if (dr[bufC[13]] == DBNull.Value) + { + maxV = 0; + + } + else + { + if (maxV < Convert.ToDouble(dr[bufC[13]])) + maxV = Convert.ToDouble(dr[bufC[13]]); + } + + } + } + + } + + + + double gap = max - min; + double center = (max + min) / 2; + int index = 0; + + //volrumeG + mf.KAObject = mf.KAScene.GetObject("volrumeG"); + if (cut.Equals("캔들그래프(거래량)")) + { + mf.KAObject.SetVisible(1); + for (int i = 1; i <= 240; i++) + { + mf.KAScene.GetObject("volume" + i.ToString()).SetVisible(0); + } + + } + else + { + mf.KAObject.SetVisible(0); + for (int i = 1; i <= 240; i++) + { + mf.KAScene.GetObject("volume" + i.ToString()).SetVisible(0); + } + } + + string cname = string.Empty; + + if (cut.Equals("캔들그래프(예상체결가)")) + cname = "F_DATA_DATE"; + else + cname = bufC[12]; + + + for (int i = 1; i<=240; i++) + { + mf.KAScene.GetObject("candle" + i.ToString()).SetVisible(0); + } + + //추가 부분 - Ma에 값이 없는 경우 체크 하기 위한 변수 + bool isNeedMaChecker = false; + int MaCounter = 0; + + foreach (DataRow dr in ds.Tables[1].Rows) + { + index++; + + if (sub.Equals("일봉")) + { + if (index == 1) + { + if (dr["F_DATA_TIME"].ToString().Length > 1) + { + if (dr["F_DATA_TIME"].ToString().Substring(0, 2) == "09") + { + mf.KAScene.GetObject("date_begin").SetValue("09:00"); + mf.KAScene.GetObject("date_middle").SetValue("12:00"); + mf.KAScene.GetObject("date_end").SetValue("15:30"); + } + else + { + mf.KAScene.GetObject("date_begin").SetValue("10:00"); + mf.KAScene.GetObject("date_middle").SetValue("13:00"); + mf.KAScene.GetObject("date_end").SetValue("16:30"); + } + } + } + + } + else + { + //날짜 + if (index == 1) + { + mf.KAObject = mf.KAScene.GetObject("date_begin"); + + string date = dr[cname].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (index == ds.Tables[1].Rows.Count) + { + mf.KAObject = mf.KAScene.GetObject("date_end"); + string date = dr[cname].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + else if (index == Math.Ceiling(Convert.ToDouble(ds.Tables[1].Rows.Count) / 2)) + { + mf.KAObject = mf.KAScene.GetObject("date_middle"); + string date = dr[cname].ToString().Substring(4).Insert(2, "/"); + mf.KAObject.SetValue(date); + } + } + + double HP = 0.0; + double LP = 0.0; + double IP = 0.0; + double CP = 0.0; + + if (dr[bufC[6]].ToString() !="") + { + HP = Convert.ToDouble(dr[bufC[6]].ToString()); + LP = Convert.ToDouble(dr[bufC[7]].ToString()); + IP = Convert.ToDouble(dr[bufC[8]].ToString()); + CP = Convert.ToDouble(dr[bufC[9]].ToString()); + + } + + + /* + //-657.57 ~ 670.65 + double len = 1328.22; + */ + //-730.57 ~ 738.65 + double sX = -730.57; + double eX = 738.65; + double len = eX - sX; + double lsX = -657.57; + double leX = 670.65; + double lenX = len / ds.Tables[1].Rows.Count; + + //수정 부분 - 최대 최소값의 X좌표를 조절하기 위함 + //X Position 의 위치를 조절하기 위해서 갯수를 파악하고 변경한다 + //일봉의 경우 갯수를 파악하고 가장 우측의 값을 비례 식으로 변경한다. + if (sub.Equals("일봉")) + { + //총 78개가 있으므로 수치에 따른 비례식으로 우측 끝의 값을 변경 + //즉 sX, LsX는 그대로이며, ex, lex의 값은 변경한다. + eX = (len * ds.Tables[1].Rows.Count / 78) + sX; + //eX = (len * 78 / ds.Tables[1].Rows.Count) + sX; + leX = eX - 68; + len = eX - sX; + lenX = len / ds.Tables[1].Rows.Count; + } + //수정 끝 + + if (HP.Equals(maxA)) + { + mf.KAObject = mf.KAScene.GetObject("highTag"); + double XP = sX + (index * lenX) - (lenX / 2); + if (XP > leX) + XP = leX; + else if (XP < lsX) + XP = lsX; + + mf.KAObject.SetPosition((float)XP, 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("highPrice"); + mf.KAObject.SetValue(String.Format(format, Convert.ToDouble(dr[bufC[6]].ToString()))); + } + if (LP.Equals(minA)) + { + mf.KAObject = mf.KAScene.GetObject("lowTag"); + double XP = sX + (index * lenX) - (lenX / 2); + if (XP > leX) + XP = leX; + else if (XP < lsX) + XP = lsX; + mf.KAObject.SetPosition((float)XP, 0, 0, eKVectorType.VECTOR_TYPE_X); + mf.KAObject = mf.KAScene.GetObject("lowPrice"); + mf.KAObject.SetValue(String.Format(format, Convert.ToDouble(dr[bufC[7]].ToString()))); + + } + + //bar + mf.KAScene.GetObject("candle" + index).SetVisible(1); + mf.KAObject = mf.KAScene.GetObject("candlebar" + index); + + double HPF = Math.Abs(100 * (HP - max) / gap); + double LPF = Math.Abs(100 * (LP - max) / gap); + + mf.KAObject.SetCropKey(1, 0, (float)HPF, 0, (float)LPF, eKCropKey.CROP_KEY_VERTICAL); + + //Line - ma5 + try + { + if (dr[bufC[10]].ToString()!="") + { + if (isNeedMaChecker) + { + MaCounter++; + if (MaCounter < 4) + { + throw new Exception(); + } + } + + sKVector3f sKVector3F = new sKVector3f(); + double MA5 = Convert.ToDouble(dr[bufC[10]].ToString()); + int count = ds.Tables[1].Rows.Count; + sKVector3F.X = (float)(lineMaxWidth / (count - 1)) * (index - 1); + sKVector3F.Y = (float)(196 * (MA5 - max) / gap) + 98.0f; + sKVector3F.Z = 0; + + VectorMA5.Add(sKVector3F); + } else + { + isNeedMaChecker = true; + } + + + //float fY = fGraphMinY + (vecMA5Indices[index] - fMin) / fRange * fGraphHeight; + } + catch (Exception) + { + } + //Line - ma20 + try + { + if (dr[bufC[11]].ToString() != "") + { + if (isNeedMaChecker) + { + if (MaCounter < 19) + { + throw new Exception(); + } + } + + sKVector3f sKVector3F = new sKVector3f(); + double MA20 = Convert.ToDouble(dr[bufC[11]].ToString()); + int count = ds.Tables[1].Rows.Count; + sKVector3F.X = (float)(lineMaxWidth / (count - 1)) * (index - 1); + sKVector3F.Y = (float)(196 * (MA20 - max) / gap) + 98.0f; + sKVector3F.Z = 0; + + VectorMA20.Add(sKVector3F); + } + } + catch (Exception) + { + } + + + //bady + //mf.KAScene.GetObject("candlebody" + index).SetVisible(1); + mf.KAObject = mf.KAScene.GetObject("candlebody" + index); + + double IPF = Math.Abs(100 * (IP - max) / gap); + double CPF = Math.Abs(100 * (CP - max) / gap); + + + if (IP > CP) + { + mf.KAObject.SetCropKey(1, 0, (float)IPF, 0, (float)CPF, eKCropKey.CROP_KEY_VERTICAL); + mf.KAObject.SetFaceColor(15, 99, 189, 255); + mf.KAObject = mf.KAScene.GetObject("candlebar" + index); + mf.KAObject.SetFaceColor(15, 99, 189, 255); + //mf.KAObject.SetVisible(1); + } + else if (IP < CP) + { + mf.KAObject.SetCropKey(1, 0, (float)CPF, 0, (float)IPF, eKCropKey.CROP_KEY_VERTICAL); + mf.KAObject.SetFaceColor(170, 0, 0, 255); + mf.KAObject = mf.KAScene.GetObject("candlebar" + index); + mf.KAObject.SetFaceColor(170, 0, 0, 255); + //mf.KAObject.SetVisible(1); + } + else + { + //수정 - 너무 얇은 경우를 위한 처리 부분 + mf.KAObject.SetCropKey(1, 0, (float)CPF, 0, (float)IPF + 1f, eKCropKey.CROP_KEY_VERTICAL); + mf.KAObject.SetFaceColor(95, 95, 95, 255); + mf.KAObject = mf.KAScene.GetObject("candlebar" + index); + mf.KAObject.SetFaceColor(95, 95, 95, 255); + //mf.KAObject.SetVisible(1); + } + + + double NV = 0.0; + //volrumeG + if (cut.Equals("캔들그래프(거래량)")) + { + mf.KAObject = mf.KAScene.GetObject("volume" + index); + mf.KAScene.GetObject("volume" + index).SetVisible(1); + if (dr[bufC[13]] == DBNull.Value) + { + NV = 0.0; + + } + else + { + NV = Convert.ToDouble(dr[bufC[13]].ToString()); + } + + double NVP = Math.Abs(100 * (NV) / maxV); + + mf.KAObject.SetCropKey(1, 0, 100.0f - (float)NVP, 0, 100.0f, eKCropKey.CROP_KEY_VERTICAL); + + } + } + + mf.KAObject = mf.KAScene.GetObject("ma5"); + if (mf.ck1.Checked) + { + + mf.KAObject.BeginPathPoint(); + + foreach (var v in VectorMA5) + { + mf.KAObject.AddPathPoint(v.X, v.Y, v.Z); + } + mf.KAObject.EndPathPoint(); + } + else + { + mf.KAObject.ClearPathPoints(); + } + + + mf.KAObject = mf.KAScene.GetObject("ma20"); + if (mf.ck2.Checked) + { + mf.KAObject.BeginPathPoint(); + mf.KAObject.ClearPathPoints(); + foreach (var v in VectorMA20) + { + //mf.KAObject.A + mf.KAObject.AddPathPoint(v.X, v.Y, v.Z); + } + mf.KAObject.EndPathPoint(); + mf.KAScene.GetObject("guide").SetVisible(1); + } + else + { + mf.KAObject.ClearPathPoints(); + mf.KAScene.GetObject("guide").SetVisible(0); + } + + if (code.Contains("업종") || jname.Contains("지수")) + { + + mf.KAScene.GetObject("guide").SetVisible(0); + mf.KAScene.GetObject("ma5").ClearPathPoints(); + mf.KAScene.GetObject("ma20").ClearPathPoints(); + } + mf.m_chkdata = true; + + } + catch (Exception) + { + //MessageBox.Show(ex.ToString()); + mf.m_chkdata = false; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s8018.cs b/MBN_STOCK_N/Scene/s8018.cs new file mode 100644 index 0000000..bade7f8 --- /dev/null +++ b/MBN_STOCK_N/Scene/s8018.cs @@ -0,0 +1,1098 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; +using System.Reflection; + +namespace MBN_STOCK_N +{ + class s8018 //2열판 + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + string kiho1 = string.Empty; + string kiho2 = string.Empty; + string m_sub = string.Empty; + string m_code = string.Empty; + string m_jname = string.Empty; + + string[] m_rs = null; + int m_idx = 0; + + int [] m_f = new int[2]; + + public s8018(Form frm, int idx, string jname, string sub, string code) + { + try + { + DataSet ds1 = null; + DataSet ds2 = null; + + string query = string.Empty; + m_code = code; m_sub = sub; m_jname = jname; + int a_1 = 0; int a_2 = 0; + int b_1 = 0; int b_2 = 0; + int c_1 = 0; int c_2 = 0; + int d_1 = 0; int d_2 = 0; + int e_1 = 0; int e_2 = 0; + + + + //sub = "예상체결가" + + mf = (MainForm)frm; + + //================<<시장 mark 숨김>>================= + mf.KAObject = mf.KAScene.GetObject("mart1"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("mart2"); + mf.KAObject.SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("end1"); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("end2"); + mf.KAObject.SetVisible(0); + + //======================================================== + + if (idx == 0)//지수 (코스피, 코스닥, 코스피 200, 선물, KRX 100 + { + m_rs = jname.Split(','); + + + ds1 = Data_Selection(m_rs[0], 1); + ds2 = Data_Selection(m_rs[1], 2); + + mf.dataGridView1.DataSource = ds1.Tables[0]; + mf.dataGridView2.DataSource = ds2.Tables[0]; + + if (m_idx == 0) + { + Data_View(0, 0); + } + else + { + Data_View(0, m_idx); + SetDataText(m_idx); + } + + } + else if (idx == 1) + { + m_rs = jname.Split(','); + + if (m_sub == "예상체결") + { + if (jname.Contains("NXT") ) + { + MessageBox.Show("NXT 예상체결가 데이터가 없습니다."); + return; + } + + ds1 = jongmoke_value(m_rs[0]); + ds2 = jongmoke_value(m_rs[1]); + + mf.dataGridView1.DataSource = ds1.Tables[0]; + mf.dataGridView2.DataSource = ds2.Tables[0]; + + mf.KAScene.GetObject("title1").SetValue(ds1.Tables[0].Rows[0][2].ToString() + " 예상체결"); + mf.KAScene.GetObject("title2").SetValue(ds2.Tables[0].Rows[0][2].ToString() + " 예상체결"); + + mf.KAObject = mf.KAScene.GetObject("price1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0][3].ToString()))); + mf.KAObject = mf.KAScene.GetObject("price2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0][3].ToString()))); + + + mf.KAObject = mf.KAScene.GetObject("changePrice1_1"); + //mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0][6].ToString()))); + //----- + if (mf.dataGridView1.Rows[0].Cells[6].Value.ToString().Substring(0, 1) == "-") + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[6].Value.ToString().Substring(1)))); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[6].Value.ToString()))); + //----- + + + mf.KAObject = mf.KAScene.GetObject("changePrice1_2"); + //mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0][6].ToString()))); + + if (mf.dataGridView2.Rows[0].Cells[6].Value.ToString().Substring(0, 1) == "-") + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView2.Rows[0].Cells[6].Value.ToString().Substring(1)))); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView2.Rows[0].Cells[6].Value.ToString()))); + //----- + + mf.KAObject = mf.KAScene.GetObject("changePrice2_1"); + //mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0][6].ToString()))); + //----- + if (mf.dataGridView1.Rows[0].Cells[6].Value.ToString().Substring(0, 1) == "-") + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[6].Value.ToString().Substring(1)))); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[6].Value.ToString()))); + //----- + + + mf.KAObject = mf.KAScene.GetObject("changePrice2_2"); + //mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0][6].ToString()))); + + if (mf.dataGridView2.Rows[0].Cells[6].Value.ToString().Substring(0, 1) == "-") + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView2.Rows[0].Cells[6].Value.ToString().Substring(1)))); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView2.Rows[0].Cells[6].Value.ToString()))); + //----- + + mf.KAObject = mf.KAScene.GetObject("changePrice3_1"); + //mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0][6].ToString()))); + //----- + if (mf.dataGridView1.Rows[0].Cells[6].Value.ToString().Substring(0, 1) == "-") + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[6].Value.ToString().Substring(1)))); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[6].Value.ToString()))); + //----- + + + mf.KAObject = mf.KAScene.GetObject("changePrice3_2"); + //mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0][6].ToString()))); + + if (mf.dataGridView2.Rows[0].Cells[6].Value.ToString().Substring(0, 1) == "-") + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView2.Rows[0].Cells[6].Value.ToString().Substring(1)))); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView2.Rows[0].Cells[6].Value.ToString()))); + //----- + + mf.KAObject = mf.KAScene.GetObject("rate1_1"); + mf.KAObject.SetValue(Convert.ToDouble(ds1.Tables[0].Rows[0][9].ToString()).ToString("##0.00")); + mf.KAObject = mf.KAScene.GetObject("rate1_2"); + mf.KAObject.SetValue(Convert.ToDouble(ds2.Tables[0].Rows[0][9].ToString()).ToString("##0.00")); + + mf.KAObject = mf.KAScene.GetObject("rate2_1"); + mf.KAObject.SetValue(Convert.ToDouble(ds1.Tables[0].Rows[0][9].ToString()).ToString("##0.00")); + mf.KAObject = mf.KAScene.GetObject("rate2_2"); + mf.KAObject.SetValue(Convert.ToDouble(ds2.Tables[0].Rows[0][9].ToString()).ToString("##0.00")); + + mf.KAObject = mf.KAScene.GetObject("rate3_1"); + mf.KAObject.SetValue(Convert.ToDouble(ds1.Tables[0].Rows[0][9].ToString()).ToString("##0.00")); + mf.KAObject = mf.KAScene.GetObject("rate3_2"); + mf.KAObject.SetValue(Convert.ToDouble(ds2.Tables[0].Rows[0][9].ToString()).ToString("##0.00")); + + mf.KAScene.GetObject("wonText1").SetValue(""); + mf.KAScene.GetObject("wonText2").SetValue(""); + + mf.KAScene.GetObject("unitText1").SetValue("단위 : 원"); + mf.KAScene.GetObject("unitText2").SetValue("단위 : 원"); + + mf.setObjectStockChange(mf.KAObject, ds1.Tables[0].Rows[0][8].ToString(), 1); + mf.setObjectStockChange(mf.KAObject, ds2.Tables[0].Rows[0][8].ToString(), 2); + } + else + { + ds1 = jongmok_value(m_rs[0], 0); + ds2 = jongmok_value(m_rs[1], 1); + + mf.dataGridView1.DataSource = ds1.Tables[0]; + mf.dataGridView2.DataSource = ds2.Tables[0]; + + if (m_f[0] == 0 && m_f[1] == 0) + { + a_1 = 1; a_2 = 1; + b_1 = 2; b_2 = 2; + c_1 = 3; c_2 = 3; + d_1 = 6; d_2 = 6; + e_1 = 4; e_2 = 4; + mf.KAScene.GetObject("unitText1").SetValue("단위 : 원"); + mf.KAScene.GetObject("unitText2").SetValue("단위 : 원"); + + } + else if (m_f[0] == 0 && m_f[1] == 1) + { + a_1 = 1; a_2 = 0; + b_1 = 2; b_2 = 1; + c_1 = 3; c_2 = 3; + d_1 = 6; d_2 = 4; + e_1 = 4; e_2 = 2; + mf.KAScene.GetObject("unitText1").SetValue("단위 : 원"); + mf.KAScene.GetObject("unitText2").SetValue("단위 : 달러"); + } + else if (m_f[0] == 1 && m_f[1] == 0) + { + a_1 = 0; a_2 = 1; + b_1 = 1; b_2 = 2; + c_1 = 3; c_2 = 3; + d_1 = 4; d_2 = 6; + e_1 = 2; e_2 = 4; + mf.KAScene.GetObject("unitText1").SetValue("단위 : 달러"); + mf.KAScene.GetObject("unitText2").SetValue("단위 : 원"); + } + + else + { + a_1 = 0; a_2 = 0; + b_1 = 1; b_2 = 1; + c_1 = 3; c_2 = 3; + d_1 = 4; d_2 = 4; + e_1 = 2; e_2 = 2; + mf.KAScene.GetObject("unitText1").SetValue("단위 : 달러"); + mf.KAScene.GetObject("unitText2").SetValue("단위 : 달러"); + } + + + mf.KAScene.GetObject("title1").SetValue(ds1.Tables[0].Rows[0][a_1].ToString()); + mf.KAScene.GetObject("title2").SetValue(ds2.Tables[0].Rows[0][a_2].ToString()); + + + //===========거래소 표시=========== + string market1, market2, mart1, mart2; + string ss = ds1.Tables[0].Columns.Count.ToString(); + string ss1 = ds2.Tables[0].Columns.Count.ToString(); + + if (ds1.Tables[0].Columns.Count < 8) // 해외 + market1 = "WORLD"; + else + market1 = ds1.Tables[0].Rows[0][7].ToString(); + + // string market2 = ds2.Tables[0].Rows[0][7].ToString(); + if (ds2.Tables[0].Columns.Count < 8) // 해외 + market2 = "WORLD"; + else + market2 = ds2.Tables[0].Rows[0][7].ToString(); + + + string fileName1, fileName2 = ""; + string exe_folder = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + + if (market1.Contains("NXT")) // NXT일때 + { + mart1 = "NXT"; + fileName1 = exe_folder + "\\Cuts\\Images\\" + "NXT.png"; + } + else if (market1 == "WORLD") // 해외 + { + mart1 = "WORLD"; + fileName1 = ""; + } + else // KRX일때 + { + mart1 = "KRX"; + fileName1 = exe_folder + ".\\Cuts\\Images\\" + "KRX.png"; + } + + if (market2.Contains("NXT")) + { + mart2 = "NXT"; + fileName2 = exe_folder + "\\Cuts\\Images\\" + "NXT.png"; + } + else if (market2 == "WORLD") // 해외 + { + mart2 = "WORLD"; + fileName2 = ""; + } + else + { + mart2 = "KRX"; + fileName2 = exe_folder + ".\\Cuts\\Images\\" + "KRX.png"; + } + + if ((mart1 == "NXT") || (mart1 == "KRX")) // NXT or KRX가 일때 + { + mf.KAObject = mf.KAScene.GetObject("mart1"); + mf.KAObject.SetValue(fileName1); + + mf.KAObject = mf.KAScene.GetObject("mart1"); + mf.KAObject.SetVisible(1); + + DateTime now = DateTime.Now; + DateTime compareTime = new DateTime(now.Year, now.Month, now.Day, 15, 30, 0); + + if (now > compareTime) // 현재 시간은 15시 30분보다 큽니다 + { + if (mart1 == "KRX") + { + mf.KAObject = mf.KAScene.GetObject("end1"); + mf.KAObject.SetVisible(1); + } + } + else // 현재 시간은 15시 30분 이하 + { + mf.KAObject = mf.KAScene.GetObject("end1"); + mf.KAObject.SetVisible(0); + } + } + else + { + mf.KAObject = mf.KAScene.GetObject("mart1"); + mf.KAObject.SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("end1"); + mf.KAObject.SetVisible(0); + } + + if ((mart2 == "NXT") || (mart2 == "KRX")) // NXT or KRX가 일때 + { + mf.KAObject = mf.KAScene.GetObject("mart2"); + mf.KAObject.SetValue(fileName2); + + mf.KAObject = mf.KAScene.GetObject("mart2"); + mf.KAObject.SetVisible(1); + + DateTime now = DateTime.Now; + DateTime compareTime = new DateTime(now.Year, now.Month, now.Day, 15, 30, 0); + + if (now > compareTime) // 현재 시간은 15시 30분보다 큽니다. + { + if (mart2 == "KRX") + { + mf.KAObject = mf.KAScene.GetObject("end2"); + mf.KAObject.SetVisible(1); + } + } + else // 현재 시간은 15시 30분 이하입니다. + { + mf.KAObject = mf.KAScene.GetObject("end2"); + mf.KAObject.SetVisible(0); + } + } + else + { + mf.KAObject = mf.KAScene.GetObject("mart2"); + mf.KAObject.SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("end2"); + mf.KAObject.SetVisible(0); + } + + // 둘다 KRX일경우는 안나오게 + if ((mart1 == "KRX") && (mart2 == "KRX")) + { + mf.KAObject = mf.KAScene.GetObject("mart1"); + mf.KAObject.SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("mart2"); + mf.KAObject.SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("end1"); + mf.KAObject.SetVisible(0); + + mf.KAObject = mf.KAScene.GetObject("end2"); + mf.KAObject.SetVisible(0); + } + + //if ((market1.Contains("NXT")) || (market2.Contains("NXT"))) // 둘중에 하나라도 있을때 표시 + //{ + // mf.KAObject = mf.KAScene.GetObject("mart1"); + // mf.KAObject.SetVisible(1); + + // mf.KAObject = mf.KAScene.GetObject("mart2"); + // mf.KAObject.SetVisible(1); + //} + //else + //{ + // mf.KAObject = mf.KAScene.GetObject("mart1"); + // mf.KAObject.SetVisible(0); + + // mf.KAObject = mf.KAScene.GetObject("mart2"); + // mf.KAObject.SetVisible(0); + + // mf.KAObject = mf.KAScene.GetObject("end1"); + // mf.KAObject.SetVisible(0); + + // mf.KAObject = mf.KAScene.GetObject("end2"); + // mf.KAObject.SetVisible(0); + //} + //================================= + + mf.KAObject = mf.KAScene.GetObject("price1"); + + if (ds1.Tables[0].Rows[0][b_1].ToString().Contains(".")) + mf.KAObject.SetValue(ds1.Tables[0].Rows[0][b_1].ToString()); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0][b_1].ToString()))); + + //---- + + mf.KAObject = mf.KAScene.GetObject("price2"); + + if (ds2.Tables[0].Rows[0][b_2].ToString().Contains(".")) + mf.KAObject.SetValue(ds2.Tables[0].Rows[0][b_2].ToString()); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0][b_2].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice1_1"); + if (ds1.Tables[0].Rows[0][c_1].ToString().Contains(".")) + mf.KAObject.SetValue(ds1.Tables[0].Rows[0][c_1].ToString()); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0][c_1].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice1_2"); + + if (ds2.Tables[0].Rows[0][c_2].ToString().Contains(".")) + mf.KAObject.SetValue(ds2.Tables[0].Rows[0][c_1].ToString()); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0][c_2].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice2_1"); + + if (ds1.Tables[0].Rows[0][c_1].ToString().Contains(".")) + mf.KAObject.SetValue(ds1.Tables[0].Rows[0][c_1].ToString()); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0][c_1].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice2_2"); + + if (ds2.Tables[0].Rows[0][c_2].ToString().Contains(".")) + mf.KAObject.SetValue(ds2.Tables[0].Rows[0][c_1].ToString()); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0][c_2].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice3_1"); + + if (ds1.Tables[0].Rows[0][c_1].ToString().Contains(".")) + mf.KAObject.SetValue(ds1.Tables[0].Rows[0][c_1].ToString()); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds1.Tables[0].Rows[0][c_1].ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice3_2"); + + if (ds2.Tables[0].Rows[0][c_2].ToString().Contains(".")) + mf.KAObject.SetValue(ds2.Tables[0].Rows[0][c_1].ToString()); + else + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(ds2.Tables[0].Rows[0][c_2].ToString()))); + + + mf.KAObject = mf.KAScene.GetObject("rate1_1"); + mf.KAObject.SetValue(Convert.ToDouble(ds1.Tables[0].Rows[0][d_1].ToString()).ToString("##0.00")); + mf.KAObject = mf.KAScene.GetObject("rate1_2"); + mf.KAObject.SetValue(Convert.ToDouble(ds2.Tables[0].Rows[0][d_2].ToString()).ToString("##0.00")); + + mf.KAObject = mf.KAScene.GetObject("rate2_1"); + mf.KAObject.SetValue(Convert.ToDouble(ds1.Tables[0].Rows[0][d_1].ToString()).ToString("##0.00")); + mf.KAObject = mf.KAScene.GetObject("rate2_2"); + mf.KAObject.SetValue(Convert.ToDouble(ds2.Tables[0].Rows[0][d_2].ToString()).ToString("##0.00")); + + mf.KAObject = mf.KAScene.GetObject("rate3_1"); + mf.KAObject.SetValue(Convert.ToDouble(ds1.Tables[0].Rows[0][d_1].ToString()).ToString("##0.00")); + mf.KAObject = mf.KAScene.GetObject("rate3_2"); + mf.KAObject.SetValue(Convert.ToDouble(ds2.Tables[0].Rows[0][d_2].ToString()).ToString("##0.00")); + + mf.KAScene.GetObject("wonText1").SetValue(""); + mf.KAScene.GetObject("wonText2").SetValue(""); + + + + mf.setObjectStockChange(mf.KAObject, ds1.Tables[0].Rows[0][e_1].ToString(), 1); + mf.setObjectStockChange(mf.KAObject, ds2.Tables[0].Rows[0][e_2].ToString(), 2); + + } + mf.m_chkdata = true; + } + else if (idx == 3) + { + m_rs = jname.Split('-'); + if (code.Contains("코스피")) + { + ds1 = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.지수업종, 국내시장종류.KOSPI, m_rs[0]); + ds2 = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.지수업종, 국내시장종류.KOSPI, m_rs[1]); + } + else + { + ds1 = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.지수업종, 국내시장종류.KOSDAQ, m_rs[0]); + ds2 = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.지수업종, 국내시장종류.KOSDAQ, m_rs[1]); + } + + mf.dataGridView1.DataSource = ds1.Tables[0]; + mf.dataGridView2.DataSource = ds2.Tables[0]; + + Data_View(0, 0); + } + } + catch (Exception) + { + mf.m_chkdata = false; + } + } + + private void SetDataText(int idx) + { + if (idx == 1) + { + mf.KAScene.GetObject("title1").SetValue(mf.dataGridView1.Rows[0].Cells[1].Value.ToString()); + mf.KAObject = mf.KAScene.GetObject("price1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[2].Value.ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice1"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView1.Rows[0].Cells[3].Value.ToString()))); + + mf.KAObject = mf.KAScene.GetObject("rate1"); + mf.KAObject.SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[6].Value.ToString()).ToString("##0.00")); + + mf.KAScene.GetObject("wonText1").SetValue(""); + mf.KAScene.GetObject("unitText1").SetValue("단위 : 원"); + + mf.setObjectStockChange(mf.KAObject, mf.dataGridView1.Rows[0].Cells[4].Value.ToString(), 1); + } + else + { + mf.KAScene.GetObject("title2").SetValue(mf.dataGridView2.Rows[0].Cells[1].Value.ToString()); + mf.KAObject = mf.KAScene.GetObject("price2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView2.Rows[0].Cells[2].Value.ToString()))); + + mf.KAObject = mf.KAScene.GetObject("changePrice2"); + mf.KAObject.SetValue(String.Format("{0:#,##0}", Convert.ToInt64(mf.dataGridView2.Rows[0].Cells[3].Value.ToString()))); + + mf.KAObject = mf.KAScene.GetObject("rate2"); + mf.KAObject.SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[6].Value.ToString()).ToString("##0.00")); + + mf.KAScene.GetObject("wonText2").SetValue(""); + mf.KAScene.GetObject("unitText2").SetValue("단위 : 원"); + + mf.setObjectStockChange(mf.KAObject, mf.dataGridView2.Rows[0].Cells[4].Value.ToString(), 2); + } + } + + private DataSet jongmok_value(string jname, int idx) + { + DataSet ds = null; + if (jname.Contains("NXT") == false) + { + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.KOSPI, jname); + } + + } + } + else + { + foreach (DataRow r in mf.mDTNxtkospi.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.NXT_KOSPI, jname.Replace("(NXT)", "")); + } + } + + } + + if (jname.Contains("NXT") == false) + { + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.KOSDAQ, jname); + } + } + } + else + { + foreach (DataRow r in mf.mDTNxtkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.NXT_KOSDAQ, jname.Replace("(NXT)", "")); + } + } + } + + //if (jname.Contains("NXT")) + //{ + // foreach (DataRow r in mf.mDTNxtkospi.Rows) + // { + // if (r[0].Equals(jname)) + // { + // ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.NXT_KOSPI, jname.Replace("(NXT)", "")); + // } + // } + //} + + + //if (jname.Contains("NXT")) + //{ + // foreach (DataRow r in mf.mDTNxtkosdaq.Rows) + // { + // if (r[0].Equals(jname)) + // { + // ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.NXT_KOSDAQ, jname.Replace("(NXT)", "")); + // } + // } + //} + + m_f[idx] = 0; + + if (ds == null) + { + //ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목현재가, 국내시장종류.KOSDAQ, jname); + ds = DataManager.getInstance().createPlateData(판1그래프데이터해외류.해외종목, jname); + + m_f[idx] = 1; + + } + return ds; + } + + private DataSet jongmoke_value(string jname) + { + DataSet ds = null; + + if (jname.Contains("NXT") == false) + { + foreach (DataRow r in mf.mDTkospi.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목예상체결가, 국내시장종류.KOSPI, jname); + } + } + } + + if (jname.Contains("NXT") == false) + { + foreach (DataRow r in mf.mDTkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목예상체결가, 국내시장종류.KOSDAQ, jname); + } + } + } + + if (jname.Contains("NXT")) + { + foreach (DataRow r in mf.mDTNxtkospi.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목예상체결가, 국내시장종류.NXT_KOSPI, jname.Replace("(NXT)", "")); + } + } + } + + if (jname.Contains("NXT")) + { + foreach (DataRow r in mf.mDTNxtkosdaq.Rows) + { + if (r[0].Equals(jname)) + { + ds = DataManager.getInstance().createPlateData(판1그래프데이터산업및종목류.종목예상체결가, 국내시장종류.NXT_KOSDAQ, jname.Replace("(NXT)", "")); + } + } + } + + return ds; + } + + private DataSet Data_Selection(string jname, int idx) + { + DataSet ds = null; + + if (m_sub == "예상체결") + { + if (jname.Contains("_NXT")) + { + MessageBox.Show("NXT 예상체결가 Data가 없습니다."); + } + else if (jname.Contains("코스피")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.예상지수, 국내지수종류.KOSPI); + else if (jname.Contains("코스닥")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.예상지수, 국내지수종류.KOSDAQ); + else if (jname.Contains("코스피200")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.예상지수, 국내지수종류.KOSPI200); + else if (jname.Contains("선물")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.예상지수, 국내지수종류.선물); + else if (jname.Contains("KRX100")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.예상지수, 국내지수종류.KRX100); + + else + { + ds = jongmoke_value(jname); + m_idx = idx; + } + } + else + { + if (jname.Contains("_NXT")) + { + MessageBox.Show("NXT 지수 Data가 없습니다."); + } + else + if (jname.Contains("코스피")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.현재지수, 국내지수종류.KOSPI); + else if (jname.Contains("코스닥")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.현재지수, 국내지수종류.KOSDAQ); + else if (jname.Contains("코스피200")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.현재지수, 국내지수종류.KOSPI200); + else if (jname.Contains("선물")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.현재지수, 국내지수종류.선물); + else if (jname.Contains("KRX100")) + ds = DataManager.getInstance().createPlateData(판1그래프데이터지수류.현재지수, 국내지수종류.KRX100); + + else if (jname.Contains("원달러")) + ds = DataManager.getInstance().createPlateData(원환율.원달러); + else if (jname.Contains("원엔")) + ds = DataManager.getInstance().createPlateData(원환율.원엔); + else if (jname.Contains("원위엔")) + ds = DataManager.getInstance().createPlateData(원환율.원위엔); + else if (jname.Contains("원유로")) + ds = DataManager.getInstance().createPlateData(원환율.원유로); + + else if (jname.Contains("다우")) + ds = DataManager.getInstance().createPlateData(해외지수종류.다우, "DJI@DJI"); + else if (jname.Contains("나스닥")) + ds = DataManager.getInstance().createPlateData(해외지수종류.나스닥, "NAS@IXIC"); + else if (jname.Contains("S&P")) + ds = DataManager.getInstance().createPlateData(해외지수종류.SNP, "SPI@SPX"); + else if (jname.Contains("독일")) + ds = DataManager.getInstance().createPlateData(해외지수종류.독일, "XTR@DAX30"); + else if (jname.Contains("영국")) + ds = DataManager.getInstance().createPlateData(해외지수종류.영국, "LNS@FTSE100"); + else if (jname.Contains("프랑스")) + ds = DataManager.getInstance().createPlateData(해외지수종류.프랑스, "PAS@CAC40"); + else if (jname.Contains("니케이")) + ds = DataManager.getInstance().createPlateData(해외지수종류.니케이, "NII@NI225"); + else if (jname.Contains("중국 상해")) + ds = DataManager.getInstance().createPlateData(해외지수종류.중국상해, "SHS@000001"); + else if (jname.Contains("홍콩 항셍")) + ds = DataManager.getInstance().createPlateData(해외지수종류.홍콩항셍, "HSI@HSI"); + else if (jname.Contains("대만 가권")) + ds = DataManager.getInstance().createPlateData(해외지수종류.대만가권, "TWS@TI01"); + else if (jname.Contains("싱가포르 지수")) + ds = DataManager.getInstance().createPlateData(해외지수종류.싱가포르지수, "SGI@STI"); + else if (jname.Contains("태국 지수")) + ds = DataManager.getInstance().createPlateData(해외지수종류.태국지수, "THI@SET"); + else if (jname.Contains("필리핀 지수")) + ds = DataManager.getInstance().createPlateData(해외지수종류.필리핀, "PHI@COMP"); + else if (jname.Contains("말레이시아 지수")) + ds = DataManager.getInstance().createPlateData(해외지수종류.말레이시아, "IDI@JKSE"); + else if (jname.Contains("인도네시아 지수")) + ds = DataManager.getInstance().createPlateData(해외지수종류.인도네시아, "MYI@KLSE"); + + else + { + ds = jongmok_value(jname, 0); + m_idx = idx; + } + } + + return ds; + } + + private void Data_View(int idx, int index) + { + int ix1_1 = 0; int ix2_1 = 0; int ix3_1 = 0; int ix4_1 = 0; int ix5_1 = 0; + int ix1_2 = 0; int ix2_2 = 0; int ix3_2 = 0; int ix4_2 = 0; int ix5_2 = 0; + + if (!m_rs[0].Contains("환율")) + { + ix1_1 = 0; ix2_1 = 1; ix3_1 = 2; ix4_1 = 3; ix5_1 = 4; + if (m_code == "선물") + ix5_1 = 7; + } + else if (m_rs[0].Contains("환율")) + { + ix1_1 = 1; ix2_1 = 2; ix3_1 = 4; ix4_1 = 3; ix5_1 = 5; + } + if (!m_rs[1].Contains("환율")) + { + ix1_2 = 0; ix2_2 = 1; ix3_2 = 2; ix4_2 = 3; ix5_2 = 4; + if (m_code == "선물") + ix5_2 = 7; + } + else if (m_rs[1].Contains("환율")) + { + ix1_2 = 1; ix2_2 = 2; ix3_2 = 4; ix4_2 = 3; ix5_2 = 5; + } + + if (mf.dataGridView1.RowCount <= 1) + mf.m_chkdata = false; + else + { + if (m_code.Contains("코스피")) + { + if (index == 0) + { + mf.KAScene.GetObject("title1").SetValue("코스피 - " + mf.dataGridView1.Rows[0].Cells[ix1_1].Value.ToString()); + mf.KAScene.GetObject("title2").SetValue("코스피 - " + mf.dataGridView2.Rows[0].Cells[ix1_2].Value.ToString()); + } + else if (index == 1) + mf.KAScene.GetObject("title2").SetValue("코스피 - " + mf.dataGridView2.Rows[0].Cells[ix1_2].Value.ToString()); + else if (index == 2) + mf.KAScene.GetObject("title1").SetValue("코스피 - " + mf.dataGridView1.Rows[0].Cells[ix1_1].Value.ToString()); + } + else if (m_code.Contains("코스닥")) + { + if (index == 0) + { + mf.KAScene.GetObject("title1").SetValue("코스닥 - " + mf.dataGridView1.Rows[0].Cells[ix1_1].Value.ToString()); + mf.KAScene.GetObject("title2").SetValue("코스닥 - " + mf.dataGridView2.Rows[0].Cells[ix1_2].Value.ToString()); + } + else if (index == 1) + mf.KAScene.GetObject("title2").SetValue("코스닥 - " + mf.dataGridView2.Rows[0].Cells[ix1_2].Value.ToString()); + else if (index == 2) + mf.KAScene.GetObject("title1").SetValue("코스닥 - " + mf.dataGridView1.Rows[0].Cells[ix1_1].Value.ToString()); + } + else + { + if (index == 0) + { + mf.KAScene.GetObject("title1").SetValue(mf.dataGridView1.Rows[0].Cells[ix1_1].Value.ToString()); + mf.KAScene.GetObject("title2").SetValue(mf.dataGridView2.Rows[0].Cells[ix1_2].Value.ToString()); + } + else if (index == 1) + mf.KAScene.GetObject("title2").SetValue(mf.dataGridView2.Rows[0].Cells[ix1_2].Value.ToString()); + else if (index == 2) + mf.KAScene.GetObject("title1").SetValue(mf.dataGridView1.Rows[0].Cells[ix1_1].Value.ToString()); + } + + if (index == 0) + { + mf.KAScene.GetObject("price1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix2_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("price2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix2_2].Value.ToString()).ToString("#,##0.00")); + } + else if (index == 1) + mf.KAScene.GetObject("price2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix2_2].Value.ToString()).ToString("#,##0.00")); + else if (index == 2) + mf.KAScene.GetObject("price1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix2_1].Value.ToString()).ToString("#,##0.00")); + + if (index == 0) + { + if (mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString().Substring(0, 1) == "-") + { + mf.KAScene.GetObject("changePrice1_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString().Substring(1)).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice2_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString().Substring(1)).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice3_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString().Substring(1)).ToString("#,##0.00")); + } + + else + { + mf.KAScene.GetObject("changePrice1_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice2_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice3_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString()).ToString("#,##0.00")); + } + + + if (mf.dataGridView2.Rows[0].Cells[ix4_2].Value.ToString().Substring(0, 1) == "-") + { + + mf.KAScene.GetObject("changePrice1_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix4_2].Value.ToString().Substring(1)).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice2_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix4_2].Value.ToString().Substring(1)).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice3_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix4_2].Value.ToString().Substring(1)).ToString("#,##0.00")); + } + + else + { + mf.KAScene.GetObject("changePrice1_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix4_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice2_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix4_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice3_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix4_2].Value.ToString()).ToString("#,##0.00")); + } + + } + else if (index == 1) + { + if (mf.dataGridView2.Rows[0].Cells[ix4_2].Value.ToString().Substring(0, 1) == "-") + { + mf.KAScene.GetObject("changePrice1_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix4_2].Value.ToString().Substring(1)).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice2_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix4_2].Value.ToString().Substring(1)).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice3_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix4_2].Value.ToString().Substring(1)).ToString("#,##0.00")); + } + + else + { + mf.KAScene.GetObject("changePrice1_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix4_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice2_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix4_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice3_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix4_2].Value.ToString()).ToString("#,##0.00")); + } + + } + else if (index == 2) + { + if (mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString().Substring(0, 1) == "-") + { + mf.KAScene.GetObject("changePrice1_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString().Substring(1)).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice2_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString().Substring(1)).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice3_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString().Substring(1)).ToString("#,##0.00")); + } + else + { + mf.KAScene.GetObject("changePrice1_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice2_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("changePrice3_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix4_1].Value.ToString()).ToString("#,##0.00")); + } + + } + + if (index == 0) + { + if (mf.dataGridView1.Rows[0].Cells[ix3_1].Value.ToString() == "-") + { + if (mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString().Substring(0, 1) == "-") + { + mf.KAScene.GetObject("rate1_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate2_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate3_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + } + + else + { + mf.KAScene.GetObject("rate1_1").SetValue("-" + Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate2_1").SetValue("-" + Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate3_1").SetValue("-" + Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + } + + } + else + { + mf.KAScene.GetObject("rate1_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate2_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate3_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + } + + + if (mf.dataGridView2.Rows[0].Cells[ix3_2].Value.ToString() == "-") + { + if (mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString().Substring(0, 1) == "-") + { + mf.KAScene.GetObject("rate1_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate2_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate3_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + } + + else + { + mf.KAScene.GetObject("rate1_2").SetValue("-" + Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate2_2").SetValue("-" + Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate3_2").SetValue("-" + Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + } + + } + else + { + mf.KAScene.GetObject("rate1_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate2_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate3_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + } + } + else if (index == 1) + { + if (mf.dataGridView2.Rows[0].Cells[ix3_2].Value.ToString() == "-") + { + if (mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString().Substring(0, 1) == "-") + { + mf.KAScene.GetObject("rate1_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate2_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate3_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + } + + else + { + mf.KAScene.GetObject("rate1_2").SetValue("-" + Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate2_2").SetValue("-" + Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate3_2").SetValue("-" + Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + } + + } + + else + { + mf.KAScene.GetObject("rate1_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate2_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate3_2").SetValue(Convert.ToDouble(mf.dataGridView2.Rows[0].Cells[ix5_2].Value.ToString()).ToString("#,##0.00")); + } + } + else if (index == 2) + { + if (mf.dataGridView1.Rows[0].Cells[ix3_1].Value.ToString() == "-") + { + if (mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString().Substring(0, 1) == "-") + { + mf.KAScene.GetObject("rate1_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate2_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate3_1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + } + + else + { + mf.KAScene.GetObject("rate1_1").SetValue("-" + Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate2_1").SetValue("-" + Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + mf.KAScene.GetObject("rate3_1").SetValue("-" + Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + } + + } + else + { + mf.KAScene.GetObject("rate1").SetValue(Convert.ToDouble(mf.dataGridView1.Rows[0].Cells[ix5_1].Value.ToString()).ToString("#,##0.00")); + } + } + + mf.KAScene.GetObject("wonText1").SetValue(""); + mf.KAScene.GetObject("wonText2").SetValue(""); + + if (index == 0) + { + if (idx == 0) + { + mf.KAScene.GetObject("unitText1").SetValue("단위 : p"); + mf.KAScene.GetObject("unitText2").SetValue("단위 : p"); + } + + else + { + mf.KAScene.GetObject("unitText1").SetValue("단위 : 원"); + mf.KAScene.GetObject("unitText2").SetValue("단위 : 원"); + } + } + else if (index == 1) + { + if (idx == 0) + { + mf.KAScene.GetObject("unitText2").SetValue("단위 : p"); + } + + else + { + mf.KAScene.GetObject("unitText2").SetValue("단위 : 원"); + } + } + else if (index == 1) + { + if (idx == 0) + { + mf.KAScene.GetObject("unitText1").SetValue("단위 : p"); + } + + else + { + mf.KAScene.GetObject("unitText1").SetValue("단위 : 원"); + } + } + + if (index == 0) + { + kiho1 = mf.dataGridView1.Rows[0].Cells[ix3_1].Value.ToString(); + kiho2 = mf.dataGridView2.Rows[0].Cells[ix3_2].Value.ToString(); + + mf.setObjectStockChange(mf.KAObject, kiho1, 1); + mf.setObjectStockChange(mf.KAObject, kiho2, 2); + } + else if (index == 1) + { + kiho2 = mf.dataGridView2.Rows[0].Cells[ix3_2].Value.ToString(); + mf.setObjectStockChange(mf.KAObject, kiho2, 2); + } + else if (index == 2) + { + kiho1 = mf.dataGridView1.Rows[0].Cells[ix3_1].Value.ToString(); + mf.setObjectStockChange(mf.KAObject, kiho1, 1); + } + mf.m_chkdata = true; + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s8067.cs b/MBN_STOCK_N/Scene/s8067.cs new file mode 100644 index 0000000..09655bd --- /dev/null +++ b/MBN_STOCK_N/Scene/s8067.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s8067 //글로벌 증시 지도 + { + MainForm mf = null; + + public s8067(Form frm, string jname) + { + try + { + mf = (MainForm)frm; + double account = 0.0; + + DataSet ds = DataManager.getInstance().createWorldMapData(지도데이터분류.글로벌); + mf.dataGridView1.DataSource = ds.Tables[0]; + + if (mf.dataGridView1.RowCount <= 1) + { + mf.m_chkdata = false; + } + else + { + foreach (DataRow dr in ds.Tables[0].Rows) + { + + string targetName = dr["NAME"].ToString(); + mf.KAObject = mf.KAScene.GetObject("price_" + targetName); + mf.KAObject.SetValue(String.Format("{0:#,##0.###}", Convert.ToDouble(dr["CURR_PRICE"].ToString()))); + mf.KAObject = mf.KAScene.GetObject("rate_" + targetName); + mf.KAObject.SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(dr["RATE"].ToString()))); + + string targetRate = dr["CHG_TYPE"].ToString(); + + mf.KAObject = mf.KAScene.GetObject("up_" + targetName); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("down_" + targetName); + mf.KAObject.SetVisible(0); + mf.KAObject = mf.KAScene.GetObject("flat_" + targetName); + mf.KAObject.SetVisible(0); + + if (targetRate == "+") + { + mf.KAObject = mf.KAScene.GetObject("bg_" + targetName); + mf.KAObject.SetFaceColor(170, 0, 0, 255); + mf.KAObject = mf.KAScene.GetObject("up_" + targetName); + mf.KAObject.SetVisible(1); + + } + else if (targetRate == "-") + { + account = Convert.ToDouble(dr["NET_CHG"].ToString()); + + if (account == 0.0) + { + mf.KAObject = mf.KAScene.GetObject("bg"); + mf.KAObject.SetFaceColor(191, 191, 191, 255); + mf.KAObject = mf.KAScene.GetObject("flat_" + targetName); + mf.KAObject.SetVisible(1); + } + else + { + mf.KAObject = mf.KAScene.GetObject("bg_" + targetName); + mf.KAObject.SetFaceColor(1, 101, 255, 255); + mf.KAObject = mf.KAScene.GetObject("down_" + targetName); + mf.KAObject.SetVisible(1); + + } + + } + else + { + mf.KAObject = mf.KAScene.GetObject("bg"); + mf.KAObject.SetFaceColor(191, 191, 191, 255); + mf.KAObject = mf.KAScene.GetObject("flat_" + targetName); + mf.KAObject.SetVisible(1); + } + } + mf.m_chkdata = true; + } + + + } + catch (Exception) + { + + } + } + } +} diff --git a/MBN_STOCK_N/Scene/s8086.cs b/MBN_STOCK_N/Scene/s8086.cs new file mode 100644 index 0000000..52e774d --- /dev/null +++ b/MBN_STOCK_N/Scene/s8086.cs @@ -0,0 +1,107 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using K3DAsyncEngineLib; +using System.Data; +using MMoneyCoderSharp.Data; +using static MMoneyCoderSharp.DBDefine; + +namespace MBN_STOCK_N +{ + class s8086 //이미지 그래프 (유가, 금) + { + MainForm mf = null; + //DBCon m_db = new DBCon(); + + public s8086(Form frm, string jname) + { + try + { + + DataSet ds = null; + string query = string.Empty; + string kiho = string.Empty; + mf = (MainForm)frm; + + string vpath = mf.T2S_FOLDER_PATH + "Video\\20201008_"; + string nation = string.Empty; + //지수 (코스피, 코스닥, 코스피 200, 선물, KRX 100 + + if (jname.Contains("유가")) + { + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.유가_두바이_WTI_브랜트); + mf.KAScene.GetObject("unit").SetValue("단위: 달러/배럴"); ; + } + else + { + ds = DataManager.getInstance().createPlate3Data_Cut4(판3데이터분류.광물); + mf.KAScene.GetObject("unit").SetValue("단위: 달러/온스"); ; + } + + mf.dataGridView1.DataSource = ds.Tables[0]; + + if (mf.dataGridView1.RowCount <= 1) + mf.m_chkdata = false; + else + { + foreach (DataRow dr in ds.Tables[0].Rows) + { + if (jname.Contains(dr[1].ToString())) + { + mf.KAObject = mf.KAScene.GetObject("title"); + mf.KAObject.SetValue(dr[1].ToString()); + + + mf.KAScene.GetObject("price").SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(dr[2].ToString()))); + mf.KAScene.GetObject("changePrice").SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(dr[3].ToString()))); + + + mf.KAScene.GetObject("rate").SetValue(String.Format("{0:#,##0.00}", Convert.ToDouble(dr[5].ToString()))); + + //mf.KAObject = mf.KAScene.GetObject("rate"); + //mf.KAObject.SetValue(dr[5].ToString().Replace("-", "")); + + if (dr[4].ToString().Equals("+")) + { + mf.KAObject = mf.KAScene.GetObject("bg"); + mf.KAObject.SetFaceColor(172, 0, 0, 255); + mf.KAObject = mf.KAScene.GetObject("changePrice"); + mf.KAObject.SetFaceColor(172, 0, 0, 255); + mf.KAObject = mf.KAScene.GetObject("rate"); + mf.KAObject.SetFaceColor(172, 0, 0, 255); + + } + else if (dr[4].ToString().Equals("-")) + { + mf.KAObject = mf.KAScene.GetObject("bg"); + mf.KAObject.SetFaceColor(14, 100, 188, 255); + mf.KAObject = mf.KAScene.GetObject("changePrice"); + mf.KAObject.SetFaceColor(14, 100, 188, 255); + mf.KAObject = mf.KAScene.GetObject("rate"); + mf.KAObject.SetFaceColor(14, 100, 188, 255); + } + else + { + mf.KAObject = mf.KAScene.GetObject("bg"); + mf.KAObject.SetFaceColor(95, 95, 95, 255); + mf.KAObject = mf.KAScene.GetObject("changePrice"); + mf.KAObject.SetFaceColor(95, 95, 95, 255); + mf.KAObject = mf.KAScene.GetObject("rate"); + mf.KAObject.SetFaceColor(95, 95, 95, 255); + } + + } + } + mf.m_chkdata = true; + } + } + catch (Exception) + { + + } + } + } +} diff --git a/MBN_STOCK_N/packages.config b/MBN_STOCK_N/packages.config new file mode 100644 index 0000000..52fa35f --- /dev/null +++ b/MBN_STOCK_N/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file