diff --git a/src/Mod/Ship/CMakeLists.txt b/src/Mod/Ship/CMakeLists.txt index 9f86e5e4a..8f379a0bc 100644 --- a/src/Mod/Ship/CMakeLists.txt +++ b/src/Mod/Ship/CMakeLists.txt @@ -21,6 +21,9 @@ SET(ShipIcons_SRCS Icons/Ico.png Icons/Ico.xcf Icons/Ico.xpm + Icons/LoadIco.png + Icons/LoadIco.xcf + Icons/LoadIco.xpm Icons/OutlineDrawIco.png Icons/OutlineDrawIco.xcf Icons/OutlineDrawIco.xpm @@ -32,6 +35,19 @@ SET(ShipIcons_SRCS ) SOURCE_GROUP("shipicons" FILES ${ShipIcons_SRCS}) +SET(ShipExamples_SRCS + Examples/s60.fcstd + Examples/barehull5415.fcstd +) +SOURCE_GROUP("shipexamples" FILES ${ShipExamples_SRCS}) + +SET(ShipLoadExample_SRCS + shipLoadExample/__init__.py + shipLoadExample/TaskPanel.py + shipLoadExample/TaskPanel.ui +) +SOURCE_GROUP("shiploadexample" FILES ${ShipLoadExample_SRCS}) + SET(ShipCreateShip_SRCS shipCreateShip/__init__.py shipCreateShip/Preview.py @@ -51,6 +67,7 @@ SOURCE_GROUP("shipoutlinedraw" FILES ${ShipOutlineDraw_SRCS}) SET(ShipAreasCurve_SRCS shipAreasCurve/__init__.py + shipAreasCurve/Plot.py shipAreasCurve/Preview.py shipAreasCurve/TaskPanel.py shipAreasCurve/TaskPanel.ui @@ -71,7 +88,7 @@ SET(ShipUtils_SRCS ) SOURCE_GROUP("shiputils" FILES ${ShipUtils_SRCS}) -SET(all_files ${ShipMain_SRCS} ${ShipIcons_SRCS} ${ShipCreateShip_SRCS} ${ShipOutlineDraw_SRCS} ${ShipAreasCurve_SRCS} ${ShipHydrostatics_SRCS} ${ShipUtils_SRCS}) +SET(all_files ${ShipMain_SRCS} ${ShipIcons_SRCS} ${ShipExamples_SRCS} ${ShipLoadExample_SRCS} ${ShipCreateShip_SRCS} ${ShipOutlineDraw_SRCS} ${ShipAreasCurve_SRCS} ${ShipHydrostatics_SRCS} ${ShipUtils_SRCS}) ADD_CUSTOM_TARGET(Ship ALL SOURCES ${all_files} @@ -85,6 +102,18 @@ INSTALL( DESTINATION Mod/Ship/Icons ) +INSTALL( + FILES + ${ShipExamples_SRCS} + DESTINATION + Mod/Ship/Examples +) +INSTALL( + FILES + ${ShipLoadExample_SRCS} + DESTINATION + Mod/Ship/shipLoadExample +) INSTALL( FILES ${ShipCreateShip_SRCS} diff --git a/src/Mod/Ship/Examples/barehull5415.fcstd b/src/Mod/Ship/Examples/barehull5415.fcstd new file mode 100644 index 000000000..e6f36ae4b Binary files /dev/null and b/src/Mod/Ship/Examples/barehull5415.fcstd differ diff --git a/src/Mod/Ship/Examples/s60.fcstd b/src/Mod/Ship/Examples/s60.fcstd new file mode 100644 index 000000000..02bfe4932 Binary files /dev/null and b/src/Mod/Ship/Examples/s60.fcstd differ diff --git a/src/Mod/Ship/Icons/LoadIco.png b/src/Mod/Ship/Icons/LoadIco.png new file mode 100644 index 000000000..5d7037fcb Binary files /dev/null and b/src/Mod/Ship/Icons/LoadIco.png differ diff --git a/src/Mod/Ship/Icons/LoadIco.xcf b/src/Mod/Ship/Icons/LoadIco.xcf new file mode 100644 index 000000000..8ba942922 Binary files /dev/null and b/src/Mod/Ship/Icons/LoadIco.xcf differ diff --git a/src/Mod/Ship/Icons/LoadIco.xpm b/src/Mod/Ship/Icons/LoadIco.xpm new file mode 100644 index 000000000..f59562b0e --- /dev/null +++ b/src/Mod/Ship/Icons/LoadIco.xpm @@ -0,0 +1,1985 @@ +/* XPM */ +static char * LoadIco_xpm[] = { +"128 128 1854 2", +" c None", +". c #000000", +"+ c #050505", +"@ c #060606", +"# c #585858", +"$ c #646464", +"% c #818181", +"& c #454545", +"* c #0C0C0C", +"= c #222222", +"- c #848484", +"; c #4C4C4C", +"> c #D3D3D3", +", c #D1D1D0", +"' c #CCCBCB", +") c #9E9E9E", +"! c #636363", +"~ c #2C2C2C", +"{ c #020202", +"] c #161616", +"^ c #1F1F1F", +"/ c #B2B3B3", +"( c #CCCDCD", +"_ c #CACACA", +": c #C8C8C7", +"< c #C6C6C5", +"[ c #C3C3C3", +"} c #B3B3B3", +"| c #7F8080", +"1 c #494949", +"2 c #151515", +"3 c #464646", +"4 c #6A6A6A", +"5 c #999899", +"6 c #969696", +"7 c #9A9A9A", +"8 c #959595", +"9 c #8F8F90", +"0 c #797879", +"a c #5F5E5F", +"b c #414141", +"c c #181818", +"d c #1E1E1E", +"e c #101010", +"f c #040404", +"g c #7D7C7C", +"h c #C6C6C6", +"i c #C3C3C4", +"j c #C1C1C2", +"k c #BFBFBF", +"l c #BDBDBD", +"m c #BABBBA", +"n c #B8B8B8", +"o c #B6B6B6", +"p c #979796", +"q c #323232", +"r c #353535", +"s c #828282", +"t c #BEBDBD", +"u c #D1D2D1", +"v c #D1D1D1", +"w c #D1D0D1", +"x c #D0D0D0", +"y c #CFCFD0", +"z c #D0D0CF", +"A c #CFCFCF", +"B c #CECECE", +"C c #CECECD", +"D c #CDCDCD", +"E c #BEBEBE", +"F c #8B8B8B", +"G c #535353", +"H c #B9B9B9", +"I c #282828", +"J c #7F7F7F", +"K c #C0C0BF", +"L c #BBBBBB", +"M c #B9B8B9", +"N c #B4B4B4", +"O c #B2B2B2", +"P c #AFAFAF", +"Q c #ADADAD", +"R c #ABABAB", +"S c #A2A2A2", +"T c #7B7B7B", +"U c #4B4B4B", +"V c #1D1D1D", +"W c #444444", +"X c #AEAEAE", +"Y c #D0CFD0", +"Z c #CECFCE", +"` c #CECDCD", +" . c #CCCCCD", +".. c #CCCCCC", +"+. c #CCCCCB", +"@. c #CBCCCB", +"#. c #CBCBCB", +"$. c #CACBCB", +"%. c #CBCACA", +"&. c #A6A5A6", +"*. c #5B5B5B", +"=. c #090909", +"-. c #0F0F0F", +";. c #B0B0B0", +">. c #C5C5C5", +",. c #595959", +"'. c #B7B7B7", +"). c #B4B5B5", +"!. c #6767D0", +"~. c #7171C9", +"{. c #9898B3", +"]. c #A9A9A9", +"^. c #A6A7A7", +"/. c #A4A4A5", +"(. c #A2A2A1", +"_. c #9FA0A0", +":. c #9D9D9D", +"<. c #8C8C8C", +"[. c #606060", +"}. c #080808", +"|. c #989999", +"1. c #CDCDCE", +"2. c #CDCCCC", +"3. c #CCCBCC", +"4. c #CBCBCA", +"5. c #CACBCA", +"6. c #C9CAC9", +"7. c #CAC9C9", +"8. c #C9C8C9", +"9. c #C9C8C8", +"0. c #C8C9C8", +"a. c #C8C8C8", +"b. c #C7C7C7", +"c. c #727272", +"d. c #3A3A3B", +"e. c #C1C0C1", +"f. c #595859", +"g. c #B5B5B5", +"h. c #B3B3B2", +"i. c #B1B1B0", +"j. c #ACACAE", +"k. c #0B0BF9", +"l. c #0000FF", +"m. c #1313F4", +"n. c #3838DF", +"o. c #5B5BC8", +"p. c #7F7FB1", +"q. c #99999C", +"r. c #9A999A", +"s. c #979797", +"t. c #949595", +"u. c #929292", +"v. c #212121", +"w. c #BCBCBD", +"x. c #CBCCCC", +"y. c #CACAC9", +"z. c #C9CACA", +"A. c #C9C9C9", +"B. c #C8C9C9", +"C. c #C7C8C8", +"D. c #C8C7C7", +"E. c #C6C6C7", +"F. c #C7C7C6", +"G. c #C4C5C5", +"H. c #333333", +"I. c #888787", +"J. c #797979", +"K. c #1A1A1A", +"L. c #BABABA", +"M. c #898989", +"N. c #AFAEAE", +"O. c #ACACAC", +"P. c #A4A4AC", +"Q. c #5656D1", +"R. c #3030E4", +"S. c #0A0AF9", +"T. c #0707F9", +"U. c #2727E3", +"V. c #4747C9", +"W. c #6667AF", +"X. c #8E8E8E", +"Y. c #171717", +"Z. c #949494", +"`. c #C9C9CA", +" + c #C7C6C7", +".+ c #C5C4C4", +"++ c #C5C5C4", +"@+ c #C4C5C4", +"#+ c #C4C4C4", +"$+ c #C3C4C3", +"%+ c #C4C3C3", +"&+ c #C3C3C2", +"*+ c #C2C3C3", +"=+ c #141414", +"-+ c #A5A6A5", +";+ c #C1C1C1", +">+ c #808081", +",+ c #422626", +"'+ c #955454", +")+ c #542E2E", +"!+ c #2D2D2D", +"~+ c #B8B9B9", +"{+ c #878787", +"]+ c #A8A8A8", +"^+ c #A5A6A6", +"/+ c #A4A3A4", +"(+ c #A1A1A1", +"_+ c #9E9E9F", +":+ c #8181AD", +"<+ c #5C5CC2", +"[+ c #3838D8", +"}+ c #1616EF", +"|+ c #0E0EF2", +"1+ c #807F7F", +"2+ c #070707", +"3+ c #C6C5C5", +"4+ c #C4C4C3", +"5+ c #C2C2C2", +"6+ c #C1C2C1", +"7+ c #C1C2C2", +"8+ c #C2C1C1", +"9+ c #C0C1C0", +"0+ c #090808", +"a+ c #BFBEBE", +"b+ c #BEBEBD", +"c+ c #646565", +"d+ c #301A1A", +"e+ c #AA5B5B", +"f+ c #A45555", +"g+ c #0D0707", +"h+ c #767675", +"i+ c #B5B4B4", +"j+ c #AFB0B0", +"k+ c #434343", +"l+ c #595958", +"m+ c #A4A4A4", +"n+ c #9E9D9D", +"o+ c #9B9B9B", +"p+ c #989998", +"q+ c #929192", +"r+ c #828299", +"s+ c #6060B1", +"t+ c #3E3ECA", +"u+ c #4142C5", +"v+ c #5A5A5A", +"w+ c #C3C4C4", +"x+ c #C3C2C3", +"y+ c #C0C0C1", +"z+ c #C1C0C0", +"A+ c #C0C0C0", +"B+ c #BEBFBE", +"C+ c #BFBEBF", +"D+ c #818282", +"E+ c #303030", +"F+ c #BCBDBD", +"G+ c #BDBCBC", +"H+ c #BCBCBC", +"I+ c #BCBBBC", +"J+ c #292929", +"K+ c #522A2A", +"L+ c #A65252", +"M+ c #723737", +"N+ c #131313", +"O+ c #B2B3B2", +"P+ c #ABACAC", +"Q+ c #6B6B6C", +"R+ c #343535", +"S+ c #A0A0A0", +"T+ c #999999", +"U+ c #929293", +"V+ c #908F90", +"W+ c #8D8D8D", +"X+ c #868787", +"Y+ c #858584", +"Z+ c #383838", +"`+ c #616162", +" @ c #C3C2C2", +".@ c #C2C1C2", +"+@ c #C0C1C1", +"@@ c #C0BFBF", +"#@ c #BEBFBF", +"$@ c #BFBFBE", +"%@ c #BEBDBE", +"&@ c #BDBCBD", +"*@ c #BCBCBB", +"=@ c #BBBCBC", +"-@ c #4F4F4F", +";@ c #5D5D5C", +">@ c #BBBABB", +",@ c #B9B9BA", +"'@ c #B9B9B8", +")@ c #969797", +"!@ c #632F2F", +"~@ c #A24A49", +"{@ c #492020", +"]@ c #515151", +"^@ c #AAAAAA", +"/@ c #A8A7A8", +"(@ c #878686", +"_@ c #9C9C9C", +":@ c #9A9A99", +"<@ c #929392", +"[@ c #909090", +"}@ c #8B8C8C", +"|@ c #858585", +"1@ c #919090", +"2@ c #C1C1C0", +"3@ c #C0BFC0", +"4@ c #BBBCBB", +"5@ c #BBBBBA", +"6@ c #BAB9BA", +"7@ c #B7B8B8", +"8@ c #B8B7B7", +"9@ c #B7B6B6", +"0@ c #B6B7B6", +"a@ c #373737", +"b@ c #733131", +"c@ c #9D4141", +"d@ c #2C1111", +"e@ c #737372", +"f@ c #A8A9A8", +"g@ c #A6A6A6", +"h@ c #A3A3A3", +"i@ c #030303", +"j@ c #989898", +"k@ c #969695", +"l@ c #939393", +"m@ c #919091", +"n@ c #8E8F8E", +"o@ c #89898A", +"p@ c #878788", +"q@ c #838383", +"r@ c #808180", +"s@ c #808080", +"t@ c #777777", +"u@ c #010101", +"v@ c #BDBEBE", +"w@ c #BDBEBD", +"x@ c #BCBBBB", +"y@ c #BBBBBC", +"z@ c #BAB9B9", +"A@ c #B9BABA", +"B@ c #B9B8B8", +"C@ c #B7B7B8", +"D@ c #0A0A0A", +"E@ c #B6B6B5", +"F@ c #B6B5B5", +"G@ c #B5B5B4", +"H@ c #B4B5B4", +"I@ c #B3B4B4", +"J@ c #8D8D8E", +"K@ c #813132", +"L@ c #983839", +"M@ c #1A0909", +"N@ c #A7A7A7", +"O@ c #9F9FA0", +"P@ c #0B0B0B", +"Q@ c #949394", +"R@ c #8F8F8F", +"S@ c #8D8D8C", +"T@ c #8A8A8A", +"U@ c #888988", +"V@ c #868586", +"W@ c #848383", +"X@ c #818281", +"Y@ c #7C7C7C", +"Z@ c #BCBDBC", +"`@ c #BABAB9", +" # c #B6B7B7", +".# c #B7B7B6", +"+# c #B5B6B5", +"@# c #6A696A", +"## c #3C3C3C", +"$# c #B4B4B3", +"%# c #B3B4B3", +"&# c #B4B3B3", +"*# c #B3B2B3", +"=# c #B2B2B3", +"-# c #B3B2B2", +";# c #B1B2B1", +"># c #B1B1B1", +",# c #202020", +"'# c #903131", +")# c #94302F", +"!# c #0C0303", +"~# c #A09FA0", +"{# c #9E9D9E", +"]# c #908F8F", +"^# c #8E8D8E", +"/# c #898988", +"(# c #848485", +"_# c #707070", +":# c #3D3D3D", +"<# c #BABABB", +"[# c #B8B5AD", +"}# c #B4B4B5", +"|# c #2E2E2E", +"1# c #6F6F6F", +"2# c #B1B1B2", +"3# c #B0B1B0", +"4# c #B1B0B1", +"5# c #B0AFB0", +"6# c #B0AFAF", +"7# c #5F605F", +"8# c #0A0303", +"9# c #912A2B", +"0# c #8F2827", +"a# c #020000", +"b# c #9C9C9D", +"c# c #9B9C9C", +"d# c #979798", +"e# c #959594", +"f# c #1F1E1F", +"g# c #6D6D6D", +"h# c #848584", +"i# c #828382", +"j# c #7E7E7E", +"k# c #262626", +"l# c #2F2F2F", +"m# c #505050", +"n# c #8F8E8F", +"o# c #B8B8B7", +"p# c #B6B6B7", +"q# c #B5B4B5", +"r# c #B3B3B4", +"s# c #B2B2B1", +"t# c #B1B2B2", +"u# c #B0B1B1", +"v# c #AEAFAE", +"w# c #ADAEAD", +"x# c #ADADAE", +"y# c #ACACAD", +"z# c #1A0606", +"A# c #8D2121", +"B# c #871D1D", +"C# c #9D9C9C", +"D# c #919191", +"E# c #252525", +"F# c #656565", +"G# c #808181", +"H# c #737373", +"I# c #424242", +"J# c #404040", +"K# c #B5B6B6", +"L# c #B6B5B6", +"M# c #B0B0AF", +"N# c #AFAFB0", +"O# c #ACADAD", +"P# c #ADACAC", +"Q# c #ACABAB", +"R# c #AAABAB", +"S# c #290808", +"T# c #881918", +"U# c #7E1414", +"V# c #939494", +"W# c #929291", +"X# c #8C8D8C", +"Y# c #5D5E5D", +"Z# c #838483", +"`# c #5F5F5F", +" $ c #2B2B2B", +".$ c #626162", +"+$ c #A7A6A6", +"@$ c #B2B1B2", +"#$ c #B1B0B0", +"$$ c #AFAFAE", +"%$ c #AEAFAF", +"&$ c #ADACAD", +"*$ c #ABAAAB", +"=$ c #AAAAAB", +"-$ c #ABAAAA", +";$ c #A9A8A9", +">$ c #A8A8A9", +",$ c #A7A8A7", +"'$ c #360708", +")$ c #851313", +"!$ c #771111", +"~$ c #090101", +"{$ c #919292", +"]$ c #90908F", +"^$ c #898888", +"/$ c #474747", +"($ c #393939", +"_$ c #AFAEAF", +":$ c #AEAEAF", +"<$ c #AEADAE", +"[$ c #ACADAC", +"}$ c #A3A2A3", +"|$ c #A8A7A7", +"1$ c #A7A6A7", +"2$ c #9D9E9E", +"3$ c #450909", +"4$ c #711010", +"5$ c #1C0404", +"6$ c #2A2A2A", +"7$ c #656665", +"8$ c #010000", +"9$ c #9F9F9F", +"0$ c #B2B1B1", +"a$ c #ADADAC", +"b$ c #ACACAB", +"c$ c #A6A6A5", +"d$ c #A5A5A6", +"e$ c #A5A5A5", +"f$ c #A5A4A4", +"g$ c #4E4F4E", +"h$ c #4C4D4D", +"i$ c #313131", +"j$ c #AFB0AF", +"k$ c #ADAEAE", +"l$ c #AAAAA9", +"m$ c #AAA9A9", +"n$ c #A9A9A8", +"o$ c #A9A8A8", +"p$ c #A8A8A7", +"q$ c #AAA7A1", +"r$ c #A7A7A6", +"s$ c #A6A5A5", +"t$ c #0E0E0E", +"u$ c #7D7D7D", +"v$ c #A2A1A1", +"w$ c #6E6D6D", +"x$ c #E9BA3C", +"y$ c #E9BA3D", +"z$ c #E8B93D", +"A$ c #E8BA3E", +"B$ c #E8BA3D", +"C$ c #E9B93E", +"D$ c #EABA3D", +"E$ c #787878", +"F$ c #AEAEAD", +"G$ c #ABABAC", +"H$ c #A8A9A9", +"I$ c #A7A8A8", +"J$ c #A5A5A4", +"K$ c #A3A3A4", +"L$ c #6E6D6E", +"M$ c #A1A2A1", +"N$ c #A1A0A1", +"O$ c #EABA3C", +"P$ c #E9B93D", +"Q$ c #E8BB3F", +"R$ c #E7BA3E", +"S$ c #E8BA3F", +"T$ c #E9BB3E", +"U$ c #E9BB3D", +"V$ c #444545", +"W$ c #706F70", +"X$ c #ACABAC", +"Y$ c #ABABAA", +"Z$ c #A9AAA9", +"`$ c #A6A6A7", +" % c #A1A1A2", +".% c #A1A1A0", +"+% c #1B1B1B", +"@% c #EBBB3D", +"#% c #EABB3E", +"$% c #E7BB3F", +"%% c #E7BB40", +"&% c #E7BA40", +"*% c #E7BA3F", +"=% c #E9BB3F", +"-% c #3A3A3A", +";% c #4A4A4A", +">% c #A4A3A3", +",% c #A3A2A2", +"'% c #A0A1A0", +")% c #E8BB40", +"!% c #E7BB41", +"~% c #A9AAAA", +"{% c #A3A3A2", +"]% c #A0A1A1", +"^% c #A0A0A1", +"/% c #E9BA3E", +"(% c #E7BC41", +"_% c #E7BB42", +":% c #E8BA40", +"<% c #A9A9AA", +"[% c #A3A4A3", +"}% c #A2A3A2", +"|% c #6E6E6E", +"1% c #5C5C5C", +"2% c #525252", +"3% c #484848", +"4% c #6C6C6C", +"5% c #5D5D5D", +"6% c #EABC3E", +"7% c #E6BC41", +"8% c #E6BC42", +"9% c #E6BB42", +"0% c #E7BC42", +"a% c #A6A7A6", +"b% c #A5A4A5", +"c% c #3E2D2D", +"d% c #543D3D", +"e% c #634646", +"f% c #6F4D4D", +"g% c #775252", +"h% c #77504F", +"i% c #724B4B", +"j% c #684443", +"k% c #543535", +"l% c #3C2525", +"m% c #36332E", +"n% c #616161", +"o% c #E6BB41", +"p% c #E7BC43", +"q% c #E6BC43", +"r% c #E8B93E", +"s% c #010100", +"t% c #A1A0A0", +"u% c #555555", +"v% c #191919", +"w% c #4B3A3A", +"x% c #725657", +"y% c #997373", +"z% c #BC8A89", +"A% c #D19797", +"B% c #CF9393", +"C% c #CD8F8F", +"D% c #CB8B8B", +"E% c #CA8888", +"F% c #C88383", +"G% c #C68080", +"H% c #C57C7C", +"I% c #C37878", +"J% c #C27474", +"K% c #BF7170", +"L% c #BE6D6D", +"M% c #BC6969", +"N% c #AC5D5D", +"O% c #763E3E", +"P% c #351B1B", +"Q% c #7A7A7A", +"R% c #767676", +"S% c #E9BC3F", +"T% c #E6BD44", +"U% c #E6BC44", +"V% c #E6BD43", +"W% c #E8BB41", +"X% c #EABB3D", +"Y% c #050401", +"Z% c #A2A3A3", +"`% c #A1A2A2", +" & c #626262", +".& c #5B4747", +"+& c #927171", +"@& c #C39494", +"#& c #D49F9E", +"$& c #D29B9A", +"%& c #D19696", +"&& c #CE9393", +"*& c #CE8F8E", +"=& c #CC8B8B", +"-& c #CA8787", +";& c #C88384", +">& c #C57B7C", +",& c #C07070", +"'& c #BE6C6C", +")& c #BD6969", +"!& c #BA6565", +"~& c #B96161", +"{& c #B75E5D", +"]& c #B65A59", +"^& c #B35556", +"/& c #5E2A2B", +"(& c #E6BD45", +"_& c #2B2109", +":& c #737374", +"<& c #242424", +"[& c #493A3A", +"}& c #866968", +"|& c #C19594", +"1& c #D6A2A1", +"2& c #D49D9E", +"3& c #D29A9A", +"4& c #D19796", +"5& c #CF9293", +"6& c #CD8E8F", +"7& c #C6807F", +"8& c #C37877", +"9& c #C17474", +"0& c #BF7070", +"a& c #BA6564", +"b& c #B96160", +"c& c #B75D5D", +"d& c #B55A59", +"e& c #B35656", +"f& c #B25252", +"g& c #B04D4D", +"h& c #A64646", +"i& c #0D0505", +"j& c #3E3E3E", +"k& c #E5BE46", +"l& c #E5BD45", +"m& c #E5BD44", +"n& c #EBBA3C", +"o& c #060401", +"p& c #575757", +"q& c #564444", +"r& c #9C7A7A", +"s& c #D2A1A1", +"t& c #D5A2A2", +"u& c #D49E9D", +"v& c #D2999A", +"w& c #CF9292", +"x& c #CB8B8A", +"y& c #C98787", +"z& c #C67F80", +"A& c #C47C7B", +"B& c #C17473", +"C& c #BD6C6C", +"D& c #BC6868", +"E& c #BA6464", +"F& c #B96060", +"G& c #B75C5D", +"H& c #B55959", +"I& c #B45555", +"J& c #B25152", +"K& c #AE4A49", +"L& c #AC4546", +"M& c #AB4242", +"N& c #592020", +"O& c #281010", +"P& c #A34141", +"Q& c #030200", +"R& c #E5BC43", +"S& c #E6BE45", +"T& c #E7BB3E", +"U& c #E9BA3B", +"V& c #EAB93C", +"W& c #EAB93A", +"X& c #E9B839", +"Y& c #EAB739", +"Z& c #EAB738", +"`& c #EAB737", +" * c #E9B536", +".* c #E7B335", +"+* c #E3B033", +"@* c #DFAC33", +"#* c #C6982C", +"$* c #BF9229", +"%* c #C2942B", +"&* c #D3A43B", +"** c #DEAF45", +"=* c #DFAF44", +"-* c #DFAE44", +";* c #DFAE43", +">* c #DFAE42", +",* c #DFAD42", +"'* c #DFAE41", +")* c #E0AC41", +"!* c #DEAC3F", +"~* c #D4A134", +"{* c #CA9628", +"]* c #C49023", +"^* c #D29A2C", +"/* c #E0A537", +"(* c #EBAC3D", +"_* c #EBAB3D", +":* c #ECAA3B", +"<* c #EBAA3A", +"[* c #EAA839", +"}* c #EBA737", +"|* c #EBA736", +"1* c #EAA634", +"2* c #EAA434", +"3* c #EBA432", +"4* c #EAA231", +"5* c #EAA230", +"6* c #EAA02E", +"7* c #EA9F2D", +"8* c #EA9F2C", +"9* c #EA9E2B", +"0* c #EA9D29", +"a* c #EA9D27", +"b* c #E5952C", +"c* c #BC6356", +"d* c #B25251", +"e* c #AE4949", +"f* c #AD4546", +"g* c #A93E3E", +"h* c #A83A3A", +"i* c #9C3333", +"j* c #7B2B2B", +"k* c #A73B3A", +"l* c #5B1F1F", +"m* c #0C0901", +"n* c #AA7A15", +"o* c #B78316", +"p* c #B98115", +"q* c #B98114", +"r* c #B98113", +"s* c #BA8113", +"t* c #BB8113", +"u* c #BB8112", +"v* c #BC8010", +"w* c #BA7F10", +"x* c #BF800E", +"y* c #E5BE45", +"z* c #E9B93C", +"A* c #E8B93B", +"B* c #EAB93B", +"C* c #E9B83B", +"D* c #EAB839", +"E* c #EAB838", +"F* c #EBB636", +"G* c #ECB536", +"H* c #ECB535", +"I* c #EBB535", +"J* c #ECB534", +"K* c #EDB533", +"L* c #ECB332", +"M* c #ECB431", +"N* c #EDB331", +"O* c #EDB330", +"P* c #EDB32F", +"Q* c #EEB32E", +"R* c #EEB22E", +"S* c #EFB22D", +"T* c #EEB12D", +"U* c #EFB12C", +"V* c #EFB02B", +"W* c #F0B02A", +"X* c #F0B028", +"Y* c #F0AF27", +"Z* c #F0AE27", +"`* c #F1AF26", +" = c #F1AE26", +".= c #F2AE24", +"+= c #F1AD24", +"@= c #F2AD23", +"#= c #F3AC22", +"$= c #F3AD21", +"%= c #F3AC21", +"&= c #F3AB20", +"*= c #F3AB1F", +"== c #F4AB1E", +"-= c #F4AA1E", +";= c #F4AA1D", +">= c #F4AA1C", +",= c #F5AA1C", +"'= c #F5A91C", +")= c #F6AA1B", +"!= c #F2A41D", +"~= c #CB713B", +"{= c #B04E4D", +"]= c #AC4645", +"^= c #A73A3A", +"/= c #A63636", +"(= c #A43232", +"_= c #A22E2F", +":= c #4E1414", +"<= c #270C0B", +"[= c #A53430", +"}= c #A22F30", +"|= c #962A2B", +"1= c #110C02", +"2= c #AB7A16", +"3= c #B58118", +"4= c #B68016", +"5= c #B68015", +"6= c #B77F15", +"7= c #B77F14", +"8= c #B87F13", +"9= c #B87F12", +"0= c #B87F11", +"a= c #B97E10", +"b= c #EBB737", +"c= c #EBB635", +"d= c #ECB533", +"e= c #ECB433", +"f= c #ECB432", +"g= c #EDB22E", +"h= c #EEB12B", +"i= c #EFB12B", +"j= c #EFB02A", +"k= c #F0B029", +"l= c #F0AF29", +"m= c #F0AF26", +"n= c #F2AE25", +"o= c #F1AE24", +"p= c #F2AD24", +"q= c #F2AC23", +"r= c #F2AC22", +"s= c #F3AB21", +"t= c #F4AB1F", +"u= c #F4A91C", +"v= c #F6A91A", +"w= c #F5A81A", +"x= c #E08B26", +"y= c #B7513B", +"z= c #A93E3D", +"A= c #A8393A", +"B= c #A32E2F", +"C= c #A12B2B", +"D= c #9F2727", +"E= c #8C1F1F", +"F= c #7B1E1F", +"G= c #9E2626", +"H= c #9F2525", +"I= c #9E2424", +"J= c #170505", +"K= c #130E02", +"L= c #AB7A18", +"M= c #B38018", +"N= c #B47F18", +"O= c #B57F17", +"P= c #B57F16", +"Q= c #B57F15", +"R= c #B57E15", +"S= c #B57E14", +"T= c #B67E12", +"U= c #B77D11", +"V= c #BC7E0F", +"W= c #E5BC44", +"X= c #E8B93C", +"Y= c #E9B93B", +"Z= c #E9B739", +"`= c #EBB738", +" - c #EAB637", +".- c #ECB635", +"+- c #EDB432", +"@- c #EEB330", +"#- c #EEB32F", +"$- c #EFB12D", +"%- c #EFB12A", +"&- c #EFAF2A", +"*- c #F0AF28", +"=- c #F1AF28", +"-- c #F1AE25", +";- c #F3AC23", +">- c #F3AC20", +",- c #F5A91B", +"'- c #EF9E1B", +")- c #C5642A", +"!- c #A32E2E", +"~- c #A12B2A", +"{- c #9F2626", +"]- c #9D2323", +"^- c #9B1E1F", +"/- c #9A1B1B", +"(- c #350808", +"_- c #330A0A", +":- c #9B1C1D", +"<- c #991A1A", +"[- c #5E0F0F", +"}- c #191203", +"|- c #B07D18", +"1- c #B58119", +"2- c #B58018", +"3- c #B68018", +"4- c #B68017", +"5- c #B67F15", +"6- c #B67F14", +"7- c #B77E13", +"8- c #B67D12", +"9- c #B97D10", +"0- c #BC7F0E", +"a- c #E7BC40", +"b- c #E9B83A", +"c- c #E9B73A", +"d- c #EBB533", +"e- c #EDB433", +"f- c #ECB331", +"g- c #ECB330", +"h- c #EEB22F", +"i- c #EEB22D", +"j- c #F1AF27", +"k- c #F2AD22", +"l- c #F5A91A", +"m- c #F6A819", +"n- c #D97D1E", +"o- c #9D2222", +"p- c #9C1F1F", +"q- c #981717", +"r- c #961314", +"s- c #700B0B", +"t- c #050000", +"u- c #851010", +"v- c #951212", +"w- c #951111", +"x- c #4A0708", +"y- c #281D05", +"z- c #B37F19", +"A- c #B68118", +"B- c #B77F13", +"C- c #B87C10", +"D- c #BD7F0F", +"E- c #EBBB3E", +"F- c #E8BB3E", +"G- c #EAB83B", +"H- c #EBB638", +"I- c #EBB637", +"J- c #EEB22C", +"K- c #F1B029", +"L- c #F5AA1B", +"M- c #DF861A", +"N- c #A22719", +"O- c #961313", +"P- c #950F0F", +"Q- c #930B0B", +"R- c #8E0607", +"S- c #190000", +"T- c #470404", +"U- c #910808", +"V- c #8C0606", +"W- c #320202", +"X- c #020302", +"Y- c #6E9794", +"Z- c #BBFFFB", +"`- c #B77E12", +" ; c #B77D12", +".; c #B77C11", +"+; c #BD7F0E", +"@; c #EAB83A", +"#; c #EBB536", +"$; c #EDB431", +"%; c #EFB22E", +"&; c #F3AD22", +"*; c #F5AA1D", +"=; c #F7A81A", +"-; c #ED9717", +";; c #B84612", +">; c #910807", +",; c #8F0304", +"'; c #8E0001", +"); c #4A0000", +"!; c #130000", +"~; c #890000", +"{; c #790000", +"]; c #090D0C", +"^; c #6E96BD", +"/; c #4A65FD", +"(; c #3E55FD", +"_; c #4761FD", +":; c #506EFD", +"<; c #5D80FC", +"[; c #6E97FC", +"}; c #81B1FC", +"|; c #96CDFB", +"1; c #AEEEFB", +"2; c #BC7F10", +"3; c #E9BA3F", +"4; c #EBB534", +"5; c #ECB532", +"6; c #EEB331", +"7; c #EEB12C", +"8; c #F1AF29", +"9; c #F1AD23", +"0; c #F3AC1F", +"a; c #F4A91B", +"b; c #F5A81B", +"c; c #F6A919", +"d; c #F5A417", +"e; c #D57111", +"f; c #9D1903", +"g; c #8E0101", +"h; c #8E0100", +"i; c #740000", +"j; c #680000", +"k; c #5B0000", +"l; c #070000", +"m; c #9AD3CF", +"n; c #99CDF4", +"o; c #0D12FE", +"p; c #2837FE", +"q; c #4863FD", +"r; c #6B92FC", +"s; c #8FC3FB", +"t; c #B2F4FB", +"u; c #EBB739", +"v; c #EBB434", +"w; c #EEB42F", +"x; c #EFB22C", +"y; c #F0AE26", +"z; c #F6A91B", +"A; c #F6A81A", +"B; c #F5A819", +"C; c #F7A818", +"D; c #EE9915", +"E; c #B13908", +"F; c #1A0000", +"G; c #161003", +"H; c #120D03", +"I; c #3F5654", +"J; c #B0F1ED", +"K; c #B5F8FB", +"L; c #6990FC", +"M; c #79A5FC", +"N; c #719BFC", +"O; c #688EFC", +"P; c #5C7EFD", +"Q; c #364AFD", +"R; c #1F2BFE", +"S; c #080CFE", +"T; c #0305FE", +"U; c #2939FE", +"V; c #5A7BFD", +"W; c #94CBFB", +"X; c #EEB12E", +"Y; c #EFB029", +"Z; c #F4AB20", +"`; c #F3AB1E", +" > c #F6A818", +".> c #C3540C", +"+> c #340000", +"@> c #0E1417", +"#> c #050822", +"$> c #000037", +"%> c #060957", +"&> c #4761BE", +"*> c #7099FC", +"=> c #7CAAFC", +"-> c #8CC0FB", +";> c #9CD6FB", +">> c #B2F3FB", +",> c #A9E7FB", +"'> c #8ABDFC", +")> c #6B93FC", +"!> c #4762FD", +"~> c #202CFE", +"{> c #0203FE", +"]> c #1822FE", +"^> c #6084FC", +"/> c #89BBFC", +"(> c #9BD4FB", +"_> c #F0B027", +":> c #F1AE27", +"<> c #F1AD25", +"[> c #F7A718", +"}> c #D6B363", +"|> c #3F4697", +"1> c #0000A1", +"2> c #0000D4", +"3> c #0000F9", +"4> c #1016FE", +"5> c #2E40FD", +"6> c #5270FD", +"7> c #76A2FC", +"8> c #A2DEFB", +"9> c #A1DCFB", +"0> c #678DFC", +"a> c #2F41FD", +"b> c #0B0FFE", +"c> c #0D13FE", +"d> c #2E3FFE", +"e> c #EAB73A", +"f> c #F3AA1F", +"g> c #F6A718", +"h> c #F7A717", +"i> c #D79134", +"j> c #5539AF", +"k> c #0604F9", +"l> c #0C11F7", +"m> c #2432FE", +"n> c #3245FD", +"o> c #445EFD", +"p> c #445DFD", +"q> c #4A66FD", +"r> c #384DFD", +"s> c #2C3DFE", +"t> c #1C27FE", +"u> c #0102FE", +"v> c #1A24FE", +"w> c #4F6CFD", +"x> c #2330FE", +"y> c #2C3CFE", +"z> c #3144FD", +"A> c #2634FE", +"B> c #0609FE", +"C> c #E8B83C", +"D> c #E9B83C", +"E> c #EEB230", +"F> c #F4AB1D", +"G> c #F8A917", +"H> c #F6A717", +"I> c #AE805B", +"J> c #353682", +"K> c #729CCF", +"L> c #B3F5FB", +"M> c #A4E0FB", +"N> c #84B4FC", +"O> c #3549FD", +"P> c #080BFE", +"Q> c #0204FE", +"R> c #394FFD", +"S> c #B6F9FB", +"T> c #A7E5FB", +"U> c #82B2FC", +"V> c #5575FD", +"W> c #1E2AFE", +"X> c #EBBA3B", +"Y> c #E8B83B", +"Z> c #EAB636", +"`> c #EDB532", +" , c #F2AC21", +"., c #F8A716", +"+, c #F4AC23", +"@, c #C38B1A", +"#, c #B4821A", +"$, c #B78016", +"%, c #B8FCFB", +"&, c #91C6FB", +"*, c #5676FD", +"=, c #1B25FE", +"-, c #0001FE", +";, c #3C53FD", +">, c #9CD5FB", +",, c #EBB93A", +"', c #EBB83B", +"), c #E9B93A", +"!, c #ECB636", +"~, c #EDB230", +"{, c #EFB12E", +"], c #F4AC20", +"^, c #F5A919", +"/, c #F6A715", +"(, c #F8A715", +"_, c #CD9019", +":, c #B4821B", +"<, c #B5811A", +"[, c #8FC4FB", +"}, c #435CFD", +"|, c #4E6BFD", +"1, c #B0F0FB", +"2, c #ECB939", +"3, c #EBB839", +"4, c #EAB939", +"5, c #EAB638", +"6, c #EBB634", +"7, c #F4AA1F", +"8, c #F7A617", +"9, c #F7A715", +"0, c #DE9817", +"a, c #B9851A", +"b, c #B4811A", +"c, c #B58017", +"d, c #B87D12", +"e, c #A5E2FB", +"f, c #4C68FD", +"g, c #161EFE", +"h, c #A2DDFB", +"i, c #F0B12A", +"j, c #F6A719", +"k, c #F7A716", +"l, c #F8A714", +"m, c #F0A214", +"n, c #CA8E18", +"o, c #B87E12", +"p, c #B87C11", +"q, c #B97C10", +"r, c #97CEFB", +"s, c #3143FD", +"t, c #EBB938", +"u, c #ECB838", +"v, c #F1B028", +"w, c #F3AB22", +"x, c #F6A817", +"y, c #F7A615", +"z, c #F8A514", +"A, c #E09916", +"B, c #B98318", +"C, c #B87D11", +"D, c #B97C0F", +"E, c #B87B0E", +"F, c #B7FAFB", +"G, c #ECB837", +"H, c #EEB32D", +"I, c #F0B02B", +"J, c #F4A91D", +"K, c #F7A616", +"L, c #F7A514", +"M, c #F8A613", +"N, c #F6A413", +"O, c #BC8518", +"P, c #B77E14", +"Q, c #B97C0E", +"R, c #B87B0D", +"S, c #ECB737", +"T, c #EBB736", +"U, c #ECB634", +"V, c #EDB22F", +"W, c #EBAE2D", +"X, c #C99626", +"Y, c #846118", +"Z, c #2B1F07", +"`, c #503B0E", +" ' c #E0A527", +".' c #F3AD23", +"+' c #F5AA1E", +"@' c #F7A614", +"#' c #F9A612", +"$' c #C78A16", +"%' c #B67E15", +"&' c #B67E14", +"*' c #B87E11", +"=' c #B87C0F", +"-' c #B97B0C", +";' c #BC7C0B", +">' c #EDB836", +",' c #ECB736", +"'' c #E5AC2C", +")' c #735616", +"!' c #140F03", +"~' c #070501", +"{' c #5F4510", +"]' c #BC8A20", +"^' c #F6A716", +"/' c #F8A513", +"(' c #F8A512", +"_' c #DE9714", +":' c #BA8217", +"<' c #B97C0D", +"[' c #B97A0B", +"}' c #BD7C0A", +"|' c #ECB735", +"1' c #ECB434", +"2' c #EDB332", +"3' c #EBAF2C", +"4' c #3D2D0B", +"5' c #020200", +"6' c #2F2308", +"7' c #815F17", +"8' c #8B6718", +"9' c #0E0B02", +"0' c #191204", +"a' c #DAA024", +"b' c #F6A616", +"c' c #F8A614", +"d' c #F9A513", +"e' c #F09F11", +"f' c #CB8B15", +"g' c #B67E13", +"h' c #B87B0C", +"i' c #BA7A0A", +"j' c #BE7C0A", +"k' c #EEB734", +"l' c #EDB430", +"m' c #BE8C23", +"n' c #352709", +"o' c #906A19", +"p' c #654A10", +"q' c #856015", +"r' c #F2AE23", +"s' c #F7A817", +"t' c #F9A511", +"u' c #E29812", +"v' c #B68116", +"w' c #B87D10", +"x' c #B97C0C", +"y' c #B87A0C", +"z' c #BA7A09", +"A' c #BF7C09", +"B' c #EDB633", +"C' c #B48621", +"D' c #241B06", +"E' c #CD9824", +"F' c #C89221", +"G' c #0E0A02", +"H' c #211805", +"I' c #D19721", +"J' c #F2AE26", +"K' c #F5A719", +"L' c #F9A411", +"M' c #B88114", +"N' c #B97B0E", +"O' c #B97B0D", +"P' c #BB7A09", +"Q' c #C07C08", +"R' c #EEB633", +"S' c #2C2108", +"T' c #BA8A20", +"U' c #EEB028", +"V' c #62470F", +"W' c #61460F", +"X' c #EEAB25", +"Y' c #F8A615", +"Z' c #F8A515", +"`' c #F7A513", +" ) c #FAA410", +".) c #C68813", +"+) c #B97A0C", +"@) c #BA7B0B", +"#) c #BC7A09", +"$) c #BF7C07", +"%) c #EEB531", +"&) c #EDB531", +"*) c #9B731B", +"=) c #49350C", +"-) c #D19923", +";) c #D89D23", +">) c #342608", +",) c #996E17", +"') c #F8A413", +")) c #F8A412", +"!) c #F9A310", +"~) c #DE9511", +"{) c #B9790B", +"]) c #B9790A", +"^) c #BB7B09", +"/) c #C07D07", +"() c #EEB431", +"_) c #EDB32E", +":) c #E4A728", +"<) c #745513", +"[) c #150F03", +"}) c #795814", +"|) c #E0A325", +"1) c #815D14", +"2) c #392909", +"3) c #080601", +"4) c #211705", +"5) c #3D2C09", +"6) c #4C360B", +"7) c #F8A612", +"8) c #F9A512", +"9) c #F9A410", +"0) c #FBA60F", +"a) c #F29E0F", +"b) c #CC8A11", +"c) c #BC7A08", +"d) c #EFB430", +"e) c #EFB330", +"f) c #E5A927", +"g) c #B3801A", +"h) c #F9A30F", +"i) c #FAA20F", +"j) c #E3970F", +"k) c #BA7A0C", +"l) c #BA7A0B", +"m) c #B97909", +"n) c #BB7908", +"o) c #BF7B06", +"p) c #F0B12B", +"q) c #EFAF29", +"r) c #EDAD28", +"s) c #DDA124", +"t) c #040300", +"u) c #342507", +"v) c #7E5A12", +"w) c #C48C1C", +"x) c #EEA922", +"y) c #F9A413", +"z) c #FAA40F", +"A) c #FAA30F", +"B) c #F6A00E", +"C) c #BA790B", +"D) c #BA790A", +"E) c #BA7809", +"F) c #BC7908", +"G) c #BE7907", +"H) c #EFB32E", +"I) c #EFB42E", +"J) c #B9871E", +"K) c #312408", +"L) c #120D02", +"M) c #0C0801", +"N) c #936915", +"O) c #F2AB21", +"P) c #F4AA1B", +"Q) c #F8A411", +"R) c #F9A40F", +"S) c #FAA20E", +"T) c #F8A00E", +"U) c #C8860F", +"V) c #BA7909", +"W) c #BB7909", +"X) c #BC7907", +"Y) c #EBAB27", +"Z) c #9F7319", +"`) c #221905", +" ! c #845F14", +".! c #C9911E", +"+! c #CD931E", +"@! c #F4AC1F", +"#! c #F3AA1E", +"$! c #FAA30E", +"%! c #F9A30D", +"&! c #E0920E", +"*! c #BB7B0B", +"=! c #BA7808", +"-! c #C07C04", +";! c #F0AF2A", +">! c #2E2106", +",! c #B78219", +"'! c #F1AB21", +")! c #F8A511", +"!! c #F8A410", +"~! c #F9A30E", +"{! c #FAA30D", +"]! c #FAA10D", +"^! c #F19D0C", +"/! c #CD880E", +"(! c #B97A0A", +"_! c #BA7807", +":! c #BD7906", +"~ c #CD8D17", +",~ c #F5A818", +"'~ c #92640D", +")~ c #060400", +"!~ c #6B4809", +"~~ c #E99E14", +"{~ c #FBA00A", +"]~ c #FCA10A", +"^~ c #FBA009", +"/~ c #FCA008", +"(~ c #E69309", +"_~ c #BC7706", +":~ c #BE7703", +"<~ c #C27800", +"[~ c #F3AF27", +"}~ c #F3AA20", +"|~ c #916410", +"1~ c #583C0A", +"2~ c #E19B19", +"3~ c #F5A516", +"4~ c #6F4B0A", +"5~ c #140D01", +"6~ c #A36E0D", +"7~ c #F9A20D", +"8~ c #FCA009", +"9~ c #FCA007", +"0~ c #F19907", +"a~ c #CB8408", +"b~ c #BB7907", +"c~ c #BB7704", +"d~ c #BD7703", +"e~ c #C07801", +"f~ c #F2AF26", +"g~ c #E19C19", +"h~ c #5A3E09", +"i~ c #080500", +"j~ c #895E0E", +"k~ c #F1A316", +"l~ c #C08212", +"m~ c #5E4008", +"n~ c #563906", +"o~ c #FBA20B", +"p~ c #FBA008", +"q~ c #FC9F08", +"r~ c #FB9D07", +"s~ c #DF8E07", +"t~ c #BB7605", +"u~ c #BB7603", +"v~ c #BE7603", +"w~ c #C17901", +"x~ c #F3AF25", +"y~ c #CB8C16", +"z~ c #070500", +"A~ c #1B1202", +"B~ c #EEA318", +"C~ c #F6A617", +"D~ c #0A0700", +"E~ c #C68510", +"F~ c #F6A514", +"G~ c #FAA20B", +"H~ c #FD9F07", +"I~ c #F29906", +"J~ c #CB8207", +"K~ c #BC7704", +"L~ c #BB7604", +"M~ c #BE7602", +"N~ c #C17800", +"O~ c #F3AE24", +"P~ c #553A09", +"Q~ c #6B490B", +"R~ c #614209", +"S~ c #B07711", +"T~ c #D28E13", +"U~ c #734D0A", +"V~ c #251903", +"W~ c #1E1402", +"X~ c #80560A", +"Y~ c #FDA007", +"Z~ c #FE9F06", +"`~ c #D58707", +" { c #BC7906", +".{ c #BC7604", +"+{ c #BE7702", +"@{ c #BC7603", +"#{ c #F4AE24", +"${ c #F2A81C", +"%{ c #EFA61C", +"&{ c #E89E18", +"*{ c #A16E11", +"={ c #412C06", +"-{ c #2F2004", +";{ c #895C0C", +">{ c #302004", +",{ c #2C1D03", +"'{ c #BD7E0F", +"){ c #FDA006", +"!{ c #FD9F06", +"~{ c #FD9E06", +"{{ c #FE9F04", +"]{ c #E08E05", +"^{ c #BD7601", +"/{ c #C07600", +"({ c #C37600", +"_{ c #F4AD22", +":{ c #F0A71D", +"<{ c #3A2806", +"[{ c #9A6A11", +"}{ c #ECA31B", +"|{ c #F1A619", +"1{ c #422D06", +"2{ c #A16C0D", +"3{ c #D99111", +"4{ c #FD9E05", +"5{ c #FE9E05", +"6{ c #F19603", +"7{ c #CC8105", +"8{ c #BD7603", +"9{ c #BD7602", +"0{ c #BD7600", +"a{ c #C57700", +"b{ c #7F580E", +"c{ c #0F0A01", +"d{ c #2C1E04", +"e{ c #281B04", +"f{ c #523809", +"g{ c #C38514", +"h{ c #875C0E", +"i{ c #704D0B", +"j{ c #C38513", +"k{ c #2A1C04", +"l{ c #241803", +"m{ c #D38D11", +"n{ c #F9A412", +"o{ c #FC9F06", +"p{ c #FD9F05", +"q{ c #FC9C04", +"r{ c #DF8C04", +"s{ c #BC7601", +"t{ c #BF7500", +"u{ c #C37700", +"v{ c #C67700", +"w{ c #F5AD21", +"x{ c #F4AD21", +"y{ c #DA9618", +"z{ c #543A09", +"A{ c #140D02", +"B{ c #473005", +"C{ c #D89111", +"D{ c #FBA108", +"E{ c #FC9E06", +"F{ c #FE9E03", +"G{ c #FF9E03", +"H{ c #F49702", +"I{ c #C67D03", +"J{ c #BD7502", +"K{ c #BD7501", +"L{ c #F0A519", +"M{ c #E69D18", +"N{ c #6C490A", +"O{ c #A77210", +"P{ c #7A530B", +"Q{ c #B57A10", +"R{ c #150E01", +"S{ c #724D0A", +"T{ c #181002", +"U{ c #020100", +"V{ c #774F09", +"W{ c #ED9F13", +"X{ c #FC9F07", +"Y{ c #FE9F05", +"Z{ c #FE9E04", +"`{ c #FD9D03", +" ] c #FE9E02", +".] c #FF9D02", +"+] c #CB7E03", +"@] c #BD7500", +"#] c #C17500", +"$] c #EDA217", +"%] c #F0A316", +"&] c #DE9613", +"*] c #E99C13", +"=] c #FD9E04", +"-] c #FD9E03", +";] c #FE9D03", +">] c #FE9D02", +",] c #DD8902", +"'] c #BF7702", +")] c #BE7501", +"!] c #BE7500", +"~] c #F6AC1F", +"{] c #F5AB1E", +"]] c #F5A91D", +"^] c #F7A512", +"/] c #FCA109", +"(] c #FC9E05", +"_] c #FE9C01", +":] c #FF9D01", +"<] c #F09400", +"[] c #CB7E02", +"}] c #BE7400", +"|] c #BF7400", +"1] c #F6AB1D", +"2] c #F9A40E", +"3] c #F9A20E", +"4] c #FD9E07", +"5] c #FC9A00", +"6] c #DF8A00", +"7] c #BF7700", +"8] c #BF7300", +"9] c #C57500", +"0] c #F6AC1D", +"a] c #F5AB1C", +"b] c #FBA00B", +"c] c #FE9C02", +"d] c #FF9C00", +"e] c #F69600", +"f] c #BE7600", +"g] c #C17400", +"h] c #C67600", +"i] c #F6AA1C", +"j] c #C47900", +"k] c #C27400", +"l] c #FD9F08", +"m] c #FE9D01", +"n] c #DC8700", +"o] c #BF7600", +"p] c #C07400", +"q] c #C37500", +"r] c #F8AB1A", +"s] c #F7A91A", +"t] c #FD9F04", +"u] c #FF9C01", +"v] c #F19400", +"w] c #CB7D00", +"x] c #C47600", +"y] c #FAA310", +"z] c #FF9C02", +"A] c #FF9D00", +"B] c #FD9A00", +"C] c #E08A00", +"D] c #C07500", +"E] c #F7A515", +"F] c #FCA00A", +"G] c #F79800", +"H] c #C47500", +"I] c #F7A918", +"J] c #F8A817", +"K] c #C67900", +"L] c #DD8800", +"M] c #C67500", +"N] c #F9A816", +"O] c #F8A616", +"P] c #CC7C00", +"Q] c #C27500", +"R] c #F9A715", +"S] c #FCA006", +"T] c #FC9B00", +"U] c #E18900", +"V] c #FAA614", +"W] c #FE9C00", +"X] c #F59700", +"Y] c #C07300", +"Z] c #FBA713", +"`] c #FE9D04", +" ^ c #FA9900", +".^ c #C87A00", +"+^ c #C57600", +"@^ c #FAA512", +"#^ c #DD8700", +"$^ c #FAA411", +"%^ c #F8A311", +"&^ c #FE9B00", +"*^ c #F19300", +"=^ c #D07D00", +"-^ c #C57400", +";^ c #F8A30F", +">^ c #FD9C00", +",^ c #EA8F00", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . . . . . ", +" . . + @ . . . . . . ", +" . . # . $ % & * . . . . . . . . . . . . . . . . ", +" . = - . ; > , ' ) ! ~ { . . . . . . . . . . . . . . . . . . . . . . . . ", +" . ] ) . ^ / ( _ : < [ } | 1 2 . . . . . . . . . . . ^ 3 4 % 5 6 7 8 9 0 a b c . . . . . . . ", +" . . ^ d e f g h i j k l m n o p ! q @ . . . . . . . . . r s t u v w x x y z A A A B C D E F G c . . . . . . . ", +" . . f H I . . J K t L M o N O P Q R S T U V . . . . . . . . W X Y y A A Z Z B C ` D ( ...+.+.@.#.$.%._ &.*.=.. . . . . . ", +" . . -.;.>.,.. -.;.H '.).O !.~.{.].^./.(._.:.<.[.r }.. . c |.B B 1.D 2.( ..3.3.#.4.#.5._ 6.7.7.8.9.0.a.: b.b.; . c.Q d.. . . ", +" . . . . U e.E I . f.g.h.i.j.k.l.l.m.n.o.p.q.r.s.t.u.v.. c w...x.+.#.#.%.5.y.7.z.A.A.B.a.a.C.D.E.F.E.h >.>.G.>.H.. I.[ [ J.. . . ", +" . . . . . . K.l L.M.. 2 ;.N.O.P.Q.R.S.l.l.l.l.T.U.V.W.X.Y.. Z._ y.`.A.9.0.a.a.: b. +F.h h h >.>..+++@+#+$+%+[ &+*+=+. -+;+;+;+>+. . . ", +" . . ,+'+)+. !+~+o } e . {+R ]+^+/+(+_+:+<+[+}+l.l.l.|+1+. 2+[ : C.b.b.h h h 3+>.>.@+#+4+4+%+[ *+[ 5+6+7+8+;+;+9+P . 0+l k a+E b+c+. . ", +" . d+e+f+g+. h+i+O j+k+. l+^.m+(._.n+o+p+6 Z.q+r+s+t+u+v+. H.h >.>.++#+#+#+w+%+[ x+5+5+7+;+;+y+z+A+A+k k B+C+E E D+. E+F+G+G+H+I+L.J+. . ", +" . . K+L+M+. N+O+;.X P+Q+. R+S S+) o+T+s.t.U+V+W+F M.X+Y+Z+. `+$+[ [ &+ @5+.@;++@9+z+A+@@k k #@$@E t %@l l &@H+*@=@-@. ;@>@L.L.L.,@'@)@. . ", +" . . !@~@{@. ]@X O.^@/@(@. Y.) _@:@s.8 <@[@X.}@M.{+|@s >+c . 1@2@e.9+A+3@k k C+$@B+E l l l G+F+H+I+H+4@L 5@m 6@,@H V . F n 7@'.8@'.9@0@a@. . ", +" . . b@c@d@. e@^@f@g@h@o+. i@T+j@k@l@m@n@<.o@p@|@q@r@s@t@u@f n $@#@E v@b+w@l H+H+x@4@y@L 5@m L.z@A@z@H M B@7@C@'.(+. D@O E@F@g.g.G@H@I@J@. . ", +" . . K@L@M@. {+N@m+S O@:.P@. {+Q@u.R@S@T@U@V@W@X@s@s@Y@# . ~ Z@&@H+H+4@L L L.L.`@A@z@H ~+M n n 8@8@ #.#0@+#F@F@g.@#. ##$#%#&#*#=#-#O ;#>#,#. . ", +" . . '#)#!#. k@S ~#{#o+T+] . 0 ]#^#F /#(@(#s s@s@_#:#* = . # <#L.A@,@H H n B@7@8@'..#9@ #o [#+#g.).}#}#$#} &#} O+|#. 1#2#>#3#4#;.;.5#6#P 7#. . ", +" . 8#9#0#a#. b#) c#7 d#e#f#. g#F M.{+h#i#s@j#v+k#u@. . l#m#n#n 7@o#'. #9@p#o E@g.g.q#N N r#r#} *#h.O s#t#>#u#4#S i@i@S P P v#X w#x#w#Q y#7 u@. ", +" . z#A#B#. i@C#7 j@8 l@D#E#. F#p@|@q@G#H#I#-.. . f J#F 9@9@K#L#+#g.).g.N %#I@} } / O O 2#>#>#>#u#;.j+M#N#P P v#F#. q Q O#P#O.Q#Q#Q#R R#^@^@Y.. ", +" . S#T#U#. =.j@6 V#W#n@X#I . Y#Z#s@`# ${ . . c .$+$g.}#N N %#%#} *#} O @$t#>#u#>##$;.P P P $$%$X X Q Q &$O#O.O.E#. 1#*$=$-$^@].].].;$>$,$t@. . ", +" . '$)$!$~$f {+{$]$J@F ^$E+. v+/$N+. . { ($s O &#} h.O+O O ;#>#>#4#;.j+P P _$:$:$<$Q Q Q [$O.O.O.R R R *$=$^@X.. =.}$].]+|$/@|$N@1$+$&.2$=+. . ", +" . . 3$4$5$. . 6$W+F M.{+(#7$8$. . . N+,.9$0$O >#>#3#3#;.P 6#P _$_$X X X Q a$O.O.b$Q#R R *$-$^@^@^@].;$]+]+]+|$-@. I#g@c$g@d$e$e$f$m+m+m+b . . ", +" . . . . . D@D@. g$p@j#h$c . . u@i$0 x#;.5#j$P %$v#:$k$<$Q O#P#O.O.R b$R R ^@^@^@l$m$n$].o$p$/@N@q$r$+$g@g@s$S t$. u$m+h@h@h@h@}$S S v$w$. . ", +" x$y$z$A$B$A$A$B$A$A$A$A$B$B$C$D$ . . . q N@E$. i@~ 2+. . -.m#s.N.:$X F$w#Q [$y#[$Q#P+G$R R ^@^@].m$].H$>$f@I$p$N@N@+$+$g@c$s$e$J$m+m+m+K$h@L$. K.S M$v$(+N$(+S+S+S+M.}.. . ", +" O$P$z$A$A$A$A$Q$R$S$Q$S$A$A$R$A$T$U$ . . I#X j+P V$. . . 6$W$]+Q a$[$O.Q#X$R *$Y$^@l$].Z$].H$]+p$/@|$N@1$`$g@g@^+e$e$m+m+m+K$h@h@h@S S S %(+.%k#. v+S+S+S+S+S+S+S+S+s.+%. . ", +" @%y$#%S$S$S$Q$$%$%%%&%%%&%*%%%*%S$=%#% . . a@a$k$<$Q &.-%;%X.G$R R -$^@^@].].].f@]+>$N@/@N@N@N@g@&.&.s$e$/.f$m+m+>%h@h@,%S S S v$(+N$'%S+S+S+S+S+% . 2+8 S+S+S+S+S+S+S+9$E+. . ", +" y$A$A$*%%%%%%%)%)%%%!%%%!%!%%%S$$%$%A$T$ . . =+m+b$G$R R Y$^@~%m$].;$o$]+|$/@N@N@g@g@g@c$c$e$e$e$m+m+h@K$h@{%S S S M$(+(+]%^%S+S+S+S+S+S+S+S+S+S+S+S+:#. W S+S+S+S+S+S+S+S+U . . ", +" /%=%Q$$%%%!%!%%%!%(%_%_%(%%%%%:%$%$%A$T$y$ . . E$Z$<%H$H$o$]+p$,$N@`$g@g@^+^+d$e$e$m+m+m+[%h@{%}%S (.(.(+N$N$^%S+S+S+6 % |%1%2%3%J#J#k+;%,.4%q@:.S+S+u.+ u@M.S+S+S+S+S+S+S+5%. . ", +" 6%#%A$:%%%%%!%(%7%8%8%9%7%0%_%!%(%)%:%*%S$/%A$ . D@p$,$N@r$a%s$&.-+e$b%m+m+/+m+h@}$,%S S (.(+(+(+.%^%S+S+S+S+) s ! 3 6$-.2+V c%d%e%f%g%h%i%j%k%l%c 2+m%n%;%. i$S+S+S+S+S+S+S+4 u@. . ", +" /%Q$S$&%!%o%7%8%p%p%q%q%p%8%8%8%(%%%%%Q$S$A$r%D$ s%. J#s$e$e$/.m+/+h@h@}$}%}% %S v$(+]%t%S+S+S+S+S+S+S+S+) s@u%!+}.v%w%x%y%z%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%. . Q%S+S+S+S+S+S+R%i@. . ", +" /%Q$S%)%%%(%8%0%q%q%T%T%U%q%V%p%0%_%(%W%&%$%S$A$z$X% Y%. a@Z%}%}$`%S (+(+^%S+S+S+S+S+S+S+S+S+S+S+S+S+S+D# &r P@v%.&+&@&#&$&%&&&*&=&-&;&G%>&I%J%,&'&)&!&~&{&]&^&/&. D@T+S+S+S+S+S+u$2+. . ", +" y$R$*%&%%%0%0%q%q%U%T%(&T%(&U%q%p%o%!%%%%%Q$S$A$C$D$O$ _&. . :&S+S+S+S+S+S+S+S+S+S+S+S+S+S+S+S+S+S+F # <&D@[&}&|&1&2&3&4&5&6&D%-&F%7&H%8&9&0&'&M%a&b&c&d&e&f&g&h&i&. J+j&S+S+S+S+s@2+. . ", +" #%S$*%%%%%7%8%p%q%T%(&(&k&l&m&m&V%8%8%!%%%%%Q$A$A$y$P$n& o&. . 3 T+S+S+S+S+S+S+S+S+S+S+S+S+S+X.p&v.P@q&r&s&t&u&v&%&w&C%x&y&F%z&A&I%B&,&C&D&E&F&G&H&I&J&g&K&L&M&N&. O&P&-.% S+S+s@D@. Q& ", +" A$#%S$S$%%!%(%8%q%R&T%S&l&k&l&m&U%q%8%0%!%%%%%T&A$z$y$O$U&V&W&X&Y&Z&`& *.*+*@*#*$*$*%*&*****=*-*;*>*,*'*)*!*~*{*]*^*/*(*_*:*<*[*}*|*1*2*3*4*5*6*7*8*9*0*a*b*c*H&I&d*g&e*f*M&g*h*i*8#. j*k*l*Z+S+J D@. m*n*o*p*p*q*q*q*r*s*t*u*v*w*x* ", +" A$A$Q$%%%%_%p%q%q%m&(&l&S&y*T%q%q%0%7%!%)%*%*%A$A$y$z*A*B*C*D*E*Z&`&F*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*V*W*W*X*Y*Z*`* =.=.=+=@=#=$=%=&=*===-=;=>=,='=)=!=~={=e*]=M&g*^=/=(=_=:=. <=[=}=|=+ t@}.. 1=2=3=4=5=6=6=6=7=8=8=8=9=0=a=v* ", +" #%T$=%%%%%!%8%8%q%U%T%m&m&T%T%V%8%p%(%!%%%S$S$A$r%z$z*C*B*C*D*Z&Z&`&b=F*I*c=J*d=e=f=M*O*P*P*g=R*S*U*h=i=j=W*k=l=Y*m=`* =n=o=p=q=q=r=s=%=t=t===;=u=u=u=v=w=x=y=z=A=/=(=B=C=D=E=a#. F=G=H=I=J=. . K=L=M=N=N=O=P=P=Q=R=S=S=S=T=U=a=V= ", +" =%Q$&%%%(%(%_%0%q%V%q%U%W=q%q%0%!%!%W%&%*%S$A$B$X=X=z*Y=Z=Y&Z&`=`= -F*.-I*J*d=+-f=+-O*@-#-g=R*S*$-U*i=V*%-&-*-=-Y*`*--n=.=@=;-@=r=%=>-&=*=-=;=;='=,=,-v='-)-(=!-~-{-]-^-/-(-. _-:-/-<-[-a#. }-|-1-3=2-3-4-4=4=5-5-6-7=7-8-U=9-0- ", +" T$T$$%&%a-!%9%0%p%q%8%8%p%0%0%8%o%)%:%*%*%A$z$z$x$z*Y=C*b-c-Z&Z&`&F*F*I*H*d-e-e=+-f-g-@-#-h-i-i-U*i=i=%-W*l=k=j-j- =----o=@=@=k-$=%=&=t=t=-=;=>=u=,-,-l-m-n-{-o-p-/-q-r-s-. t-u-v-w-x-. . y-z-1-3=A-3-4-4-4=5=5-6-7=B-7-8-U=C-D- ", +" E-=%Q$*%)%!%!%(%8%8%0%0%9%7%8%0%%%%%)%S$F-A$/%x$X=Y=Y=G-c-D*`=H-`&I-.-H*H*d-d=e=f=N*O*P*#-R*R*J-J-U*V*V*W*k=K-Y* =`*n=+=.=@=@=r=#=%=%=t=t===;=u=L-,-,-w=m-M-N-q-O-P-Q-R-S-. T-U-V-W-. X-Y-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-6-7-7-`- ;.;a=+; ", +" /%=%=%&%%%%%a-%%!%9%_%!%!%o%!%%%$%$%S$A$P$z$P$z*C*C*b-@;Z&Z& -F*#;F*I*I*d=e=e=+-$;@-#-g=R*%;i-U*i=i=W*%-*-=-Y*j-`*--.=.=@=@=q=&;%=>-*=t=;=*;,=u=,-l-w==;-;;;Q->;,;';);. !;~;{;S-. ];^;/;(;(;(;_;:;<;[;};|;1;Z-Z-Z-Z-Z-Z-Z-2; ", +" X%y$3;S$S$*%)%)%)%%%W%)%%%)%*%Q$S$S$/%y$P$z*z*Y=C*b-D*Y&`&b=I-F*F*I*4;J*d=5;f=M*6;@-h-h-R*i-7;7;U*V*j=k=8;Y*j-`* =n=o=9;q=q=#=r=%=0;*=-=;=;=,='=a;b;l-c;d;e;f;g;h;i;a#. j;k;l;. Q&m;n;l.l.l.l.l.l.l.l.l.l.l.o;p;q;r;s;t;Z-Z-Z-Z- ", +" y$B$S$S$Q$:%:%&%Q$$%$%*%*%*%S$A$B$r%z$z*X=C*C*b-D*D*D*u; -I-c=I*c=J*v;d=5;f=$;$;w;R*R*i-J-x;U*i=j=j=j=*-*-Y*y;----p=p=p=#=$=%=%=&=-===-=;=>=a;,-z;A;B;C;D;E;g;~;F;. G;H;. . I;J;Z-K;L;M;M;M;N;O;P;/;Q;R;S;l.l.l.l.l.T;U;V;W;Z-Z-Z-Z-Z-Z-Z-Z-Z- ", +" x$/%A$A$S$*%S$S$$%S$S$S$A$S$A$A$B$P$X=X=z*C*G-b-D*Y&Z& -I-F*c=c=H*J*e=d=f=$;N*@-P*R*R*X;T*$-h=V*V*W*Y;=-=-j-`*----+=@=@=k-%=%=>-Z;t=`;;=>=*;a;,-l-B;m- >C;.>g;+>. @>#>$>%>&>*>*>*>*>=>->;>>>Z-Z-Z-Z-Z-Z-Z-,>'>)>!>~>{>l.l.l.]>^>/>/>/>->(>>>Z-Z-Z-Z-", +" @%X%B$z$P$A$A$r%A$/%A$B$B$B$z$P$P$z*z*C*C*@;b-b-D*D*Z&b=I-F*F*I*J*J*d=f=L*$;N*#-Q*#-%;i-T*U*i=i=j=W*Y;_>Y*:> =--<>.=@=k-#=&;%=>-*=`;-=;=*;>=a;,-l-c; > >[>}>|>1>2>3>l.l.l.l.l.l.l.l.l.l.l.l.4>5>6>7>8>Z-Z-Z-Z-Z-Z-9>0>a>b>l.l.l.l.l.l.l.l.l.c>d>V;/>", +" z*z*z*z$X=y$y$z$z$y$z$P$z$X=z*Y=Y=B*W&b-e>Y&D*Y&`=H-F*c=I*J*J*d=d=e=+-+-$;O*h-h-Q*i-S*x;U*i=j=W*Y;X*_>j- = =n=<>@=@=@=k-%=>-&=Z;f>-=;=u=,-,-,-A;m-m-g>h>i>j>k>l.l.l>m>n>o>p>q>q>!>r>s>t>u>l.l.l.l.l.v>w>/>t;N;U;l.l.l.l.l.o;x>y>z>z>A>]>B>l.l.l.l.", +" B*B*z*z*C>P$y$P$z*X=z*z*z*D>C*C*G-G-b-b-Y&D*Z&`=`&I-F*I*c=I*J*d=e=5;+-N*f-O*E>Q*R*i-7;x;i=V*j=k=l=l=Y*:>`* =--.=p=@=r=%=%=>->-t===F>;=>=,-,-w=A;m-m-C;G>H>I>J>K>L>Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-Z-M>N>^>O>P>l.l.l.T;l.l.Q>R>[;|;S>Z-Z-Z-Z-Z-Z-Z-Z-T>U>V>W>", +" X>B*C*Y=D>D>z*z*D>Y=Y>C*D>Y=G-@;D*D*D*Y&Z&b=b= -Z>c=c=4;4;e=d=`>f=+-O*O*#-h-R*i-$-7;U*i=%-j=k=l=X*j-m=`*--n=p=+=@=r=#= ,>-*=t=`;-=>=u=,-,-,-m-m- > >[>.,+,@,Z-Z-Z-#,#,1-1-3=2-2-4-$,4=Z-Z-Z-Z-Z-%,&,*,=,l.l.-,;,>,Z-Z-Z-Z- Z-Z-Z-Z-Z-", +" ,,',b-b-),C*@;Y=@;G-C*b-@;@;e>Y&Y&Y&Z&Z&b=I-I-F*!,I*J*4;d=e=e=e-L*N*O*~,P*R*R*{,i-i=i=i=W*j=k=*-*-j- = =--.=9;@=r=r=%=%=],t=t=F>>='=,-,-l-^,m-m- >g>h>/,(,_,:,:,:,#,<,1-3=3=2-3-4-4=4=5-5-6-6-Z-Z-Z-Z-Z-[,},-,l.Q>|,1,Z-Z- Z-", +" 2,3,4,@;@;D*@;b-@;@;Y&D*Z=Y&Z&Z&`=5,5, - -F*F*c=c=6,J*J*d=`>f=N*N*N*O*O*P*R*i-T*J-V*i=j=W*k=X**-j-Y* =--o=.=@=@=#= ,%=&=>-7,7,;=;=,='=,-v=v=m- > >g>8,9,9,0,a,#,b,b,1-2-2-2-c,4-4=5=5-5-6-6-B-`-`- ;d,Z-Z-Z-e,f,-,l.g,h,Z- ", +" 3,Y&X&D*D*D*X&Y&D*X&Z&Y&Z&Z&Z&`= -b=`&F*F*I*c=c=H*e=e=e=+-M*$;N*O*P*h-#-i-U*7;U*i=i,i,W*k=X*Y*j-j---<>o=p=@=q=r=%=>->->-t===;='='=,-,-l-m-m-j,g>H>k,k,l,m,n,1-1-1-1-2-2-4-4-4=4=5-5-7=B-B-B-`-o,d,d,p,q,Z-Z-Z-r,~>s,%,Z- ", +" t,u,`=`=`=Z&Z&Z&Y&Y&Y&Z&Z&5, -F*I-F*!,F*c=I*I*J*d=d=f=+-+-f-N*@-O*P*#-R*S*U*U*i=i=j=j=k=l=*-v,Y*m=--<>.=@=q=@= ,w,s=&=*=t=;=;=>=a;,-,-l-B;m-m-x,h>k,y,(,z,A,B,1-3=2-3-4-4-4=5=5-5-6-7-7-7-`-`-d,C,p,C-D,D,E,Z-Z-F,1;Z-Z- ", +" I-G,`& -`&5,5,I-I- -I- -F*F*F*F*c=I*c=4;4;J*d=e=+-+-N*N*O*@-#-Q*#-H,i-U*U*U*V*I,W*k=k=X*Y*:>y;`*--p=@=q=r=#= ,%=],t=t=-===J,,=L-l-l-v=m- >g>H>8,k,K,L,M,N,O,3=2-3-4-4-4=4=5=5-5-P,7-7- ; ;d,C,C,C-D,D,D,Q,R,Z-Z-Z-Z- ", +" S,T,I-F*F*F*F*Z>I-I-F*F*F*c=F*.-H*H*U,J*d=d=e-f=+-$;N*N*O*V,h-h-R*W,X,Y,Z,`, 'W*W*l=*-*-Y*`* =n=+=o=@=.'&;#=%=>->-t=t===+'>=u=,-b;A;A;m- >[>H>k,9,@'L,M,#'$'c,3-4-4=4=5=5-5-%'&'7-*' ; ; ;p,C-C-='D,D,Q,R,-';' ", +" >','F*F*F*F*F*F*F*c=#;F*!,I*4;.-.-J*4;d=d=d=f=M*N*N*O*P*~,g=h-'')'!'. . . . ~'{']'l=*-Y*j-:> =<>o=@=@=q=r=%=%=&=&=*===;=F>'=,-,-,-B;m-j,[>h>^'^'k,z,L,/'('_':'4-4=4=5=5-5-6-P,7-7-`- ;d,C,C-q,D,D,D,Q,<'R,['}' ", +" |'U,4;I*c=c=I*I*H*U,J*J*J*1'd=d=d=e=5;f=+-2'$;N*P*#-h-h-h-R*3'4'5'. 6'7'8'9'. 0'a'j-`*Z*`*----.=@=@=&;#= ,>-*=*===-=;=,=>='=b;l-m-m-m-x,h>b'k,@'c'z,/'d'e'f'4=4=5=5-5-6-g'7- ; ; ;U=C,C-='D,D,Q,Q,<'h'h'i'j' ", +" k'U,J*H*U,I*J*J*J*J*J*v;e=d=d=f=+-f=+-M*N*l'O*O*@-Q*Q*R*i-i-m'n'. o'i=j=Y;l=p'. q'Z* =----<>r'9;q=&;%=%=>-*=*=t=-=F>;=J,,-,-v=w=B; > >s'^'k,K,c'@'/'('('t'u'v'5=5=5-5-&'7-7- ; ;d,C,w'C-D,D,D,Q,<'<'x'y'z'A' ", +" B'B'e=d=d=d=e=d=d=d=d=`>K*f=+-f=+-M*$;$;O*O*#-#-g=V,R*i-T*i-C'. D'E'W*W*l=*-F'G'H'I' =J'o=p=9;9;&;#= ,%=Z;>-*=f>-=;=;=,=,-,-l-w=K'm-x,h>^'y,y,y,/'/'d'('t'L'M'5=5-6-&'7- ; ; ; ;C,C-='='D,D,N'O'O'-'-'['P'Q' ", +" K*R'e=e=5;5;e=5;e-K*f=+-+-M*N*$;$;O*O*O*O*h-h-Q*i-i-S*U*J-7;S'. T'U'l=X*l=Y*V'. W'X'--<>p=@=k-&; ,%=>-&=&=====F>;=>='=,-w=l-B;m- >H>h>K,y,Y'Z'`'/'('('t' ).)5-5-6-7-`- ; ;d,C,C-D,='D,D,D,N'O'-'-'+)@)#)$) ", +" %)&)+-+-$;f=f=f-$;N*$;$;N*N*O*l'O*O*O*#-Q*R*R*i-T*x;7;U*i=i=*)H;=)-)*-=-j-;)>). ,)+=n=.=@=q=&; ,>-&=*=*=*=-=-=;=*;,=l-v=w=m-j,g>H>h>^'y,y,y,c'M,')))L'L'!)~)s*&'g'`- ; ;C,C,C-C-='Q,D,Q,N'O'-'-'+){)])^)/) ", +" %)()N*N*N*$;$;l'l'6;@-O*O*O*V,h-R*#-_)R*S*i-S*7;U*i=i=i=j=:)<). [)})|)1)2)3). 4)5)6)@=@=&;r=%=&=*=*=======;=u=;='=,-l-m-m- >g>h>h>K,9,y,@'z,7)8)t'L'9)0)a)b)7- ; ; ;C,C,C-C-='D,D,Q,N'O'-'+)+)['i'P'c) ", +" d)e)l'O*O*O*O*@-@-O*@-#-h-h-R*h-Q*R*R*S*$-U*x;i=i=V*V*j=%-l=f)=). . . . . . . . . ~'g)k-r=$=%=&=Z;*=*=-=;=;=u='=,-,-w=B;g>g>H>h>^'K,y,@'c'/'))))L'L'9)h)i)j)`- ;d,C,C-C-q,D,D,D,Q,O'O'-'-'k)l){)m)n)o) ", +" d)#-#-#-#-#-~,h-h-P*V,h-R*R*R*R*R*R*S*T*U*U*i=i=i=i,p)j=q)k=r)s)5)s%. . s%. t)u)v)w)x)r=&;s=%=&=*=*===-=;=;=,=a;,-l-m-j,g>C;H>h>k,k,y,@'z,M,y)t'L' )!)z)A)B) ;U=C,p,C-='D,D,D,Q,N'O'-'+)+)l)C)D)E)F)G) ", +" H)I)P*R*g=R*Q*R*R*R*R*i-i-$-$-7;x;7;x;i=i=j=V*j=j=k=*-X*X*J)K). . . G;L)M)N)@=q=r=#=%=O)%=*=t===-=;=;=>='=P),-l-^, > >[>H>k,K,K,@'c'z,`'('8)Q)L'9)R)A)S)T)U)C,w'C-='D,D,Q,Q,<'O'-'+)+)l)i'D)V)W)X)o) ", +" %;R*H)i-R*R*i-i-i-S*T*S*$-U*x;U*i=i=i=%-j=W*Y;k=q)k=l=*-_>Y)Z)`) !.!n=+!. y-@=&;k- ,%=s=@!t=-=#!-=*;'='=,-,-l-l- >m- >h>h>k,y,y,c'c'z,/'('))L'9)A)h)$!S)%!&!D-C-D,D,D,Q,Q,O'O'-'*!+)['l)i'V)V)=!X)-! ", +" S*i-i-i-i-T*T*x;J-J-U*i=7;i=U*i=p)i=j=W*Y;;!Y;k=l=Y*Y*:>`* =------<>+=>!. ,!'!#= ,%=0;t=t===;=;=,=,=a;,-l-v=w=B;g>g>H>^'k,y,y,c'/'/'(')!!!9)!)z)h)~!{!]!^!/!D,D,Q,Q,Q,<'-'-'+)['(!D)D)V)V)=!_!:!='=L-L-,-,-A;w=B; >H>b'k,9,y,c'c'z,/'('('L'L'R)z)h)~!{!{!3!4!5!D,Q,N'O'O'O'-'k)l)l)D)D)V)W)W)=!6!7!8! ", +" p)p)i=i=i=V*i=j=V*%-i=j=j=j=j=k=k=k=k=*-=-*-j-Y*`* = =----<>p=p=@=q=r=9!0!. a!Z;>-*=-=-=F>;=>=,='=,-l-w=v=m-m-H>h>k,K,9,y,L,c'/'d'('8)9)!)!)h)A)S){!b!4!c!d!Q,Q,O'O'-'+)k)l)l)D)V)V)W)W)n)_!6!e! ", +" W*p)%-i=W*j=j=W*W*Y;Y;W*Y;k=k=l=l=*-*-=-m= = = = = =--+=p=r'@=@=q=f!&;g!. 5'h!t=t===-=;=,=>='=a;,-l-m-m-m- >h>H>k,K,y,z,L,/'/')))))!i!!)A)A)$!{!3!j!k!l!m!n!O'O'+)+)k)C)C)D)D)W)W)W)n)o!p!q!r! ", +" s!s!i,W*W*W*k=Y;l=l=k=k=l=k=X*_>j-Y*j-y; =`* =t!--<>p=p=p=u!k-k- ,#=%=s=v!. w!x!7,;=;=*;'=,-'=l-y!m-c; >g> >h>K,k,Y'Y'c'/'/'/'8)L'!!!!h)h)$!3!3!z!A!A!B!C!D!E!-'+)l)l)D)V)V)V)W)W)n)X)F!7!G!8! ", +" K-X*k=k=*-l=X**-=-*-*-Y*Y*Y*:>Z*:> =------H!.=+=p=p=q=q=&;#=%=s=&=>-&=I!J!K!L!;=*;J,L-,-,-A;l-m- >j,g>[>H>k,K,Y'L,c'/'/'/'))Q)9)!)9)M!S)$!3!3!z!A!N!N!O!P!Q!+)+)l)i'D)V)V)V)W)R!S!T!U!7!V!W! ", +" *-v,*-j-X*Y*=-=-*-Y*Y*Z*j-j-j-------.=n=.=p=X!p=@=q=k-r=%=%=>->->-&=t=Y!Z!. `!;=;='=,-,-w=l-B;m-B;[> ~.~K,k,9,Z'c'+~M,d'('L'Q)9)9)A)R){!3!3!A!4!k!N!N!@~#~$~l)l)D)D)V)V)W)n)n)T!%~7!6!q!&~*~ ", +" =~=-j-Y*j-Y*Y*`*Z* = = =y; =-~----n=.=.=p=@=@=@=@=#=f!f! ,>-&=0;t=f>*=-=F>;~. >~,='=,-l-w=m-m-,~ >'~)~!~~~y,y,@'/'/'('))Q)L'9)9)h)R)~!$!3!3!j!j!N!{~]~^~/~(~l)D)D)V)W)W)n)o!T!T!_~_~6!q!:~<~ ", +" [~=~y; = = =:> =------J'----n=<>@=@=p=@=@=r=r=%= ,%=%=s=t=}~}~*=*=====;=|~. 1~2~,-l-w=m-B; > >3~4~. 5~6~K,@'z,/'(')))!t'9)9)h)A)$!7~j!j!A!k!]~]~O!8~8~9~0~a~V)V)n)n)b~b~7!7!7!_~q!c~d~e~ ", +" --f~J'n=------.=--n=<>.=p=p=@=p=q=k-r=r=#=#=#=%=%=%=&=0;t=*=#!#!;=+';=u=g~h~i~j~m-A;m- > >[>k~l~m~. t)n~L,M,M,('8)t'L'9)9)!)h)~!$!3!z!j!o~k!]~{~8~p~q~#~r~s~Q'W)n)b~F!7!7!7!_~q!t~u~v~w~ ", +" x~+=.=.=o=--<>p=p=r'@=@=@=@=.'r=&;#= ,%=s=s=&=&=>-*=t=f>-=-=;=;=,=,=>='=y~z~A~B~B;m-g>g>H>C~D~. . E~F~/'/'/'8)L't'L'9)h)h)A)$!{!3!A!G~k!N!]~^~^~p~/~/~H~I~J~n)b~b~7!7!7!_~q!K~L~u~M~N~ ", +" O~.=p=.=o=p=p=+=p=@=@=.'k-.'k-#=#=%=%=s=>-&=Z;*=t=*=====;=-=*;>=,='=>=,-,-P~. Q~R~S~H>T~U~V~. W~X~~)z,z,/'('L'L'L'L'9)R)h)$!S)z!z!o~k!k!N!{~8~/~/~9~Y~Z~Z~`~b~ {7!7!_~_~q!q!.{+{@{M~<~ ", +" #{.'@=@=#=;-#=r=k-#=#=r=%= ,%=s=&=&=],0;t=*=t=t=-===${%{>='=,=,-,-b;w=&{*{={. . . . -{;{>{. . ,{'{+~/'/'('8)L'9)!)9)A)$!~!$!3!z!A!k!N!N!N!8~^~/~q~){!{~{{{]{e!7!7!_~q!q!K~K~@{@{^{/{({ ", +" &;&;_{r= ,&;r=f!%=%=%= ,%=>-&=&=*=*=&=*=*=`;==-=;=:{<{5'[{}{,-,-z;A;B;|{1{. . . . . . . t)2{3{c'z,z,/'('L'L'L'9)z)h)A)$!S){!b!j!j!N!N!N!O!/~q~/~H~!{!{4{5{6{7{%~q!q!K~.{@{@{8{9{0{/{a{ ", +" &;$=_{r=%=s=%=>-s=>->->-Z;&=*=Z;*=-=t=`;==-=-=;=J,b{c{. d{e{f{g{h{i{j{k{. . . . . . . l{m{z,`'/'('n{('t'L'!)R)A)A)S)$!3!b!j!4!o~l!N!^~8~/~/~9~o{!{p{5{{{q{r{r!q!K~K~@{@{8{8{s{t{u{v{ ", +" w{x{s=>->->-*=&=&=&=>-*=&=7,*=f>==-=;=F>;=;=;=J,'=y{z{t)A{. . . . . . s%. . . . . B{C{Y'@'z,/'/'8)('('!)!)9)z)h)3!$!3!3!3!z!o~]~^~D{/~/~#~9~!{!{E{p{4{F{G{H{I{K~@{@{8{8{9{J{K{t{({ ", +" ],Z;&=*=*=t=*=t=t=-=-=#!==;=;=*;;=*;>='=L-a;,-,-v=L{B~M{N{O{. d{P{Q{R{d{S{T{U{>{V{W{/'/'/'('n{))Q)!)R)h)$!$!$!S)3!z!G~k!k!k!]~^~8~/~H~X{X{o{p{Y{5{Z{`{ ].]+]@{8{8{8{9{9{K{@]t{#] ", +" t=t=t=*=`;-===`;-===-=F>;=*;;='=>=u=,='=,-,-,-l-b;l-B;m-m- >$]C~H>^'%]k,y,&]*]F~@'/'/'('8)8)Q)Q)9)9)A)h)$!$!$!b!j!j!j!k!N!N!O!8~/~/~X{X{!{!{5{4{=]-];]>].],]']8{9{9{^{)]!]@]t{v{ ", +" ~]{]{]-===#!-=;=;=;=;=*;]]u=,=,=,-,-,-,-,-v=w=w=B;B;m-g>C;[>x,H>H>k,k,y,9,y,Z'c'z,^]d'('('L'L'!!!)9)A)$!$!{!3!3!4!C!k!N!N!/]/]8~Y~q~X{!{(]!{5{Z{=];];]_]:]<][]^{9{^{)]!]!]}]|]({ ", +" *;1]>=;=;=,=>=;=u='=,=a;,-,=,-A;v=y!A;A;A;m- >m-[>H>H>^'b'k,K,K,K,K,Y'Y'z,M,('8)8)L'L'Q)9)!)!)!)2]3]3!3!3!A!o~k!k!N!N!8~^~q~9~o{X{4]4{~{4{Z{F{ ].]>]_]:]5]6]7]^{!]!]!]}]}]8]9] ", +" 0]a]'=u=u='='=,-,=,-,-,-,-w=A;A;m-B;m-m-,~m- >H>g>h>h>k,k,k,9,y,c'z,c'L,+~/'n{8)n{L'9)i!!)h)A)~!$!3!3!3!z!A!k!k!b]]~^~8~/~Y~X{H~!{p{4{=]Z{=]`{>]>]c]:]d]d]e]N~f]!]!]!]|]8]g]h] ", +" '=i]a;a;,-,-,-l-l-b;w=l-B;B;B;B; >B;m- >x,g>H>k,^'K,k,9,y,Y'y,L,M,@'/'/'('))L'L'L'9)!)h)h)A)$!$!b!3!A!j!k!o~]~O!]~/]/~q~9~H~!{p{4{5{Z{Z{;] ]>]:]>]d]d]d]d]j]!]!]!]t{|]8]k] ", +" )=z;y!z;,-l-l-v=A;l-c;m-m- > >m- > > >H>g>h>h>b'K,y,y,y,c'@'@'z,`'/'/'))))t'9)9)!)h)z)A)$!S)S)3!z!j!k!o~k!N!N!O!8~8~l]X{o{!{p{4{=]=];];];]>].]m]:]d]d]d]d]n]o]!]t{t{t{p]q] ", +" r]s]s]^,A;A;m-m-j, > > >[>g>g>H>H>H>h>b'k,K,K,Y'y,L,@'/'/'M,/'d'('))n{Q)9)9)R)!)A)A)$!S)$!b!b!j!C!k!N!N!{~8~8~/~/~Y~X{o{X{p{t]=]Z{;]F{;]>]c]u]u]d]d]d]d]d]v]w]t{t{t{}]p]x] ", +" v=m-B;,~ >m- > >[> > >H>H>k,h>k,C~k,K,9,y,y,y,c'z,z,c'/'/'')8)('L')!9)9)!)y]h)~!$!S)$!3!b!z!j!C!N!N!]~O!8~/~/~/~9~!{o{p{p{=]=]Z{;]>]>]z]u]A]d]d]d]d]d]A]B]C]t{t{D]|]p]x] ", +" j,j,m- >C;C;H>[> >H>H>k,k,k,k,k,k,k,y,y,Y'E]c'L,c'/'/'('8)('))L'Q)9)9) )h)h)$!$!$!{!3!j!j!j!G~k!]~{~F]8~/~/~q~X{!{!{4{Y{Z{=]-]F{.]>]_]:]d]d]d]d]d]d]d]d]d]G]D]D]|]|]p]H] ", +" I]J]G>H>H>H>H>H>h>b'K,8,k,k,y,y,y,Z'@'+~M,L,z,('('/'('n{)!Q))!L' ) )h)A)h)A){!$!3!3!3!z!z!o~k!/]{~/]8~p~/~9~Y~~{!{!{4{=]Z{Z{;];]c]>]u]:]u]d]d]d]d]d]d]d]d]A]K]D]D]|]g]v{ ", +" J]h>K,k,k,k,K,K,k,y,y,@'Y'y,Y'L,M,M,z,M,('n{(')!L't'9)L'9)!)h)h)A)A)3!3!3!3!j!j!z!o~G~k!N!N!8~/~/~/~/~X{H~o{o{p{4{5{=]-];]>]:]u]:]u]d]d]d]d]d]d]d]d]d]d]d]L]D]|]p]g]M] ", +" N]O]k,y,y,y,y,9,Y'c'L,@'z,@'c'M,`'/'/'8))))!))))L'L'9)!)!)A)z)h)A){!{!3!3!b!z!A!k!k!l!k!]~O!8~/~#~H~H~!{!{~{p{5{=]=]F{;]>].]u]m]d]d]d]d]d]d]d]d]d]d]d]d]A]v]P]8]p]Q] ", +" Y'R]9,Y'y,Y'c'L,z,/'@'/'/'/'/'/'('))('L't'Q)!!9)9)y]h)h)R)~!$!S){!z!z!z!j!A!k!N!N!N!N!F]p~/~/~X{X{S]!{~{!{p{=]=]Z{-]>].]:]u]d]d]d]d]d]d]d]d]d]d]d]d]d]d]T]U]|]p]Q] ", +" V]c'c'M,z,z,/'/'/'/'))8)n{)))!L'L'Q)L'!)9)h)R)z)h)$!$!S){!{!3!3!4!j!A!o~k!N!{~]~8~8~8~/~/~Y~o{o{!{!{4{4{=]=]Z{F{;].]_]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]W]X]|]Y]q] ", +" Z]M,/'/'/'('('/'))('('t't'n{L'L'L'9)9)9)h)h)h)$!~!~!3!{!3!b!z!z!o~o~k!k!N!{~{~8~8~/~/~/~Y~H~o{4{4{4{Y{5{Z{`];];]m]:]d]u]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d] ^.^g]+^ ", +" 8)@^8)d'('))8)t'L't't'Q)9)9)9)!)9)h)h)h)$!A)$!7~{!3!3!3!j!4!A!k!k!k!N!/]N!^~/~8~/~9~X{9~!{o{p{p{=]=]`{;] ]F{.]>]z]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]5]#^g]+^ ", +" $^%^@^L'n{L'L'L'Q)9)9)9)!)!)9)y]z)A)~!3!~!{!$!3!]!j!z!4!4!C!o~N!N!/]N!^~/~8~/~q~X{X{H~o{!{4{5{=]=]=];]F{ ]>].]m]:]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]&^*^=^-^ ", +" ;^L'9)L'L'9)!)y]R)A)h)~!~!$!~!S){!3!3!{!z!A!j!z!o~k!k!k!N!]~^~8~^~8~/~/~q~X{X{!{!{4{p{5{Z{=]-]-]>]>]>]>]m]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]d]>^,^ ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/src/Mod/Ship/InitGui.py b/src/Mod/Ship/InitGui.py index 01d08f55c..5d0a87efe 100644 --- a/src/Mod/Ship/InitGui.py +++ b/src/Mod/Ship/InitGui.py @@ -32,11 +32,11 @@ class ShipWorkbench ( Workbench ): def Initialize(self): # ToolBar - list = ["Ship_CreateShip", "Ship_OutlineDraw", "Ship_AreasCurve"] + list = ["Ship_LoadExample", "Ship_CreateShip", "Ship_OutlineDraw", "Ship_AreasCurve"] self.appendToolbar("Ship design",list) # Menu - list = ["Ship_CreateShip", "Ship_OutlineDraw", "Ship_AreasCurve"] + list = ["Ship_LoadExample", "Ship_CreateShip", "Ship_OutlineDraw", "Ship_AreasCurve"] self.appendMenu("Ship design",list) Gui.addWorkbench(ShipWorkbench()) diff --git a/src/Mod/Ship/Makefile.am b/src/Mod/Ship/Makefile.am index ed2efda8d..0c8ff3229 100644 --- a/src/Mod/Ship/Makefile.am +++ b/src/Mod/Ship/Makefile.am @@ -22,6 +22,9 @@ nobase_data_DATA = \ Icons/Ico.png \ Icons/Ico.xcf \ Icons/Ico.xpm \ + Icons/LoadIco.png \ + Icons/LoadIco.xcf \ + Icons/LoadIco.xpm \ Icons/OutlineDrawIco.png \ Icons/OutlineDrawIco.xcf \ Icons/OutlineDrawIco.xpm \ @@ -30,6 +33,11 @@ nobase_data_DATA = \ Icons/ReparametrizeIco.xpm \ Icons/Ship.xcf \ Icons/Ship.xpm \ + Examples/s60.fcstd \ + Examples/barehull5415.fcstd \ + shipLoadExample/__init__.py \ + shipLoadExample/TaskPanel.py \ + shipLoadExample/TaskPanel.ui \ shipCreateShip/__init__.py \ shipCreateShip/Preview.py \ shipCreateShip/TaskPanel.py \ @@ -40,6 +48,7 @@ nobase_data_DATA = \ shipOutlineDraw/TaskPanel.py \ shipOutlineDraw/TaskPanel.ui \ shipAreasCurve/__init__.py \ + shipAreasCurve/Plot.py \ shipAreasCurve/Preview.py \ shipAreasCurve/TaskPanel.py \ shipAreasCurve/TaskPanel.ui \ diff --git a/src/Mod/Ship/ShipGui.py b/src/Mod/Ship/ShipGui.py index 2059565bf..c59a43c71 100644 --- a/src/Mod/Ship/ShipGui.py +++ b/src/Mod/Ship/ShipGui.py @@ -24,6 +24,18 @@ from PyQt4 import QtCore, QtGui import FreeCAD, FreeCADGui, os +class LoadExample: + def Activated(self): + import shipLoadExample + shipLoadExample.load() + + def GetResources(self): + from shipUtils import Paths, Translator + IconPath = Paths.iconsPath() + "/LoadIco.png" + MenuText = str(Translator.translate('Load an example ship geometry')) + ToolTip = str(Translator.translate('Load an example ship geometry able to be converted into a ship.')) + return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} + class CreateShip: def Activated(self): import shipCreateShip @@ -60,6 +72,7 @@ class AreasCurve: ToolTip = str(Translator.translate('Plot transversal areas curve')) return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} +FreeCADGui.addCommand('Ship_LoadExample', LoadExample()) FreeCADGui.addCommand('Ship_CreateShip', CreateShip()) FreeCADGui.addCommand('Ship_OutlineDraw', OutlineDraw()) FreeCADGui.addCommand('Ship_AreasCurve', AreasCurve()) diff --git a/src/Mod/Ship/shipAreasCurve/Plot.py b/src/Mod/Ship/shipAreasCurve/Plot.py new file mode 100644 index 000000000..6e0fdb536 --- /dev/null +++ b/src/Mod/Ship/shipAreasCurve/Plot.py @@ -0,0 +1,211 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* 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 Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +import os +# FreeCAD modules +import FreeCAD,FreeCADGui +from FreeCAD import Part, Base +from FreeCAD import Image, ImageGui +# FreeCADShip modules +from shipUtils import Paths, Translator + +header = """ ################################################################# + + ##### #### ### #### ##### # # ### #### + # # # # # # # # # # # # + # ## #### #### # # # # # # # # # # # + #### # # # # # # # ##### # # ## ## ##### # #### + # # #### #### # # # # # # # # # # + # # # # # # # # # # # # # # + # # #### #### ### # # #### ##### # # ### # + + ################################################################# +""" + +class Plot(object): + def __init__(self, x, y, disp, xcb, ship): + """ Constructor. performs plot and show it (Using pyxplot). + @param x X coordinates. + @param y Transversal areas. + @param disp Ship displacement. + @param xcb Bouyancy center length. + @param ship Active ship instance. + """ + if self.createDirectory(): + return + if self.saveData(x,y,ship): + return + if self.saveLayout(x,y,disp,xcb,ship): + return + if self.execute(): + return + ImageGui.open(self.path + 'areas.png') + + def createDirectory(self): + """ Create needed folder to write data and scripts. + @return True if error happens. + """ + self.path = FreeCAD.ConfigGet("UserAppData") + "ShipOutput/" + if not os.path.exists(self.path): + os.makedirs(self.path) + if not os.path.exists(self.path): + msg = Translator.translate("Can't create '" + self.path + "' folder.\n") + FreeCAD.Console.PrintError(msg) + return False + + def saveData(self,x,y,ship): + """ Write data file. + @param x X coordinates. + @param y Transversal areas. + @param ship Active ship instance. + @return True if error happens. + """ + # Open the file + filename = self.path + 'areas.dat' + try: + Output = open(filename, "w") + except IOError: + msg = Translator.translate("Can't write '" + filename + "' file.\n") + FreeCAD.Console.PrintError(msg) + return True + # Print header + Output.write(header) + Output.write(" #\n") + Output.write(" # File automatically exported by FreeCAD-Ship\n") + Output.write(" # This file contains transversal areas data, filled with following columns:\n") + Output.write(" # 1: X coordiante [m]\n") + Output.write(" # 2: Transversal area [m2]\n") + Output.write(" # 3: X FP coordinate [m]\n") + Output.write(" # 4: Y FP coordinate (bounds in order to draw it)\n") + Output.write(" # 3: X AP coordinate [m]\n") + Output.write(" # 4: Y AP coordinate (bounds in order to draw it)\n") + Output.write(" #\n") + Output.write(" #################################################################\n") + # Get perpendiculars data + Lpp = ship.Length + FPx = 0.5*Lpp + APx = -0.5*Lpp + maxArea = max(y) + # Print data + if len(x) < 2: + msg = Translator.translate("Not enough data to plot.\n") + FreeCAD.Console.PrintError(msg) + string = "%f %f %f %f %f %f\n" % (x[0], y[0], FPx, 0.0, APx, 0.0) + Output.write(string) + for i in range(1, len(x)): + string = "%f %f %f %f %f %f\n" % (x[i], y[i], FPx, maxArea, APx, maxArea) + Output.write(string) + # Close file + Output.close() + self.dataFile = filename + msg = Translator.translate("Data saved at '" + self.dataFile + "'.\n") + FreeCAD.Console.PrintMessage(msg) + return False + + def saveLayout(self, x, y, disp, xcb, ship): + """ Prints the data output. + @param x X coordinates. + @param y Transversal areas. + @param disp Ship displacement. + @param xcb Bouyancy center length. + @param ship Active ship instance. + @return True if error happens. + """ + filename = self.path + 'areas.pyxplot' + # Open the file + try: + Output = open(filename, "w") + except IOError: + msg = Translator.translate("Can't write '" + filename + "' file.\n") + FreeCAD.Console.PrintError(msg) + return True + # Write header + Output.write(header) + Output.write(" #\n") + Output.write(" # File automatically exported by FreeCAD-Ship\n") + Output.write(" # This file contains a script to plot transversal areas curve.\n") + Output.write(" # To use it execute:\n") + Output.write(" #\n") + Output.write(" # pyxplot %s\n" % (filename)) + Output.write(" #\n") + Output.write(" #################################################################\n") + # Write general options for hydrostatics + Output.write("set numeric display latex\n") + Output.write("set output '%s'\n" % (self.path + 'areas.eps')) + Output.write("set nokey\n") + Output.write("set grid\n") + Output.write("# X axis\n") + Output.write("set xlabel 'x / $m$'\n") + Output.write("set xtic\n") + Output.write("# Y axis\n") + Output.write("set ylabel 'Area / $m^2$'\n") + Output.write("set ytic\n") + Output.write("# Line styles\n") + Output.write("set style 1 line linetype 1 linewidth 1 colour rgb (0):(0):(0)\n") + Output.write("set style 2 line linetype 1 linewidth 2 colour rgb (0):(0):(0)\n") + # Get perpendiculars data + Lpp = ship.Length + FPx = 0.5*Lpp + APx = -0.5*Lpp + maxArea = max(y) + # Perpendicular labels + Output.write("# Perpendiculars labels\n") + Output.write("set label (1) AP %f,%f\n" % (APx+0.01*Lpp, 0.01*maxArea)) + Output.write("set label (2) AP %f,%f\n" % (APx+0.01*Lpp, 0.95*maxArea)) + Output.write("set label (3) FP %f,%f\n" % (FPx+0.01*Lpp, 0.01*maxArea)) + Output.write("set label (4) FP %f,%f\n" % (FPx+0.01*Lpp, 0.95*maxArea)) + # Additional data + Output.write("# Additional data\n") + Output.write("set label (5) 'XCB = %g m' %f,%f\n" % (xcb, -0.25*Lpp, 0.25*maxArea)) + Output.write("set label (6) 'Maximum area = %g m2' %f,%f\n" % (maxArea, -0.25*Lpp, 0.15*maxArea)) + Output.write("set label (7) 'Displacement = %g tons' %f,%f\n" % (disp, -0.25*Lpp, 0.05*maxArea)) + # Write plot call + Output.write("# Plot\n") + Output.write("plot '%s' using 1:2 title 'Transversal areas' axes x1y1 with lines style 1, \\\n" % (self.dataFile)) + Output.write(" '%s' using 3:4 title 'FP' axes x1y1 with lines style 2, \\\n" % (self.dataFile)) + Output.write(" '%s' using 5:6 title 'AP' axes x1y1 with lines style 2\n" % (self.dataFile)) + # Close file + self.layoutFile = filename + Output.close() + return False + + def execute(self): + """ Calls pyxplot in order to plot an save an image. + @return True if error happens. + """ + filename = self.path + 'areas' + comm = "pyxplot %s" % (self.layoutFile) + if os.system(comm): + msg = Translator.translate("Can't execute pyxplot. Maybe is not installed?\n") + FreeCAD.Console.PrintError(msg) + msg = Translator.translate("Plot will not generated\n") + FreeCAD.Console.PrintError(msg) + return True + comm = "gs -r300 -dEPSCrop -dTextAlphaBits=4 -sDEVICE=png16m -sOutputFile=%s.png -dBATCH -dNOPAUSE %s.eps" % (filename,filename) + if os.system(comm): + msg = Translator.translate("Can't execute ghostscript. Maybe is not installed?\n") + FreeCAD.Console.PrintError(msg) + msg = Translator.translate("Generated image will not converted to png\n") + FreeCAD.Console.PrintError(msg) + return True + return False diff --git a/src/Mod/Ship/shipAreasCurve/TaskPanel.py b/src/Mod/Ship/shipAreasCurve/TaskPanel.py index 3a5dab2fc..af4764e12 100644 --- a/src/Mod/Ship/shipAreasCurve/TaskPanel.py +++ b/src/Mod/Ship/shipAreasCurve/TaskPanel.py @@ -28,7 +28,7 @@ import FreeCADGui as Gui # Qt library from PyQt4 import QtGui,QtCore # Module -import Preview +import Preview, Plot import Instance from shipUtils import Paths, Translator from surfUtils import Geometry @@ -44,6 +44,13 @@ class TaskPanel: if not self.ship: return False self.save() + # Plot data + data = Hydrostatics.Displacement(self.ship,self.form.draft.value(),self.form.trim.value()) + x = self.ship.xSection[:] + y = data[0] + disp = data[1] + xcb = data[2] + Plot.Plot(x,y,disp,xcb, self.ship) self.preview.clean() return True diff --git a/src/Mod/Ship/shipCreateShip/TaskPanel.py b/src/Mod/Ship/shipCreateShip/TaskPanel.py index bee6c6964..e56827df4 100644 --- a/src/Mod/Ship/shipCreateShip/TaskPanel.py +++ b/src/Mod/Ship/shipCreateShip/TaskPanel.py @@ -119,7 +119,9 @@ class TaskPanel: self.faces = None selObjs = Geometry.getSelectedObjs() if not selObjs: - msg = Translator.translate("All ship surfaces must be selected (Any object has been selected)\n") + msg = Translator.translate("Ship objects can only be created on top of hull geometry (any object selected).\n") + App.Console.PrintError(msg) + msg = Translator.translate("Please create or download a ship hull geometry before using this tool\n") App.Console.PrintError(msg) return True self.faces = [] @@ -128,23 +130,37 @@ class TaskPanel: for j in range(0, len(faces)): self.faces.append(faces[j]) if not self.faces: - msg = Translator.translate("All ship surfaces must be selected (Any face found into selected objects)\n") + msg = Translator.translate("Ship objects can only be created on top of hull geometry (any face object selected).\n") + App.Console.PrintError(msg) + msg = Translator.translate("Please create or download a ship hull geometry before using this tool\n") App.Console.PrintError(msg) return True # Get bounds bounds = [0.0, 0.0, 0.0] bbox = self.faces[0].BoundBox - bounds[0] = bbox.XLength - bounds[1] = bbox.YLength - bounds[2] = bbox.ZLength + minX = bbox.XMin + maxX = bbox.XMax + minY = bbox.YMin + maxY = bbox.YMax + minZ = bbox.ZMin + maxZ = bbox.ZMax for i in range(1,len(self.faces)): bbox = self.faces[i].BoundBox - if bounds[0] < bbox.XLength: - bounds[0] = bbox.XLength - if bounds[1] < bbox.YLength: - bounds[1] = bbox.YLength - if bounds[2] < bbox.ZLength: - bounds[2] = bbox.ZLength + if minX > bbox.XMin: + minX = bbox.XMin + if maxX < bbox.XMax: + maxX = bbox.XMax + if minY > bbox.YMin: + minY = bbox.YMin + if maxY < bbox.YMax: + maxY = bbox.YMax + if minZ > bbox.ZMin: + minZ = bbox.ZMin + if maxZ < bbox.ZMax: + maxZ = bbox.ZMax + bounds[0] = maxX - minX + bounds[1] = maxY - minY + bounds[2] = maxZ - minZ # Set UI fields self.form.length.setMaximum(bounds[0]) self.form.length.setValue(bounds[0]) diff --git a/src/Mod/Ship/shipLoadExample/TaskPanel.py b/src/Mod/Ship/shipLoadExample/TaskPanel.py new file mode 100644 index 000000000..1f6cd9f93 --- /dev/null +++ b/src/Mod/Ship/shipLoadExample/TaskPanel.py @@ -0,0 +1,102 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* 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 Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +# Qt library +from PyQt4 import QtGui,QtCore +# Module +from shipUtils import Paths, Translator +from surfUtils import Geometry + +class TaskPanel: + def __init__(self): + self.ui = Paths.modulePath() + "/shipLoadExample/TaskPanel.ui" + + def accept(self): + path = Paths.modulePath() + "/Examples/" + if(self.form.ship.currentIndex() == 0): # s60 from Iowa University + App.open(path + "s60.fcstd") + elif(self.form.ship.currentIndex() == 1): # Barehull 5415 + App.open(path + "barehull5415.fcstd") + return True + + def reject(self): + return True + + def clicked(self, index): + pass + + def open(self): + pass + + def needsFullSpace(self): + return True + + def isAllowedAlterSelection(self): + return False + + def isAllowedAlterView(self): + return True + + def isAllowedAlterDocument(self): + return False + + def helpRequested(self): + pass + + def setupUi(self): + mw = self.getMainWindow() + form = mw.findChild(QtGui.QWidget, "TaskPanel") + form.ship = form.findChild(QtGui.QComboBox, "Ship") + form.mainLogo = form.findChild(QtGui.QLabel, "MainLogo") + iconPath = Paths.iconsPath() + "/Ico.xpm" + form.mainLogo.setPixmap(QtGui.QPixmap(iconPath)) + self.form = form + self.retranslateUi() + + def getMainWindow(self): + "returns the main window" + # using QtGui.qApp.activeWindow() isn't very reliable because if another + # widget than the mainwindow is active (e.g. a dialog) the wrong widget is + # returned + toplevel = QtGui.qApp.topLevelWidgets() + for i in toplevel: + if i.metaObject().className() == "Gui::MainWindow": + return i + raise Exception("No main window found") + + def retranslateUi(self): + """ Set user interface locale strings. + """ + self.form.setWindowTitle(Translator.translate("Load example ship")) + self.form.findChild(QtGui.QGroupBox, "ShipSelectionBox").setTitle(Translator.translate("Select ship example geometry")) + +def createTask(): + panel = TaskPanel() + Gui.Control.showDialog(panel) + if panel.setupUi(): + Gui.Control.closeDialog(panel) + return None + return panel diff --git a/src/Mod/Ship/shipLoadExample/TaskPanel.ui b/src/Mod/Ship/shipLoadExample/TaskPanel.ui new file mode 100644 index 000000000..b9f7aeffe --- /dev/null +++ b/src/Mod/Ship/shipLoadExample/TaskPanel.ui @@ -0,0 +1,115 @@ + + + TaskPanel + + + + 0 + 0 + 260 + 397 + + + + Load example ship + + + + + + + + + + + 128 + 128 + + + + + 128 + 128 + + + + + + + ../Icons/Ico.xpm + + + true + + + Qt::AlignHCenter|Qt::AlignTop + + + + + + + + + + 240 + 80 + + + + Qt::LeftToRight + + + Select ship example geometry + + + + + 0 + 20 + 241 + 101 + + + + + + + + Serie 60 from Iowa University + + + + + Barehull 5145 + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + + + + + + + + diff --git a/src/Mod/Ship/shipLoadExample/__init__.py b/src/Mod/Ship/shipLoadExample/__init__.py new file mode 100644 index 000000000..cbfb57d75 --- /dev/null +++ b/src/Mod/Ship/shipLoadExample/__init__.py @@ -0,0 +1,36 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* 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 Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD +import FreeCADGui + +# Qt libraries +from PyQt4 import QtGui,QtCore + +# Main object +import TaskPanel + +def load(): + """ Loads the tool """ + TaskPanel.createTask()