pcb_calculator: enhancement in Regulators page dialog:
* support for 3 terminal regulators * add a data file management to store parameters for regulators ( name, vref value, Iadj value, type) Needs some refinements, but it is already very useable. Commit dialog page setting patch from Alexander Zakamaldin
This commit is contained in:
parent
d7feb9ab45
commit
7ce97878e8
|
@ -438,6 +438,9 @@ limits\n%.1f - %.1f %s!\nSelect another custom paper size?" ),
|
|||
|
||||
PAGE_INFO::SetCustomWidthMils( m_layout_size.x );
|
||||
PAGE_INFO::SetCustomHeightMils( m_layout_size.y );
|
||||
m_pageInfo.SetWidthMils( m_layout_size.x );
|
||||
m_pageInfo.SetHeightMils( m_layout_size.y );
|
||||
m_pageInfo.SetPortrait( m_layout_size.x < m_layout_size.y );
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -18,10 +18,12 @@ set(PCB_CALCULATOR_SRCS
|
|||
params_read_write.cpp
|
||||
pcb_calculator.cpp
|
||||
pcb_calculator_frame.cpp
|
||||
datafile_read_write.cpp
|
||||
regulators_funct.cpp
|
||||
tracks_width_versus_current.cpp
|
||||
transline_ident.cpp
|
||||
UnitSelector.cpp
|
||||
pcb_calculator_datafile_keywords.cpp
|
||||
transline/transline.cpp
|
||||
transline/c_microstrip.cpp
|
||||
transline/microstrip.cpp
|
||||
|
@ -33,6 +35,7 @@ set(PCB_CALCULATOR_SRCS
|
|||
transline_dlg_funct.cpp
|
||||
attenuators/attenuator_classes.cpp
|
||||
dialogs/pcb_calculator_frame_base.cpp
|
||||
dialogs/dialog_regulator_data_base.cpp
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
|
@ -54,6 +57,14 @@ if(APPLE)
|
|||
set(MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
|
||||
endif(APPLE)
|
||||
|
||||
# auto-generate pcb_calculator_datafile.h and pcb_calculator_datafile_keywords.cpp
|
||||
# for the storage data file format.
|
||||
make_lexer(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/pcb_calculator_datafile.keywords
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/pcb_calculator_datafile_lexer.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/pcb_calculator_datafile_keywords.cpp
|
||||
PCBCALC_DATA_T
|
||||
)
|
||||
|
||||
|
||||
add_executable(pcb_calculator WIN32 MACOSX_BUNDLE
|
||||
|
|
|
@ -0,0 +1,369 @@
|
|||
/* XPM */
|
||||
static const char *regul_3pins_xpm[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"255 170 193 2",
|
||||
"+X c Black",
|
||||
"2. c #E7DA69",
|
||||
".X c #F2F26C",
|
||||
"( c #DFC960",
|
||||
"= c #810000",
|
||||
"w. c #CFA750",
|
||||
"$ c #F2F274",
|
||||
"Y. c #840A05",
|
||||
"L c #B77437",
|
||||
"/. c #0303FD",
|
||||
";. c #D2AE53",
|
||||
"w c #920000",
|
||||
"+. c #CA9D4B",
|
||||
"f c #C28C43",
|
||||
"^. c #E5D767",
|
||||
"^ c #DDC65F",
|
||||
". c #FFFFFF",
|
||||
"z c #D5B557",
|
||||
"|. c #A24820",
|
||||
"S. c #AA592B",
|
||||
"!. c #A24823",
|
||||
"| c #9A371A",
|
||||
" X c #B57132",
|
||||
"} c #922612",
|
||||
"=. c #8A150A",
|
||||
"x c #AD602E",
|
||||
"t. c #A54F26",
|
||||
"3. c #9D3E1E",
|
||||
"6 c #F3F36E",
|
||||
"' c #8D1C0D",
|
||||
"D c #8D1C0E",
|
||||
"0. c #850B05",
|
||||
"R c #B06732",
|
||||
"e c #8E0000",
|
||||
"p c #E3D164",
|
||||
"*. c #A04521",
|
||||
"S c #983419",
|
||||
"O. c #D3AF54",
|
||||
" . c #CB9E4C",
|
||||
"P. c #EEE96F",
|
||||
"L. c #881209",
|
||||
"<. c #800100",
|
||||
"y. c #E6D868",
|
||||
"J c #D6B657",
|
||||
"I. c #CEA54F",
|
||||
"$X c #790000",
|
||||
"a. c #F1F073",
|
||||
"c c #C69447",
|
||||
",. c #E1CE63",
|
||||
"3 c #A65024",
|
||||
"N. c #9E3F1E",
|
||||
"D. c #C18A42",
|
||||
"r c #962E15",
|
||||
"d c #B9793A",
|
||||
"` c #DCC45E",
|
||||
"m. c #B16832",
|
||||
"XX c #BC8039",
|
||||
"m c #A14622",
|
||||
"oX c #993518",
|
||||
"4. c #C49146",
|
||||
"p. c #891309",
|
||||
"9 c #880000",
|
||||
"F c #810201",
|
||||
"+ c #4343D8",
|
||||
"`. c #48006F",
|
||||
"OX c #9C3C1B",
|
||||
"$. c #942B14",
|
||||
"T c #8C1A0C",
|
||||
"j c #F2F174",
|
||||
"c. c #840904",
|
||||
"- c #2800AF",
|
||||
"{ c #EAE06B",
|
||||
"J. c #A75428",
|
||||
"< c #860000",
|
||||
"a c #DABE5B",
|
||||
"! c #973218",
|
||||
"M. c #8F2110",
|
||||
"T. c #CA9C4B",
|
||||
"K c #871008",
|
||||
"W c #EDE76F",
|
||||
"b c #C28B42",
|
||||
"q c #AA0000",
|
||||
"% c #1D1DEE",
|
||||
"I c #DDC55F",
|
||||
"; c #550055",
|
||||
"W. c #D5B456",
|
||||
"# c #3C3CDD",
|
||||
"4 c #840000",
|
||||
"n c #F0EE72",
|
||||
"7 c #BD813A",
|
||||
"k c #C59246",
|
||||
"V. c #E8DD6A",
|
||||
"k. c #BD813E",
|
||||
", c #350095",
|
||||
"(. c #0E0EF7",
|
||||
"P c #D0AA51",
|
||||
"}. c #C0883D",
|
||||
"* c #820000",
|
||||
"X. c #B87739",
|
||||
" c #3729C3",
|
||||
"~ c #B06631",
|
||||
"Z c #A04421",
|
||||
"%. c #C38F45",
|
||||
"Y c #B36D34",
|
||||
"Q c #EEE86F",
|
||||
"U. c #AB5C2C",
|
||||
"X c #800000",
|
||||
"n. c #932914",
|
||||
"h. c #8B180B",
|
||||
"V c #830703",
|
||||
"v. c #E9DE6A",
|
||||
"5 c #B67133",
|
||||
"j. c #E1CD62",
|
||||
"] c #9E411F",
|
||||
"Q. c #D9BC5A",
|
||||
": c #40007F",
|
||||
"[. c #400080",
|
||||
".. c #C99A4A",
|
||||
"]. c #4F0060",
|
||||
">. c #C18942",
|
||||
"H c #E4D465",
|
||||
"C. c #B97839",
|
||||
"'. c #2000C0",
|
||||
"R. c #DCC35E",
|
||||
"-. c #EFEC71",
|
||||
"#X c #7C0000",
|
||||
"y c #993418",
|
||||
"o c #0000FF",
|
||||
"K. c #E7DB69",
|
||||
"z. c #BC7F3D",
|
||||
"r. c #CFA851",
|
||||
"N c #A44C24",
|
||||
"E. c #BF8640",
|
||||
"@ c #0808FB",
|
||||
"1. c #B77538",
|
||||
"v c #8C190C",
|
||||
"G. c #840804",
|
||||
":. c #CA9E4C",
|
||||
"_ c #C28D44",
|
||||
"O c #1010F6",
|
||||
"s. c #8F200F",
|
||||
"s c #B26B33",
|
||||
"E c #870F07",
|
||||
"A. c #AA5A2B",
|
||||
"~. c #A24923",
|
||||
"@X c #780000",
|
||||
"l. c #922713",
|
||||
"6. c #8A160A",
|
||||
"). c #0101FE",
|
||||
"@. c #F0ED72",
|
||||
"M c #820502",
|
||||
"C c #E8DC6A",
|
||||
"8 c #890000",
|
||||
"2 c #C89845",
|
||||
"&. c #C89849",
|
||||
"g. c #EBE36D",
|
||||
"/ c #C08741",
|
||||
"u c #B87638",
|
||||
"7. c #DBC15C",
|
||||
"_. c #2900AE",
|
||||
"f. c #B06530",
|
||||
"o. c #D3B054",
|
||||
"g c #CB9F4C",
|
||||
"G c #EEEA70",
|
||||
"H. c #DEC860",
|
||||
"l c #B36C34",
|
||||
"F. c #AB5B2C",
|
||||
"> c #1800CF",
|
||||
"b. c #CEA650",
|
||||
"5. c #C69547",
|
||||
") c #9B391B",
|
||||
"8. c #B67337",
|
||||
"t c #AE622C",
|
||||
"0 c #850000",
|
||||
"#. c #8B170B",
|
||||
"A c #AE622F",
|
||||
"B. c #830603",
|
||||
"{. c #9E401C",
|
||||
"q. c #A65127",
|
||||
"Z. c #9E401E",
|
||||
"e. c #962F16",
|
||||
"d. c #8E1E0F",
|
||||
"i c #B16932",
|
||||
"9. c #ECE46D",
|
||||
"1 c #A14720",
|
||||
"& c #830000",
|
||||
"u. c #A14722",
|
||||
"h c #DCC25D",
|
||||
"U c #99361A",
|
||||
"i. c #D4B155",
|
||||
"B c #912512",
|
||||
"x. c #EFEB71",
|
||||
"[ c #810301",
|
||||
/* pixels */
|
||||
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X . . . . . . . . . . X X X . . . . . . X X X X X X X X . . . . . . . X X X X . . . . . . . . X X X . . X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X . . . . . . . . . X X X X . . . . X X X X X X X X X X X X . . . . . X X X X . . . . . . . . X X X . . X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . X X X X . . . X X X X X X X X X X X X X X . . . . X X X X . . . . . . . . X X X . . X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X . . . . . . . . X X X . . . X X X X X . . . . . . X X X X X . . . X X X X . . . . . . . . X X X . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X . . . . . . . X X X X . . . X X X X . . . . . . . . X X X X . . . X X X X . . . . . . . . X X X . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . X X X X . . X X X X . . . . . . . . . . X X X . . . X X X X . . . . . . . . X X X . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X . . . . . . X X X . . . X X X X . . . . . . . . . . X X X X . . X X X X . . . . . . . . X X X . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o . . . . . . . . . . . . . . . . X X X X . . . . . X X X X . . . X X X X . . . . . . . . . . X X X X . . X X X X . . . . . . . . X X X . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o . . . . . . . . . . . . . . . . . X X X . . . . . X X X . . . . X X X . . . . . . . . . . . . X X X . . X X X X . . . . . . . . X X X . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . o o O + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ o o . . . . . . . . . . . . . . . . . X X X X . . . X X X X . . . . X X X . . . . . . . . . . . . X X X . . X X X X . . . . . . . . X X X . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . X X X . . . X X X X . . . . X X X . . . . . . . . . . . X X X X . . X X X X . . . . . . . . X X X . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . X X X X . . X X X . . . . . X X X X . . . . . . . . . . X X X X . . X X X X . . . . . . . . X X X . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . X X X X . X X X X . . . . . X X X X . . . . . . . . . . X X X X . . X X X X . . . . . . . . X X X . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . & * . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . X X X . X X X . . . . . . X X X X . . . . . . . . . X X X X . . . X X X X . . . . . . . . X X X . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . X X X X X X X . . . . . . . X X X X . . . . . . . . X X X X . . . . X X X X . . . . . . X X X X . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . X X X X . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . X X X X X X . . . . . . . X X X X X X . . . . X X X X X . . . . . X X X X . . . . . X X X X X . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . X X X X * . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . X X X X X . . . . . . . . . X X X X X X X X X X X X X X . . . . . X X X X X X X X X X X X X . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . X X X X = * . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . X X X X X . . . . . . . . . . X X X X X X X X X X X X . . . . . . . X X X X X X X X X X X . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . X X X X X = X . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . X X X X X X X X . . . . . . . . . . . X X X X X X X X . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . X X X X X X = X . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X = * . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X X X * . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X X X = X . ",
|
||||
". . . . o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % - ; X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X = X ",
|
||||
". . . . o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % : X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X = ",
|
||||
". . . . o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % > , X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X X X X X . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X X X X . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X X < . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X < . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X = X < . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X = X < . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X = X X . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X X X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 < . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X X X X X X * 8 . . . . . . . . . X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X X X X X X X X & . . . . . . . X X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X X X X X X X X X 9 . . . . . X X X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X . . . . . X X X = . . . . 4 X X X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X . . . . . . X X X . . . * X X X X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X . . . . . . = X X . . . X X X 0 X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X . . . . . . X X X . . . X X . < X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X . . . . . * X X X . . . . . . < X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X X X X X X X X X . . . . . . . < X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X X X X X X X X X . . . . . . . < X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X = X = X X X * . . . . . . . . . < X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X . . . = X X X . . . . . . . . < X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X . . . . X X X . . . . . . . . < X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X . . . . X X X = . . . . . . . < X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X . . . . . X X X q . . . . . . < X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X . . . . . X X X = . . . . . . < X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X . . . . . . X X X X . . . . . < X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X X . . . . . . X X X X . . . . . < X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . X X w . . . . . . . = X X . . . . . e X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X r t t t t t t t t t t t t t t t t t y X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X X X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ u i i p $ $ $ $ $ $ $ $ $ a i i i i i i s d f g h j $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ k i l $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ z X X X x $ $ $ $ $ $ $ $ $ c X X X X X X X X X X X v b n $ $ $ $ $ $ $ $ $ $ $ $ $ m X M $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ N X B X V C $ $ $ $ $ $ $ $ c X X Z A A A x N S D F X X Z G $ $ $ $ $ $ $ $ $ $ $ $ m X M $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ H F X J K X L $ $ $ $ $ $ $ $ c X X P $ $ $ $ $ $ $ I U X X N $ $ $ $ $ $ $ $ $ $ $ $ m X M $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ Y X T j R X E W $ $ $ $ $ $ $ c X X P $ $ $ $ $ $ $ $ Q ! X X P $ $ $ $ $ $ $ $ $ $ $ m X M $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ Q E X ~ $ ^ X X / $ $ $ $ $ $ $ c X X P $ $ $ $ $ $ $ $ $ ( X X ) $ $ $ $ $ $ $ $ $ $ $ m X M $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ _ X X ` $ $ U X ' n $ $ $ $ $ $ c X X P $ $ $ $ $ $ $ $ $ $ ] X [ { $ $ $ $ $ $ $ $ $ $ m X M $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ j } X | $ $ $ .X X ..$ $ $ $ $ $ c X X P $ $ $ $ $ $ $ $ $ $ X.X X o.$ $ $ $ $ $ $ $ $ $ m X M $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ O.X X +.$ $ $ @.#.X $.$ $ $ $ $ $ c X X P $ $ $ $ $ $ $ $ $ $ %.X X &.$ $ $ $ $ $ $ $ $ $ m X M $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ *.X =.-.$ $ $ $ d X X ;.$ $ $ $ $ c X X P $ $ $ $ $ $ $ $ $ $ :.X X >.$ $ $ $ $ $ $ $ $ $ m X M $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ,.<.X 1.$ $ $ $ $ 2.M X 3.$ $ $ $ $ c X X P $ $ $ $ $ $ $ $ $ $ 4.X X 5.$ $ $ $ $ $ $ $ $ $ m X M $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ~ X X K 6.6.6.6.6.6.[ X X 7.$ $ $ $ c X X P $ $ $ $ $ $ $ $ $ $ 8.X X O.$ $ $ $ $ $ $ $ $ $ m X M $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 9.0.X X X X X X X X X X X X q.$ $ $ $ c X X P $ $ $ $ $ $ $ $ $ $ S X F 9.$ $ $ $ $ $ $ $ $ $ m X M $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ / X X w.G G G G G G G G e.X [ p $ $ $ c X X P $ $ $ $ $ $ $ $ $ r.X X t.$ $ y.u.$.i.$ $ $ $ $ S X p.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ a.s.X d.a.$ $ $ $ $ $ $ $ &.X X f.$ $ $ c X X P $ $ $ $ $ $ $ $ g.h.X [ j.$ $ 9.X X k.$ $ $ $ $ 6.X l.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ r.X X z.$ $ $ $ $ $ $ $ $ x.=.X c.v.$ $ c X X P $ $ $ $ $ $ $ b.n.X X m.$ $ $ $ =.X M.-.$ $ $ b.X X x $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ N.X B.V.$ $ $ $ $ $ $ $ $ $ C.X X C.$ $ c X X Z.A.A.A.S.*.$.E X X X l j $ $ $ $ f X X $.D.5.F.G.X M 7.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ H.X X J.$ $ $ $ $ $ $ $ $ $ $ K.B.X L.P.$ c X X X X X X X X X X [ Z I.$ $ $ $ $ $ a.U.<.X X X X X Y.T.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ J d d ( $ $ $ $ $ $ $ $ $ $ $ $ &.d d j.$ R.d d d d d d d E.+.W.K.$ $ $ $ $ $ $ $ $ $ Q.l !.S ~.k.^.$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o /.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.).o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o _.`.'.o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o ].X [.o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X X X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X {.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.|.X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X X X X X X X X . . . . . . X X X X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X X X X X X X X X . . . . X X X X X X X X . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X X X X X X X X X X . . X X X X X X X X X . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X . . . . . X X X X . . X X X . . . X X X X . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X . . . . . . X X X . . X X X . . . . X X X . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X . . . . . . X X X . . X X X . . . . X X X . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X . . . . . . X X X . . . . . . . . . X X X . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X . . . . . X X X X . . . . . . . . X X X X . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X X X X X X X X X . . . . . . . . . X X X . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X X X X X X X X X . . . . . . . . X X X X . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X X X X X X X . . . . . . . . . X X X X . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X . . . X X X X . . . . . . . X X X X . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X . . . . X X X . . . . . . X X X X . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X . . . . X X X X . . . . X X X X . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X . . . . . X X X X . . . X X X . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X . . . . . X X X X . . X X X X . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X . . . . . . X X X X . X X X X X X X X X X . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X . . . . . . X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . X X X . . . . . . . X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XXXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X oX X X X X X X X X X X X X X X X X XOXX X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X X X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X X X X X X X X X X X X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +X+X+X+X+X+X+X+X+X@X#X$X+X+X+X+X+X+X+X+X+X. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . +X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "
|
||||
};
|
Binary file not shown.
After Width: | Height: | Size: 5.9 KiB |
|
@ -0,0 +1,229 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="256"
|
||||
height="200"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 "
|
||||
sodipodi:docname="regul_3pins.svg"
|
||||
inkscape:export-filename="F:\kicad-launchpad\testing\pcb_calculator\bitmaps\sources\regul_3pins.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.0195312"
|
||||
inkscape:cx="75.011642"
|
||||
inkscape:cy="108.75361"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="968"
|
||||
inkscape:window-x="-4"
|
||||
inkscape:window-y="-4"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3769"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Calque 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-852.36218)">
|
||||
<rect
|
||||
style="fill:#f2f274;fill-opacity:1;stroke:#0000ff;stroke-width:2.70856905;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect3757"
|
||||
width="100"
|
||||
height="90"
|
||||
x="45"
|
||||
y="872.36218"
|
||||
rx="0.46518731"
|
||||
ry="0.770051" />
|
||||
<path
|
||||
style="fill:none;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 5.7075806,887.36218 39.0660404,0 0.601016,0"
|
||||
id="path3767"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#800000;stroke:#800000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 145,887.36218 109.03021,0 1.67737,0"
|
||||
id="path3767-5"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:25.21309471px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#800000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
|
||||
x="160.62158"
|
||||
y="882.83466"
|
||||
id="text3789"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(1.0005354,0.99946488)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3791"
|
||||
x="160.62158"
|
||||
y="882.83466"
|
||||
style="fill:#800000;fill-opacity:1;stroke:none">VOUT</tspan></text>
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3793"
|
||||
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
|
||||
transform="translate(0,924.36218)"><flowRegion
|
||||
id="flowRegion3795"><rect
|
||||
id="rect3797"
|
||||
width="69.019989"
|
||||
height="28.36969"
|
||||
x="320.98001"
|
||||
y="-580.36969" /></flowRegion><flowPara
|
||||
id="flowPara3799" /></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot3801"
|
||||
style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
|
||||
transform="translate(0,924.36218)"><flowRegion
|
||||
id="flowRegion3803"><rect
|
||||
id="rect3805"
|
||||
width="133.74167"
|
||||
height="52.57431"
|
||||
x="315.44586"
|
||||
y="-596.97211" /></flowRegion><flowPara
|
||||
id="flowPara3807" /></flowRoot> <text
|
||||
xml:space="preserve"
|
||||
style="font-size:25.66092873px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#3729c3;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
|
||||
x="1.4928155"
|
||||
y="899.01257"
|
||||
id="text3789-2"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(1.0183069,0.98202221)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3791-3"
|
||||
x="1.4928155"
|
||||
y="899.01257"
|
||||
style="fill:#3729c3;fill-opacity:1;stroke:none">Vin</tspan></text>
|
||||
<path
|
||||
style="fill:#800000;stroke:#800000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 95,977.36218 100.21655,1e-5 0.54178,0"
|
||||
id="path3767-5-1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<rect
|
||||
style="fill:#f3f36e;fill-opacity:1;stroke:#800000;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect3898"
|
||||
width="20"
|
||||
height="40"
|
||||
x="185"
|
||||
y="897.36218"
|
||||
rx="0.46518731"
|
||||
ry="0.68448979" />
|
||||
<rect
|
||||
style="fill:#f2f26c;fill-opacity:1;stroke:#800000;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect3898-6"
|
||||
width="20"
|
||||
height="40"
|
||||
x="185"
|
||||
y="982.36218"
|
||||
rx="0.46518731"
|
||||
ry="0.68448979" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:22.56652641px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#800000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
|
||||
x="240.08633"
|
||||
y="825.98572"
|
||||
id="text3789-8"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(0.89551121,1.1166806)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3791-8"
|
||||
x="240.08633"
|
||||
y="825.98572"
|
||||
style="fill:#800000;fill-opacity:1;stroke:none">R1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:22.56652641px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#800000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
|
||||
x="240.08633"
|
||||
y="902.10413"
|
||||
id="text3789-8-2"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(0.89551121,1.1166806)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3791-8-7"
|
||||
x="240.08633"
|
||||
y="902.10413"
|
||||
style="fill:#800000;fill-opacity:1;stroke:none">R2</tspan></text>
|
||||
<path
|
||||
style="fill:#800000;stroke:#800000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 195,887.36218 0,10 0,0"
|
||||
id="path3960"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#800000;stroke:#800000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 195,937.36218 0,10.00002 0,34.99998"
|
||||
id="path3960-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:#800000;stroke:#800000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 195,1022.3622 0,10 0,0"
|
||||
id="path3960-1"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 184.83349,1032.3622 20.16651,0 0,0"
|
||||
id="path3832-2"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:26.76031494px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#800000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
|
||||
x="65.917465"
|
||||
y="1016.6555"
|
||||
id="text3789-6"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(1.061934,0.9416781)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3791-0"
|
||||
x="65.917465"
|
||||
y="1016.6555"
|
||||
style="fill:#800000;fill-opacity:1;stroke:none">ADJ</tspan></text>
|
||||
<path
|
||||
style="fill:#800000;stroke:#800000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 245.70758,877.3622 10,10 -10,10 z"
|
||||
id="path3794"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#800000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 95,962.3622 0,14.99998"
|
||||
id="path3032"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 9.2 KiB |
|
@ -0,0 +1,142 @@
|
|||
#ifndef CLASS_REGULATOR_DATA_H
|
||||
#define CLASS_REGULATOR_DATA_H
|
||||
|
||||
|
||||
/**
|
||||
* @file class_regulator_data.h
|
||||
*/
|
||||
/*
|
||||
* This program source code file is part of KICAD, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 1992-2011 jean-pierre.charras
|
||||
* Copyright (C) 1992-2011 Kicad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include <kicad_string.h>
|
||||
|
||||
// Helper class to store parameters for a regulator
|
||||
class REGULATOR_DATA
|
||||
{
|
||||
public:
|
||||
wxString m_Name; // Regulator name
|
||||
int m_Type; // type: with separate sense pin (normal) (=0)
|
||||
// or adjustable 3 pins reg (=1)
|
||||
double m_Vref; // Vreference in volt
|
||||
double m_Iadj; // 3 pin type only: I adjust in micro amp
|
||||
|
||||
public:
|
||||
REGULATOR_DATA( const wxString& aName, double aVref, int aType, double aIadj = 0)
|
||||
{
|
||||
m_Type = aType;
|
||||
m_Vref = aVref;
|
||||
m_Name = aName;
|
||||
m_Iadj = aIadj;
|
||||
}
|
||||
};
|
||||
|
||||
// Helper class to store the list of known regulators
|
||||
class REGULATOR_LIST
|
||||
{
|
||||
public:
|
||||
std::vector <REGULATOR_DATA*> m_List;
|
||||
|
||||
public:
|
||||
REGULATOR_LIST() {};
|
||||
~REGULATOR_LIST()
|
||||
{
|
||||
for( unsigned ii = 0; ii < m_List.size(); ii++ )
|
||||
delete m_List[ii];
|
||||
}
|
||||
|
||||
unsigned int GetCount()
|
||||
{
|
||||
return m_List.size();
|
||||
}
|
||||
|
||||
void Add( REGULATOR_DATA* aItem )
|
||||
{
|
||||
// add new item an try to keep alphabetic order,
|
||||
// and because name have numbers inside, use a KiCad compare function
|
||||
// that handles number as numbers not ascii chars
|
||||
unsigned ii = 0;
|
||||
for( ; ii < m_List.size(); ii++ )
|
||||
{
|
||||
if( RefDesStringCompare( aItem->m_Name, m_List[ii]->m_Name ) < 0 )
|
||||
break;
|
||||
}
|
||||
m_List.insert( m_List.begin() + ii, aItem );
|
||||
}
|
||||
|
||||
REGULATOR_DATA* GetReg( const wxString& aName )
|
||||
{
|
||||
for( unsigned ii = 0; ii < m_List.size(); ii++ )
|
||||
{
|
||||
if( aName.CmpNoCase( m_List[ii]->m_Name ) == 0 )
|
||||
{
|
||||
return m_List[ii];
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void Remove( const wxString & aRegName )
|
||||
{
|
||||
for( unsigned ii = 0; ii < m_List.size(); ii++ )
|
||||
{
|
||||
if( aRegName.CmpNoCase( m_List[ii]->m_Name ) == 0 )
|
||||
{
|
||||
// Found! remove it
|
||||
m_List.erase( m_List.begin() + ii );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace an old REGULATOR_DATA by a new one
|
||||
* The old one is deleted
|
||||
* the 2 items must have the same name
|
||||
*/
|
||||
void Replace( REGULATOR_DATA* aItem )
|
||||
{
|
||||
// Search for the old regulator
|
||||
for( unsigned ii = 0; ii < m_List.size(); ii++ )
|
||||
{
|
||||
if( aItem->m_Name.CmpNoCase( m_List[ii]->m_Name ) == 0 )
|
||||
{
|
||||
// Found! remove it
|
||||
delete m_List[ii];
|
||||
m_List[ii] = aItem;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wxArrayString GetRegList()
|
||||
{
|
||||
wxArrayString list;
|
||||
for( unsigned ii = 0; ii < m_List.size(); ii++ )
|
||||
list.Add( m_List[ii]->m_Name );
|
||||
|
||||
return list;
|
||||
}
|
||||
};
|
||||
|
||||
#endif // CLASS_REGULATOR_DATA_H
|
|
@ -0,0 +1,285 @@
|
|||
/**
|
||||
* @file datafile_read_write.cpp
|
||||
*/
|
||||
|
||||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2012 Jean-Pierre Charras
|
||||
* Copyright (C) 1992-2012 KiCad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include <macros.h>
|
||||
#include <common.h>
|
||||
#include <kicad_string.h>
|
||||
#include <appl_wxstruct.h>
|
||||
#include <pcb_calculator.h>
|
||||
#include <pcb_calculator_datafile_lexer.h>
|
||||
#include <class_regulator_data.h>
|
||||
#include <datafile_read_write.h>
|
||||
#include <wx/wfstream.h>
|
||||
#include <build_version.h>
|
||||
|
||||
|
||||
using namespace PCBCALC_DATA_T;
|
||||
|
||||
|
||||
static const char* getTokenName( T aTok )
|
||||
{
|
||||
return PCB_CALCULATOR_DATAFILE_LEXER::TokenName( aTok );
|
||||
}
|
||||
|
||||
|
||||
bool PCB_CALCULATOR_FRAME::ReadDataFile()
|
||||
{
|
||||
FILE* file = wxFopen( GetDataFilename(), wxT( "rt" ) );
|
||||
|
||||
if( file == NULL )
|
||||
return false;
|
||||
|
||||
// Switch the locale to standard C (needed to read/write floating point numbers
|
||||
LOCALE_IO toggle;
|
||||
|
||||
PCB_CALCULATOR_DATAFILE * datafile = new PCB_CALCULATOR_DATAFILE( &m_RegulatorList );
|
||||
|
||||
// dataReader dtor will close file
|
||||
FILE_LINE_READER dataReader( file, GetDataFilename() );
|
||||
PCB_CALCULATOR_DATAFILE_PARSER datafile_parser( &dataReader );
|
||||
|
||||
try
|
||||
{
|
||||
datafile_parser.Parse( datafile );
|
||||
}
|
||||
catch( IO_ERROR& ioe )
|
||||
{
|
||||
delete datafile;
|
||||
ioe.errorText += '\n';
|
||||
ioe.errorText += _("Data file error.");
|
||||
|
||||
wxMessageBox( ioe.errorText );
|
||||
return false;
|
||||
}
|
||||
|
||||
delete datafile;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool PCB_CALCULATOR_FRAME::WriteDataFile()
|
||||
{
|
||||
wxFFileOutputStream os( GetDataFilename(), wxT( "wt" ) );
|
||||
if( !os.IsOk() )
|
||||
return false;
|
||||
|
||||
// Switch the locale to standard C (needed to read/write floating point numbers
|
||||
LOCALE_IO toggle;
|
||||
|
||||
PCB_CALCULATOR_DATAFILE * datafile = new PCB_CALCULATOR_DATAFILE( &m_RegulatorList );
|
||||
|
||||
try
|
||||
{
|
||||
int nestlevel;
|
||||
STREAM_OUTPUTFORMATTER outputFormatter( os );
|
||||
nestlevel = datafile->WriteHeader( &outputFormatter );
|
||||
datafile->Format( &outputFormatter, nestlevel );
|
||||
while( nestlevel-- )
|
||||
outputFormatter.Print( nestlevel, ")\n" );
|
||||
}
|
||||
catch( IO_ERROR ioe )
|
||||
{
|
||||
delete datafile;
|
||||
return false;
|
||||
}
|
||||
|
||||
delete datafile;
|
||||
|
||||
m_RegulatorListChanged = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
PCB_CALCULATOR_DATAFILE::PCB_CALCULATOR_DATAFILE( REGULATOR_LIST * aList )
|
||||
{
|
||||
m_list = aList;
|
||||
}
|
||||
|
||||
static const char* regtype_str[] =
|
||||
{
|
||||
"normal", "3terminal"
|
||||
};
|
||||
|
||||
int PCB_CALCULATOR_DATAFILE::WriteHeader( OUTPUTFORMATTER* aFormatter ) const throw( IO_ERROR )
|
||||
{
|
||||
int nestlevel = 0;
|
||||
aFormatter->Print( nestlevel++, "(datafile\n");
|
||||
aFormatter->Print( nestlevel++, "(version 1)\n" );
|
||||
aFormatter->Print( nestlevel++, "(date %s)\n",
|
||||
aFormatter->Quotew( DateAndTime() ).c_str() );
|
||||
aFormatter->Print( nestlevel++, "(tool %s)\n",
|
||||
aFormatter->Quotew( wxGetApp().GetAppName() +
|
||||
wxChar(' ') + GetBuildVersion() ).c_str() );
|
||||
|
||||
return nestlevel;
|
||||
}
|
||||
|
||||
void PCB_CALCULATOR_DATAFILE::Format( OUTPUTFORMATTER* aFormatter,
|
||||
int aNestLevel ) const throw( IO_ERROR )
|
||||
{
|
||||
// Write regulators list:
|
||||
aFormatter->Print( aNestLevel++, "(%s\n", getTokenName( T_regulators ) );
|
||||
for( unsigned ii = 0; ii < m_list->m_List.size(); ii++ )
|
||||
{
|
||||
REGULATOR_DATA * item = m_list->m_List[ii];
|
||||
aFormatter->Print( aNestLevel, "(%s %s\n", getTokenName( T_regulator ),
|
||||
aFormatter->Quotew(item->m_Name ).c_str() );
|
||||
aFormatter->Print( aNestLevel+1, "(%s %g)\n", getTokenName( T_reg_vref ),
|
||||
item->m_Vref );
|
||||
if( item->m_Iadj != 0 && item->m_Type == 1)
|
||||
{
|
||||
aFormatter->Print( aNestLevel+1, "(%s %g)\n", getTokenName( T_reg_iadj ),
|
||||
item->m_Iadj );
|
||||
}
|
||||
aFormatter->Print( aNestLevel+1, "(%s %s)\n", getTokenName( T_reg_type ),
|
||||
regtype_str[item->m_Type] );
|
||||
aFormatter->Print( aNestLevel, ")\n" );
|
||||
}
|
||||
aFormatter->Print( --aNestLevel, ")\n" );
|
||||
}
|
||||
|
||||
|
||||
void PCB_CALCULATOR_DATAFILE::Parse( PCB_CALCULATOR_DATAFILE_PARSER* aParser )
|
||||
throw( IO_ERROR, PARSE_ERROR )
|
||||
{
|
||||
aParser->Parse( this );
|
||||
}
|
||||
|
||||
|
||||
|
||||
// PCB_CALCULATOR_DATAFILE_PARSER
|
||||
|
||||
PCB_CALCULATOR_DATAFILE_PARSER::PCB_CALCULATOR_DATAFILE_PARSER( LINE_READER* aReader ) :
|
||||
PCB_CALCULATOR_DATAFILE_LEXER( aReader )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
PCB_CALCULATOR_DATAFILE_PARSER::PCB_CALCULATOR_DATAFILE_PARSER( char* aLine, wxString aSource ) :
|
||||
PCB_CALCULATOR_DATAFILE_LEXER( aLine, aSource )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void PCB_CALCULATOR_DATAFILE_PARSER::Parse( PCB_CALCULATOR_DATAFILE* aDataList ) throw( IO_ERROR, PARSE_ERROR )
|
||||
{
|
||||
T token;
|
||||
while( ( token = NextTok() ) != T_EOF)
|
||||
{
|
||||
|
||||
if( token == T_LEFT )
|
||||
{
|
||||
token = NextTok();
|
||||
|
||||
if( token == T_regulators )
|
||||
{
|
||||
ParseRegulatorDescr( aDataList );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PCB_CALCULATOR_DATAFILE_PARSER::ParseRegulatorDescr( PCB_CALCULATOR_DATAFILE* aDataList )
|
||||
throw( IO_ERROR, PARSE_ERROR )
|
||||
{
|
||||
T token;
|
||||
wxString name;
|
||||
double vref, iadj;
|
||||
int type;
|
||||
|
||||
while( ( token = NextTok() ) != T_RIGHT )
|
||||
{
|
||||
if( token == T_EOF)
|
||||
Unexpected( T_EOF );
|
||||
|
||||
if( token == T_LEFT )
|
||||
token = NextTok();
|
||||
|
||||
if( token == T_regulator )
|
||||
{
|
||||
type = 0;
|
||||
vref = 0.0;
|
||||
|
||||
// Read name
|
||||
token = NextTok();
|
||||
name = FROM_UTF8( CurText() );
|
||||
|
||||
while( ( token = NextTok() ) != T_RIGHT )
|
||||
{
|
||||
if( token == T_EOF)
|
||||
Unexpected( T_EOF );
|
||||
|
||||
if( token == T_LEFT )
|
||||
token = NextTok();
|
||||
|
||||
switch( token )
|
||||
{
|
||||
case T_reg_vref: // the voltage reference value
|
||||
token = NextTok();
|
||||
if( token != T_NUMBER )
|
||||
Expecting( T_NUMBER );
|
||||
sscanf( CurText(), "%lf" , &vref);
|
||||
NeedRIGHT();
|
||||
break;
|
||||
|
||||
case T_reg_iadj: // the Iadj reference value
|
||||
token = NextTok();
|
||||
if( token != T_NUMBER )
|
||||
Expecting( T_NUMBER );
|
||||
sscanf( CurText(), "%lf" , &iadj);
|
||||
NeedRIGHT();
|
||||
break;
|
||||
|
||||
case T_reg_type: // type: normal or 3 terminal reg
|
||||
token = NextTok();
|
||||
if( stricmp( CurText(), regtype_str[0] ) == 0 )
|
||||
type = 0;
|
||||
else if( stricmp( CurText(), regtype_str[1] ) == 0 )
|
||||
type = 1;
|
||||
else
|
||||
Unexpected( CurText() );
|
||||
NeedRIGHT();
|
||||
break;
|
||||
|
||||
default:
|
||||
Unexpected( CurText() );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( ! name.IsEmpty() )
|
||||
{
|
||||
if( type != 1 )
|
||||
iadj = 0.0;
|
||||
REGULATOR_DATA * new_item = new REGULATOR_DATA(name, vref, type, iadj );
|
||||
aDataList->m_list->Add( new_item );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
#ifndef DATAFILE_READ_WRITE_H_
|
||||
#define PDATAFILE_READ_WRITE_H_
|
||||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 1992-2011 KiCad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include <wx/wx.h>
|
||||
#include <pcb_calculator_datafile_lexer.h>
|
||||
#include <base_struct.h>
|
||||
|
||||
class PCB_CALCULATOR_DATAFILE_PARSER;
|
||||
|
||||
/**
|
||||
* Class PCB_CALCULATOR_DATAFILE
|
||||
* handles data to calculate regulators parameters
|
||||
*/
|
||||
class PCB_CALCULATOR_DATAFILE
|
||||
{
|
||||
friend class PCB_CALCULATOR_DATAFILE_PARSER;
|
||||
protected:
|
||||
REGULATOR_LIST * m_list;
|
||||
|
||||
public:
|
||||
PCB_CALCULATOR_DATAFILE( REGULATOR_LIST * aList );
|
||||
|
||||
int WriteHeader( OUTPUTFORMATTER* aFormatter ) const throw( IO_ERROR );
|
||||
void Format( OUTPUTFORMATTER* aFormatter, int aNestLevel ) const throw( IO_ERROR );
|
||||
void Parse( PCB_CALCULATOR_DATAFILE_PARSER* aParser ) throw( IO_ERROR, PARSE_ERROR );
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Class PCB_CALCULATOR_DATAFILE_PARSER
|
||||
* is the parser class for PCB_CALCULATOR_DATAFILE.
|
||||
*/
|
||||
class PCB_CALCULATOR_DATAFILE_PARSER : public PCB_CALCULATOR_DATAFILE_LEXER
|
||||
{
|
||||
public:
|
||||
PCB_CALCULATOR_DATAFILE_PARSER( LINE_READER* aReader );
|
||||
PCB_CALCULATOR_DATAFILE_PARSER( char* aLine, wxString aSource );
|
||||
LINE_READER* GetReader() { return reader; };
|
||||
void Parse( PCB_CALCULATOR_DATAFILE* aDataList ) throw( IO_ERROR, PARSE_ERROR );
|
||||
void ParseRegulatorDescr( PCB_CALCULATOR_DATAFILE* aDataList ) throw( IO_ERROR, PARSE_ERROR );
|
||||
};
|
||||
|
||||
#endif // PDATAFILE_READ_WRITE_H_
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,105 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Mar 17 2012)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "dialog_regulator_data_base.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
DIALOG_EDITOR_DATA_BASE::DIALOG_EDITOR_DATA_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
|
||||
{
|
||||
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
|
||||
|
||||
wxBoxSizer* bSizerMain;
|
||||
bSizerMain = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxFlexGridSizer* fgSizerPrms;
|
||||
fgSizerPrms = new wxFlexGridSizer( 4, 3, 0, 0 );
|
||||
fgSizerPrms->AddGrowableCol( 1 );
|
||||
fgSizerPrms->AddGrowableRow( 0 );
|
||||
fgSizerPrms->SetFlexibleDirection( wxHORIZONTAL );
|
||||
fgSizerPrms->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
m_staticTextName = new wxStaticText( this, wxID_ANY, _("Name"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextName->Wrap( -1 );
|
||||
fgSizerPrms->Add( m_staticTextName, 0, wxALL, 5 );
|
||||
|
||||
m_textCtrlName = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerPrms->Add( m_textCtrlName, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
fgSizerPrms->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
m_staticTextVref = new wxStaticText( this, wxID_ANY, _("Vref"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextVref->Wrap( -1 );
|
||||
fgSizerPrms->Add( m_staticTextVref, 0, wxALL, 5 );
|
||||
|
||||
m_textCtrlVref = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerPrms->Add( m_textCtrlVref, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_staticTextVrefUnit = new wxStaticText( this, wxID_ANY, _("Volt"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextVrefUnit->Wrap( -1 );
|
||||
fgSizerPrms->Add( m_staticTextVrefUnit, 0, wxALL, 5 );
|
||||
|
||||
m_staticTextType = new wxStaticText( this, wxID_ANY, _("Type"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextType->Wrap( -1 );
|
||||
fgSizerPrms->Add( m_staticTextType, 0, wxALL, 5 );
|
||||
|
||||
wxString m_choiceRegTypeChoices[] = { _("Separate sense pin"), _("3 terminals regulator") };
|
||||
int m_choiceRegTypeNChoices = sizeof( m_choiceRegTypeChoices ) / sizeof( wxString );
|
||||
m_choiceRegType = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceRegTypeNChoices, m_choiceRegTypeChoices, 0 );
|
||||
m_choiceRegType->SetSelection( 0 );
|
||||
fgSizerPrms->Add( m_choiceRegType, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
fgSizerPrms->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
m_RegulIadjTitle = new wxStaticText( this, wxID_ANY, _("Iadj"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_RegulIadjTitle->Wrap( -1 );
|
||||
fgSizerPrms->Add( m_RegulIadjTitle, 0, wxALL, 5 );
|
||||
|
||||
m_RegulIadjValue = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerPrms->Add( m_RegulIadjValue, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_IadjUnitLabel = new wxStaticText( this, wxID_ANY, _("uA"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_IadjUnitLabel->Wrap( -1 );
|
||||
fgSizerPrms->Add( m_IadjUnitLabel, 0, wxALL, 5 );
|
||||
|
||||
|
||||
bSizerMain->Add( fgSizerPrms, 0, wxEXPAND, 5 );
|
||||
|
||||
m_staticline2 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
bSizerMain->Add( m_staticline2, 0, wxEXPAND | wxALL, 5 );
|
||||
|
||||
m_sdbSizerButtons = new wxStdDialogButtonSizer();
|
||||
m_sdbSizerButtonsOK = new wxButton( this, wxID_OK );
|
||||
m_sdbSizerButtons->AddButton( m_sdbSizerButtonsOK );
|
||||
m_sdbSizerButtonsCancel = new wxButton( this, wxID_CANCEL );
|
||||
m_sdbSizerButtons->AddButton( m_sdbSizerButtonsCancel );
|
||||
m_sdbSizerButtons->Realize();
|
||||
|
||||
bSizerMain->Add( m_sdbSizerButtons, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
this->SetSizer( bSizerMain );
|
||||
this->Layout();
|
||||
|
||||
this->Centre( wxBOTH );
|
||||
|
||||
// Connect Events
|
||||
m_choiceRegType->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_EDITOR_DATA_BASE::OnRegTypeSelection ), NULL, this );
|
||||
m_sdbSizerButtonsCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDITOR_DATA_BASE::OnCancelClick ), NULL, this );
|
||||
m_sdbSizerButtonsOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDITOR_DATA_BASE::OnOKClick ), NULL, this );
|
||||
}
|
||||
|
||||
DIALOG_EDITOR_DATA_BASE::~DIALOG_EDITOR_DATA_BASE()
|
||||
{
|
||||
// Disconnect Events
|
||||
m_choiceRegType->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_EDITOR_DATA_BASE::OnRegTypeSelection ), NULL, this );
|
||||
m_sdbSizerButtonsCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDITOR_DATA_BASE::OnCancelClick ), NULL, this );
|
||||
m_sdbSizerButtonsOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDITOR_DATA_BASE::OnOKClick ), NULL, this );
|
||||
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Mar 17 2012)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __DIALOG_REGULATOR_DATA_BASE_H__
|
||||
#define __DIALOG_REGULATOR_DATA_BASE_H__
|
||||
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
#include <wx/intl.h>
|
||||
#include "dialog_shim.h"
|
||||
#include <wx/string.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/gdicmn.h>
|
||||
#include <wx/font.h>
|
||||
#include <wx/colour.h>
|
||||
#include <wx/settings.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/choice.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/statline.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/dialog.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class DIALOG_EDITOR_DATA_BASE
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
class DIALOG_EDITOR_DATA_BASE : public DIALOG_SHIM
|
||||
{
|
||||
private:
|
||||
|
||||
protected:
|
||||
wxStaticText* m_staticTextName;
|
||||
wxTextCtrl* m_textCtrlName;
|
||||
wxStaticText* m_staticTextVref;
|
||||
wxTextCtrl* m_textCtrlVref;
|
||||
wxStaticText* m_staticTextVrefUnit;
|
||||
wxStaticText* m_staticTextType;
|
||||
wxChoice* m_choiceRegType;
|
||||
wxStaticText* m_RegulIadjTitle;
|
||||
wxTextCtrl* m_RegulIadjValue;
|
||||
wxStaticText* m_IadjUnitLabel;
|
||||
wxStaticLine* m_staticline2;
|
||||
wxStdDialogButtonSizer* m_sdbSizerButtons;
|
||||
wxButton* m_sdbSizerButtonsOK;
|
||||
wxButton* m_sdbSizerButtonsCancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
virtual void OnRegTypeSelection( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnOKClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
|
||||
DIALOG_EDITOR_DATA_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Regulator Parameters"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 310,210 ), long style = wxDEFAULT_DIALOG_STYLE );
|
||||
~DIALOG_EDITOR_DATA_BASE();
|
||||
|
||||
};
|
||||
|
||||
#endif //__DIALOG_REGULATOR_DATA_BASE_H__
|
|
@ -1,12 +1,10 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Jun 30 2011)
|
||||
// C++ code generated with wxFormBuilder (version Mar 17 2012)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "UnitSelector.h"
|
||||
|
||||
#include "pcb_calculator_frame_base.h"
|
||||
|
||||
#include "../bitmaps/arrow_bottom.xpm"
|
||||
|
@ -16,6 +14,7 @@
|
|||
#include "../bitmaps/color_code_value.xpm"
|
||||
#include "../bitmaps/color_code_value_and_name.xpm"
|
||||
#include "../bitmaps/regul.xpm"
|
||||
#include "../bitmaps/regul_3pins.xpm"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -35,31 +34,47 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
wxBoxSizer* bSizerMainReg;
|
||||
bSizerMainReg = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
wxBoxSizer* bSizeLeftpReg;
|
||||
bSizeLeftpReg = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxBoxSizer* bSizerBitmapReg;
|
||||
bSizerBitmapReg = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
||||
bSizerBitmapReg->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
m_bitmapRegul = new wxStaticBitmap( m_panelRegulators, wxID_ANY, wxBitmap( regul_xpm ), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizerBitmapReg->Add( m_bitmapRegul, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 );
|
||||
m_bitmapRegul4pins = new wxStaticBitmap( m_panelRegulators, wxID_ANY, wxBitmap( regul_xpm ), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizerBitmapReg->Add( m_bitmapRegul4pins, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 );
|
||||
|
||||
m_bitmapRegul3pins = new wxStaticBitmap( m_panelRegulators, wxID_ANY, wxBitmap( regul_3pins_xpm ), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizerBitmapReg->Add( m_bitmapRegul3pins, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
|
||||
|
||||
|
||||
bSizerBitmapReg->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizeLeftpReg->Add( bSizerBitmapReg, 1, wxEXPAND, 5 );
|
||||
|
||||
wxStaticBoxSizer* sbSizerRegFormula;
|
||||
sbSizerRegFormula = new wxStaticBoxSizer( new wxStaticBox( m_panelRegulators, wxID_ANY, _("Formula") ), wxVERTICAL );
|
||||
|
||||
m_RegulFormula = new wxStaticText( m_panelRegulators, wxID_ANY, _("Vout = Vref * (R1 + R2) / R2"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_RegulFormula->Wrap( -1 );
|
||||
m_RegulFormula->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) );
|
||||
|
||||
bSizerBitmapReg->Add( m_RegulFormula, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
|
||||
sbSizerRegFormula->Add( m_RegulFormula, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
|
||||
|
||||
|
||||
bSizerBitmapReg->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
bSizeLeftpReg->Add( sbSizerRegFormula, 0, wxEXPAND, 5 );
|
||||
|
||||
bSizerMainReg->Add( bSizerBitmapReg, 1, wxEXPAND, 5 );
|
||||
|
||||
bSizerMainReg->Add( bSizeLeftpReg, 1, wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bSizerRegulRight;
|
||||
bSizerRegulRight = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxFlexGridSizer* fgSizerRegParams;
|
||||
fgSizerRegParams = new wxFlexGridSizer( 2, 4, 0, 0 );
|
||||
fgSizerRegParams = new wxFlexGridSizer( 5, 4, 0, 0 );
|
||||
fgSizerRegParams->AddGrowableCol( 2 );
|
||||
fgSizerRegParams->SetFlexibleDirection( wxBOTH );
|
||||
fgSizerRegParams->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
@ -93,20 +108,6 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_UnitRegultR1->Wrap( -1 );
|
||||
fgSizerRegParams->Add( m_UnitRegultR1, 0, wxALL, 5 );
|
||||
|
||||
|
||||
fgSizerRegParams->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
m_lableVRef = new wxStaticText( m_panelRegulators, wxID_ANY, _("Vref"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_lableVRef->Wrap( -1 );
|
||||
fgSizerRegParams->Add( m_lableVRef, 0, wxALL, 5 );
|
||||
|
||||
m_RegulVrefValue = new wxTextCtrl( m_panelRegulators, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerRegParams->Add( m_RegulVrefValue, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_unitsVref = new wxStaticText( m_panelRegulators, wxID_ANY, _("V"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_unitsVref->Wrap( -1 );
|
||||
fgSizerRegParams->Add( m_unitsVref, 0, wxALL, 5 );
|
||||
|
||||
m_rbRegulVout = new wxRadioButton( m_panelRegulators, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerRegParams->Add( m_rbRegulVout, 0, wxALL, 5 );
|
||||
|
||||
|
@ -121,21 +122,107 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_unitsVout->Wrap( -1 );
|
||||
fgSizerRegParams->Add( m_unitsVout, 0, wxALL, 5 );
|
||||
|
||||
|
||||
fgSizerRegParams->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
m_labelVRef = new wxStaticText( m_panelRegulators, wxID_ANY, _("Vref"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_labelVRef->Wrap( -1 );
|
||||
fgSizerRegParams->Add( m_labelVRef, 0, wxALL, 5 );
|
||||
|
||||
m_RegulVrefValue = new wxTextCtrl( m_panelRegulators, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerRegParams->Add( m_RegulVrefValue, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_unitsVref = new wxStaticText( m_panelRegulators, wxID_ANY, _("V"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_unitsVref->Wrap( -1 );
|
||||
fgSizerRegParams->Add( m_unitsVref, 0, wxALL, 5 );
|
||||
|
||||
|
||||
fgSizerRegParams->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
m_RegulIadjTitle = new wxStaticText( m_panelRegulators, wxID_ANY, _("Iadj"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_RegulIadjTitle->Wrap( -1 );
|
||||
fgSizerRegParams->Add( m_RegulIadjTitle, 0, wxALL, 5 );
|
||||
|
||||
m_RegulIadjValue = new wxTextCtrl( m_panelRegulators, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerRegParams->Add( m_RegulIadjValue, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_IadjUnitLabel = new wxStaticText( m_panelRegulators, wxID_ANY, _("uA"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_IadjUnitLabel->Wrap( -1 );
|
||||
fgSizerRegParams->Add( m_IadjUnitLabel, 0, wxALL, 5 );
|
||||
|
||||
|
||||
fgSizerRegParams->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
m_staticTextRegType = new wxStaticText( m_panelRegulators, wxID_ANY, _("Type"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextRegType->Wrap( -1 );
|
||||
fgSizerRegParams->Add( m_staticTextRegType, 0, wxALL, 5 );
|
||||
|
||||
wxString m_choiceRegTypeChoices[] = { _("Standard Type"), _("3 Terminal Type") };
|
||||
int m_choiceRegTypeNChoices = sizeof( m_choiceRegTypeChoices ) / sizeof( wxString );
|
||||
m_choiceRegType = new wxChoice( m_panelRegulators, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceRegTypeNChoices, m_choiceRegTypeChoices, 0 );
|
||||
m_choiceRegType->SetSelection( 0 );
|
||||
fgSizerRegParams->Add( m_choiceRegType, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
fgSizerRegParams->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizerRegulRight->Add( fgSizerRegParams, 0, wxEXPAND, 5 );
|
||||
|
||||
m_buttonCalculate = new wxButton( m_panelRegulators, wxID_ANY, _("Calculate"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizerRegulRight->Add( m_buttonCalculate, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
|
||||
|
||||
wxStaticBoxSizer* sbSizerRegulatorsChooser;
|
||||
sbSizerRegulatorsChooser = new wxStaticBoxSizer( new wxStaticBox( m_panelRegulators, wxID_ANY, _("Regulator") ), wxVERTICAL );
|
||||
|
||||
wxArrayString m_choiceRegulatorSelectorChoices;
|
||||
m_choiceRegulatorSelector = new wxChoice( m_panelRegulators, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceRegulatorSelectorChoices, 0 );
|
||||
m_choiceRegulatorSelector->SetSelection( 0 );
|
||||
sbSizerRegulatorsChooser->Add( m_choiceRegulatorSelector, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_staticTextRegFile = new wxStaticText( m_panelRegulators, wxID_ANY, _("Regulators data file:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextRegFile->Wrap( -1 );
|
||||
sbSizerRegulatorsChooser->Add( m_staticTextRegFile, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_regulators_filePicker = new wxFilePickerCtrl( m_panelRegulators, wxID_ANY, wxEmptyString, _("Select a file"), wxT("*.pcbcalc"), wxDefaultPosition, wxDefaultSize, wxFLP_SAVE|wxFLP_USE_TEXTCTRL );
|
||||
sbSizerRegulatorsChooser->Add( m_regulators_filePicker, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
wxBoxSizer* bSizerReulBtn;
|
||||
bSizerReulBtn = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_buttonEditItem = new wxButton( m_panelRegulators, wxID_ANY, _("Edit Regulator"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_buttonEditItem->SetToolTip( _("Enter a new item in the current list of availlable regulators") );
|
||||
|
||||
bSizerReulBtn->Add( m_buttonEditItem, 0, wxALL, 5 );
|
||||
|
||||
m_buttonAddItem = new wxButton( m_panelRegulators, wxID_ANY, _("Add Regulator"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_buttonAddItem->SetToolTip( _("Enter a new item in the current list of availlable regulators") );
|
||||
|
||||
bSizerReulBtn->Add( m_buttonAddItem, 1, wxALL, 5 );
|
||||
|
||||
m_buttonRemoveItem = new wxButton( m_panelRegulators, wxID_ANY, _("Remove Regulator"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_buttonRemoveItem->SetToolTip( _("Remove an item in the current list of availlable regulators") );
|
||||
|
||||
bSizerReulBtn->Add( m_buttonRemoveItem, 1, wxALL, 5 );
|
||||
|
||||
|
||||
sbSizerRegulatorsChooser->Add( bSizerReulBtn, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizerRegulRight->Add( sbSizerRegulatorsChooser, 0, wxEXPAND, 5 );
|
||||
|
||||
m_RegulMessage = new wxStaticText( m_panelRegulators, wxID_ANY, _("Message"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_RegulMessage->Wrap( -1 );
|
||||
bSizerRegulRight->Add( m_RegulMessage, 0, wxALL, 5 );
|
||||
|
||||
|
||||
bSizerMainReg->Add( bSizerRegulRight, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_panelRegulators->SetSizer( bSizerMainReg );
|
||||
m_panelRegulators->Layout();
|
||||
bSizerMainReg->Fit( m_panelRegulators );
|
||||
m_Notebook->AddPage( m_panelRegulators, _("Regulators"), false );
|
||||
m_Notebook->AddPage( m_panelRegulators, _("Regulators"), true );
|
||||
m_panelTrackWidth = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bSizerTrackWidth;
|
||||
bSizerTrackWidth = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
@ -201,11 +288,13 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_TW_CuLength_choiceUnit->SetSelection( 0 );
|
||||
fgSizerTWprms->Add( m_TW_CuLength_choiceUnit, 0, wxEXPAND|wxALL, 5 );
|
||||
|
||||
|
||||
sbSizerTW_Prms->Add( fgSizerTWprms, 0, wxEXPAND, 5 );
|
||||
|
||||
m_htmlWinFormulas = new wxHtmlWindow( m_panelTrackWidth, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_NO_SELECTION|wxHW_SCROLLBAR_AUTO|wxSIMPLE_BORDER );
|
||||
sbSizerTW_Prms->Add( m_htmlWinFormulas, 1, wxEXPAND|wxTOP, 5 );
|
||||
|
||||
|
||||
bSizerTrackWidth->Add( sbSizerTW_Prms, 1, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_buttonTW = new wxButton( m_panelTrackWidth, wxID_ANY, _(">>>"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT );
|
||||
|
@ -279,8 +368,10 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_staticText791->Wrap( -1 );
|
||||
fgSizerTW_Results->Add( m_staticText791, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
sbSizerTW_Result->Add( fgSizerTW_Results, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizeRight->Add( sbSizerTW_Result, 1, wxEXPAND|wxALL, 5 );
|
||||
|
||||
wxStaticBoxSizer* sbSizerTW_Result1;
|
||||
|
@ -348,16 +439,20 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_staticText7911->Wrap( -1 );
|
||||
fgSizerTW_Results1->Add( m_staticText7911, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
sbSizerTW_Result1->Add( fgSizerTW_Results1, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizeRight->Add( sbSizerTW_Result1, 1, wxEXPAND|wxALL, 5 );
|
||||
|
||||
|
||||
bSizerTrackWidth->Add( bSizeRight, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_panelTrackWidth->SetSizer( bSizerTrackWidth );
|
||||
m_panelTrackWidth->Layout();
|
||||
bSizerTrackWidth->Fit( m_panelTrackWidth );
|
||||
m_Notebook->AddPage( m_panelTrackWidth, _("Track Width"), true );
|
||||
m_Notebook->AddPage( m_panelTrackWidth, _("Track Width"), false );
|
||||
m_panelElectricalSpacing = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bSizerElectricalClearance;
|
||||
bSizerElectricalClearance = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
@ -383,6 +478,7 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_buttonElectSpacingRefresh = new wxButton( m_panelElectricalSpacing, wxID_ANY, _("Update Values"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bLeftSizerElectricalClearance->Add( m_buttonElectSpacingRefresh, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizerElectricalClearance->Add( bLeftSizerElectricalClearance, 0, wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bElectricalSpacingSizerRight;
|
||||
|
@ -442,8 +538,10 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_staticText88->Wrap( -1 );
|
||||
bElectricalSpacingSizerRight->Add( m_staticText88, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
bSizerElectricalClearance->Add( bElectricalSpacingSizerRight, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_panelElectricalSpacing->SetSizer( bSizerElectricalClearance );
|
||||
m_panelElectricalSpacing->Layout();
|
||||
bSizerElectricalClearance->Fit( m_panelElectricalSpacing );
|
||||
|
@ -464,6 +562,7 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_panelDisplayshape = new wxPanel( m_panelTransline, wxID_ANY, wxDefaultPosition, wxSize( 205,205 ), wxTAB_TRAVERSAL );
|
||||
bLeftSizer->Add( m_panelDisplayshape, 1, wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizeTransline->Add( bLeftSizer, 0, wxEXPAND, 5 );
|
||||
|
||||
m_staticline1 = new wxStaticLine( m_panelTransline, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
|
||||
|
@ -585,8 +684,10 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_SubsPrm9_choiceUnit->SetSelection( 0 );
|
||||
fgSizerSubstPrms->Add( m_SubsPrm9_choiceUnit, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
|
||||
|
||||
|
||||
sbSubstrateBoxSizer->Add( fgSizerSubstPrms, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bMiddleSizer->Add( sbSubstrateBoxSizer, 0, wxEXPAND|wxBOTTOM, 5 );
|
||||
|
||||
wxStaticBoxSizer* sbCmpPrmsSizer;
|
||||
|
@ -610,10 +711,13 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_choiceUnit_Frequency->SetSelection( 0 );
|
||||
fgSizeCmpPrms->Add( m_choiceUnit_Frequency, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
|
||||
|
||||
|
||||
sbCmpPrmsSizer->Add( fgSizeCmpPrms, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bMiddleSizer->Add( sbCmpPrmsSizer, 0, wxEXPAND|wxTOP, 5 );
|
||||
|
||||
|
||||
bSizeTransline->Add( bMiddleSizer, 1, wxALL|wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bRightSizer;
|
||||
|
@ -676,10 +780,13 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
|
||||
fgSizerPhysPrms->Add( 0, 0, 0, 0, 5 );
|
||||
|
||||
|
||||
sbRightBoxizer->Add( fgSizerPhysPrms, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
btranslineRightSizer->Add( sbRightBoxizer, 0, wxBOTTOM|wxEXPAND, 5 );
|
||||
|
||||
|
||||
bRightSizer->Add( btranslineRightSizer, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* btranslineButtonsSizer;
|
||||
|
@ -700,8 +807,10 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_bitmapSynthetize = new wxStaticBitmap( m_panelTransline, wxID_ANY, wxBitmap( arrow_top_xpm ), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizerButtons->Add( m_bitmapSynthetize, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
|
||||
btranslineButtonsSizer->Add( bSizerButtons, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
|
||||
|
||||
|
||||
bRightSizer->Add( btranslineButtonsSizer, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
|
||||
|
||||
wxStaticBoxSizer* sbElectricalResultsSizer;
|
||||
|
@ -749,8 +858,10 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_choiceUnit_ElecPrm3->SetSelection( 0 );
|
||||
fgSizerResults->Add( m_choiceUnit_ElecPrm3, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
sbElectricalResultsSizer->Add( fgSizerResults, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bRightSizer->Add( sbElectricalResultsSizer, 0, wxEXPAND, 5 );
|
||||
|
||||
wxStaticBoxSizer* sbMessagesSizer;
|
||||
|
@ -818,12 +929,16 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_Message7->Wrap( -1 );
|
||||
fgSizerTranslResults->Add( m_Message7, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
sbMessagesSizer->Add( fgSizerTranslResults, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bRightSizer->Add( sbMessagesSizer, 1, wxEXPAND|wxTOP, 5 );
|
||||
|
||||
|
||||
bSizeTransline->Add( bRightSizer, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_panelTransline->SetSizer( bSizeTransline );
|
||||
m_panelTransline->Layout();
|
||||
bSizeTransline->Fit( m_panelTransline );
|
||||
|
@ -844,6 +959,7 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_panelDisplayAttenuator = new wxPanel( m_panelAttenuators, wxID_ANY, wxDefaultPosition, wxSize( 256,256 ), wxSIMPLE_BORDER|wxTAB_TRAVERSAL );
|
||||
bLeftSizerAtt->Add( m_panelDisplayAttenuator, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 );
|
||||
|
||||
|
||||
sbSizerAtt->Add( bLeftSizerAtt, 0, wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bMiddleSizerAtt;
|
||||
|
@ -891,8 +1007,10 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_attZoutUnit->Wrap( -1 );
|
||||
fgSizerAttPrms->Add( m_attZoutUnit, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
sbSizerAttPrms->Add( fgSizerAttPrms, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bMiddleSizerAtt->Add( sbSizerAttPrms, 0, wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bSizerAttButt;
|
||||
|
@ -904,6 +1022,7 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_bitmapAnalyse1 = new wxStaticBitmap( m_panelAttenuators, wxID_ANY, wxBitmap( arrow_bottom_xpm ), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizerAttButt->Add( m_bitmapAnalyse1, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
bMiddleSizerAtt->Add( bSizerAttButt, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
|
||||
|
||||
wxStaticBoxSizer* sbSizerAttValues;
|
||||
|
@ -948,8 +1067,10 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_attR3Unit->Wrap( -1 );
|
||||
fgSizerAttResults->Add( m_attR3Unit, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
sbSizerAttValues->Add( fgSizerAttResults, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bMiddleSizerAtt->Add( sbSizerAttValues, 0, wxEXPAND, 5 );
|
||||
|
||||
m_staticTextAttMsg = new wxStaticText( m_panelAttenuators, wxID_ANY, _("Messages:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
@ -959,6 +1080,7 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_Attenuator_Messages = new wxTextCtrl( m_panelAttenuators, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY );
|
||||
bMiddleSizerAtt->Add( m_Attenuator_Messages, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
sbSizerAtt->Add( bMiddleSizerAtt, 0, wxEXPAND, 5 );
|
||||
|
||||
wxStaticBoxSizer* sbRightSizerFormula;
|
||||
|
@ -969,8 +1091,10 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
|
||||
sbRightSizerFormula->Add( m_panelAttFormula, 1, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
sbSizerAtt->Add( sbRightSizerFormula, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_panelAttenuators->SetSizer( sbSizerAtt );
|
||||
m_panelAttenuators->Layout();
|
||||
sbSizerAtt->Fit( m_panelAttenuators );
|
||||
|
@ -1032,8 +1156,10 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_Band_tol_bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxBitmap( color_code_tolerance_xpm ), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerColoCode->Add( m_Band_tol_bitmap, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
|
||||
|
||||
|
||||
bSizerPanelColorCode->Add( fgSizerColoCode, 1, wxEXPAND|wxLEFT, 5 );
|
||||
|
||||
|
||||
m_panelColorCode->SetSizer( bSizerPanelColorCode );
|
||||
m_panelColorCode->Layout();
|
||||
bSizerPanelColorCode->Fit( m_panelColorCode );
|
||||
|
@ -1097,8 +1223,10 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
m_panelShowClassPrms = new wxPanel( m_panelBoardClass, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
brdclsSizerRight->Add( m_panelShowClassPrms, 1, wxEXPAND | wxALL, 5 );
|
||||
|
||||
|
||||
bSizerBoardClass->Add( brdclsSizerRight, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_panelBoardClass->SetSizer( bSizerBoardClass );
|
||||
m_panelBoardClass->Layout();
|
||||
bSizerBoardClass->Fit( m_panelBoardClass );
|
||||
|
@ -1106,13 +1234,20 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
|
||||
bmainFrameSizer->Add( m_Notebook, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
this->SetSizer( bmainFrameSizer );
|
||||
this->Layout();
|
||||
|
||||
this->Centre( wxBOTH );
|
||||
|
||||
// Connect Events
|
||||
m_choiceRegType->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRegulTypeSelection ), NULL, this );
|
||||
m_buttonCalculate->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRegulatorCalcButtonClick ), NULL, this );
|
||||
m_choiceRegulatorSelector->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRegulatorSelection ), NULL, this );
|
||||
m_regulators_filePicker->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( PCB_CALCULATOR_FRAME_BASE::OnDataFileSelection ), NULL, this );
|
||||
m_buttonEditItem->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnEditRegulator ), NULL, this );
|
||||
m_buttonAddItem->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnAddRegulator ), NULL, this );
|
||||
m_buttonRemoveItem->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRemoveRegulator ), NULL, this );
|
||||
m_buttonTW->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateButt ), NULL, this );
|
||||
m_ElectricalSpacingUnitsSelector->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnElectricalSpacingUnitsSelection ), NULL, this );
|
||||
m_buttonElectSpacingRefresh->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnElectricalSpacingRefresh ), NULL, this );
|
||||
|
@ -1134,7 +1269,13 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow
|
|||
PCB_CALCULATOR_FRAME_BASE::~PCB_CALCULATOR_FRAME_BASE()
|
||||
{
|
||||
// Disconnect Events
|
||||
m_choiceRegType->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRegulTypeSelection ), NULL, this );
|
||||
m_buttonCalculate->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRegulatorCalcButtonClick ), NULL, this );
|
||||
m_choiceRegulatorSelector->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRegulatorSelection ), NULL, this );
|
||||
m_regulators_filePicker->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( PCB_CALCULATOR_FRAME_BASE::OnDataFileSelection ), NULL, this );
|
||||
m_buttonEditItem->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnEditRegulator ), NULL, this );
|
||||
m_buttonAddItem->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnAddRegulator ), NULL, this );
|
||||
m_buttonRemoveItem->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRemoveRegulator ), NULL, this );
|
||||
m_buttonTW->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateButt ), NULL, this );
|
||||
m_ElectricalSpacingUnitsSelector->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnElectricalSpacingUnitsSelection ), NULL, this );
|
||||
m_buttonElectSpacingRefresh->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnElectricalSpacingRefresh ), NULL, this );
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Jun 30 2011)
|
||||
// C++ code generated with wxFormBuilder (version Mar 17 2012)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
|
@ -11,11 +11,7 @@
|
|||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
#include <wx/intl.h>
|
||||
class UNIT_SELECTOR_ANGLE;
|
||||
class UNIT_SELECTOR_FREQUENCY;
|
||||
class UNIT_SELECTOR_LEN;
|
||||
class UNIT_SELECTOR_RESISTOR;
|
||||
|
||||
#include "UnitSelector.h"
|
||||
#include <wx/string.h>
|
||||
#include <wx/menu.h>
|
||||
#include <wx/gdicmn.h>
|
||||
|
@ -27,15 +23,16 @@ class UNIT_SELECTOR_RESISTOR;
|
|||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/statbmp.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/statbox.h>
|
||||
#include <wx/radiobut.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/panel.h>
|
||||
#include <wx/choice.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/filepicker.h>
|
||||
#include <wx/panel.h>
|
||||
#include <wx/html/htmlwin.h>
|
||||
#include <wx/statbox.h>
|
||||
#include <wx/statline.h>
|
||||
#include <wx/grid.h>
|
||||
#include <wx/radiobox.h>
|
||||
|
@ -57,7 +54,8 @@ class PCB_CALCULATOR_FRAME_BASE : public wxFrame
|
|||
wxStatusBar* m_statusBar;
|
||||
wxNotebook* m_Notebook;
|
||||
wxPanel* m_panelRegulators;
|
||||
wxStaticBitmap* m_bitmapRegul;
|
||||
wxStaticBitmap* m_bitmapRegul4pins;
|
||||
wxStaticBitmap* m_bitmapRegul3pins;
|
||||
wxStaticText* m_RegulFormula;
|
||||
wxRadioButton* m_rbRegulR1;
|
||||
wxStaticText* m_labelRegultR1;
|
||||
|
@ -67,14 +65,25 @@ class PCB_CALCULATOR_FRAME_BASE : public wxFrame
|
|||
wxStaticText* m_labelRegultR2;
|
||||
wxTextCtrl* m_RegulR2Value;
|
||||
wxStaticText* m_UnitRegultR1;
|
||||
wxStaticText* m_lableVRef;
|
||||
wxTextCtrl* m_RegulVrefValue;
|
||||
wxStaticText* m_unitsVref;
|
||||
wxRadioButton* m_rbRegulVout;
|
||||
wxStaticText* m_labelVout;
|
||||
wxTextCtrl* m_RegulVoutValue;
|
||||
wxStaticText* m_unitsVout;
|
||||
wxStaticText* m_labelVRef;
|
||||
wxTextCtrl* m_RegulVrefValue;
|
||||
wxStaticText* m_unitsVref;
|
||||
wxStaticText* m_RegulIadjTitle;
|
||||
wxTextCtrl* m_RegulIadjValue;
|
||||
wxStaticText* m_IadjUnitLabel;
|
||||
wxStaticText* m_staticTextRegType;
|
||||
wxChoice* m_choiceRegType;
|
||||
wxButton* m_buttonCalculate;
|
||||
wxChoice* m_choiceRegulatorSelector;
|
||||
wxStaticText* m_staticTextRegFile;
|
||||
wxFilePickerCtrl* m_regulators_filePicker;
|
||||
wxButton* m_buttonEditItem;
|
||||
wxButton* m_buttonAddItem;
|
||||
wxButton* m_buttonRemoveItem;
|
||||
wxStaticText* m_RegulMessage;
|
||||
wxPanel* m_panelTrackWidth;
|
||||
wxStaticText* m_staticTextTW_WarningMessage;
|
||||
|
@ -250,7 +259,13 @@ class PCB_CALCULATOR_FRAME_BASE : public wxFrame
|
|||
wxPanel* m_panelShowClassPrms;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
virtual void OnRegulTypeSelection( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnRegulatorCalcButtonClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnRegulatorSelection( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnDataFileSelection( wxFileDirPickerEvent& event ) { event.Skip(); }
|
||||
virtual void OnEditRegulator( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnAddRegulator( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnRemoveRegulator( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnTWCalculateButt( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnElectricalSpacingUnitsSelection( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnElectricalSpacingRefresh( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
@ -271,7 +286,7 @@ class PCB_CALCULATOR_FRAME_BASE : public wxFrame
|
|||
|
||||
public:
|
||||
|
||||
PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Pcb Calculator"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 670,465 ), long style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxFULL_REPAINT_ON_RESIZE|wxTAB_TRAVERSAL );
|
||||
PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Pcb Calculator"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 670,489 ), long style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxFULL_REPAINT_ON_RESIZE|wxTAB_TRAVERSAL );
|
||||
|
||||
~PCB_CALCULATOR_FRAME_BASE();
|
||||
|
||||
|
|
|
@ -37,6 +37,10 @@
|
|||
#include <colors_selection.h>
|
||||
#include <build_version.h>
|
||||
|
||||
// Pcb_calculator data file extension:
|
||||
const wxString PcbCalcDataFileExt( wxT("pcbcalc") );
|
||||
|
||||
|
||||
// PCB_CALCULATOR_APP
|
||||
|
||||
void EDA_APP::MacOpenFile(const wxString &fileName)
|
||||
|
|
|
@ -10,13 +10,22 @@
|
|||
#include <transline.h> // Included for SUBST_PRMS_ID definition.
|
||||
#include <transline_ident.h>
|
||||
#include <attenuator_classes.h>
|
||||
#include <class_regulator_data.h>
|
||||
|
||||
extern const wxString PcbCalcDataFileExt;
|
||||
|
||||
/* Class PCB_CALCULATOR_FRAME_BASE
|
||||
This is the main frame for this application
|
||||
*/
|
||||
class PCB_CALCULATOR_FRAME : public PCB_CALCULATOR_FRAME_BASE
|
||||
{
|
||||
public:
|
||||
REGULATOR_LIST m_RegulatorList; // the list of known regulator
|
||||
|
||||
private:
|
||||
bool m_RegulatorListChanged; // set to true when m_RegulatorList
|
||||
// was modified, and the corresponging file
|
||||
// must be rewritten
|
||||
wxSize m_FrameSize;
|
||||
wxPoint m_FramePos;
|
||||
wxConfig * m_Config;
|
||||
|
@ -27,6 +36,7 @@ private:
|
|||
ATTENUATOR * m_currAttenuator;
|
||||
// List ofattenuators: ordered like in dialog menu list
|
||||
std::vector <ATTENUATOR *> m_attenuator_list;
|
||||
wxString m_lastSelectedRegulatorName; // last regulator name selected
|
||||
|
||||
|
||||
public:
|
||||
|
@ -46,6 +56,14 @@ private:
|
|||
void ReadConfig();
|
||||
void WriteConfig();
|
||||
|
||||
// R/W data files:
|
||||
bool ReadDataFile();
|
||||
bool WriteDataFile();
|
||||
const wxString GetDataFilename()
|
||||
{
|
||||
return m_regulators_filePicker->GetPath();
|
||||
}
|
||||
|
||||
// tracks width versus current functions:
|
||||
/**
|
||||
* Function OnTWCalculateButt
|
||||
|
@ -150,6 +168,30 @@ private:
|
|||
|
||||
// Regulators Panel
|
||||
void OnRegulatorCalcButtonClick( wxCommandEvent& event );
|
||||
void OnRegulTypeSelection( wxCommandEvent& event );
|
||||
void OnRegulatorSelection( wxCommandEvent& event );
|
||||
void OnDataFileSelection( wxFileDirPickerEvent& event );
|
||||
void OnAddRegulator( wxCommandEvent& event );
|
||||
void OnEditRegulator( wxCommandEvent& event );
|
||||
void OnRemoveRegulator( wxCommandEvent& event );
|
||||
|
||||
/**
|
||||
* Function RegulatorPageUpdate:
|
||||
* Update the regulator page dialog display:
|
||||
* enable the current regulator drawings and the formula used for calculations
|
||||
*/
|
||||
void RegulatorPageUpdate();
|
||||
|
||||
/**
|
||||
* Function SelectLastSelectedRegulator
|
||||
* select in choice box the last selected regulator
|
||||
* (name in m_lastSelectedRegulatorName)
|
||||
* and update the displayed values.
|
||||
* if m_lastSelectedRegulatorName is empty, just calls
|
||||
* RegulatorPageUpdate()
|
||||
*/
|
||||
void SelectLastSelectedRegulator();
|
||||
|
||||
void RegulatorsSolve();
|
||||
|
||||
public:
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
regulators
|
||||
regulator
|
||||
reg_iadj
|
||||
reg_vref
|
||||
reg_type
|
|
@ -26,32 +26,36 @@
|
|||
|
||||
#include <pcb_calculator.h>
|
||||
#include <UnitSelector.h>
|
||||
|
||||
#include <bitmaps.h>
|
||||
|
||||
|
||||
#define KEYWORD_FRAME_POSX wxT( "Pcb_calculator_Pos_x" )
|
||||
#define KEYWORD_FRAME_POSY wxT( "Pcb_calculator_Pos_y" )
|
||||
#define KEYWORD_FRAME_SIZEX wxT( "Pcb_calculator_Size_x" )
|
||||
#define KEYWORD_FRAME_SIZEY wxT( "Pcb_calculator_Size_y" )
|
||||
#define KEYWORD_TRANSLINE_SELECTION wxT( "Transline_selection" )
|
||||
#define KEYWORD_PAGE_SELECTION wxT( "Page_selection" )
|
||||
#define KEYWORD_COLORCODE_SELECTION wxT( "CC_selection" )
|
||||
#define KEYWORD_ATTENUATORS_SELECTION wxT( "Att_selection" )
|
||||
#define KEYWORD_BRDCLASS_SELECTION wxT( "BrdClass_selection" )
|
||||
#define KEYWORD_ELECTRICAL_SPACING_SELECTION wxT( "ElectSpacing_selection" )
|
||||
#define KEYWORD_ELECTRICAL_SPACING_VOLTAGE wxT( "ElectSpacing_voltage" )
|
||||
#define KEYWORD_REGUL_R1 wxT( "RegulR1" )
|
||||
#define KEYWORD_REGUL_R2 wxT( "RegulR2" )
|
||||
#define KEYWORD_REGUL_VREF wxT( "RegulVREF" )
|
||||
#define KEYWORD_REGUL_VOUT wxT( "RegulVOUT" )
|
||||
#define KEYWORD_FRAME_POSX wxT( "Pcb_calculator_Pos_x" )
|
||||
#define KEYWORD_FRAME_POSY wxT( "Pcb_calculator_Pos_y" )
|
||||
#define KEYWORD_FRAME_SIZEX wxT( "Pcb_calculator_Size_x" )
|
||||
#define KEYWORD_FRAME_SIZEY wxT( "Pcb_calculator_Size_y" )
|
||||
#define KEYWORD_TRANSLINE_SELECTION wxT( "Transline_selection" )
|
||||
#define KEYWORD_PAGE_SELECTION wxT( "Page_selection" )
|
||||
#define KEYWORD_COLORCODE_SELECTION wxT( "CC_selection" )
|
||||
#define KEYWORD_ATTENUATORS_SELECTION wxT( "Att_selection" )
|
||||
#define KEYWORD_BRDCLASS_SELECTION wxT( "BrdClass_selection" )
|
||||
#define KEYWORD_ELECTRICAL_SPACING_SELECTION wxT( "ElectSpacing_selection" )
|
||||
#define KEYWORD_ELECTRICAL_SPACING_VOLTAGE wxT( "ElectSpacing_voltage" )
|
||||
#define KEYWORD_REGUL_R1 wxT( "RegulR1" )
|
||||
#define KEYWORD_REGUL_R2 wxT( "RegulR2" )
|
||||
#define KEYWORD_REGUL_VREF wxT( "RegulVREF" )
|
||||
#define KEYWORD_REGUL_VOUT wxT( "RegulVOUT" )
|
||||
#define KEYWORD_REGUL_FILENAME wxT( "RegulListFilename" )
|
||||
#define KEYWORD_REGUL_SELECTED wxT( "RegulName" )
|
||||
#define KEYWORD_REGUL_TYPE wxT( "RegulType" )
|
||||
#define KEYWORD_REGUL_LAST_PARAM wxT( "RegulLastParam" )
|
||||
|
||||
PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME( wxWindow * parent ) :
|
||||
PCB_CALCULATOR_FRAME_BASE( parent )
|
||||
PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME( wxWindow* parent ) :
|
||||
PCB_CALCULATOR_FRAME_BASE( parent )
|
||||
{
|
||||
m_currTransLine = NULL;
|
||||
m_currTransLineType = default_type;
|
||||
m_currAttenuator = NULL;
|
||||
m_currAttenuator = NULL;
|
||||
m_RegulatorListChanged = false;
|
||||
m_Config = new wxConfig();
|
||||
|
||||
// Populate transline list ordered like in dialog menu list
|
||||
|
@ -61,6 +65,7 @@ PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME( wxWindow * parent ) :
|
|||
rectwaveguide_type, coax_type, c_microstrip_type,
|
||||
stripline_type, twistedpair_type
|
||||
};
|
||||
|
||||
for( int ii = 0; ii < 8; ii++ )
|
||||
m_transline_list.push_back( new TRANSLINE_IDENT( tltype_list[ii] ) );
|
||||
|
||||
|
@ -73,6 +78,8 @@ PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME( wxWindow * parent ) :
|
|||
|
||||
ReadConfig();
|
||||
|
||||
ReadDataFile();
|
||||
|
||||
TranslineTypeSelection( m_currTransLineType );
|
||||
m_TranslineSelection->SetSelection( m_currTransLineType );
|
||||
|
||||
|
@ -86,6 +93,10 @@ PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME( wxWindow * parent ) :
|
|||
|
||||
ElectricalSpacingUpdateData( m_ElectricalSpacingUnitsSelector->GetUnitScale() );
|
||||
|
||||
|
||||
m_choiceRegulatorSelector->Append( m_RegulatorList.GetRegList() );
|
||||
SelectLastSelectedRegulator();
|
||||
|
||||
// Give an icon
|
||||
wxIcon icon;
|
||||
icon.CopyFromBitmap( KiBitmap( icon_pcbcalculator_xpm ) );
|
||||
|
@ -104,6 +115,11 @@ PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME( wxWindow * parent ) :
|
|||
PCB_CALCULATOR_FRAME::~PCB_CALCULATOR_FRAME()
|
||||
{
|
||||
WriteConfig();
|
||||
|
||||
if( m_RegulatorListChanged )
|
||||
WriteDataFile();
|
||||
|
||||
|
||||
for( unsigned ii = 0; ii < m_transline_list.size(); ii++ )
|
||||
delete m_transline_list[ii];
|
||||
|
||||
|
@ -124,8 +140,8 @@ void PCB_CALCULATOR_FRAME::ReadConfig()
|
|||
if( m_Config == NULL )
|
||||
return;
|
||||
|
||||
long ltmp;
|
||||
wxString msg;
|
||||
long ltmp;
|
||||
wxString msg;
|
||||
m_Config->Read( KEYWORD_FRAME_POSX, &m_FramePos.x, -1 );
|
||||
m_Config->Read( KEYWORD_FRAME_POSY, &m_FramePos.y, -1 );
|
||||
m_Config->Read( KEYWORD_FRAME_SIZEX, &m_FrameSize.x, -1 );
|
||||
|
@ -140,21 +156,40 @@ void PCB_CALCULATOR_FRAME::ReadConfig()
|
|||
m_AttenuatorsSelection->SetSelection( ltmp );
|
||||
m_Config->Read( KEYWORD_BRDCLASS_SELECTION, <mp, 0 );
|
||||
m_BoardClassesUnitsSelector->SetSelection( ltmp );
|
||||
m_Config->Read( KEYWORD_REGUL_R1, &msg, wxT("10") );
|
||||
|
||||
// Regul panel config:
|
||||
m_Config->Read( KEYWORD_REGUL_R1, &msg, wxT( "10" ) );
|
||||
m_RegulR1Value->SetValue( msg );
|
||||
m_Config->Read( KEYWORD_REGUL_R2, &msg, wxT("10") );
|
||||
m_Config->Read( KEYWORD_REGUL_R2, &msg, wxT( "10" ) );
|
||||
m_RegulR2Value->SetValue( msg );
|
||||
m_Config->Read( KEYWORD_REGUL_VREF, &msg, wxT("3") );
|
||||
m_Config->Read( KEYWORD_REGUL_VREF, &msg, wxT( "3" ) );
|
||||
m_RegulVrefValue->SetValue( msg );
|
||||
m_Config->Read( KEYWORD_REGUL_VOUT, &msg, wxT("12") );
|
||||
m_Config->Read( KEYWORD_REGUL_VOUT, &msg, wxT( "12" ) );
|
||||
m_RegulVoutValue->SetValue( msg );
|
||||
m_Config->Read( KEYWORD_REGUL_FILENAME, &msg, wxT( "" ) );
|
||||
m_regulators_filePicker->SetPath( msg );
|
||||
m_Config->Read( KEYWORD_REGUL_SELECTED, &msg, wxT( "" ) );
|
||||
m_lastSelectedRegulatorName = msg;
|
||||
m_Config->Read( KEYWORD_REGUL_TYPE, <mp, 0 );
|
||||
m_choiceRegType->SetSelection( ltmp );
|
||||
m_Config->Read( KEYWORD_REGUL_LAST_PARAM, <mp, 0 );
|
||||
wxRadioButton * regprms[3] =
|
||||
{ m_rbRegulR1, m_rbRegulR2, m_rbRegulVout
|
||||
};
|
||||
if( (unsigned)ltmp >= 3 )
|
||||
ltmp = 0;
|
||||
for( int ii = 0; ii < 3; ii++ )
|
||||
regprms[ii]->SetValue( ltmp == ii );
|
||||
|
||||
// Electrical panel config
|
||||
m_Config->Read( KEYWORD_ELECTRICAL_SPACING_SELECTION, <mp, 0 );
|
||||
m_ElectricalSpacingUnitsSelector->SetSelection( ltmp );
|
||||
m_Config->Read( KEYWORD_ELECTRICAL_SPACING_VOLTAGE, &msg, wxT("500") );
|
||||
m_Config->Read( KEYWORD_ELECTRICAL_SPACING_VOLTAGE, &msg, wxT( "500" ) );
|
||||
m_ElectricalSpacingVoltage->SetValue( msg );
|
||||
|
||||
for( unsigned ii = 0; ii < m_transline_list.size(); ii++ )
|
||||
m_transline_list[ii]->ReadConfig( m_Config );
|
||||
|
||||
for( unsigned ii = 0; ii < m_attenuator_list.size(); ii++ )
|
||||
m_attenuator_list[ii]->ReadConfig( m_Config );
|
||||
}
|
||||
|
@ -175,15 +210,34 @@ void PCB_CALCULATOR_FRAME::WriteConfig()
|
|||
m_Config->Write( KEYWORD_FRAME_SIZEX, (long) m_FrameSize.x );
|
||||
m_Config->Write( KEYWORD_FRAME_SIZEY, (long) m_FrameSize.y );
|
||||
}
|
||||
|
||||
m_Config->Write( KEYWORD_TRANSLINE_SELECTION, (long) m_currTransLineType );
|
||||
m_Config->Write( KEYWORD_PAGE_SELECTION, m_Notebook->GetSelection() );
|
||||
m_Config->Write( KEYWORD_COLORCODE_SELECTION, m_rbToleranceSelection->GetSelection() );
|
||||
m_Config->Write( KEYWORD_ATTENUATORS_SELECTION, m_AttenuatorsSelection->GetSelection());
|
||||
m_Config->Write( KEYWORD_ATTENUATORS_SELECTION, m_AttenuatorsSelection->GetSelection() );
|
||||
m_Config->Write( KEYWORD_BRDCLASS_SELECTION, m_BoardClassesUnitsSelector->GetSelection() );
|
||||
|
||||
m_Config->Write( KEYWORD_REGUL_R1, m_RegulR1Value->GetValue() );
|
||||
m_Config->Write( KEYWORD_REGUL_R2, m_RegulR2Value->GetValue() );
|
||||
m_Config->Write( KEYWORD_REGUL_VREF, m_RegulVrefValue->GetValue() );
|
||||
m_Config->Write( KEYWORD_REGUL_VOUT, m_RegulVoutValue->GetValue() );
|
||||
m_Config->Write( KEYWORD_REGUL_FILENAME, m_regulators_filePicker->GetPath() );
|
||||
m_Config->Write( KEYWORD_REGUL_SELECTED, m_lastSelectedRegulatorName );
|
||||
m_Config->Write( KEYWORD_REGUL_TYPE,
|
||||
m_choiceRegType->GetSelection() );
|
||||
wxRadioButton * regprms[3] =
|
||||
{ m_rbRegulR1, m_rbRegulR2, m_rbRegulVout
|
||||
};
|
||||
for( int ii = 0; ii < 3; ii++ )
|
||||
{
|
||||
if( regprms[ii]->GetValue() )
|
||||
{
|
||||
m_Config->Write( KEYWORD_REGUL_LAST_PARAM, ii );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
m_Config->Write( KEYWORD_ELECTRICAL_SPACING_SELECTION,
|
||||
m_ElectricalSpacingUnitsSelector->GetSelection() );
|
||||
m_Config->Write( KEYWORD_ELECTRICAL_SPACING_VOLTAGE,
|
||||
|
@ -193,12 +247,12 @@ void PCB_CALCULATOR_FRAME::WriteConfig()
|
|||
|
||||
for( unsigned ii = 0; ii < m_transline_list.size(); ii++ )
|
||||
m_transline_list[ii]->WriteConfig( m_Config );
|
||||
|
||||
for( unsigned ii = 0; ii < m_attenuator_list.size(); ii++ )
|
||||
m_attenuator_list[ii]->WriteConfig( m_Config );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Function OnTranslineAnalyse
|
||||
* Run a new analyse for the current transline with current parameters
|
||||
|
@ -213,6 +267,7 @@ void PCB_CALCULATOR_FRAME::OnTranslineAnalyse( wxCommandEvent& event )
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function OnTranslineSynthetize
|
||||
* Run a new synthezis for the current transline with current parameters
|
||||
|
@ -230,14 +285,15 @@ void PCB_CALCULATOR_FRAME::OnTranslineSynthetize( wxCommandEvent& event )
|
|||
|
||||
void PCB_CALCULATOR_FRAME::OnPaintTranslinePanel( wxPaintEvent& event )
|
||||
{
|
||||
wxPaintDC dc( m_panelDisplayshape );
|
||||
wxPaintDC dc( m_panelDisplayshape );
|
||||
|
||||
TRANSLINE_IDENT* tr_ident = m_transline_list[m_currTransLineType];
|
||||
|
||||
TRANSLINE_IDENT* tr_ident = m_transline_list[m_currTransLineType];
|
||||
if( tr_ident )
|
||||
{
|
||||
wxSize size = m_panelDisplayshape->GetSize();
|
||||
size.x -= tr_ident->m_Icon->GetWidth();
|
||||
size.y -= tr_ident->m_Icon->GetHeight();
|
||||
size.x -= tr_ident->m_Icon->GetWidth();
|
||||
size.y -= tr_ident->m_Icon->GetHeight();
|
||||
dc.DrawBitmap( *tr_ident->m_Icon, size.x / 2, size.y / 2 );
|
||||
}
|
||||
|
||||
|
|
|
@ -28,14 +28,223 @@
|
|||
#include <wx/config.h>
|
||||
|
||||
#include <pcb_calculator.h>
|
||||
#include <class_regulator_data.h>
|
||||
#include <dialog_regulator_data_base.h>
|
||||
|
||||
|
||||
extern double ReturnDoubleFromString( const wxString& TextValue );
|
||||
|
||||
class DIALOG_EDITOR_DATA: public DIALOG_EDITOR_DATA_BASE
|
||||
{
|
||||
public:
|
||||
DIALOG_EDITOR_DATA( PCB_CALCULATOR_FRAME * parent, const wxString & aRegName )
|
||||
: DIALOG_EDITOR_DATA_BASE( parent )
|
||||
{
|
||||
m_textCtrlName->SetValue( aRegName );
|
||||
m_textCtrlName->Enable( aRegName.IsEmpty() );
|
||||
UpdateDialog();
|
||||
}
|
||||
|
||||
~DIALOG_EDITOR_DATA() {};
|
||||
|
||||
/**
|
||||
* Function CopyRegulatorDataToDialog
|
||||
* Transfert data from dialog to aItem
|
||||
* @param aItem = a pointer to the REGULATOR_DATA
|
||||
*/
|
||||
void CopyRegulatorDataToDialog( REGULATOR_DATA * aItem );
|
||||
|
||||
/**
|
||||
* Function BuildRegulatorFromData
|
||||
* Creates a new REGULATOR_DATA from dialog
|
||||
* @return a pointer to the new REGULATOR_DATA
|
||||
*/
|
||||
REGULATOR_DATA * BuildRegulatorFromData();
|
||||
|
||||
/**
|
||||
* Enable/disable Iadj realted widgets, according to
|
||||
* the regulator type
|
||||
*/
|
||||
void UpdateDialog()
|
||||
{
|
||||
bool enbl = m_choiceRegType->GetSelection() == 1;
|
||||
m_RegulIadjValue->Enable( enbl );
|
||||
m_RegulIadjTitle->Enable( enbl );
|
||||
m_IadjUnitLabel->Enable( enbl );
|
||||
}
|
||||
|
||||
/**
|
||||
* called when the current regulator type is changed
|
||||
*/
|
||||
void OnRegTypeSelection( wxCommandEvent& event )
|
||||
{
|
||||
UpdateDialog();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
void DIALOG_EDITOR_DATA::CopyRegulatorDataToDialog( REGULATOR_DATA * aItem )
|
||||
{
|
||||
m_textCtrlName->SetValue( aItem->m_Name );
|
||||
wxString value;
|
||||
value.Printf( wxT("%g"), aItem->m_Vref );
|
||||
m_textCtrlVref->SetValue( value );
|
||||
value.Printf( wxT("%g"), aItem->m_Iadj );
|
||||
m_RegulIadjValue->SetValue( value );
|
||||
m_choiceRegType->SetSelection( aItem->m_Type );
|
||||
UpdateDialog();
|
||||
}
|
||||
|
||||
REGULATOR_DATA * DIALOG_EDITOR_DATA::BuildRegulatorFromData()
|
||||
{
|
||||
double vref = ReturnDoubleFromString( m_textCtrlVref->GetValue() );
|
||||
double iadj = ReturnDoubleFromString( m_RegulIadjValue->GetValue() );
|
||||
int type = m_choiceRegType->GetSelection();
|
||||
if( type != 1 )
|
||||
iadj = 0.0;
|
||||
REGULATOR_DATA * item = new REGULATOR_DATA( m_textCtrlName->GetValue(),
|
||||
vref, type, iadj );
|
||||
return item;
|
||||
}
|
||||
|
||||
void PCB_CALCULATOR_FRAME::OnRegulatorCalcButtonClick( wxCommandEvent& event )
|
||||
{
|
||||
RegulatorsSolve();
|
||||
}
|
||||
|
||||
void PCB_CALCULATOR_FRAME::RegulatorPageUpdate()
|
||||
{
|
||||
switch( m_choiceRegType->GetSelection() )
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
m_bitmapRegul4pins->Show( true );
|
||||
m_bitmapRegul3pins->Show( false );
|
||||
m_RegulIadjValue->Enable( false );
|
||||
m_RegulIadjTitle->Enable( false );
|
||||
m_IadjUnitLabel->Enable( false );
|
||||
m_RegulFormula->SetLabel( wxT("Vout = Vref * (R1 + R2) / R2") );
|
||||
break;
|
||||
|
||||
case 1:
|
||||
m_bitmapRegul4pins->Show( false );
|
||||
m_bitmapRegul3pins->Show( true );
|
||||
m_RegulIadjValue->Enable( true );
|
||||
m_RegulIadjTitle->Enable( true );
|
||||
m_IadjUnitLabel->Enable( true );
|
||||
m_RegulFormula->SetLabel( wxT("Vout = Vref * (R1 + R2) / R1 + Iadj * R2") );
|
||||
break;
|
||||
}
|
||||
// The new icon size must be taken in account
|
||||
m_panelRegulators->GetSizer()->Layout();
|
||||
m_panelRegulators->Refresh();
|
||||
}
|
||||
|
||||
void PCB_CALCULATOR_FRAME::OnRegulTypeSelection( wxCommandEvent& event )
|
||||
{
|
||||
RegulatorPageUpdate();
|
||||
}
|
||||
|
||||
void PCB_CALCULATOR_FRAME::OnRegulatorSelection( wxCommandEvent& event )
|
||||
{
|
||||
wxString name = m_choiceRegulatorSelector->GetStringSelection();
|
||||
REGULATOR_DATA * item = m_RegulatorList.GetReg( name );
|
||||
if( item )
|
||||
{
|
||||
m_lastSelectedRegulatorName = item->m_Name;
|
||||
m_choiceRegType->SetSelection( item->m_Type );
|
||||
wxString value;
|
||||
value.Printf( wxT("%g"), item->m_Vref );
|
||||
m_RegulVrefValue->SetValue( value );
|
||||
value.Printf( wxT("%g"), item->m_Iadj );
|
||||
m_RegulIadjValue->SetValue( value );
|
||||
|
||||
RegulatorPageUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
void PCB_CALCULATOR_FRAME::OnDataFileSelection( wxFileDirPickerEvent& event )
|
||||
{
|
||||
}
|
||||
|
||||
void PCB_CALCULATOR_FRAME::OnAddRegulator( wxCommandEvent& event )
|
||||
{
|
||||
DIALOG_EDITOR_DATA dlg( this, wxEmptyString );
|
||||
if( dlg.ShowModal() != wxID_OK )
|
||||
return;
|
||||
|
||||
REGULATOR_DATA * new_item = dlg.BuildRegulatorFromData();
|
||||
|
||||
// Add new item, if not existing
|
||||
if( m_RegulatorList.GetReg( new_item->m_Name ) == NULL )
|
||||
{
|
||||
// Add item in list
|
||||
m_RegulatorList.Add( new_item );
|
||||
m_RegulatorListChanged = true;
|
||||
m_choiceRegulatorSelector->Clear();
|
||||
m_choiceRegulatorSelector->Append( m_RegulatorList.GetRegList() );
|
||||
SelectLastSelectedRegulator();
|
||||
}
|
||||
else
|
||||
{
|
||||
wxMessageBox( _("This regulator is already in list. Aborted") );
|
||||
delete new_item;
|
||||
}
|
||||
}
|
||||
|
||||
void PCB_CALCULATOR_FRAME::OnEditRegulator( wxCommandEvent& event )
|
||||
{
|
||||
wxString name = m_choiceRegulatorSelector->GetStringSelection();
|
||||
REGULATOR_DATA * item = m_RegulatorList.GetReg( name );
|
||||
DIALOG_EDITOR_DATA dlg( this, name );
|
||||
dlg.CopyRegulatorDataToDialog( item );
|
||||
if( dlg.ShowModal() != wxID_OK )
|
||||
return;
|
||||
|
||||
REGULATOR_DATA * new_item = dlg.BuildRegulatorFromData();
|
||||
m_RegulatorList.Replace( new_item );
|
||||
|
||||
m_RegulatorListChanged = true;
|
||||
|
||||
SelectLastSelectedRegulator();
|
||||
}
|
||||
|
||||
void PCB_CALCULATOR_FRAME::OnRemoveRegulator( wxCommandEvent& event )
|
||||
{
|
||||
wxString name = wxGetSingleChoice( _("Remove Regulator"), wxEmptyString,
|
||||
m_RegulatorList.GetRegList() );
|
||||
if( name.IsEmpty() )
|
||||
return;
|
||||
|
||||
m_RegulatorList.Remove( name );
|
||||
m_RegulatorListChanged = true;
|
||||
m_choiceRegulatorSelector->Clear();
|
||||
m_choiceRegulatorSelector->Append( m_RegulatorList.GetRegList() );
|
||||
if( m_lastSelectedRegulatorName == name )
|
||||
m_lastSelectedRegulatorName.Empty();
|
||||
|
||||
SelectLastSelectedRegulator();
|
||||
}
|
||||
|
||||
void PCB_CALCULATOR_FRAME::SelectLastSelectedRegulator()
|
||||
{
|
||||
// Find last selected in regulator list:
|
||||
int idx = -1;
|
||||
if( ! m_lastSelectedRegulatorName.IsEmpty() )
|
||||
{
|
||||
for( unsigned ii = 0; ii < m_RegulatorList.GetCount(); ii++ )
|
||||
if( m_RegulatorList.m_List[ii]->m_Name == m_lastSelectedRegulatorName )
|
||||
{
|
||||
idx = ii;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
m_choiceRegulatorSelector->SetSelection( idx );
|
||||
wxCommandEvent event;
|
||||
OnRegulatorSelection( event );
|
||||
}
|
||||
|
||||
// Calculate a value from the 3 other values
|
||||
// Vref is given by the regulator properties, so
|
||||
// we can calculate only R1, R2 or Vout
|
||||
|
@ -60,16 +269,21 @@ void PCB_CALCULATOR_FRAME::RegulatorsSolve()
|
|||
|
||||
m_RegulMessage->SetLabel( wxEmptyString);
|
||||
|
||||
// Convert r1 and r2 in ohms
|
||||
int r1scale = 1000;
|
||||
int r2scale = 1000;
|
||||
|
||||
// Read values from panel:
|
||||
txt = m_RegulR1Value->GetValue();
|
||||
r1 = ReturnDoubleFromString(txt);
|
||||
r1 = ReturnDoubleFromString(txt) * r1scale;
|
||||
txt = m_RegulR2Value->GetValue();
|
||||
r2 = ReturnDoubleFromString(txt);
|
||||
r2 = ReturnDoubleFromString(txt) * r2scale;
|
||||
txt = m_RegulVrefValue->GetValue();
|
||||
vref = ReturnDoubleFromString(txt);
|
||||
txt = m_RegulVoutValue->GetValue();
|
||||
vout = ReturnDoubleFromString(txt);
|
||||
|
||||
|
||||
// Some tests:
|
||||
if( vout < vref && id != 2)
|
||||
{
|
||||
|
@ -90,24 +304,51 @@ void PCB_CALCULATOR_FRAME::RegulatorsSolve()
|
|||
}
|
||||
|
||||
// Calculate
|
||||
switch( id )
|
||||
{
|
||||
case 0:
|
||||
r1 = ( vout / vref - 1 ) * r2;
|
||||
break;
|
||||
if( m_choiceRegType->GetSelection() == 1)
|
||||
{ // 3 terminal regulator
|
||||
txt = m_RegulIadjValue->GetValue();
|
||||
double iadj = ReturnDoubleFromString(txt);
|
||||
// iadj is given in micro amp, so convert it in amp.
|
||||
iadj /= 1000000;
|
||||
|
||||
case 1:
|
||||
r2 = r1 / ( vout / vref - 1);
|
||||
break;
|
||||
switch( id )
|
||||
{
|
||||
case 0:
|
||||
r1 = vref * r2 / ( vout - vref - (r2 * iadj) );
|
||||
break;
|
||||
|
||||
case 2:
|
||||
vout = vref * (r1 + r2) / r2;
|
||||
break;
|
||||
case 1:
|
||||
// to do
|
||||
r2 = ( vout - vref ) / ( iadj + (vref/r1) );
|
||||
break;
|
||||
|
||||
case 2:
|
||||
vout = vref * (r1 + r2) / r1;
|
||||
vout += r2 * iadj;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // Standard 4 terminal regulator
|
||||
switch( id )
|
||||
{
|
||||
case 0:
|
||||
r1 = ( vout / vref - 1 ) * r2;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
r2 = r1 / ( vout / vref - 1);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
vout = vref * (r1 + r2) / r2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// write values to panel:
|
||||
txt.Printf(wxT("%g"), r1);
|
||||
txt.Printf(wxT("%g"), r1 / r1scale );
|
||||
m_RegulR1Value->SetValue(txt);
|
||||
txt.Printf(wxT("%g"), r2);
|
||||
txt.Printf(wxT("%g"), r2 / r2scale);
|
||||
m_RegulR2Value->SetValue(txt);
|
||||
txt.Printf(wxT("%g"), vref);
|
||||
m_RegulVrefValue->SetValue(txt);
|
||||
|
|
|
@ -118,7 +118,7 @@ bool NETLIST_READER::ReadKicadNetList( FILE* aFile )
|
|||
{
|
||||
BOARD * brd = m_pcbframe ? m_pcbframe->GetBoard() : NULL;
|
||||
|
||||
// netlineReader dtor will close aFile
|
||||
// netlineReader dtor will close aFile
|
||||
FILE_LINE_READER netlineReader( aFile, m_netlistFullName );
|
||||
NETLIST_READER_KICAD_PARSER netlist_parser( &netlineReader, this );
|
||||
|
||||
|
|
Loading…
Reference in New Issue