diff --git a/src/Mod/Surfaces/Icons/BorderIco.png b/src/Mod/Surfaces/Icons/BorderIco.png new file mode 100644 index 000000000..8f6f02414 Binary files /dev/null and b/src/Mod/Surfaces/Icons/BorderIco.png differ diff --git a/src/Mod/Surfaces/Icons/BorderIco.xcf b/src/Mod/Surfaces/Icons/BorderIco.xcf new file mode 100644 index 000000000..0ecd7785b Binary files /dev/null and b/src/Mod/Surfaces/Icons/BorderIco.xcf differ diff --git a/src/Mod/Surfaces/Icons/BorderIco.xpm b/src/Mod/Surfaces/Icons/BorderIco.xpm new file mode 100644 index 000000000..a27c8de99 --- /dev/null +++ b/src/Mod/Surfaces/Icons/BorderIco.xpm @@ -0,0 +1,1213 @@ +/* XPM */ +static char * BorderIco_xpm[] = { +"128 128 1082 2", +" c None", +". c #FF0000", +"+ c #005F00", +"@ c #006100", +"# c #00AF05", +"$ c #00B105", +"% c #000000", +"& c #009B03", +"* c #006600", +"= c #008C02", +"- c #00B005", +"; c #00A305", +"> c #006F01", +", c #B5B5B5", +"' c #B4B4B3", +") c #B3B3B2", +"! c #B1B1B2", +"~ c #B1B0B0", +"{ c #AFAFAF", +"] c #AEAEAE", +"^ c #ADACAC", +"/ c #ABABAB", +"( c #AAAAAA", +"_ c #007100", +": c #00AC04", +"< c #008403", +"[ c #BDBDBD", +"} c #BCBDBD", +"| c #BCBCBC", +"1 c #BABBBA", +"2 c #B9B9BA", +"3 c #B8B8B9", +"4 c #B8B7B7", +"5 c #B6B6B6", +"6 c #B5B4B5", +"7 c #B3B3B3", +"8 c #B2B3B2", +"9 c #B1B1B1", +"0 c #B0B0B0", +"a c #AFAFAE", +"b c #ADADAD", +"c c #ACACAC", +"d c #A9A9A9", +"e c #A8A7A8", +"f c #A6A7A6", +"g c #A5A5A5", +"h c #00A704", +"i c #00AE05", +"j c #00AC05", +"k c #009703", +"l c #C1C2C2", +"m c #C1C1C1", +"n c #C0C1C1", +"o c #C0C0C0", +"p c #BFC0C0", +"q c #BFBFBF", +"r c #BEBDBE", +"s c #BCBDBC", +"t c #BBBBBB", +"u c #BABABA", +"v c #B9B9B9", +"w c #B7B8B8", +"x c #B7B6B7", +"y c #B4B4B4", +"z c #B2B1B1", +"A c #B0AFAF", +"B c #ADAEAD", +"C c #AAA9A9", +"D c #A7A7A7", +"E c #A6A6A5", +"F c #A4A4A4", +"G c #008A02", +"H c #00B104", +"I c #00AD05", +"J c #00AA06", +"K c #00A105", +"L c #007101", +"M c #006000", +"N c #C3C3C3", +"O c #C4C3C3", +"P c #C3C3C4", +"Q c #C3C4C3", +"R c #C3C2C3", +"S c #C2C1C2", +"T c #C1C1C2", +"U c #BFC0BF", +"V c #BEBEBF", +"W c #BDBDBE", +"X c #BDBCBC", +"Y c #BCBBBB", +"Z c #BABAB9", +"` c #B6B7B6", +" . c #AFB0AF", +".. c #AEAEAF", +"+. c #ACABAC", +"@. c #A9A9A8", +"#. c #A8A8A8", +"$. c #A6A6A6", +"%. c #A4A5A4", +"&. c #A3A3A3", +"*. c #A2A2A2", +"=. c #008B02", +"-. c #00B305", +";. c #00A906", +">. c #00A505", +",. c #008303", +"'. c #C2C2C3", +"). c #C4C4C4", +"!. c #C5C5C5", +"~. c #C4C5C5", +"{. c #C5C4C4", +"]. c #BEBEBE", +"^. c #BDBEBE", +"/. c #BBBABA", +"(. c #B8B8B8", +"_. c #B4B5B4", +":. c #B2B2B1", +"<. c #B1B1B0", +"[. c #AAABAB", +"}. c #A4A3A3", +"|. c #A1A0A1", +"1. c #00B405", +"2. c #00A706", +"3. c #00A506", +"4. c #009404", +"5. c #006800", +"6. c #C2C2C2", +"7. c #C3C3C2", +"8. c #C5C6C6", +"9. c #C6C6C6", +"0. c #C7C6C6", +"a. c #C6C6C5", +"b. c #C6C5C6", +"c. c #C4C5C4", +"d. c #C3C4C4", +"e. c #C3C2C2", +"f. c #C1C0C0", +"g. c #C0BFBF", +"h. c #BDBCBD", +"i. c #BBBCBB", +"j. c #B8B8B7", +"k. c #B4B5B5", +"l. c #B3B3B4", +"m. c #B2B1B2", +"n. c #ACADAC", +"o. c #A8A9A8", +"p. c #A7A7A6", +"q. c #A3A4A4", +"r. c #A3A3A2", +"s. c #A1A1A1", +"t. c #9FA0A0", +"u. c #006700", +"v. c #007700", +"w. c #008601", +"x. c #009202", +"y. c #009D02", +"z. c #00AC03", +"A. c #00B503", +"B. c #00B404", +"C. c #00A806", +"D. c #00A306", +"E. c #009C05", +"F. c #007702", +"G. c #C2C2C1", +"H. c #C2C3C2", +"I. c #C5C5C4", +"J. c #C7C7C7", +"K. c #C8C8C7", +"L. c #C6C6C7", +"M. c #C5C4C5", +"N. c #BFBFBE", +"O. c #BABBBB", +"P. c #BAB9BA", +"Q. c #B8B7B8", +"R. c #B7B7B6", +"S. c #B2B3B3", +"T. c #AFB0B0", +"U. c #ABACAB", +"V. c #A6A5A6", +"W. c #A4A4A5", +"X. c #9E9E9F", +"Y. c #00A201", +"Z. c #00B302", +"`. c #00C202", +" + c #00C803", +".+ c #00C403", +"++ c #00C204", +"@+ c #00C004", +"#+ c #00BD04", +"$+ c #00BA04", +"%+ c #00B804", +"&+ c #00B504", +"*+ c #00AC06", +"=+ c #00A905", +"-+ c #00A406", +";+ c #00A006", +">+ c #009E07", +",+ c #008A05", +"'+ c #006500", +")+ c #C1C1C0", +"!+ c #C9C8C9", +"~+ c #C9C9C9", +"{+ c #C9C9C8", +"]+ c #C8C9C9", +"^+ c #C8C8C8", +"/+ c #C7C6C7", +"(+ c #B7B7B7", +"_+ c #B6B5B5", +":+ c #B1B2B2", +"<+ c #B0AFB0", +"[+ c #A8A9A9", +"}+ c #A5A4A5", +"|+ c #A2A2A1", +"1+ c #286F28", +"2+ c #276F27", +"3+ c #004700", +"4+ c #007D00", +"5+ c #009500", +"6+ c #00AC00", +"7+ c #00D003", +"8+ c #00CD02", +"9+ c #00CB03", +"0+ c #00C603", +"a+ c #00C303", +"b+ c #00C003", +"c+ c #00BE04", +"d+ c #00BB04", +"e+ c #00B905", +"f+ c #00B704", +"g+ c #00AE06", +"h+ c #00AB05", +"i+ c #00A606", +"j+ c #00A107", +"k+ c #009F07", +"l+ c #009B07", +"m+ c #009506", +"n+ c #007602", +"o+ c #C7C7C6", +"p+ c #C9CACA", +"q+ c #CACBCB", +"r+ c #CACBCA", +"s+ c #CAC9CA", +"t+ c #C7C7C8", +"u+ c #BCBBBC", +"v+ c #BABABB", +"w+ c #B9B8B9", +"x+ c #B1B2B1", +"y+ c #AEAFAE", +"z+ c #ADAEAE", +"A+ c #AAAAAB", +"B+ c #A8A8A7", +"C+ c #297029", +"D+ c #287028", +"E+ c #277427", +"F+ c #278627", +"G+ c #007200", +"H+ c #008600", +"I+ c #009A00", +"J+ c #00E100", +"K+ c #00E101", +"L+ c #00DE01", +"M+ c #00D102", +"N+ c #00CE02", +"O+ c #00C903", +"P+ c #00C703", +"Q+ c #00C404", +"R+ c #00C104", +"S+ c #00BF04", +"T+ c #00BC04", +"U+ c #00A206", +"V+ c #009F06", +"W+ c #009C07", +"X+ c #009907", +"Y+ c #009807", +"Z+ c #008906", +"`+ c #006801", +" @ c #C0C0C1", +".@ c #C8C9C8", +"+@ c #CACACA", +"@@ c #CBCBCB", +"#@ c #CCCCCC", +"$@ c #C9CAC9", +"%@ c #C9C8C8", +"&@ c #BFBEBE", +"*@ c #B5B5B4", +"=@ c #B2B2B2", +"-@ c #2A712A", +";@ c #297D29", +">@ c #289328", +",@ c #28AA29", +"'@ c #28BD28", +")@ c #27CC28", +"!@ c #27CD28", +"~@ c #27CF28", +"{@ c #00AA00", +"]@ c #04DA04", +"^@ c #00E400", +"/@ c #00E201", +"(@ c #00E001", +"_@ c #00CF02", +":@ c #00CD03", +"<@ c #00CA03", +"[@ c #00B205", +"}@ c #00A207", +"|@ c #009D07", +"1@ c #009A07", +"2@ c #009808", +"3@ c #009606", +"4@ c #008004", +"5@ c #006300", +"6@ c #CBCACB", +"7@ c #CDCECD", +"8@ c #CECDCE", +"9@ c #CDCDCD", +"0@ c #CBCBCC", +"a@ c #BBBBBA", +"b@ c #B7B6B6", +"c@ c #B5B4B4", +"d@ c #B0B1B1", +"e@ c #AEADAD", +"f@ c #ACADAD", +"g@ c #2A722A", +"h@ c #2A9F2A", +"i@ c #29BA2A", +"j@ c #29C62A", +"k@ c #28C729", +"l@ c #28CA29", +"m@ c #27CE28", +"n@ c #27D027", +"o@ c #26D127", +"p@ c #00AD00", +"q@ c #00E600", +"r@ c #00E401", +"s@ c #00DF01", +"t@ c #00CF03", +"u@ c #00CC02", +"v@ c #00C503", +"w@ c #00C103", +"x@ c #00BF03", +"y@ c #00B904", +"z@ c #00B505", +"A@ c #00AF06", +"B@ c #00AA05", +"C@ c #00A507", +"D@ c #009D06", +"E@ c #009406", +"F@ c #007803", +"G@ c #C6C7C6", +"H@ c #CACACB", +"I@ c #CFCFCE", +"J@ c #C8C7C8", +"K@ c #BAB9B9", +"L@ c #B6B6B7", +"M@ c #AFAEAF", +"N@ c #297529", +"O@ c #29BB2A", +"P@ c #29C82A", +"Q@ c #28C929", +"R@ c #28CB29", +"S@ c #00AF00", +"T@ c #00E500", +"U@ c #00DC01", +"V@ c #00C203", +"W@ c #00BA05", +"X@ c #009006", +"Y@ c #C4C4C3", +"Z@ c #C9C9CA", +"`@ c #CECECE", +" # c #CBCCCC", +".# c #C2C1C1", +"+# c #C0C1C0", +"@# c #BEBEBD", +"## c #BCBCBB", +"$# c #B7B8B7", +"%# c #B0B1B0", +"&# c #ADADAE", +"*# c #298E29", +"=# c #28C72A", +"-# c #27CF27", +";# c #26D326", +"># c #05DF05", +",# c #00DD01", +"'# c #00CC03", +")# c #00C504", +"!# c #00B805", +"~# c #00A705", +"{# c #C7C8C8", +"]# c #CACAC9", +"^# c #CBCCCB", +"/# c #BFBEBF", +"(# c #B3B4B3", +"_# c #AEAFAF", +":# c #ACACAB", +"<# c #29B029", +"[# c #28C82A", +"}# c #27CC29", +"|# c #27CE27", +"1# c #26CF26", +"2# c #26D126", +"3# c #00A900", +"4# c #00B705", +"5# c #009207", +"6# c #C5C5C6", +"7# c #CBCACA", +"8# c #C6C5C5", +"9# c #C2C3C3", +"0# c #BEBFBE", +"a# c #A8A7A7", +"b# c #298229", +"c# c #28C629", +"d# c #27CB28", +"e# c #26CE27", +"f# c #26CF27", +"g# c #25CF26", +"h# c #00A800", +"i# c #00A700", +"j# c #00DB01", +"k# c #00D802", +"l# c #00B605", +"m# c #00A106", +"n# c #007A03", +"o# c #B8B9B8", +"p# c #B5B6B5", +"q# c #28A829", +"r# c #28C829", +"s# c #27CA29", +"t# c #27CC27", +"u# c #26CC27", +"v# c #26CD27", +"w# c #26CD26", +"x# c #25CC26", +"y# c #00A600", +"z# c #00A500", +"A# c #00D902", +"B# c #00D701", +"C# c #00BE03", +"D# c #C8C7C7", +"E# c #C7C8C7", +"F# c #C5C6C5", +"G# c #C4C4C5", +"H# c #B9BAB9", +"I# c #B6B7B7", +"J# c #B0B0AF", +"K# c #ADADAC", +"L# c #287D28", +"M# c #28C429", +"N# c #27C829", +"O# c #27C928", +"P# c #27CA28", +"Q# c #26CB27", +"R# c #26CA26", +"S# c #25CA27", +"T# c #00A400", +"U# c #00A200", +"V# c #00D502", +"W# c #00AB06", +"X# c #009E06", +"Y# c #008404", +"Z# c #B9B9B8", +"`# c #B1B0B1", +" $ c #ABAAAB", +".$ c #AAA9AA", +"+$ c #A9A8A9", +"@$ c #A5A5A6", +"#$ c #28A329", +"$$ c #28C529", +"%$ c #27C729", +"&$ c #27C728", +"*$ c #26C927", +"=$ c #26C928", +"-$ c #25C926", +";$ c #25C826", +">$ c #25C726", +",$ c #00A101", +"'$ c #00D402", +")$ c #00C604", +"!$ c #00A307", +"~$ c #006C01", +"{$ c #C1C0C1", +"]$ c #AEADAE", +"^$ c #ABAAAA", +"/$ c #287728", +"($ c #27C028", +"_$ c #27C529", +":$ c #27C628", +"<$ c #26C628", +"[$ c #26C727", +"}$ c #25C727", +"|$ c #25C627", +"1$ c #25C526", +"2$ c #009F00", +"3$ c #009E01", +"4$ c #00D002", +"5$ c #008D05", +"6$ c #B8B9B9", +"7$ c #B7B7B8", +"8$ c #ADACAD", +"9$ c #A7A7A8", +"0$ c #27A028", +"a$ c #27C328", +"b$ c #27C428", +"c$ c #26C428", +"d$ c #26C527", +"e$ c #25C426", +"f$ c #25C326", +"g$ c #24C226", +"h$ c #009D01", +"i$ c #009C01", +"j$ c #00B604", +"k$ c #007703", +"l$ c #0B0B0B", +"m$ c #BDBDBC", +"n$ c #B5B5B6", +"o$ c #ACACAD", +"p$ c #A9AAAA", +"q$ c #A5A6A5", +"r$ c #A2A2A3", +"s$ c #A1A2A1", +"t$ c #277927", +"u$ c #27C228", +"v$ c #26C328", +"w$ c #26C227", +"x$ c #25C227", +"y$ c #25C126", +"z$ c #25C226", +"A$ c #24C026", +"B$ c #009B01", +"C$ c #009901", +"D$ c #00A805", +"E$ c #009C06", +"F$ c #009607", +"G$ c #006200", +"H$ c #C0BFC0", +"I$ c #ABACAC", +"J$ c #276E27", +"K$ c #27A428", +"L$ c #26C028", +"M$ c #26C128", +"N$ c #25C028", +"O$ c #25C127", +"P$ c #25C026", +"Q$ c #24BF27", +"R$ c #24BE26", +"S$ c #24BD26", +"T$ c #009801", +"U$ c #009802", +"V$ c #00C902", +"W$ c #008504", +"X$ c #BBBABB", +"Y$ c #B9BABA", +"Z$ c #A0A0A1", +"`$ c #9F9F9F", +" % c #278227", +".% c #26BE28", +"+% c #26BF28", +"@% c #25BF28", +"#% c #25BE27", +"$% c #24BB25", +"%% c #009602", +"&% c #009501", +"*% c #009502", +"=% c #00A904", +"-% c #00A005", +";% c #009504", +">% c #009204", +",% c #009104", +"'% c #007102", +")% c #BDBEBD", +"!% c #A2A1A1", +"~% c #A0A0A0", +"{% c #9F9F9E", +"]% c #26B027", +"^% c #26BC28", +"/% c #25BC27", +"(% c #24BB26", +"_% c #24BA26", +":% c #23B926", +"<% c #23B925", +"[% c #009402", +"}% c #00AF04", +"|% c #009803", +"1% c #007701", +"2% c #009407", +"3% c #B4B3B3", +"4% c #A9A8A8", +"5% c #A7A8A7", +"6% c #A4A5A5", +"7% c #A09F9F", +"8% c #9E9E9E", +"9% c #9A9C9B", +"0% c #269127", +"a% c #26BA28", +"b% c #26BB28", +"c% c #25BA27", +"d% c #25B927", +"e% c #24B926", +"f% c #23B726", +"g% c #23B625", +"h% c #009102", +"i% c #04B106", +"j% c #00A304", +"k% c #008F05", +"l% c #008104", +"m% c #B9B8B8", +"n% c #ACABAB", +"o% c #A5A4A4", +"p% c #A2A3A3", +"q% c #9D9E9D", +"r% c #9C9D9C", +"s% c #266E26", +"t% c #267426", +"u% c #26B728", +"v% c #25B828", +"w% c #25B827", +"x% c #25B728", +"y% c #24B727", +"z% c #24B626", +"A% c #23B526", +"B% c #23B426", +"C% c #008F02", +"D% c #008E02", +"E% c #00B204", +"F% c #008604", +"G% c #006D01", +"H% c #AAAAA9", +"I% c #A5A5A4", +"J% c #9C9C9C", +"K% c #266D26", +"L% c #259E27", +"M% c #25B628", +"N% c #24B627", +"O% c #24B527", +"P% c #24B427", +"Q% c #23B427", +"R% c #23B326", +"S% c #23B125", +"T% c #008D02", +"U% c #01BB05", +"V% c #007401", +"W% c #007E03", +"X% c #009206", +"Y% c #B3B2B3", +"Z% c #A9A9AA", +"`% c #A6A7A7", +" & c #A1A0A0", +".& c #9B9B9B", +"+& c #9A9A9A", +"@& c #258126", +"#& c #25B427", +"$& c #25B428", +"%& c #24B327", +"&& c #24B326", +"*& c #23B226", +"=& c #23B126", +"-& c #23B026", +";& c #22AF25", +">& c #008902", +",& c #007F04", +"'& c #AFAFB0", +")& c #ABABAA", +"!& c #A7A6A6", +"~& c #9F9FA0", +"{& c #9E9F9E", +"]& c #9D9D9D", +"^& c #9C9B9C", +"/& c #9A9A9B", +"(& c #99999A", +"_& c #256C25", +":& c #25A927", +"<& c #25B228", +"[& c #24B127", +"}& c #23AF26", +"|& c #23AE26", +"1& c #22AE25", +"2& c #22AC25", +"3& c #007002", +"4& c #B2B2B3", +"5& c #A5A6A6", +"6& c #A0A09F", +"7& c #9F9E9F", +"8& c #9A9999", +"9& c #999999", +"0& c #939693", +"a& c #259126", +"b& c #24B028", +"c& c #24AF27", +"d& c #24AE26", +"e& c #23AD26", +"f& c #23AC25", +"g& c #22AA25", +"h& c #008703", +"i& c #008602", +"j& c #05B00A", +"k& c #006A01", +"l& c #009106", +"m& c #AEAEAD", +"n& c #A4A4A3", +"o& c #A3A2A3", +"p& c #9D9E9E", +"q& c #9C9C9D", +"r& c #9C9B9B", +"s& c #999998", +"t& c #979797", +"u& c #979696", +"v& c #257925", +"w& c #24AD28", +"x& c #24AE27", +"y& c #24AD27", +"z& c #23AC26", +"A& c #23AB27", +"B& c #23AB26", +"C& c #22AB25", +"D& c #22A925", +"E& c #22A825", +"F& c #21A725", +"G& c #008503", +"H& c #007202", +"I& c #006400", +"J& c #007E04", +"K& c #AFAEAE", +"L& c #ABABAC", +"M& c #9A9B9B", +"N& c #989898", +"O& c #969696", +"P& c #246C25", +"Q& c #24A327", +"R& c #24AA28", +"S& c #23AA27", +"T& c #23A926", +"U& c #22A826", +"V& c #22A726", +"W& c #21A625", +"X& c #004A00", +"Y& c #009706", +"Z& c #006B01", +"`& c #AAABAA", +" * c #A7A8A8", +".* c #9C9D9D", +"+* c #9A999A", +"@* c #999898", +"#* c #979897", +"$* c #979697", +"%* c #959495", +"&* c #919392", +"** c #246B24", +"=* c #249126", +"-* c #24A927", +";* c #23A927", +">* c #23A827", +",* c #23A726", +"'* c #22A525", +")* c #21A425", +"!* c #219A25", +"~* c #004B00", +"{* c #009107", +"]* c #A1A2A2", +"^* c #A0A1A0", +"/* c #9B9C9B", +"(* c #9A9B9A", +"_* c #959596", +":* c #949594", +"<* c #939393", +"[* c #248025", +"}* c #23A627", +"|* c #23A727", +"1* c #23A626", +"2* c #22A626", +"3* c #22A426", +"4* c #22A325", +"5* c #219D24", +"6* c #217021", +"7* c #206820", +"8* c #008C05", +"9* c #A2A3A2", +"0* c #A2A1A2", +"a* c #A1A1A0", +"b* c #9F9E9E", +"c* c #9E9E9D", +"d* c #9B9B9C", +"e* c #969695", +"f* c #959595", +"g* c #939493", +"h* c #929292", +"i* c #247023", +"j* c #23A427", +"k* c #23A327", +"l* c #22A326", +"m* c #22A226", +"n* c #21A025", +"o* c #217622", +"p* c #216821", +"q* c #A09FA0", +"r* c #9D9C9D", +"s* c #939494", +"t* c #919292", +"u* c #236B23", +"v* c #239927", +"w* c #23A227", +"x* c #22A227", +"y* c #22A127", +"z* c #22A026", +"A* c #219F26", +"B* c #217F23", +"C* c #828282", +"D* c #A4A3A4", +"E* c #9FA09F", +"F* c #969796", +"G* c #949494", +"H* c #929192", +"I* c #909191", +"J* c #8F8F8F", +"K* c #236A23", +"L* c #238A25", +"M* c #239F26", +"N* c #229F27", +"O* c #229F26", +"P* c #218524", +"Q* c #838382", +"R* c #818282", +"S* c #808180", +"T* c #A8A8A9", +"U* c #9E9D9D", +"V* c #9B9A9B", +"W* c #999A9A", +"X* c #979798", +"Y* c #909090", +"Z* c #8E8F8F", +"`* c #237B24", +" = c #229E27", +".= c #229D26", +"+= c #218E25", +"@= c #216921", +"#= c #838383", +"$= c #818181", +"%= c #7F7F7F", +"&= c #006F02", +"*= c #A1A1A2", +"== c #A0A1A1", +"-= c #989897", +";= c #929393", +">= c #919192", +",= c #8E8E8F", +"'= c #8E8E8E", +")= c #227022", +"!= c #229B27", +"~= c #229B26", +"{= c #229225", +"]= c #216B21", +"^= c #718071", +"/= c #818182", +"(= c #A6A5A5", +"_= c #9D9D9E", +":= c #989797", +"<= c #929293", +"[= c #919291", +"}= c #909190", +"|= c #8D8D8D", +"1= c #226922", +"2= c #229626", +"3= c #229426", +"4= c #216E21", +"5= c #838384", +"6= c #818180", +"7= c #7F8080", +"8= c #7E7E7F", +"9= c #7D7D7D", +"0= c #A3A3A4", +"a= c #9E9F9F", +"b= c #999A99", +"c= c #989998", +"d= c #969697", +"e= c #969596", +"f= c #949393", +"g= c #929392", +"h= c #919191", +"i= c #8C8B8B", +"j= c #898A88", +"k= c #228D25", +"l= c #217222", +"m= c #838484", +"n= c #828382", +"o= c #818281", +"p= c #808080", +"q= c #7D7E7E", +"r= c #7D7D7C", +"s= c #9D9D9C", +"t= c #959594", +"u= c #949394", +"v= c #939292", +"w= c #8F9090", +"x= c #8E8F8E", +"y= c #8C8C8C", +"z= c #8B8B8B", +"A= c #8A8A8A", +"B= c #217422", +"C= c #848484", +"D= c #828283", +"E= c #818081", +"F= c #7E7E7E", +"G= c #7C7B7C", +"H= c #969595", +"I= c #959494", +"J= c #8F8F90", +"K= c #898989", +"L= c #858484", +"M= c #838483", +"N= c #807F7F", +"O= c #7C7C7C", +"P= c #7B7B7A", +"Q= c #7A7A79", +"R= c #9C9C9B", +"S= c #9B9B9A", +"T= c #929191", +"U= c #8F908F", +"V= c #888888", +"W= c #858584", +"X= c #828281", +"Y= c #7F7E7F", +"Z= c #7E7D7E", +"`= c #7D7C7D", +" - c #7B7B7B", +".- c #7A7A7A", +"+- c #797979", +"@- c #9A9A99", +"#- c #979898", +"$- c #949595", +"%- c #929291", +"&- c #908F8F", +"*- c #8E8E8D", +"=- c #8C8D8C", +"-- c #898A89", +";- c #878787", +">- c #858686", +",- c #858585", +"'- c #818080", +")- c #7B7C7C", +"!- c #7A7B7A", +"~- c #787878", +"{- c #9D9C9C", +"]- c #989798", +"^- c #959696", +"/- c #8A8B8A", +"(- c #868686", +"_- c #808081", +":- c #7F807F", +"<- c #7A7979", +"[- c #787979", +"}- c #777777", +"|- c #9B9C9C", +"1- c #949493", +"2- c #919090", +"3- c #8F8F8E", +"4- c #8C8C8D", +"5- c #898988", +"6- c #888787", +"7- c #828182", +"8- c #808181", +"9- c #7F7F80", +"0- c #7E7F7E", +"a- c #7D7D7E", +"b- c #7D7C7C", +"c- c #797879", +"d- c #777878", +"e- c #767676", +"f- c #969797", +"g- c #90908F", +"h- c #8D8D8E", +"i- c #89898A", +"j- c #7F7E7E", +"k- c #7E7E7D", +"l- c #7C7B7B", +"m- c #787877", +"n- c #757576", +"o- c #8E8D8D", +"p- c #8D8C8D", +"q- c #7A7A7B", +"r- c #787978", +"s- c #767576", +"t- c #757475", +"u- c #979796", +"v- c #898A8A", +"w- c #898889", +"x- c #787879", +"y- c #757575", +"z- c #747473", +"A- c #959695", +"B- c #939293", +"C- c #919091", +"D- c #8C8B8C", +"E- c #8A8989", +"F- c #878788", +"G- c #848585", +"H- c #787777", +"I- c #747474", +"J- c #737373", +"K- c #898888", +"L- c #878887", +"M- c #878686", +"N- c #848483", +"O- c #80807F", +"P- c #7C7D7D", +"Q- c #797A7A", +"R- c #787778", +"S- c #727272", +"T- c #888889", +"U- c #868586", +"V- c #848485", +"W- c #838282", +"X- c #777677", +"Y- c #767575", +"Z- c #747475", +"`- c #737473", +" ; c #717171", +".; c #8E8D8E", +"+; c #8D8D8C", +"@; c #8C8C8B", +"#; c #888788", +"$; c #797978", +"%; c #727171", +"&; c #707170", +"*; c #858685", +"=; c #828383", +"-; c #7F7F7E", +";; c #747575", +">; c #737372", +",; c #717271", +"'; c #707070", +"); c #6F7070", +"!; c #8D8E8D", +"~; c #8B8B8A", +"{; c #868786", +"]; c #858586", +"^; c #7A797A", +"/; c #747374", +"(; c #727373", +"_; c #707171", +":; c #6F6F70", +"<; c #6E6F6E", +"[; c #8D8C8C", +"}; c #8B8A8A", +"|; c #8A8A89", +"1; c #878786", +"2; c #7E7D7D", +"3; c #7C7C7D", +"4; c #7B7B7C", +"5; c #7B7A7A", +"6; c #757676", +"7; c #727172", +"8; c #717170", +"9; c #6E6F6F", +"0; c #6D6D6D", +"a; c #8A8B8B", +"b; c #888988", +"c; c #868685", +"d; c #757574", +"e; c #737273", +"f; c #727271", +"g; c #70706F", +"h; c #6F6E6F", +"i; c #6D6D6E", +"j; c #878687", +"k; c #848384", +"l; c #7C7C7B", +"m; c #767677", +"n; c #757474", +"o; c #6F6E6E", +"p; c #6D6E6E", +"q; c #868787", +"r; c #7A7B7B", +"s; c #757675", +"t; c #848383", +"u; c #828181", +"v; c #79797A", +"w; c #707071", +"x; c #6F6F6E", +"y; c #7B7C7B", +"z; c #807F80", +"A; c #7D7E7D", +"B; c #7C7D7C", +"C; c #7B7A7B", +"D; c #797878", +"E; c #030303", +" ", +" ", +" ", +" ", +" ", +" . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . ", +" . . . . . . . . + . . . . . . ", +" . . . . . . . + + + . . . . . . ", +" . . . . . . + + + . . . . . ", +" . . . . . . + @ + + . . . . . . ", +" . . . . . . . + + # + + . . . . . . ", +" . . . . . . + $ # + + + . . . . . ", +" % % % % % % % % % % % . . . . . . + + $ & * + + . . . . . . ", +" % % % % % % % % % % % % % % % % % % % % % % % . . . . . + = - ; > + + . . . . . ", +" % % % % % % % % % % % % % , ' ) ! ~ { ] ^ / ( % % % % % % . . . . . . + _ $ # : < + + + . . . . . . ", +" % % % % % % % % % % [ } | 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 5 y 7 z 9 A B ^ / C d D E F % % % % . . . . . . + G H # I J K L + + M . . . . . . ", +" % % % % % % N O P Q N R S T n U V W X Y Z v w ` , y 7 9 ...b +.( @.#.$.%.&.*.% % % . . . . . + =.-.- i j ;.>.,.M + + . . . . . ", +" % % % % % '.Q ).).!.!.~.{.).O R S m q ].^.| /.Z (.x 5 _.7 :.<.{ b c [.d #.f g }.*.|.% % % . . . . . + + + + + + + = 1.$ # j J 2.3.4.5.+ + . . . . . . ", +" % % % % 6.7.).~.!.8.9.0.9.a.b.c.d.e.l f.g.].h.i.u 3 j.` k.l.m.0 { ] n./ ( o.p.g q.r.s.t.% % % . . . . . + + + + u.v.w.x.y.z.A.B.-.- I J C.3.D.E.F.+ + + . . . . . ", +" % % % % o G.H.O I.a.0.J.J.K.J.J.L.a.M.).6.m o N.[ X O.P.Q.R., ' S.9 T.] b U.( @.D V.W.r.*.t.X.% % + + + + . . . . . . Y.Z.`. +.+++@+#+$+%+&+-.- i *+=+3.-+;+>+,+'++ + . . . . . ", +" % % % ].g.)+6.P ).9.J.K.!+~+~+{+]+^+/+b.I.N 6.m U ^.} t Z v (+_+y ) :+<+a b U.( [+D E }+&.|+1+2+3+3+3++ * 4+5+6+. . . . . 7+8+9+ +0+a+b+c+d+e+f+-.$ g+h+;.i+D.j+k+l+m+n++ + + . . . . . ", +" % % % % N.o G.N ).a.o+^+~+p+q+q+r+s+~+t+o+!.).'.T o ].[ u+v+w+Q.5 6 7 x+0 y+z+c A+d B+C+C+D+1+1+E+F+G+H+I+J+K+K+L+. . . . . M+N+9+O+P+Q+R+S+T+e+f+1.$ # j ;.2.-+U+V+W+X+Y+Z+`++ + + . . . . . ", +" % % % % @G.P c.9.t+.@+@@@#@#@#@q+$@%@J.9.).7.G.o &@[ | 1 v (.5 *@' =@0 { b c -@-@-@C+;@>@,@'@)@!@~@{@{@]@^@/@(@L+. . . . . _@:@<@P+.+++S+#+$+f+&+[@# *+J 2.-+}@k+|@1@2@Y+3@4@5@+ + + . . . . . ", +" % % % 6.).~.0.^+~+6@#@7@8@9@0@+@~+K.9.).O 6.o q ^.| a@v (.b@c@7 =@d@{ e@f@g@-@h@i@j@k@l@l@!@m@n@o@6+p@q@r@K+s@. . . . . t@u@O+P+v@w@x@T+y@f+z@$ A@j B@2.C@}@k+D@1@2@Y+Y+Y+E@F@@ + + . . . . . ", +" % % 6.Q !.G@^+$@H@#@8@I@9@#@+@~+J@9.!.N l f.q [ | /.K@w L@, l.:.9 M@z+c [.-@N@O@j@P@Q@R@)@~@n@o@p@S@p@T@/@(@U@. . . . . :@<@P+.+V@S+T+W@f+B.[@# I ;.C.3.U+k+|@X+Y+Y+Y+Y+Y+X@M + . . . . . ", +" % % % Y@!.9.^+Z@q+#@9@`@9@ #r+!+^+9.!.N .#+#q @###/.v $#` _.l.=@%#{ &#c ( -@-@*#j@=#l@R@!@m@-#o@;#p@6+>#K+s@,#. . . . . '#<@P+)#w@S+#+$+!#B.[@# j B@~#3.U+k+W+1@Y+2@Y+2@2@n++ + . . . . . ", +" % % % M.a.{#.@]#@@#@#@^#@@p+^+J.9.M.N l o /#[ u+u v w 5 y (#=@0 _#b :#/ d -@C+<#=#[#l@}#!@|#1#2#2#{@3#K+L+U@. . . . . u@<@P+.+V@S+#+y@4#B.[@# I J 2.3.}@k+W+1@Y+Y+Y+Y+5#M + . . . . . ", +" % % % 6#J.^+~++@7#q+H@p+]+{#G@8#).9#m o 0#[ t /.v $#5 y 7 x+0 M@b +.[.d a#C+b#c#[#l@d#)@|#e#f#g#h#i#i#,#j#k#. . . . . +P+.+w@S+T+y@l#B.[@g+j J 2.3.m#k+W+X+Y+Y+Y+Y+n#+ + . . . . . ", +" % % I.9./+K.!+~+~+~+.@K.J.8#{.N 6.f.q ].} u+u o#(+p#y 7 9 0 y+b +.A+d #.C+C+q#k@r#s#d#t#u#v#w#x#y#z#j#A#B#. . . . . +0+a+@+C#d+y@l#1.$ i *+J i+-+j+>+l+X+Y+Y+Y+3@5@+ . . . . . ", +" % % % !.9.o+{#{#D#^+E#0.F#G#O H..#o 0#W | t H#(.I#_+l.7 9 J#] K#U.( [+D g C+L#M#k@N#O#P#Q#Q#R#S#T#T#U#B#V#. . . . . P+v@a+@+c+d+!#z@-.- I W#=+i+-+j+X#l+X+Y+Y+Y+Y#+ + . . . . . ", +" % % d.!.8#b.9.L.o+9.!.I.).7..#f.U ].[ u+u Z#j.5 , 7 =@`# .] ^ $.$+$D @$C+D+#$$$%$&$*$=$*$-$;$>$Y.,$V#'$M+. . . . )$Q+w@S+T+W@f+&+-.A@I B@2.3.!$;+X#l+Y+2@Y+Y+~$+ . . . . . ", +" % % % P ).).!.!.{.M.).O H.6.{$U /#[ | 1 K@(.R.p#y 7 m.0 { ]$c ^$C B+f g q.1+/$($_$:$<$[$[$}$|$1$2$3$3$M+4$. . . . . a+b+c+d+y@l#1.[@# j =+~#-+U+V+|@1@Y+Y+Y+5$+ + . . . . . ", +" % % 6.R N N P O N '.6.m f.p 0#W | t u 6$7$` , l.) 9 0 ] 8$c A+d 9$$.}+&.1+1+0$a$b$c$d$d$1$e$f$g$h$i$t@N+. . . . . R+S+T+$+!#j$-.$ g+*+;.2.-+j+k+W+1@Y+Y+2@k$+ . . . . . ", +" l$% % m 6.S 6.6.G.S )+o q 0#^.m$i.u v (.R.n$y 7 =@0 { ] o$/ p$#.p.q$%.r$s$1+t$($u$v$w$x$x$y$z$A$B$B$C$u@<@. . . . x@C#d+y@l#z@[@# I B@D$i+D.m#>+E$X+2@Y+F$G$+ . . . . . ", +" % % p o )+o n @H$p N.].^.s i.u K@3 (+5 6 7 ) 9 T.] b I$( d e D g F *.s.1+J$K$L$L$M$N$O$P$Q$R$S$T$U$V$P+. . . . . T+W@%+&+-.$ i j ;.2.3.U+V+|@l+Y+Y+Y+W$+ + . . . . . ", +" % % % q q q q q /#].[ [ | t X$Y$3 (+5 , y 7 m.%#{ z+c / ( #.D $.W.&.*.Z$`$J$ %.%+%+%@%#%#%R$S$$%%%&%*%v@. . . . . $+!#4#1.[@# I =%-%;%>%,%X#|@X+Y+Y+2@'%+ . . . . . ", +" % % ^.].^.^.)%[ m$| i.t u v (.(.5 _+*@7 :+%#<+..b c ^$C #.f q$F r$!%~%{%J$J$]%^%/%/%/%/%(%_%:%<%[%x..+. . . . . y@j$1.[@}%|%1%+ + + + + 3@l+X+Y+2@2%M + . . . . . ", +" % % % | | X | ##Y a@u K@w+(.(+` p#y 3%) 9 0 a e@c / ( 4%5%$.6%&.r$s.7%8%9%J$0%a%b%c%c%d%e%e%f%g%x.h%i%@+. . . . 4#z@-.j%> + + + + k%X+Y+2@Y+l%+ + . . . . . ", +" % % t /.t X$1 Z Z v m%(+(+5 , y 3%=@z 0 { z+K#n%A+d #.D g o%p%|+~%{%q%r%s%t%u%v%w%x%y%y%z%A%B%B%C%D%c+. . . . . E%= @ + + + F%X+Y+Y+Y+G%+ . . . . . ", +" % % v 2 v v Z#o#(.(+(+L@p#c@y 7 =@x+~ { ] b I$/ H%#.D E I%&.r$s.t.8%r%J%s%K%L%M%M%N%O%P%Q%B%R%S%D%T%U%. . . . . V%+ + + + W%Y+Y+2@X%+ + . . . . ", +" % % (.$#j.w (+I#5 _+, _.' Y%=@9 0 { ] b c / Z%@.a#`%g &.*.|+ &`$8%r%.&+&K%@&#&$&%&&&%&*&=&-&;&= =.>&. . . . . + + + F.Y+2@Y+,&+ . . . . . ", +" % % ` 5 5 5 5 n$, y (#7 =@x+<.'&{ ] e@o$)&( @.B+!&E %.&.*.s.~&{&]&^&/&(&K%_&:&<&[&[&[&-&}&|&1&2&>&>&l#. . . . + + 3&Y+Y+Y+~$+ . . . . . ", +" % % % , , c@y y l.7 4&:.9 %#0 _#] b c / ( d #.D 5&}+&.*.s.6&7&]&r%.&8&9&0&_&a&b&c&c&d&|&e&f&2&g&h&i&j&. . . . + k&Y+Y+l&+ + . . . . ", +" % % (#3%l.Y%S.=@! z 9 0 { ] m&8$I$/ .$[+e D $.%.n&o&s. &`$p&q&r&+&s&t&u&_&v&w&x&y&z&A&B&C&D&E&F&G&H&. . . . . + I&Y+Y+J&+ . . . . . ", +" % % =@:+:+9 9 <.%#<+{ K&m&b c L&/ ( @.#.D $.g q.&.*. &7%8%]&J%M&(&N&t&O&_&P&Q&R&S&S&T&U&U&V&W&W&F.X&. . . . . + + Y&Y+Z&+ . . . . . ", +" % % % `#0 0 T. ._#K&B b f@c / `&.$+$ *D $.g F &.|+s.t.{&8%.*.&+*@*#*$*%*&***=*-*;*>*,*V&V&'*)*!*~*3+. . . . . + l&{*+ + . . . . . ", +" % % { { K&] ] B b 8$c I$[.d d #.e $.E 6%q.&.]*^*~&X.q%J%/*(*9&N&$*_*:*<***[*}*|*1*2*3*3*4*5*6*7*3+% . . . . + 8*,&+ . . . . ", +" % % b &#B b n.c U./ A+( H%o.e D $.g W.F 9*0*a*~%b*c*r%d*+&9&N&t&e*f*g*h***i*j*j*k*l*l*m*n*o*p*7*% % . . . . + F%G%+ . . . . ", +" % % c c +.+.U./ [.Z%C d #.D !&$.@$o%&.9**.a*q*X.c*r*J%+&(&@*t&O&f*s*<*t***u*v*w*x*y*z*A*B*p*p*C*% % . . . . + 4@+ + . . . . . ", +" % % / A+( H%d [+o. *D D $.5&W.D*&.9*s.^*E*{%8%]&^&.&(&@*N&F*_*G*<*H*I*J*K*L*M*N*O*O*P*p*p*Q*R*S*% . . . . . + n#+ . . . . . ", +" % % d d d T*#.9$D `%$.E g F n&r.*.s.~%`${%U*J%^&V*W*@*X*F*f*G*<*h*I*Y*Z*K*`* = =.=+=@=p*#=C*$=%=% . . . . . + &=+ . . . . ", +" % % D 9$D !&p.f q$@$%.F }.&.9**===~%`$8%]&.*/*+&9&s&-=F*_*G*<*;=>=Y*,='=K*)=!=~={=]=p*^=#=/=S*%=% . . . . . + M + . . . . ", +" % % % $.$.5&(=g W.F }.&.*.s$s.~%E*7&8%_=J%r&(*9&9&:=O&e*%*<*<=[=}=J*'=|=K*1=2=3=4=p*p*5=C*6=7=8=9=% . . . . + + + . . . . ", +" % % F o%F n&0=&.&.s$*.s. &q*`$a=]&r*J%.&+&b=c=t&d=e=:*f=g=h=Y*J*'=|=i=j=1=k=l=p*p*m=n=o=p=%=q=r=% . . . . + + . . . . . ", +" % % 0=o&*.r$*.]*s.Z$^*~&`${&8%s=r%.&V*+&9&@*t&O&e*t=u=v=h=h=w=x=|=y=z=A=1=B=p*p*C=D=R*E=%=F=9=G=% . . . . + + . . . . . ", +" % % 0*0*s.Z$s.~%t.`$`$8%U*]&J%.&.&(*(&9&N&t&O&H=I=<*h*H*I*J='=|=y=z=A=K=1=@=p*L=M=C*6=N=F=9=O=P=Q=. . . . + + . . . . ", +" % % % ~%~%~&E*{%b*8%]&r*.*R=.&S=+&9&N&t&d=e*f*G*<*g=T=}=U=,=|=y=z=A=K=V=@=p*W=5=C*X=p=Y=Z=`= -.-+-. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" % % {%a=8%c*8%]&q&J%/*.&/&@-9&@*#-$*O&_*$-u=<*%-h=Y*&-'=*-=-z=A=--V=;->-,-C=#=o='-%=F=r=)-!-+-~-. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" % % U*]&]&{-R=^&.&(*(*b=9&c=]-#-O&^-%*:*g*h*t*h=J=J*'=|=y=z=/-K=V=;-(-,-m=#=/=_-:-8=9=)- -<-[-}-. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" % % |-/*/*.&/&/&+&9&s&s&]-:=$*O&e=G*1-<*;=%-2-U=3-'=|=4-z=A=K=5-6-(-,-C=#=7-8-9-0-a-b- -.-c-d-e-. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" % % +&+&W*W*9&s&N&N&]-t&f-e*f*:*1-1-g=H*I*Y*g-3-h-|=y=z=A=i-V=;-(-,-C=#=C*$=p=j-k-O=l-P=+-m-}-n-. . . . . . . . . . . . . . . . . . . . . . . . . ", +" % % % 9&N&N&-=]-t&t&O&_*f*$-s*<*;=h*T=h=Y*J*'=o-p-y=z=A=5-V=;-(-,-C=#=C*$=p=%=q=r=)-q-+-r-}-s-t-. . . . . . . . . . . . . . . . . . ", +" % % t&t&u-f-O&^-f*%*G*G*<*h*h*%-Y*Y*J*Z*o-|==-z=z=v-w-V=;-(-,-C=#=C*E=p=%=F=r=G=.-<-x-}-e-y-z-. . . . . . . . . . . . . . . . . . ", +" % % ^-_*A-f*t=G*1-<*;=B-h*h=C-Y*J=x='=|=p-D-z=A=E-V=F-;-(-G-C=#=7-$=p=%=q=`=l- -.-[-H-e-n-I-J-. . . . . . . . . . . . . . . . . ", +" % % G*G*1-g*<*<*<=h*h=I*Y*Y*g-J*'=o-|=y=i=A=v-K=K-L-M->-L=N-D=C*$=O-%=F=P-O= -Q-+-R-}-y-I-J-S-. . . . . . . . . . . . . . . . ", +" % % g=g=<=h*h*%-h=C-}=Y*J*,='=|=|=y=y=z=A=E-T-V=;-(-U-V-C=W-C*S*p=Y=Z=r=O= -Q=+-m-X-Y-Z-`-S- ;. . . . . . . . . . . . . . . . ", +" % % H*T=h=h=Y*Y*w=J*3-,=.;h-+;y=@;z=A=E-w-V=#;(-(-,-C=#=D=/='-p=%=q=r=O= -.-$;R-}-s-Z-`-S-%;&;. . . . . . . . . . . . . ", +" % % % w=J=&-,=J*'='=o-|=y=D-z=z=A=--w-V=V=;-(-*;W=N-=;D=o=S*:--;Z=P-)- -Q=[-d-X-e-;;I->;,;';);. . . . . . . . . . . ", +" % % Z*'='='=!;|=+;y=i=z=~;A=--K=K-F-;-{;];,-C=#=D=R*$=p=%=j-Z=O=O=!-^;x-~-}-s-I-/;(;,;_;:;<;. . . . . . . . . ", +" % % |=|=4-[;D-i=z=/-};|;K=K-K-#;1;1;(-,-L=#=Q*C*o='-%=%=F=2;3;4;5;Q-[-R-e-6;t-z-(;7;8;:;9;0;. . . . . . . ", +" % % i=i=z=z=a;A=K=|;b;T-V=6-;-{;c;,-C=C=Q*D=C*$=p=:-8=q=9=O= -.-+-[-}-}-y-d;/;e;f;_;g;h;i;0;. . . . . ", +" % % A=v-i-K=K=K=b;V=;-j;(-(-*;,-C=k;#==;R*$=_-p=%=F=9=r=l; -^;+-~-d-m;s-n;`-J-,;8;);o;p;0;0;. . . 0;% % ", +" % % V=V=T-V=V=F-j;q;(-];,-W=C=m=#=n=C*$=8-N=%=0-Z=`=O= -r;Q-+-m-}-e-s;I-J-e;7;';);o;0;0;0;0;0;0;0;0;% % ", +" % % ;-1;M-q;(-(-*;,-,-C=m=t;#=C*/=u;E=p=%=-;F=9=P-)- -.-v;~-~-m;e-y-I-J-S- ;w;);x;0;0;0;0;0;0;0;0;0;% % ", +" % % (-U-*;,-W=G-C=m=#=#=n=C*$=$=p=p=%=-;F=a-9=O=y;.-Q-[-% % % % % % % % % % % % % % % % % % % % % 0;% % ", +" % % W=C=m=m=N-#=#=Q*X=o=$=E=p=z;%=-;2;2;P-O= -P=% % % % % % % % % % % % % % % % % % % % % % % % % ", +" % % #=#=n=C*C*$=$=6=6=p=p=%=0-F=k-9=b-O= -% % % % % % % % % % % ", +" % % $=$=$=8-p=p=p=z;%=0--;q=9=9=O=O=% % % % % % % ", +" % % p=p=z;:-%=%=j-F=k-A;9=3;O=% % % % % % % ", +" % % Y=Y=F=F=F=k-9=O=B;G=l;% % % % % % ", +" % % 9=P-9=`=O=O= - -% % % % % % ", +" % % 4;l- - - -P=% % % % % % ", +" % % C;.-.-Q-% % % % % ", +" % % $;D;% % % % % ", +" % % % % % % % ", +" % % % % % ", +" % % % ", +" E;% ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/src/Mod/Surfaces/Icons/ConvertIco.png b/src/Mod/Surfaces/Icons/ConvertIco.png new file mode 100644 index 000000000..d9fd46d22 Binary files /dev/null and b/src/Mod/Surfaces/Icons/ConvertIco.png differ diff --git a/src/Mod/Surfaces/Icons/ConvertIco.xcf b/src/Mod/Surfaces/Icons/ConvertIco.xcf new file mode 100644 index 000000000..31ce09160 Binary files /dev/null and b/src/Mod/Surfaces/Icons/ConvertIco.xcf differ diff --git a/src/Mod/Surfaces/Icons/ConvertTo4SidesIco.xpm b/src/Mod/Surfaces/Icons/ConvertTo4SidesIco.xpm new file mode 100644 index 000000000..488054321 --- /dev/null +++ b/src/Mod/Surfaces/Icons/ConvertTo4SidesIco.xpm @@ -0,0 +1,1398 @@ +/* XPM */ +static char * ConvertTo4SidesIco_xpm[] = { +"128 128 1267 2", +" c None", +". c #000000", +"+ c #00B5A2", +"@ c #00B4A0", +"# c #00B39F", +"$ c #00B19F", +"% c #00B09D", +"& c #00AF9C", +"* c #00AE9C", +"= c #00AC9A", +"- c #00AB99", +"; c #00AA98", +"> c #00BDA9", +", c #00BCA8", +"' c #00BBA6", +") c #00B9A6", +"! c #00B8A5", +"~ c #00B7A4", +"{ c #00B6A3", +"] c #00B4A2", +"^ c #00B3A0", +"/ c #00B19E", +"( c #00AD9B", +"_ c #00A997", +": c #00A796", +"< c #00A794", +"[ c #00A594", +"} c #00C2AD", +"| c #00C1AD", +"1 c #00C0AC", +"2 c #00BFAB", +"3 c #00BDAA", +"4 c #00BDA8", +"5 c #00BBA7", +"6 c #00BAA6", +"7 c #00B9A5", +"8 c #00B6A4", +"9 c #00B4A1", +"0 c #00AE9B", +"a c #00A795", +"b c #00A694", +"c c #00A493", +"d c #00C3AE", +"e c #00C3AF", +"f c #00C4AE", +"g c #00C2AE", +"h c #00C0AB", +"i c #00BEAB", +"j c #00BAA5", +"k c #00B7A3", +"l c #00B09C", +"m c #00AB9A", +"n c #00A996", +"o c #00A896", +"p c #00A593", +"q c #00A392", +"r c #00A291", +"s c #00C4AF", +"t c #00C5B0", +"u c #00BEAA", +"v c #00B5A1", +"w c #00B29E", +"x c #00B19D", +"y c #00A090", +"z c #00C3AD", +"A c #00C6B1", +"B c #00C6B0", +"C c #00C5B1", +"D c #00C5AF", +"E c #00BCA9", +"F c #00BCA7", +"G c #00B8A4", +"H c #00B3A1", +"I c #00AD9A", +"J c #00A391", +"K c #00A190", +"L c #00A08F", +"M c #00C7B2", +"N c #00C8B2", +"O c #00C6B2", +"P c #00C4B0", +"Q c #00BFAA", +"R c #00B7A5", +"S c #00AC99", +"T c #00A494", +"U c #009E8E", +"V c #00C1AC", +"W c #00C8B4", +"X c #00C9B4", +"Y c #00C9B3", +"Z c #00C8B3", +"` c #00B29F", +" . c #00AF9D", +".. c #00A290", +"+. c #00A18F", +"@. c #009F8E", +"#. c #00C7B1", +"$. c #00CAB5", +"%. c #00CBB6", +"&. c #00CBB5", +"*. c #00C9B5", +"=. c #00C7B3", +"-. c #00BBA8", +";. c #00BAA7", +">. c #00AA99", +",. c #00A895", +"'. c #009D8C", +"). c #00C0AD", +"!. c #00CCB6", +"~. c #00CAB4", +"{. c #009E8C", +"]. c #00CAB6", +"^. c #00CEB7", +"/. c #00CDB8", +"(. c #00CDB7", +"_. c #00AB98", +":. c #00A998", +"<. c #009E8D", +"[. c #009C8B", +"}. c #009A8B", +"|. c #00CFB8", +"1. c #00A695", +"2. c #00CEB8", +"3. c #00BEA9", +"4. c #00AD9C", +"5. c #00A393", +"6. c #009B8B", +"7. c #009989", +"8. c #00AB7F", +"9. c #009D8D", +"0. c #009888", +"a. c #00AA7F", +"b. c #009F8D", +"c. c #009B8A", +"d. c #009787", +"e. c #00A97E", +"f. c #00A97D", +"g. c #00B6A2", +"h. c #009A8A", +"i. c #009887", +"j. c #009686", +"k. c #00A87C", +"l. c #00A77C", +"m. c #00BF7D", +"n. c #00A67B", +"o. c #00A67A", +"p. c #00B09E", +"q. c #00A897", +"r. c #009889", +"s. c #009685", +"t. c #009484", +"u. c #00A57A", +"v. c #00BE7D", +"w. c #00BD7C", +"x. c #00A579", +"y. c #00A479", +"z. c #00A08E", +"A. c #009A89", +"B. c #009988", +"C. c #009687", +"D. c #009384", +"E. c #00BC7B", +"F. c #00B67A", +"G. c #00A378", +"H. c #00AC9B", +"I. c #009D8B", +"J. c #009585", +"K. c #009283", +"L. c #00C1AB", +"M. c #00B17A", +"N. c #00BB7A", +"O. c #00B77A", +"P. c #00A778", +"Q. c #00A277", +"R. c #00A177", +"S. c #00BBA4", +"T. c #00B5A3", +"U. c #00A292", +"V. c #00A379", +"W. c #00BA78", +"X. c #00B878", +"Y. c #00AC78", +"Z. c #00A075", +"`. c #009E74", +" + c #009C8C", +".+ c #009584", +"++ c #009383", +"@+ c #009183", +"#+ c #009081", +"$+ c #00A278", +"%+ c #00A178", +"&+ c #00B778", +"*+ c #00B978", +"=+ c #00B777", +"-+ c #00B076", +";+ c #009D73", +">+ c #009586", +",+ c #009182", +"'+ c #00A076", +")+ c #00AD76", +"!+ c #00B877", +"~+ c #00B876", +"{+ c #00B676", +"]+ c #00B576", +"^+ c #00B175", +"/+ c #00A274", +"(+ c #009C72", +"_+ c #00A17C", +":+ c #009483", +"<+ c #008F81", +"[+ c #008E7F", +"}+ c #00AC75", +"|+ c #00B776", +"1+ c #00B575", +"2+ c #00B475", +"3+ c #00B375", +"4+ c #00B174", +"5+ c #00A773", +"6+ c #009C71", +"7+ c #009A71", +"8+ c #009970", +"9+ c #009485", +"0+ c #009082", +"a+ c #008F80", +"b+ c #001C00", +"c+ c #009F75", +"d+ c #009E75", +"e+ c #009F74", +"f+ c #00AC74", +"g+ c #00B875", +"h+ c #00B675", +"i+ c #00B374", +"j+ c #00B073", +"k+ c #00AA72", +"l+ c #009C70", +"m+ c #00996F", +"n+ c #00986E", +"o+ c #008D7F", +"p+ c #008C7D", +"q+ c #005F00", +"r+ c #001E00", +"s+ c #00A573", +"t+ c #00A974", +"u+ c #00AD74", +"v+ c #00B074", +"w+ c #00B574", +"x+ c #00B774", +"y+ c #00B474", +"z+ c #00B273", +"A+ c #00B072", +"B+ c #00AF72", +"C+ c #00AE72", +"D+ c #00AB71", +"E+ c #00A06F", +"F+ c #00976E", +"G+ c #00976D", +"H+ c #00966D", +"I+ c #00AA97", +"J+ c #008D7E", +"K+ c #008B7C", +"L+ c #006D00", +"M+ c #007F00", +"N+ c #009200", +"O+ c #00A201", +"P+ c #00B302", +"Q+ c #039D0A", +"R+ c #003B00", +"S+ c #003A00", +"T+ c #00BA75", +"U+ c #00BA74", +"V+ c #00B974", +"W+ c #00B674", +"X+ c #00B573", +"Y+ c #00B373", +"Z+ c #00B272", +"`+ c #00B071", +" @ c #00AD71", +".@ c #00AB70", +"+@ c #00AA70", +"@@ c #00A36E", +"#@ c #00986D", +"$@ c #00956C", +"%@ c #009181", +"&@ c #006600", +"*@ c #007D00", +"=@ c #009500", +"-@ c #00AC00", +";@ c #00C100", +">@ c #00D201", +",@ c #00D601", +"'@ c #00D402", +")@ c #00D202", +"!@ c #00D003", +"~@ c #00CD02", +"{@ c #00CB03", +"]@ c #00BA73", +"^@ c #00B873", +"/@ c #00B773", +"(@ c #00B673", +"_@ c #00B473", +":@ c #00B372", +"<@ c #00AF71", +"[@ c #00AE70", +"}@ c #00AC6F", +"|@ c #00AA6F", +"1@ c #00A86F", +"2@ c #00A56E", +"3@ c #009B6D", +"4@ c #00946A", +"5@ c #00936A", +"6@ c #009269", +"7@ c #009F8F", +"8@ c #00998A", +"9@ c #008F7F", +"0@ c #008E7E", +"a@ c #008B7D", +"b@ c #00897A", +"c@ c #009900", +"d@ c #00B300", +"e@ c #00CE00", +"f@ c #00E100", +"g@ c #00E101", +"h@ c #00DE01", +"i@ c #00DC01", +"j@ c #00DA01", +"k@ c #00D801", +"l@ c #00D502", +"m@ c #00D302", +"n@ c #00D102", +"o@ c #00CE02", +"p@ c #003A01", +"q@ c #00B872", +"r@ c #00B772", +"s@ c #00B672", +"t@ c #00B572", +"u@ c #00B472", +"v@ c #00B271", +"w@ c #00B171", +"x@ c #00B070", +"y@ c #00AE6F", +"z@ c #00AB6F", +"A@ c #00A96F", +"B@ c #00A76E", +"C@ c #00A66E", +"D@ c #00A56D", +"E@ c #00A06C", +"F@ c #00956A", +"G@ c #009168", +"H@ c #009067", +"I@ c #008D7D", +"J@ c #008C7C", +"K@ c #008A7B", +"L@ c #00887A", +"M@ c #007100", +"N@ c #008E00", +"O@ c #00AD01", +"P@ c #00C801", +"Q@ c #00E301", +"R@ c #00E401", +"S@ c #00E500", +"T@ c #00E400", +"U@ c #00E201", +"V@ c #00E001", +"W@ c #00DB01", +"X@ c #00D902", +"Y@ c #00D702", +"Z@ c #00CF02", +"`@ c #00CD03", +" # c #02CB08", +".# c #00B871", +"+# c #00B671", +"@# c #00B471", +"## c #00B270", +"$# c #00AF70", +"%# c #00AA6E", +"&# c #00A86E", +"*# c #00A36D", +"=# c #00A36C", +"-# c #00A16B", +";# c #009B69", +"># c #009267", +",# c #008F66", +"'# c #008E66", +")# c #008B7B", +"!# c #008779", +"~# c #009C01", +"{# c #00C201", +"]# c #00D401", +"^# c #00DD01", +"/# c #00DF01", +"(# c #00E600", +"_# c #00E800", +":# c #00DC02", +"<# c #00D701", +"[# c #00CF03", +"}# c #00CC02", +"|# c #00C903", +"1# c #00B670", +"2# c #00B570", +"3# c #00B470", +"4# c #00B370", +"5# c #00B26F", +"6# c #00B16F", +"7# c #00AF6F", +"8# c #00AE6E", +"9# c #00AC6E", +"0# c #00AB6E", +"a# c #00A96E", +"b# c #00A66D", +"c# c #00A56C", +"d# c #00A36B", +"e# c #00A26A", +"f# c #00A169", +"g# c #009F69", +"h# c #009668", +"i# c #008E65", +"j# c #008C64", +"k# c #009080", +"l# c #00877A", +"m# c #008678", +"n# c #006400", +"o# c #00C301", +"p# c #00DA02", +"q# c #00E700", +"r# c #00EA00", +"s# c #00CA03", +"t# c #003900", +"u# c #00B36F", +"v# c #00B16E", +"w# c #00AF6E", +"x# c #00AD6E", +"y# c #00A96D", +"z# c #00A86D", +"A# c #00A76C", +"B# c #00A069", +"C# c #009D68", +"D# c #008D65", +"E# c #008A7A", +"F# c #008677", +"G# c #008600", +"H# c #00D802", +"I# c #00E801", +"J# c #00CC03", +"K# c #01C706", +"L# c #00B36E", +"M# c #00B06E", +"N# c #00AB6D", +"O# c #00AA6D", +"P# c #00A66B", +"Q# c #00A66C", +"R# c #00A46B", +"S# c #00A16A", +"T# c #009F68", +"U# c #009466", +"V# c #008D64", +"W# c #008B64", +"X# c #009282", +"Y# c #008477", +"Z# c #008475", +"`# c #4D0000", +" $ c #970000", +".$ c #750000", +"+$ c #520000", +"@$ c #300000", +"#$ c #0E0000", +"$$ c #00B501", +"%$ c #00D602", +"&$ c #00E200", +"*$ c #00C703", +"=$ c #00B26D", +"-$ c #00B16D", +";$ c #00AF6D", +">$ c #00AD6D", +",$ c #00AC6C", +"'$ c #00AB6C", +")$ c #00A96C", +"!$ c #00A86B", +"~$ c #00A36A", +"{$ c #00A269", +"]$ c #009F67", +"^$ c #009C67", +"/$ c #00897B", +"($ c #008578", +"_$ c #008476", +":$ c #008375", +"<$ c #A70000", +"[$ c #FF0000", +"}$ c #EA0000", +"|$ c #BE0000", +"1$ c #900000", +"2$ c #5E0000", +"3$ c #200000", +"4$ c #007700", +"5$ c #00D002", +"6$ c #00C803", +"7$ c #00B06D", +"8$ c #00AE6D", +"9$ c #00AE6C", +"0$ c #00AD6C", +"a$ c #00A96B", +"b$ c #00A76B", +"c$ c #00A56A", +"d$ c #00A369", +"e$ c #009565", +"f$ c #008B63", +"g$ c #008778", +"h$ c #008577", +"i$ c #008376", +"j$ c #008274", +"k$ c #1B0000", +"l$ c #F10000", +"m$ c #FE0000", +"n$ c #FD0000", +"o$ c #DF0000", +"p$ c #A00000", +"q$ c #640000", +"r$ c #270000", +"s$ c #00AB01", +"t$ c #00DB02", +"u$ c #00C603", +"v$ c #05BB0D", +"w$ c #003901", +"x$ c #003800", +"y$ c #00AF6C", +"z$ c #00AC6B", +"A$ c #00AB6B", +"B$ c #00AA6B", +"C$ c #00A66A", +"D$ c #00A469", +"E$ c #009E67", +"F$ c #009D66", +"G$ c #008D63", +"H$ c #008B62", +"I$ c #009786", +"J$ c #008374", +"K$ c #008172", +"L$ c #6F0000", +"M$ c #FC0000", +"N$ c #FB0000", +"O$ c #FA0000", +"P$ c #F80000", +"Q$ c #E00000", +"R$ c #A30000", +"S$ c #4C0000", +"T$ c #050000", +"U$ c #00D101", +"V$ c #00D901", +"W$ c #00C503", +"X$ c #00C303", +"Y$ c #003801", +"Z$ c #00AE6B", +"`$ c #00AD6B", +" % c #00AA6A", +".% c #00A86A", +"+% c #00A76A", +"@% c #00A669", +"#% c #00A569", +"$% c #00A268", +"%% c #00A168", +"&% c #00A067", +"*% c #009664", +"=% c #008A62", +"-% c #009788", +";% c #008173", +">% c #007F72", +",% c #040000", +"'% c #D50000", +")% c #FC0001", +"!% c #F90000", +"~% c #F90100", +"{% c #F70000", +"]% c #F60000", +"^% c #F50000", +"/% c #F40000", +"(% c #E50000", +"_% c #9A0000", +":% c #400000", +"<% c #00A401", +"[% c #00C604", +"}% c #00C404", +"|% c #00C103", +"1% c #00AC6A", +"2% c #00AB6A", +"3% c #00AB69", +"4% c #00A969", +"5% c #00A869", +"6% c #00A769", +"7% c #00A568", +"8% c #009C65", +"9% c #008F63", +"0% c #008E80", +"a% c #008174", +"b% c #490000", +"c% c #FC0100", +"d% c #F70100", +"e% c #F30100", +"f% c #F30000", +"g% c #F20000", +"h% c #F10101", +"i% c #B80000", +"j% c #420000", +"k% c #006A00", +"l% c #00CC01", +"m% c #00D501", +"n% c #00CE03", +"o% c #00C003", +"p% c #003701", +"q% c #00AA69", +"r% c #00A468", +"s% c #00A368", +"t% c #00A167", +"u% c #009D65", +"v% c #009864", +"w% c #008961", +"x% c #008679", +"y% c #008072", +"z% c #007E72", +"A% c #007D70", +"B% c #B90000", +"C% c #F50100", +"D% c #F30001", +"E% c #F30101", +"F% c #F20100", +"G% c #F10100", +"H% c #EF0000", +"I% c #EE0000", +"J% c #ED0101", +"K% c #440000", +"L% c #00A101", +"M% c #00C902", +"N% c #00C403", +"O% c #00C104", +"P% c #00BF04", +"Q% c #03BD0A", +"R% c #003601", +"S% c #00A968", +"T% c #00A868", +"U% c #00A768", +"V% c #00A668", +"W% c #00A266", +"X% c #009E66", +"Y% c #009B64", +"Z% c #009063", +"`% c #008273", +" & c #007E71", +".& c #007D6F", +"+& c #280000", +"@& c #F70001", +"#& c #F60100", +"$& c #F40101", +"%& c #F00100", +"&& c #EE0100", +"*& c #ED0100", +"=& c #ED0000", +"-& c #EB0100", +";& c #450000", +">& c #00C204", +",& c #00BF03", +"'& c #00BE03", +")& c #00BB04", +"!& c #00A667", +"~& c #00A567", +"{& c #00A467", +"]& c #00A367", +"^& c #00A066", +"/& c #00A166", +"(& c #009E65", +"_& c #009B63", +":& c #009A63", +"<& c #008A61", +"[& c #008861", +"}& c #008879", +"|& c #008275", +"1& c #008073", +"2& c #007B6F", +"3& c #9B0000", +"4& c #F90001", +"5& c #F40100", +"6& c #F20001", +"7& c #F00001", +"8& c #EF0100", +"9& c #ED0001", +"0& c #EC0001", +"a& c #EB0001", +"b& c #EA0101", +"c& c #E90001", +"d& c #E80001", +"e& c #460000", +"f& c #00A801", +"g& c #00C203", +"h& c #00C004", +"i& c #00BE04", +"j& c #00BC04", +"k& c #00BA05", +"l& c #003501", +"m& c #00A466", +"n& c #00A366", +"o& c #009F65", +"p& c #009C64", +"q& c #009462", +"r& c #008960", +"s& c #008760", +"t& c #007C6F", +"u& c #007B6D", +"v& c #007A6C", +"w& c #150000", +"x& c #F60101", +"y& c #F40001", +"z& c #F00000", +"A& c #EF0101", +"B& c #EC0000", +"C& c #EA0100", +"D& c #E90100", +"E& c #E70001", +"F& c #E70101", +"G& c #E40100", +"H& c #AB0000", +"I& c #007A00", +"J& c #00CB02", +"K& c #00CA02", +"L& c #00C802", +"M& c #00C304", +"N& c #00BA04", +"O& c #00B805", +"P& c #00A465", +"Q& c #00A365", +"R& c #00A165", +"S& c #00A065", +"T& c #009A64", +"U& c #009D64", +"V& c #008D61", +"W& c #008576", +"X& c #007D71", +"Y& c #007C70", +"Z& c #007B6E", +"`& c #007A6D", +" * c #00796C", +".* c #010000", +"+* c #7D0000", +"@* c #EB0000", +"#* c #E80100", +"$* c #E70000", +"%* c #E70100", +"&* c #E60100", +"** c #E40101", +"=* c #E30100", +"-* c #E30101", +";* c #DD0000", +">* c #770000", +",* c #00B801", +"'* c #00BD04", +")* c #00B904", +"!* c #00B604", +"~* c #03B60B", +"{* c #003401", +"]* c #009C63", +"^* c #009363", +"/* c #008962", +"(* c #009963", +"_* c #009962", +":* c #009762", +"<* c #00875F", +"[* c #00786B", +"}* c #0C0000", +"|* c #E30000", +"1* c #EE0001", +"2* c #EC0100", +"3* c #E80101", +"4* c #E60000", +"5* c #E40000", +"6* c #E20101", +"7* c #E10101", +"8* c #E00001", +"9* c #E00101", +"0* c #AC0000", +"a* c #1A0000", +"b* c #008F01", +"c* c #00B705", +"d* c #00B505", +"e* c #00B305", +"f* c #003001", +"g* c #002100", +"h* c #009B88", +"i* c #009A62", +"j* c #009862", +"k* c #009861", +"l* c #009060", +"m* c #00855E", +"n* c #00776A", +"o* c #00766A", +"p* c #630000", +"q* c #EC0101", +"r* c #EA0001", +"s* c #E90000", +"t* c #E80000", +"u* c #E60101", +"v* c #E50100", +"w* c #E10000", +"x* c #DF0100", +"y* c #DE0001", +"z* c #D00000", +"A* c #006800", +"B* c #00B704", +"C* c #00B504", +"D* c #00B204", +"E* c #008C02", +"F* c #008860", +"G* c #009361", +"H* c #009961", +"I* c #009761", +"J* c #009760", +"K* c #00895F", +"L* c #008C7E", +"M* c #007F71", +"N* c #00786C", +"O* c #007669", +"P* c #D40000", +"Q* c #EF0001", +"R* c #E20000", +"S* c #E10001", +"T* c #DE0101", +"U* c #DD0100", +"V* c #DD0101", +"W* c #DC0001", +"X* c #D90000", +"Y* c #740000", +"Z* c #00A102", +"`* c #00A903", +" = c #007401", +".= c #00945F", +"+= c #00845D", +"@= c #00845C", +"#= c #007E70", +"$= c #00786A", +"%= c #00756A", +"&= c #007568", +"*= c #590000", +"== c #E10100", +"-= c #DF0101", +";= c #DB0101", +">= c #DA0101", +",= c #D90101", +"'= c #930000", +")= c #007A01", +"!= c #00B804", +"~= c #00B605", +"{= c #009C03", +"]= c #006300", +"^= c #00865E", +"/= c #008D5F", +"(= c #009660", +"_= c #009560", +":= c #00955F", +"<= c #008E5E", +"[= c #009280", +"}= c #007A6E", +"|= c #00796B", +"1= c #007469", +"2= c #007468", +"3= c #020000", +"4= c #CD0000", +"5= c #E90101", +"6= c #E50001", +"7= c #E20100", +"8= c #D80000", +"9= c #D70001", +"0= c #BD0000", +"a= c #2E0000", +"b= c #00B103", +"c= c #00B405", +"d= c #009803", +"e= c #006100", +"f= c #00895D", +"g= c #00955E", +"h= c #00875C", +"i= c #00825B", +"j= c #007569", +"k= c #007467", +"l= c #007367", +"m= c #007165", +"n= c #5C0000", +"o= c #E50101", +"p= c #DC0101", +"q= c #D80100", +"r= c #D60100", +"s= c #D50101", +"t= c #CC0000", +"u= c #4B0000", +"v= c #009002", +"w= c #00B404", +"x= c #009702", +"y= c #006000", +"z= c #00945E", +"A= c #00915D", +"B= c #007166", +"C= c #030000", +"D= c #CF0000", +"E= c #E30001", +"F= c #DE0100", +"G= c #DB0100", +"H= c #D90100", +"I= c #D80101", +"J= c #D70101", +"K= c #D60101", +"L= c #D50001", +"M= c #D40100", +"N= c #D30101", +"O= c #D10000", +"P= c #007101", +"Q= c #00B205", +"R= c #009903", +"S= c #00835B", +"T= c #00845B", +"U= c #00935E", +"V= c #00935D", +"W= c #008B5C", +"X= c #00815A", +"Y= c #00776B", +"Z= c #007266", +"`= c #006F64", +" - c #5B0000", +".- c #DD0001", +"+- c #DA0001", +"@- c #D80001", +"#- c #D40101", +"$- c #D30001", +"%- c #D20001", +"&- c #D10100", +"*- c #D00101", +"=- c #00A904", +"-- c #00B105", +";- c #009F04", +">- c #00925D", +",- c #00935C", +"'- c #00845A", +")- c #008059", +"!- c #007064", +"~- c #006E63", +"{- c #000303", +"]- c #D20000", +"^- c #EB0101", +"/- c #E20001", +"(- c #DC0100", +"_- c #DA0100", +":- c #D90001", +"<- c #D20101", +"[- c #D10101", +"}- c #CF0100", +"|- c #CE0000", +"1- c #000200", +"2- c #009102", +"3- c #00B005", +"4- c #00AF05", +"5- c #00A105", +"6- c #006500", +"7- c #008F7E", +"8- c #008F5B", +"9- c #007F59", +"0- c #007164", +"a- c #007063", +"b- c #006E62", +"c- c #006D61", +"d- c #6A0000", +"e- c #E40001", +"f- c #D70100", +"g- c #D30100", +"h- c #D20100", +"i- c #CF0101", +"j- c #CD0101", +"k- c #C80000", +"l- c #3B0000", +"m- c #007B01", +"n- c #00AE05", +"o- c #00AD05", +"p- c #00A604", +"q- c #008D5A", +"r- c #008859", +"s- c #007F58", +"t- c #007366", +"u- c #007265", +"v- c #D40001", +"w- c #CE0101", +"x- c #CC0101", +"y- c #C20000", +"z- c #2D0000", +"A- c #00AC05", +"B- c #00AC06", +"C- c #00AB06", +"D- c #00A905", +"E- c #007201", +"F- c #008A58", +"G- c #008258", +"H- c #007D57", +"I- c #00796D", +"J- c #007368", +"K- c #006F62", +"L- c #870000", +"M- c #E60001", +"N- c #DA0000", +"O- c #CB0101", +"P- c #CA0101", +"Q- c #009E05", +"R- c #00AA06", +"S- c #00A906", +"T- c #00A806", +"U- c #007D02", +"V- c #008758", +"W- c #007D56", +"X- c #006F63", +"Y- c #1D0000", +"Z- c #DF0001", +"`- c #C90101", +" ; c #C70101", +".; c #B70000", +"+; c #008903", +"@; c #00A705", +"#; c #00A706", +"$; c #008503", +"%; c #008456", +"&; c #007D55", +"*; c #008977", +"=; c #007267", +"-; c #006D62", +";; c #E00100", +">; c #DE0000", +",; c #D70000", +"'; c #C80101", +"); c #C50201", +"!; c #007602", +"~; c #00A506", +"{; c #00A406", +"]; c #009104", +"^; c #007C55", +"/; c #008156", +"(; c #007B55", +"_; c #007C6E", +":; c #380000", +"<; c #C70102", +"[; c #C50101", +"}; c #006700", +"|; c #00A206", +"1; c #009605", +"2; c #006200", +"3; c #007A54", +"4; c #007B54", +"5; c #B20000", +"6; c #C60101", +"7; c #C40101", +"8; c #009B06", +"9; c #009906", +"0; c #007A53", +"a; c #007953", +"b; c #007065", +"c; c #4E0000", +"d; c #D00100", +"e; c #C80201", +"f; c #C60201", +"g; c #C30101", +"h; c #BE0301", +"i; c #009005", +"j; c #006C01", +"k; c #007852", +"l; c #CA0000", +"m; c #DB0001", +"n; c #CF0001", +"o; c #C30201", +"p; c #C20101", +"q; c #C20102", +"r; c #006E01", +"s; c #670000", +"t; c #DB0000", +"u; c #D60001", +"v; c #D10001", +"w; c #C10102", +"x; c #C00102", +"y; c #8F0101", +"z; c #007650", +"A; c #0F0000", +"B; c #CA0102", +"C; c #C40201", +"D; c #C10101", +"E; c #C00201", +"F; c #BC0201", +"G; c #BB0101", +"H; c #540000", +"I; c #8C0000", +"J; c #BF0101", +"K; c #BE0102", +"L; c #BC0101", +"M; c #BB0202", +"N; c #BA0101", +"O; c #B60000", +"P; c #2A0000", +"Q; c #330000", +"R; c #C00101", +"S; c #BD0201", +"T; c #BC0102", +"U; c #BB0201", +"V; c #B90202", +"W; c #B80102", +"X; c #9E0001", +"Y; c #090000", +"Z; c #C80102", +"`; c #C20202", +" > c #BF0102", +".> c #BE0201", +"+> c #BD0101", +"@> c #BC0202", +"#> c #BB0102", +"$> c #BA0201", +"%> c #B90102", +"&> c #B70101", +"*> c #750101", +"=> c #BE0101", +"-> c #B70102", +";> c #B60102", +">> c #B40102", +",> c #3F0000", +"'> c #160000", +")> c #C20201", +"!> c #BF0201", +"~> c #BD0202", +"{> c #B80101", +"]> c #B70202", +"^> c #B60201", +"/> c #B50201", +"(> c #B30201", +"_> c #A50001", +":> c #100000", +"<> c #960000", +"[> c #C60102", +"}> c #C10201", +"|> c #BD0102", +"1> c #B70201", +"2> c #B30101", +"3> c #B20201", +"4> c #7A0001", +"5> c #B80202", +"6> c #B60101", +"7> c #B50101", +"8> c #B40202", +"9> c #B10201", +"0> c #B10102", +"a> c #AF0102", +"b> c #360000", +"c> c #140000", +"d> c #B90101", +"e> c #B90201", +"f> c #B40201", +"g> c #B30102", +"h> c #B20102", +"i> c #B10101", +"j> c #B00101", +"k> c #AE0201", +"l> c #9C0101", +"m> c #0A0000", +"n> c #A40000", +"o> c #C30102", +"p> c #B80201", +"q> c #B50102", +"r> c #B00102", +"s> c #AF0202", +"t> c #AE0202", +"u> c #AD0102", +"v> c #6B0001", +"w> c #660000", +"x> c #BA0202", +"y> c #B20202", +"z> c #B10202", +"A> c #B00201", +"B> c #AE0102", +"C> c #AC0201", +"D> c #AA0001", +"E> c #2B0000", +"F> c #B50202", +"G> c #AD0202", +"H> c #AC0101", +"I> c #AA0202", +"J> c #940100", +"K> c #070000", +"L> c #BA0000", +"M> c #C70201", +"N> c #C00202", +"O> c #B00202", +"P> c #AB0202", +"Q> c #AA0101", +"R> c #A80102", +"S> c #5D0101", +"T> c #7B0000", +"U> c #AC0102", +"V> c #AA0102", +"W> c #A90202", +"X> c #A70102", +"Y> c #A40101", +"Z> c #260000", +"`> c #B30202", +" , c #B20101", +"., c #AF0201", +"+, c #A80201", +"@, c #A70201", +"#, c #A70101", +"$, c #A60202", +"%, c #850101", +"&, c #C90000", +"*, c #AD0201", +"=, c #AB0201", +"-, c #A90102", +";, c #A70202", +">, c #A60101", +",, c #A50201", +"', c #A40201", +"), c #510000", +"!, c #A10000", +"~, c #B60202", +"{, c #AC0202", +"], c #A50102", +"^, c #A30102", +"/, c #9C0100", +"(, c #170000", +"_, c #720000", +":, c #A30202", +"<, c #A20202", +"[, c #A10202", +"}, c #740101", +"|, c #C90102", +"1, c #BF0202", +"2, c #BE0202", +"3, c #AE0101", +"4, c #AB0101", +"5, c #A90101", +"6, c #A40102", +"7, c #A30201", +"8, c #A10102", +"9, c #A00202", +"0, c #9F0202", +"a, c #390000", +"b, c #B10001", +"c, c #9D0100", +"d, c #880100", +"e, c #5E0101", +"f, c #4A0000", +"g, c #350000", +"h, c #240000", +"i, c #220000", +"j, c #1C0000", +"k, c #630101", +"l, c #790101", +"m, c #9F0102", +"n, c #8E0100", +"o, c #080000", +"p, c #C60001", +"q, c #C40202", +"r, c #B70100", +"s, c #6C0001", +"t, c #430000", +"u, c #290000", +"v, c #130000", +"w, c #060000", +"x, c #5C0101", +"y, c #AF0100", +"z, c #8F0000", +"A, c #2F0000", +"B, c #980001", +"C, c #660101", +"D, c #B50000", +"E, c #3C0000", +"F, c #3A0000", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . + @ # $ % & * = - ; . . . . . . ", +" . . . . . . . . . . > > , ' ) ! ~ { ] ^ # / % & ( = - _ : < [ . . . . ", +" . . . . . . . . } | | 1 1 2 3 4 5 6 7 ! 8 { 9 ^ / / & 0 = - _ _ a b c . . . . ", +" . . . . . . d d e f d g | | | h i 3 , 5 j 7 ! k + 9 ^ / l * ( m ; n o b p q r . . . ", +" . . . . . g f s s t t t s s d g | | 2 u u , 6 j ! 8 { v ^ w x & ( = - _ o < [ q r y . . . ", +" . . . . } z s t t A A A A B C D s } } 1 2 u E F 6 ! G k + H $ % & * I - ; n < [ c J K L . . . ", +" . . . . 1 } z d D B A M M N M M O B P s } | 1 Q > , 5 ) R k + @ ^ / % * ( S ; n a [ T J r L U . . ", +" . . . u 2 V } e s A M N W X X Y X Z O C D d } | h u > 5 j 7 ~ + 9 # ` .& ( S ; _ a b T q ..+.@.. . . ", +" . . . . Q 1 } d s B #.Z X $.%.%.&.*.X =.#.t s g | 1 u > -.;.! R { ] ^ w % & * = >._ ,.b [ q K +.@.'.. . . ", +" . . . . ).} e D A =.Y $.%.!.!.!.%.~.Z M A s z } 1 u > , ' 7 ! { v @ ` % & ( = ; _ : b c q r L U {.'.. . ", +" . . . } s t A Z X ].!.^./.(.%.$.X N A s d } 1 2 u , ' 7 ! { 9 ^ ` / & ( ( _.:.o b [ q r K @.<.[.}.. . ", +" . . } f t #.Z ~.].!./.|.(.!.$.X =.A t d } 1 2 > , 6 7 ! 8 + H w / * * = - :.,.1.[ q r +.@.{.[.}.. . . ", +" . . . f t A Z *.%.!.(.2.(.!.&.W Z A t d | V 2 3.F 6 7 G k v H ` x & 4.= ; _ o b [ 5...K @.<.[.6.7.. . ", +" . . . P B Z Y ~.%.8.&.!.%.$.Z M A P d } 1 i > -.6 7 ! { 9 @ ` % & ( S - _ : b p q r +.@.9.[.}.7.0.. . ", +" . . . C M Z X $.a.a.a.$.X Z #.t s d | 1 Q > 5 6 7 G { 9 ^ w % * ( m - _ a b T q r +.b.{.[.c.7.d.. . . ", +" . . D A O N W X e.e.f.N M t s d } 1 2 u > -.6 7 ~ g.9 ^ / % & ( m >._ o [ c q K L b.'.6.h.7.i.j.. . ", +" . . . t A #.Z Z k.f.k.l.B P d z | 1 Q 3 , 5 j ! ~ + H ^ / l * I S ; _ a [ T q K L b.'.6.h.7.d.j.. . . ", +" . . s t t C A l.k.m.n.o.z z | 1 h u > -.6 7 G { + ^ ` p.l * = >.:.q.a [ c q K @.<.'.6.h.r.d.s.t.. . ", +" . . . e s s t t u.v.w.u.x.y.).h i > , ' 7 ! k g.9 ^ $ % & 4.= ; _ ,.< [ c r y z.<.[.6.A.B.C.j.D.. . . ", +" . . } g d d e u.u.E.F.x.G.G.Q 3 , 5 6 7 R k + H # / % * H.= >._ : b T q r K @.'.I.c.7.0.C.J.D.K.. . ", +" . . | } | } L.y.M.N.O.P.Q.R.S.F 6 7 ! k T.9 ^ ` % & * H.- ; o < b p U...y b.{.[.h.7.d.C.J.t.K.. . . ", +" . . 1 1 V 1 | V.P.N.W.X.Y.Z.Z.`.7 ! ~ { ] ^ # / % * ( = ; _ : a [ c r K L <. +6.h.7.d.j..+++@+#+. . ", +" . . . 2 2 2 2 $+%+&+*+X.=+-+Z.`.;+~ { + 9 ^ $ x & * = - ; o a b T q r y @.<.I.6.h.r.d.>+t.K.,+#+. . . ", +" . . u u u u 4 '+)+!+~+{+]+^+/+;+(+_+v ^ ` x .* ( = ; _ o < b c U.K L b.'.[.h.7.0.j.J.:+K.,+<+[+. . ", +" . . . , , , , Z.}+~+|+1+2+3+4+5+6+7+8+# / % & ( = - ; o ,.b [ q U.K @.<.'.6.h.B.i.j.9+++K.0+a+[+. . ", +" b+b+c+`.c+d+e+f+g+h+1+i+i+4+j+k+l+m+n+& & * I - >._ o a [ c q ..L b.{.I.6.7.0.d.>+t.++,+#+[+o+p+. . ", +" q+q+q+q+q+q+b+r+s+t+u+v+w+x+h+w+y+i+z+A+B+C+D+E+F+G+H+( = - I+o a b p q U.K L <.I.[.6.7.i.j.J.:+K.,+#+[+J+K+. . ", +" q+q+q+q+q+q+q+L+M+N+O+P+Q+R+S+T+U+V+g+x+W+X+Y+z+Z+`+C+ @.@+@@@#@$@$@; :.n a a [ q r ..L @.<.I.6.h.B.d.s.t.++,+%@a+[+J+K+. . . ", +" q+q+q+q+q+q+&@*@=@-@;@>@,@'@)@!@~@{@R+R+]@^@^@/@(@X+_@:@Z+`+<@[@}@+@|@1@2@3@4@5@6@,.b b p q r K 7@b.'.6.}.8@0.j.J.t.++,+#+9@0@a@K+b@. . ", +" q+q+q+q+q+&@M+c@d@e@f@g@g@h@i@j@k@l@m@n@o@{@R+R+p@q@r@s@t@u@:@v@w@x@[@y@}@z@A@B@C@D@E@F@6@G@H@T q r K z.U '.I.6.7.7.d.j.t.D.K.#+a+[+I@J@K@L@. . ", +" q+q+q+q+M@N@O@P@i@h@g@Q@R@S@T@U@V@h@W@X@Y@'@n@Z@`@ #R+S+.#+#t@@#@###w@x@$#y@}@z@%#&#B@D@*#=#-#;#>#H@,#'#K L @.<. +6.h.B.d.j.J.++++,+#+[+o+p+)#b@L@!#. . ", +" q+q+~#{#)@]#k@X@^#/#U@R@(#_#(#R@g@/#:#j@<#'@)@[#}#|#R+S+1#2#3#4###5#6#7#8#9#0#%#a#B@b#c#d#d#e#f#g#h#,#i#j#@.<.'.[.6.8@0.d.j.t.D.K.0+k#[+p+K+K@b@l#m#. . ", +" . . . . . . . . . . q+n#o#)@l@<#p#i@V@U@R@q#r#q#S@U@V@i@j@<#'@)@Z@`@s#R+S+t#3#u#5#5#v#w#8#x#0#0#y#z#A#c#=#d#e#f#f#B#C#i#D#L b.<.'.6.8@0.i.C.9+D.K.@+<+9@[+p+K@E#L@!#F#. . . ", +" . . . . . . . . . . . . . . . q+q+G#)@'@H#j@^#/#g@R@q#I#(#T@g@/#^#j@Y@'@)@Z@J#s#K#p@t#L#L#v#M#w#w#x#9#N#O#y#P#Q#R#d#f#S#f#B#T#U#V#W#U {.[.[.c.7.0.C.>+.+++X#,+a+o+I@J@K@b@!#m#Y#Z#. . ", +" . . `# $.$+$@$#$. . . . . . . . . . q+q+$$'@%$X@:#h@V@&$T@S@R@U@g@h@i@X@Y@'@)@[#}#s#*$S+t#=$v#-$w#;$>$,$'$O#)$!$P#R#~${$f#B#B#]$^$V#j#<.{.I.6.h.7.0.d.s.J.:+K.,+k#[+J+p+K+/$L@!#($_$:$. . ", +" . . . <$[$[$[$[$}$|$1$2$3$. . . . . . . . q+4$>@l@H#j@i@/#V@U@U@g@V@/#^#W@H#%$m@5$o@J#6$*$S+t#-$7$;$8$9$0$N#)$a$!$b$c$d$d$f#B#T#]$]$e$W#f${. +[.h.8@0.d.j.J.t.++K.#+a+[+J+K+K@b@l#g$h$i$j$. . . ", +" . . k$l$[$[$[$[$[$[$m$n$o$p$q$r$. . . . . . . q+q+s$l@%$X@t$^#h@/#/#/#h@^#W@X@<#l@)@5$`@{@6$u$v$w$x$y$9$0$z$A$B$a$!$C$C$D$d$f#B#T#]$E$F$G$H$<.'.6.6.8@0.0.I$>+t.++@+,+a+[+J+a@K@b@L@!#F#_$J$j$K$. . ", +" . . . L$[$[$[$[$[$m$n$M$N$O$O$P$Q$R$S$T$. . . . . q+M@U$l@Y@V$t$i@i@i@:#i@W@V$<#l@m@n@Z@}#s#*$W$X$w$Y$Z$`$z$A$ %.%.%+%@%#%d$$%%%&%]$E$F$*%H$=%[.6.}.h.0.-%I$J.t.++K.,+#+a+o+p+K+K@b@l#m#h$:$j$;%>%. . ", +" . . ,%'%[$[$[$[$n$n$)%N$!%~%{%]%^%/%(%_%:%. . . . . q+q+<%m@l@%$V$X@j@j@V$X@X@Y@l@'@n@Z@`@s#|#[%}%|%Y$Y$1%2%3%4%4%5%6%#%7%d$$%%%&%E$E$F$8%9%=%'.[.h.7.B.i.I$>+t.++++@+#+0%[+I@K+K@b@l#g$h$_$:$a%K$>%. . . ", +" . . b%[$[$[$m$n$c%N$!%P$P$d%^%/%e%f%g%h%i%j%. . . . . q+k%l%m@l@l@Y@Y@H#Y@Y@m%'@m@n@5$n%J#|#*$W$X$o%Y$p%p%q%q%4%6%6%#%r%s%$%t%&%E$F$u%8%v%=%w%6.c.7.7.d.j.s.9+++K.X#%@a+[+J+a@K@E#L@x%m#Y#i$j$K$y%z%A%. . ", +" . . . B%[$m$n$M$O$O$!%P$d%]%C%D%E%F%G%H%I%J%i%K%. . . . . q+q+L%n@)@m@'@l@m%l@'@m@)@n@[#o@J#M%6$u$N%O%P%Q%p%R%S%T%U%V%7%r%r%W%t%&%X%F$8%8%Y%Z%w%6.h.A.B.d.C.>+.+++++,+#+a+[+J+K+K@b@L@!#m#h$_$J$`%y%>% &.&. . ", +" . . +&O$m$M$N$O$!%P$@&#&^%$&f%g%l$%&&&*&=&-&}$i%;&. . . . . q+L+l%5$n@n@n@)@n@)@5$5$Z@~@}#s#6$u$}%>&,&'&)&p%R%T%!&~&~&{&]&W%^&/&X%(&u%8%_&:&<&[&h.7.0.d.j.s..+D.K.,+,+#+9@J+p+K+K@b@}&m#h$_$|&j$1&>% &A%2&. . . ", +" . . . 3&n$M$O$4&P${%]%^%5&f%6&7&%&8&I%9&0&a&b&c&d&i%e&. . . . q+q+f&~@n%[#[#!@Z@[#n%`@}#{@M%*$u$}%g&h&i&j&k&R%l&!&~&m&n&n&W%/&o&o&u%p&Y%:&:&q&r&s&7.0.d.j.J.t.++K.@+,+<+[+J+p+K+K@b@l#!#($_$Z#j$K$>% &A%t&u&v&. . ", +" . . w&=&O$!%!%{%x&^%y&E%D%G%z&A&I%*&B&C&D&d&E&F&(%G&H&3$. . . . q+I&J&J#`@`@J#`@~@J#K&|#L&*$W$}%M&h&i&j&N&O&R%l&l&P&Q&R&S&p&T&T&U&p&Y%:&:&:&V&s&0.d.C.s.J.t.++++,+%@k#0%J+p+K+K@b@L@!#($W&i$j$`%y%z%X&Y&Z&`& *. . ", +" .*. . +*!%P$d%]%C%5&e%D%h%%&H%&&=&B&@*b&#*$*%*&***=*-*;*>*T$. . . q+q+,*|#M%K&s#s#s#|#6$6$u$N%N%>&o%P%'*)&)*!*~*l&{*]*^*H$H$H$=%/*:&_&:&(*_*:*<*<*C.j.>+J.D.++X#,+#+a+[+0@I@K+K@E#L@!#m#h$_$:$`%y%>% &.&t&u& *[*. . ", +" . . }*|*{%d%]%^%f%g%h%%&H%1*=&2*@*C&D&3*F&4*(%5*6*7*8*9*0*a*. . . q+b*u$*$*$*$*$*$*$W$N%}%g&|%h&'&'*)&)*c*d*e*f*g*=%=%=%h*[.6.w%:*i*_*j*k*l*<*m*j.9+.+:+K.K.,+<+a+[+J+p+K+)#b@L@!#m#h$_$:$a%1&y%z%A%t&Z& * *n*o*. . ", +" . . p*{%#&^%/%g%G%l$z&&&1*q*a&r*s*t*F&u*v*|*|*6*w*x*y*;*z*;&. . . q+A*g&}%N%}%N%}%N%M&>&>&o%'&i&j&)&)*B*C*D*E*b+b+w%[.[.6.}.}.F*G*H*k*I*J*K*m*>+t.:+++++X##+k#9@[+J+L*K+K@b@b@!#m#h$_$:$a%;%>%M*X&t&Z&`&N*[*o*O*. . ", +" . . ,%P*5&f%D%F%7&Q*1*1*q*B&r*}$3*3*E&v*G&=*R*S*9*T*U*V*W*X*Y*.*. . . q+q+Z*>&>&>&>&O%O%O%h&P%i&'*)&N&)*c*C*`* =q+b+b+h.h.h.h.7.B.<*l*I*J*I*.=+=@=:+:+++@+,+#+k#9@o+J+p+K+K@/$L@!#m#h$_$:$j$;%y% &#=t&Z&u& *$=n*%=&=. . ", +" . . *=/%f%6&z&7&1*I%=&2*}$c&d&%*4*(%v*=*-*==Q$-=T*V*W*;=>=,='=}*. . . q+)=,&P%,&,&P%P%i&'*j&)&N&!=B*~=d*{=]=q+q+. . . 7.0.0.i.-%^=/=(=_=:=<=@=[=++K.,+,+#+a+[+J+L*p+K+K@b@L@!#m#h$_$:$j$;%y%>% &.&t&}= *|=n*%=1=2=. . . ", +" . . 3=4=g%l$%&H%I%=&@*b&c&5=t*$*4*6==*7=7*9*x*T*V*U*;=>=,=8=9=0=a=. . . q+q+b='*j&'*'*j&)&N&N&)*!=B*~=c=d=e=q+q+ . . d.d.I$d.j.m*f=:=g=g=h=i=K.X##+#+a+a+J+J+I@K+K+K@L@L@!#m#h$_$:$j$1&y%>% &.&2&`& *N*n*o*j=k=l=m=. . ", +" . . n=l$z&8&1*=&B&a&}$s*3*&*o=o==*7=w*9*o$y*y*p=;=>=,=q=9=r=s=t=u=. . . q+v=N&N&N&)*)*O&!=!=!*d*w=e*x=y=q+q+ . . j.>+s.J..+@=h=z=z=A=i=i=0+#+<+9@[+J+L*a@K+K@b@L@l#!#m#h$_$:$a%;%y%>% &Y&Z&Z&`& *n*o*%=2=l=B=m=. . ", +" . . C=D=H%I%J%B&@*C&c&%*$*(%(%E=-*6*S*9*x*F=W*;=G=H=I=J=K=L=M=N=O=n=. . . q+P=c*!=B*B*~=!*!*w=c=e*Q=R=y=q+ . . t.t.:+:+++S=T=U=V=W=X=9@k#a+[+J+J+p+K+K@K@b@L@}&m#m#_$Z#|&j$;%y%>% &A%t&Z&`& *Y=n*j=2=l=Z=m=`=. . ", +" . . -H%=&9&@*@*D&#*F&&*(%=*-*7=w*-=-=F=.-;=+-,=@-@-K=L=#-$-%-&-*-2$. . q+q+=-c=c=c=c=e*e*Q=----;-]=q+y= . . ++++K.K.K.i=i=>-,-'-)-0%[+J+J+p+p+K+K@b@L@L@!#m#($Y#_$j$j$K$y%z%X&.&t&Z&v& *$=o*j=1=k=Z=m=!-~-. . {- ", +" . . ,%]-0&-&^-r*D&d&&*(%G&|*/-==x*x*T*V*(-;=_-:-I=J=L=L=$-N=<-[-}-|-S$. 1-q+2-Q=Q=Q=------3-4-5-6-q+q+ . . @+,+,+,+#+7-X=8-8-9-9-o+I@p+J@K+K@b@L@L@l#m#m#h$_$:$|&a%y%y%>% &.&t&Z&`&|=Y=n*%=1=k=Z=m=0-a-b-c-. . ", +" . . d-^-a&C&3*$*&*(%v*e-R*==Q$-=T*V*(-;=_-H=8=f-'%s=N=g-h-*-*-i-j-k-l-. q+m-4-3-4-4-n-n-o-p-k%q+q+ . . . #+<+a+0%a+9-q-r-s-K+a@K+K+K@E#L@L@L@!#m#F#W&Z#:$|&`%K$y%M*X&A%t&Z&v& *[*o*o*j=2=t-u-!-!-b-c-c-. . ", +" . . }*;*}$s*3*$*4*G&G&-*S*7*-=T*V*W*G=+-,=I=J=K=v-N=N=[-*-*-i-w-j-x-y-z-q+&@A-o-B-A-A-C-D-E-q+q+ . . a+[+[+[+0@s-F-G-H-K+)#K@E#b@L@l#!#g$($h$_$:$|&j$;%y%>% &X&t&t&u&I-N*[*n*%=2=J-l=u-m=`=K-c-c-c-. . ", +" . . L-s*d&%*M-v*=*R*R*7*9*y*V*p=;=N-X*I=f-K=s=M=g-<-[-*-i-j-x-x-O-P-0=q+q+Q-R-R-S-S-T-U-q+q+ . . J+J+L*p+a@H-V-W-W-E#b@L@L@l#g$g$m#h$_$:$J$j$`%y%>%>% &A%Y&2&`&`& *Y=o*o*1=k=l=B=0-`=X-c-c-c-c-. . ", +" . . Y-5*%*4*o=5*|*7*w*-=Z-V*V*G=>=_-@-J=K=s=#-N=<-&-*-i-w-j-O-O-P-`- ;.;q++;@;#;@;#;$;q+q+ . . K+K+K+K+K+W-%;&;*;L@L@!#!#g$F#h$_$_$J$|&j$;%y%y%z% &A%t&Z&`& * *n*n*j=&=J-=;u-m=a-~--;c-c-c-c-. . ", +" . . . p$&*6=G&=*7*7*;;x*>;(-;=>=+-q=f-,;s=M=$-<-[-*-i-w-j-x-O-P-`-'; ;);q+!;~;~;{;];y=q+ . . K@K@/$b@b@^;/;(;!#x%m#m#F#h$_$i$:$:$j$;%1&y%>% &A%.&_;Z&I- *[*[*o*%=2=k=l=u-0-!-b-b-c-c-c-c-c-c-. . ", +" . . :;v*G&-*R*S*;;T*F=(-(->=,=q=J=J=L=s=#-$-[-*-i-w-j-x-O-P-`-';<;);[;q+};|;|;1;2;q+ . . L@L@L@L@L@(;3;4;m#($h$W&_$_$:$J$j$;%;%>%>%M*X&Y&t&Z&Z&`& *$=n*o*O*2=l==;B=!-!-b-c-c-c-c-c-c-c-c-. . ", +" . . . 5;=*|*7*9*-=T*V*p=G=H=:-@-J=K=M=N=N=[-*-i-w-j-x-O-P-`-';<;6;[;7;q+q+8;9;};q+q+ . . !#g$m#!#m#3;0;a;h$_$_$:$:$j$a%;%1&y%>%M* &A%A%t&Z&`&I-[*[*o*o*j=2=l=Z=m=b;!-K-c-c-c-c-c-c-c-c-c-. . ", +" . . c;6*S*;;-=F=V*p=;=>=,=f-J=K=s=#-N=%-[-d;i-w-x-O-P-P-e;';f;[;7;g;h;q+i;j;q+q+. . . m#($F#h$W&a;k;_$:$:$J$j$;%;%y%y%>%M* &X&A%t&_;`&`& *. . . . . . . . . . . . . . . . . . . . . c-. . ", +" . . T$l;8*x*y*.-p=m;>=,=I=f-K=v-M=N=[-*-*-n;w-j-x-O-`-';'; ;6;7;o;p;q;q+r;q+q+. . . . W&_$_$_$Z#k;k;J$`%`%;%1&y%>%>%M*A%A%A%t&Z&u&. . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . s;8*T*U*V*t;>=,=H=J=u;s=M=g-<-v;*-}-w-j-x-O-`-`-';6;6;[;g;p;w;x;q+q+q+y;3=. . . . :$:$J$j$j$z;z;K$K$y%y%>%M* &#=A%t&t&Z&. . . . . . . . . . . ", +" . . A;'%y*U*;=G=,=@-J=u;'%s=N=<-[-*-i-w-j-x-O-B;`-';6;6;C;7;p;D;D;E;q+q+F;G;H;. . . . . ;%;%;%;%y%y%y%>%>%M*M* &A%A%t&t&. . . . . . . ", +" . . I;W*(-m;,=:-J=9=s=s=#-g-[-&-i-w-j-x-O-P-`-';<;[;[;7;o;p;x;J;J;K;L;M;N;O;P;. . . . y%y%>%y%>%>% & &#=#=A%Y&t&. . . . . . . ", +" . . Q;(-;=>=,=I=J=K=L=N=N=%-*-i-w-j-x-O-P-`-e; ;6;[;7;g;D;R;R;J;S;T;T;U;V;W;X;Y;. . . . z%z% & & &#=A%t&.&2&_;. . . . . . ", +" . . . .;>=,=@-J=K=#-N=N=<-*-*-}-j-j-O-P-`-Z; ;6;[;7;g;`;D;R; >.>+>@>#>$>%>&>&>*>. . . . . A%A%A%Y&t&t&Z&Z&. . . . . . ", +" . . q$H=I=,;K=v-v-<-[-[-*-i-w-x-O-P-`-`- ;6;);7;o;p;D;R;J;=>S;L;G;$>%>->&>;>>>,>. . . . . 2&Z&Z&Z&Z&u&. . . . . . ", +" . . '>P*f-r=K=#-g-<-[-*-}-j-j-x-P-`-';';6;[;7;g;)>D;R;!>.>~>L;G;N;V;{>]>^>/>(>_>:>. . . . }=`&`&`&. . . . . ", +" . . . <>J=s=M=N=h-v;*-i-w-j-x-O-P-';'; ;[>[;g;p;}>E;J;J;|>+>#>$>%>W;1>;>/>>>2>3>4>. . . . . |=[*. . . . . ", +" . . c;K=#-N=<-v;*-i-w-j-x-O-`-';'; ;[;[;g;g;p;R;J; >+>L;U;G;N;5>1>6>7>8>(>9>0>a>b>. . . . . . . . . ", +" . . c>]-#-<-[-*-*-w-w-j-O-P-`-'; ;6;[;7;o;q;x;x;.>=>L;F;G;d>e>&>6>;>f>g>h>i>j>k>l>m>. . . . . . . ", +" . . . n><-<-[-i-i-j-j-O-B;`-'; ;6;[;7;o>p;w;R; >K;+>L;U;$>5>p>]>q>f>2>h>0>r>s>t>u>v>. . . . . . ", +" . . w><-&-i-i-w-j-O-P-P-`- ;f;[;7;g;p;D;R;!>=>+>L;$>x>e>{>&>6>q>f>y>z>A>a>k>B>C>D>E>. . {-. ", +" . . +&[-*-i-j-j-x-O-`-';'; ;6;7;g;)>w;R;J;=>~>L;G;$>d>W;->;>F>>>(>3>0>A>a>G>G>H>I>J>K>. . ", +" . . . L>i-w-j-x-P-P-`-M>f;6;C;g;p;D;R;N>=>+>L;G;N;V;W;]>6>f>(>h>i>A>O>t>t>u>P>P>Q>R>S>. . . ", +" . . T>w-j-x-O-P-`- ; ;6;7;7;p;}>R; >J;+>T;G;N;d>{>&>^>/>f>2>y>0>A>s>t>C>U>I>V>W>X>Y>Z>. . ", +" . . ,>j-x-O-P-`-'; ;[>[;7;p;D;D;J;J;.>S;G;#>%>p>->;>F>f>`> ,z>A>.,G>G>U>V>W>+,@,#,$,%,C=. . ", +" . . m>&,x-P-P-'; ;6;[;7;g;p;D;J;=>K;|>#>G;d>{>W;;>/>q>2> , ,A>a>B>*,C>=,I>-,R>;,>,,,',),. . . ", +" . . !,O-`-'; ; ;[;[;g;g;w;R;J;K;@>L;$>$>p>&>~,7>F>8>g>3>i>a>t>*,{,P>V>-,+,@,$,],',^,/,(,. . ", +" . . _,P-'; ; ;6;[;o>p;D;R;!>=>|>L;G;%>d>->]>~,7>>>h> ,A>r>t>*,C>{,I>W>+,#,>,],',:,<,[,},. . . ", +" . . u=|, ; ;[;7;g;p;D;x;1,2,S;L;G;N;e>{>]>^>7>>>`>9>O>O>3,G>U>4,I>5,W>;,$,],6,7,<,8,9,0,a,. . ", +" . . P;';6;6;[;7;g;D;D;!>=>~>T;G;U;e>5>]>^>7>b,c,d,_,e,f,g,h,i,Y-'>'>'>'>j,g,S$k,l,y;0,m,n,o,. . ", +" . . m>p,6;[;q,o;p;R; >=>K;T;L;N;r,<>s,t,u,v,3=. . . . . . . . . . . . . . . . . . . w,Z>S$x,. . . ", +" . . y,[;7;g;q;D;E;J;.>B%z,2$A,o,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . #$. . ", +" . . z,7;g;p;D;+>B,C,g,o,. . . . . . . . . . . . . . . . . . ", +" . . +*g;D,>*E,}*. . . . . . . . . . . . . . ", +" . . L$F,,%. . . . . . . . . . . ", +" . . . . . . . . Y;. . ", +" . . . . . ", +" . . ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/src/Mod/Surfaces/Icons/Ico.png b/src/Mod/Surfaces/Icons/Ico.png new file mode 100644 index 000000000..cd1a6149e Binary files /dev/null and b/src/Mod/Surfaces/Icons/Ico.png differ diff --git a/src/Mod/Surfaces/Icons/Ico.xcf b/src/Mod/Surfaces/Icons/Ico.xcf new file mode 100644 index 000000000..d17f5f74d Binary files /dev/null and b/src/Mod/Surfaces/Icons/Ico.xcf differ diff --git a/src/Mod/Surfaces/Icons/Ico.xpm b/src/Mod/Surfaces/Icons/Ico.xpm new file mode 100644 index 000000000..0cd4c2402 --- /dev/null +++ b/src/Mod/Surfaces/Icons/Ico.xpm @@ -0,0 +1,749 @@ +/* XPM */ +static char * Ico_xpm[] = { +"128 128 618 2", +" c None", +". c #EDECEB", +"+ c #EFEEEE", +"@ c #ECEDEC", +"# c #EFEFEF", +"$ c #000000", +"% c #EAEAEB", +"& c #EBEBEA", +"* c #E8E8E8", +"= c #E1E1E1", +"- c #DBDBDB", +"; c #D7D6D6", +"> c #E6E5E6", +", c #E9E8E8", +"' c #EEEEED", +") c #ECECEC", +"! c #EBEBEB", +"~ c #E9E9E9", +"{ c #E9E9E8", +"] c #E5E6E6", +"^ c #D7D7D7", +"/ c #B2B2B1", +"( c #A6A6A6", +"_ c #B7B7B7", +": c #D1D0D1", +"< c #ECEBEB", +"[ c #00B5AA", +"} c #00B4A8", +"| c #00B3A8", +"1 c #00B1A8", +"2 c #00B0A6", +"3 c #00AFA5", +"4 c #00AEA4", +"5 c #00ACA2", +"6 c #00ABA1", +"7 c #00AAA0", +"8 c #EAEBEA", +"9 c #E2E2E2", +"0 c #B6B6B6", +"a c #979898", +"b c #999999", +"c c #BCBCBC", +"d c #D8D9D8", +"e c #EFF0EF", +"f c #00BDB2", +"g c #00BCB1", +"h c #00BBAF", +"i c #00B9AF", +"j c #00B8AE", +"k c #00B7AC", +"l c #00B6AB", +"m c #00B4AA", +"n c #00B1A7", +"o c #00AFA4", +"p c #00ADA3", +"q c #00A99F", +"r c #00A79E", +"s c #00A79C", +"t c #00A59B", +"u c #E3E3E2", +"v c #B0B1B0", +"w c #999898", +"x c #949495", +"y c #00C2B7", +"z c #00C1B6", +"A c #00C0B5", +"B c #00BFB4", +"C c #00BDB3", +"D c #00BDB1", +"E c #00BBB0", +"F c #00BAAF", +"G c #00B9AE", +"H c #00B8AD", +"I c #00B6AC", +"J c #00B4A9", +"K c #00AEA3", +"L c #00A79D", +"M c #00A69B", +"N c #00A49A", +"O c #D7D8D7", +"P c #959696", +"Q c #A0A1A1", +"R c #DFDFE0", +"S c #00C3B8", +"T c #00C4B8", +"U c #00C2B8", +"V c #00C1B7", +"W c #00C0B4", +"X c #00BEB4", +"Y c #00BAAE", +"Z c #00B7AB", +"` c #00B0A5", +" . c #00AEA5", +".. c #00ABA2", +"+. c #00A99E", +"@. c #00A89E", +"#. c #00A69C", +"$. c #00A59A", +"%. c #00A399", +"&. c #00A298", +"*. c #EAEAEA", +"=. c #C6C5C5", +"-. c #9C9B9B", +";. c #9A9A9A", +">. c #959495", +",. c #B5B6B6", +"'. c #E6E6E6", +"). c #00C5B9", +"!. c #00BEB3", +"~. c #00B5A9", +"{. c #00B2A7", +"]. c #00B1A6", +"^. c #00A098", +"/. c #DADBDB", +"(. c #A8A8A8", +"_. c #9B9A9A", +":. c #989898", +"<. c #9E9F9F", +"[. c #D8D8D8", +"}. c #E5E5E5", +"|. c #00C3B7", +"1. c #00C6BA", +"2. c #00C6B9", +"3. c #00C5BA", +"4. c #00C5B8", +"5. c #00BCB2", +"6. c #00BCB0", +"7. c #00B8AC", +"8. c #00B3A9", +"9. c #00ADA2", +"0. c #00A398", +"a. c #00A198", +"b. c #00A097", +"c. c #B6B5B5", +"d. c #989998", +"e. c #9C9D9C", +"f. c #959596", +"g. c #BDBDBD", +"h. c #00C2B6", +"i. c #00C7BB", +"j. c #00C8BB", +"k. c #00C6BB", +"l. c #00C4B9", +"m. c #00BFB3", +"n. c #00B7AD", +"o. c #00ACA1", +"p. c #00A59C", +"q. c #00A49B", +"r. c #009E96", +"s. c #E4E4E4", +"t. c #BABBBA", +"u. c #9C9C9C", +"v. c #9E9E9E", +"w. c #9B9B9C", +"x. c #AAAAAA", +"y. c #DCDCDB", +"z. c #00C1B5", +"A. c #00C8BD", +"B. c #00C9BD", +"C. c #00C9BC", +"D. c #00C8BC", +"E. c #00B2A8", +"F. c #00AFA6", +"G. c #00A197", +"H. c #009F96", +"I. c #E4E5E4", +"J. c #B9B9B8", +"K. c #A0A09F", +"L. c #9D9D9D", +"M. c #9F9F9F", +"N. c #D8D8D9", +"O. c #00C7BA", +"P. c #00CABE", +"Q. c #00CBBF", +"R. c #00CBBE", +"S. c #00C9BE", +"T. c #00C7BC", +"U. c #00BBB1", +"V. c #00BAB0", +"W. c #00AAA1", +"X. c #00A89D", +"Y. c #13A79E", +"Z. c #03A097", +"`. c #009D94", +" + c #9F9FA0", +".+ c #A2A1A1", +"++ c #A0A0A0", +"@+ c #D0D0D0", +"#+ c #00C0B6", +"$+ c #00CCC0", +"%+ c #00CABD", +"&+ c #26ABA4", +"*+ c #10A39C", +"=+ c #009E94", +"-+ c #AEAEAE", +";+ c #A1A1A2", +">+ c #A2A3A2", +",+ c #A0A1A0", +"'+ c #D2D2D3", +")+ c #00CABF", +"!+ c #00CEC1", +"~+ c #00CDC2", +"{+ c #00CDC1", +"]+ c #00CBC0", +"^+ c #00ABA0", +"/+ c #00A9A0", +"(+ c #46B5AF", +"_+ c #63BCB6", +":+ c #009E95", +"<+ c #009C93", +"[+ c #009A92", +"}+ c #D3D3D4", +"|+ c #A8A7A7", +"1+ c #A5A4A4", +"2+ c #A4A5A5", +"3+ c #A2A2A2", +"4+ c #A3A3A2", +"5+ c #D7D7D6", +"6+ c #00CFC2", +"7+ c #00A69D", +"8+ c #0BA59B", +"9+ c #9DCAC7", +"0+ c #2DAAA2", +"a+ c #BABABA", +"b+ c #A7A7A7", +"c+ c #A6A7A6", +"d+ c #A5A6A6", +"e+ c #A3A3A3", +"f+ c #DEDEDE", +"g+ c #00CEC2", +"h+ c #00BEB2", +"i+ c #00ADA4", +"j+ c #00A39A", +"k+ c #06A29A", +"l+ c #9FCBC8", +"m+ c #8FC4C1", +"n+ c #17A39B", +"o+ c #009B92", +"p+ c #009990", +"q+ c #CACACA", +"r+ c #AEAEAD", +"s+ c #A9A9A9", +"t+ c #A8A9A8", +"u+ c #A4A4A4", +"v+ c #B6B5B6", +"w+ c #00CCBF", +"x+ c #47B2AC", +"y+ c #CCD3D4", +"z+ c #9EC8C5", +"A+ c #16A19A", +"B+ c #00988F", +"C+ c #DEDDDD", +"D+ c #AFAEAF", +"E+ c #ABACAC", +"F+ c #ACACAB", +"G+ c #A9A8A8", +"H+ c #A7A6A6", +"I+ c #CDCDCE", +"J+ c #23A9A1", +"K+ c #B5CFCE", +"L+ c #D6D6D6", +"M+ c #BFD0CE", +"N+ c #93C6C3", +"O+ c #3FABA5", +"P+ c #1C1D1D", +"Q+ c #1D1D1D", +"R+ c #292929", +"S+ c #DBDBDA", +"T+ c #DADADA", +"U+ c #C7C6C7", +"V+ c #ADADAD", +"W+ c #AEAEAF", +"X+ c #ACACAC", +"Y+ c #ACABAB", +"Z+ c #ABABAB", +"`+ c #A9AAA9", +" @ c #A5A5A6", +".@ c #D0D0CF", +"+@ c #00B9AD", +"@@ c #00B6AA", +"#@ c #019F95", +"$@ c #56B4AE", +"%@ c #C5D0D0", +"&@ c #D1D2D2", +"*@ c #CDCDCD", +"=@ c #D2D2D2", +"-@ c #D0D2D2", +";@ c #C0C0C0", +">@ c #D3D3D2", +",@ c #CBCCCC", +"'@ c #BEBFBE", +")@ c #B0AFB0", +"!@ c #B1B1B0", +"~@ c #B0B0AF", +"{@ c #ABAAAB", +"]@ c #AAAAAB", +"^@ c #A6A5A5", +"/@ c #B5B5B5", +"(@ c #D0D1D0", +"_@ c #D5D6D5", +":@ c #009F95", +"<@ c #049D95", +"[@ c #73BAB7", +"}@ c #CCD1D1", +"|@ c #C8C8C9", +"1@ c #C2C2C2", +"2@ c #C2C3C3", +"3@ c #C1C1C1", +"4@ c #B8B8B8", +"5@ c #B4B4B4", +"6@ c #B4B4B5", +"7@ c #B3B3B3", +"8@ c #B2B2B2", +"9@ c #B1B1B1", +"0@ c #AFAEAE", +"a@ c #ADAEAE", +"b@ c #ACACAD", +"c@ c #AAA9A9", +"d@ c #BBBCBC", +"e@ c #D1D1D1", +"f@ c #00B0A7", +"g@ c #00A89F", +"h@ c #059C94", +"i@ c #7ABEB9", +"j@ c #BDCCCC", +"k@ c #CBCACB", +"l@ c #C2C1C1", +"m@ c #BBBBBB", +"n@ c #B8B9B8", +"o@ c #B8B9B9", +"p@ c #B4B5B5", +"q@ c #B3B4B4", +"r@ c #B2B3B3", +"s@ c #B0B0B0", +"t@ c #AFAFAF", +"u@ c #AAA9AA", +"v@ c #D3D3D3", +"w@ c #00A096", +"x@ c #059B92", +"y@ c #29A69E", +"z@ c #ACC8C7", +"A@ c #D2D1D1", +"B@ c #CCCCCD", +"C@ c #C4C4C4", +"D@ c #C0BFBF", +"E@ c #BBBCBB", +"F@ c #B2B3B2", +"G@ c #AEADAD", +"H@ c #ADACAD", +"I@ c #00ACA3", +"J@ c #009D93", +"K@ c #009B91", +"L@ c #00968E", +"M@ c #3CA7A1", +"N@ c #8EBFBD", +"O@ c #BDCCCB", +"P@ c #C1C0C0", +"Q@ c #C4C3C3", +"R@ c #C6C6C6", +"S@ c #BAB9B9", +"T@ c #ADACAC", +"U@ c #C8C8C8", +"V@ c #020B0A", +"W@ c #00B5AB", +"X@ c #00A299", +"Y@ c #009A91", +"Z@ c #00978E", +"`@ c #00958C", +" # c #04958D", +".# c #1B9B93", +"+# c #353535", +"@# c #414141", +"## c #464646", +"$# c #CECECE", +"%# c #C4C4C3", +"&# c #B1B2B1", +"*# c #C9C9C9", +"=# c #00BFB5", +"-# c #009C94", +";# c #009B93", +"># c #00968D", +",# c #00958B", +"'# c #00938A", +")# c #009189", +"!# c #009088", +"~# c #CCCCCC", +"{# c #B1B2B2", +"]# c #ADAEAD", +"^# c #CBCCCB", +"/# c #009890", +"(# c #00958D", +"_# c #00948B", +":# c #009289", +"<# c #009188", +"[# c #BFBFBF", +"}# c #CCCBCB", +"|# c #CFCFCE", +"1# c #00948A", +"2# c #008F88", +"3# c #008E86", +"4# c #CDCECE", +"5# c #BEBEBE", +"6# c #B7B7B8", +"7# c #B6B6B5", +"8# c #B3B2B2", +"9# c #B1B0B0", +"0# c #AFAFB0", +"a# c #00998F", +"b# c #00988E", +"c# c #00948C", +"d# c #008F87", +"e# c #B9B8B9", +"f# c #B6B7B6", +"g# c #B4B3B3", +"h# c #B2B1B1", +"i# c #ADADAE", +"j# c #ACADAD", +"k# c #C0C1C0", +"l# c #008D86", +"m# c #008C84", +"n# c #C3C4C4", +"o# c #B9BAB9", +"p# c #B0B0B1", +"q# c #CBCBC9", +"r# c #00AA9F", +"s# c #00928A", +"t# c #008D85", +"u# c #008B83", +"v# c #B7B8B7", +"w# c #B7B7B6", +"x# c #B1B0B1", +"y# c #C5C5C5", +"z# c #00968C", +"A# c #C5C6C6", +"B# c #C0C1C1", +"C# c #BABBBB", +"D# c #BABAB9", +"E# c #B8B7B7", +"F# c #B7B6B7", +"G# c #B5B4B4", +"H# c #B3B2B3", +"I# c #B1B1B2", +"J# c #ACADAE", +"K# c #009F97", +"L# c #009991", +"M# c #009389", +"N# c #008F86", +"O# c #008E85", +"P# c #008B84", +"Q# c #008981", +"R# c #BCBBBC", +"S# c #B9B9B9", +"T# c #B8B8B9", +"U# c #00938B", +"V# c #008D84", +"W# c #008C83", +"X# c #008A82", +"Y# c #008880", +"Z# c #C4C3C4", +"`# c #B7B8B8", +" $ c #AFAFB1", +".$ c #00A499", +"+$ c #008B82", +"@$ c #00877F", +"#$ c #C1C2C1", +"$$ c #B9B8B8", +"%$ c #B5B5B4", +"&$ c #B4B4B3", +"*$ c #B2B1B3", +"=$ c #009087", +"-$ c #008780", +";$ c #00867E", +">$ c #C2C3C2", +",$ c #B9B9BA", +"'$ c #B2B1B2", +")$ c #008A81", +"!$ c #00867D", +"~$ c #C0C0C1", +"{$ c #BFBEBE", +"]$ c #BEBDBD", +"^$ c #BDBCBD", +"/$ c #BFC0C0", +"($ c #C1C3C2", +"_$ c #009C92", +":$ c #009288", +"<$ c #00847D", +"[$ c #00847B", +"}$ c #BBBBBC", +"|$ c #BAB9BA", +"1$ c #B6B6B7", +"2$ c #B3B3B2", +"3$ c #BFC0BF", +"4$ c #008982", +"5$ c #00857E", +"6$ c #00847C", +"7$ c #00837B", +"8$ c #BEBEBF", +"9$ c #BDBCBC", +"0$ c #BCBCBB", +"a$ c #B3B4B3", +"b$ c #00877E", +"c$ c #00857D", +"d$ c #00837C", +"e$ c #00827A", +"f$ c #B7B6B6", +"g$ c #00978D", +"h$ c #00837A", +"i$ c #008178", +"j$ c #BFBFBE", +"k$ c #BDBEBC", +"l$ c #00978F", +"m$ c #008980", +"n$ c #008179", +"o$ c #007F78", +"p$ c #C1C1C2", +"q$ c #008E87", +"r$ c #00817A", +"s$ c #C2C2C1", +"t$ c #C0BFC0", +"u$ c #BDBEBE", +"v$ c #BBBBBA", +"w$ c #B9BABA", +"x$ c #009D95", +"y$ c #00867F", +"z$ c #008078", +"A$ c #007E78", +"B$ c #007D76", +"C$ c #C3C3C3", +"D$ c #BBBABA", +"E$ c #009A90", +"F$ c #008279", +"G$ c #007E77", +"H$ c #007D75", +"I$ c #C0C0BF", +"J$ c #BFBEBF", +"K$ c #BBBABB", +"L$ c #00887F", +"M$ c #00827B", +"N$ c #008079", +"O$ c #007B75", +"P$ c #BABABB", +"Q$ c #007C75", +"R$ c #007B73", +"S$ c #007A72", +"T$ c #C3C2C2", +"U$ c #BFBFC0", +"V$ c #BEBDBE", +"W$ c #BCBBBB", +"X$ c #00857C", +"Y$ c #007D77", +"Z$ c #007C76", +"`$ c #007B74", +" % c #007A73", +".% c #007972", +"+% c #C3C4C3", +"@% c #C5C5C6", +"#% c #BEBFBF", +"$% c #007871", +"%% c #BCBDBC", +"&% c #C4C5C4", +"*% c #C6C6C5", +"=% c #007770", +"-% c #00766F", +";% c #C3C2C3", +">% c #008C85", +",% c #007F77", +"'% c #007872", +")% c #00766E", +"!% c #C8C7C7", +"~% c #C7C6C6", +"{% c #C5C5C4", +"]% c #C2C0C1", +"^% c #B3B3B4", +"/% c #007E76", +"(% c #007870", +"_% c #00756F", +":% c #00756D", +"<% c #C9C8C8", +"[% c #C5C4C4", +"}% c #007A74", +"|% c #007971", +"1% c #00746E", +"2% c #00746D", +"3% c #C7C7C7", +"4% c #008881", +"5% c #00756E", +"6% c #00746C", +"7% c #00736C", +"8% c #00716A", +"9% c #C8C9C8", +"0% c #00716B", +"a% c #C6C7C7", +"b% c #CACBCA", +"c% c #C9C8CA", +"d% c #007771", +"e% c #00726B", +"f% c #006F69", +"g% c #007670", +"h% c #007069", +"i% c #006E68", +"j% c #000303", +"k% c #007169", +"l% c #007068", +"m% c #006D67", +"n% c #AEAFAE", +"o% c #00736B", +"p% c #00726A", +"q% c #A9A9A8", +"r% c #CFCFCF", +"s% c #C5C4C5", +"t% c #007973", +"u% c #00736D", +"v% c #006F68", +"w% c #B0AEB0", +"x% c #00726C", +"y% c #006D68", +"z% c #007C74", +"A% c #00706A", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . + @ # ", +" $ $ $ $ $ $ $ $ $ $ $ % & * * = - ; > , ' ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ) ! ~ { { ~ ] ^ / ( _ : ~ < ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ [ } | 1 2 3 4 5 6 7 $ $ $ $ $ $ 8 9 0 a b c d e ", +" $ $ $ $ $ $ $ $ $ $ f f g h i j k l m | | n 2 o p 5 6 q r s t $ $ $ $ u v w x ( ^ 8 ", +" $ $ $ $ $ $ $ $ y z z A A B C D E F G H I l J | n n 3 K 5 6 q q L M N $ $ $ $ O ( b P Q R * ", +" $ $ $ $ $ $ S S S T S U V V z W X C g E Y G H Z [ J | n ` .p ..7 +.@.#.$.%.&.$ $ $ *.=.-.;.>.,.'. ", +" $ $ $ $ $ U T T T ).).).T T S U V z B !.!.g F Y H I l ~.| {.].3 p 5 6 q @.s t %.&.^.$ $ $ /.(._.:.<.[.}. ", +" $ $ $ $ y |.T ).).1.1.1.1.2.3.4.T y y A B !.5.6.F j 7.Z [ 8.1 2 3 4 9.6 7 +.s t N 0.a.b.$ $ $ * c.d.e.f.g.'. ", +" $ $ $ $ A h.|.S 4.2.1.i.i.j.i.i.k.2.l.T y z A m.f g E i n.Z [ } | n 2 4 p o.7 +.L p.q.0.&.b.r.$ $ s.t.u.v.w.x.y. ", +" $ $ $ !.B z.y S T 1.i.j.A.B.B.C.B.D.k.3.4.S y z W !.f E Y G k [ J | E.F.o p o.7 q L M q.%.&.G.H.$ $ $ I.J.u.K.L.M.N. ", +" $ $ $ $ m.A h.S T 2.O.D.B.P.Q.Q.R.S.B.T.O.).T U V A !.f U.V.j n.l m | {.2 o 4 5 W.q X.#.t %.a.Y.Z.`.$ $ $ 9 0 +.+++e.@+u ", +" $ $ $ $ #+h.S 4.1.T.C.P.Q.$+$+$+Q.%+D.i.1.T |.h.A !.f g h G H l ~.} E.2 3 p 5 7 q r #.N %.&.&+*+=+`.$ $ - -+;+>+Q ,+'+ ", +" $ $ $ y T ).1.D.B.)+$+!+~+{+]+P.B.j.1.T S y A B !.g h G H l J | E.n 3 p p ^+/+@.#.t %.&.(+_+:+<+[+$ $ 9 }+|+1+2+3+4+5+ ", +" $ $ y T ).O.D.%+)+$+~+6+{+$+P.B.T.1.).S y A B f g F G H I [ 8.{.n .4 5 6 /+X.7+t %.&.8+9+0+<+[+$ $ $ - a+b+c+d+e+-+f+ ", +" $ $ $ T ).1.D.S.Q.$+{+g+{+$+R.A.D.1.).S z z.B h+6.F G 7.Z ~.8.E.].3 i+5 7 q @.#.t j+&.k+l+m+n+o+p+$ $ f+q+r+s+t+b+u+v+f+ ", +" $ $ $ l.2.D.C.%+Q.$+$+w+Q.P.D.i.1.l.S y A X f U.F G H l J } E.2 3 p o.6 q r #.$.%.&.G.x+y+z+A+p+B+$ $ C+q+D+E+F+x.G+H+|+I+O ", +" $ $ $ 3.i.D.B.P.P.Q.)+P.B.D.O.).T S z A m.f E F G 7.l J | {.2 .p ..6 q L #.q.%.&.G.J+K+L+M+N+O+P+Q+R+ S+T+U+V+W+V+X+Y+Z+`+ @-+.@L+ ", +" $ $ 4.1.k.j.A.B.B.B.C.j.i.).T S y A B !.f U.F +@k @@J | n 2 o p ..W.q @.t N %.a.b.#@$@%@&@*@=@-@;@}+>@,@'@)@/ !@~@D+V+X+{@]@^@/@(@_@ ", +" $ $ $ ).1.O.D.D.i.D.j.1.2.l.S |.z A m.C g E Y H k [ 8.| n ` 4 9.o.7 q L t q.%.a.b.:@<@[@}@|@1@;@2@3@g.4@5@6@7@8@9@)@0@a@b@E+c@H+d@e@ ", +" $ $ T ).).3.1.k.O.1.).4.T |.z A W !.f U.F +@7.l [ | E.f@` 4 5 W./+g@L p.N %.a.H.:+`.h@i@j@k@l@m@n@o@_ _ p@5@q@r@9@s@t@-+V+E+u@b+;@v@ ", +" $ $ $ S T T ).).T l.T S |.y #+W X f g h G H Z @@J | 1 2 3 i+5 7 q X.s t N &.^.w@:+<+o+x@y@z@A@B@C@D@a+m@E@4@/@5@7@F@s@t@0@G@H@{@(.=.A@ ", +" $ $ y U S S S S S U y z A A m.C g E F G n.Z [ 8.| n 2 4 I@5 W.q r #.q.%.&.a.H.`.J@K@p+B+L@M@N@O@P@Q@e@v@R@S@/@5@7@8@9@~@t@G@T@x.T@U@e@ ", +" V@$ $ z y V y y h.V z.A B m.!.D 6.F G H Z W@J | E.2 3 4 I@6 7 @.s M $.X@&.^.:@=+<+Y@p+Z@L@`@ #.#+#@### $#%#4@0 /@5@7@9@s@t@-+a@x.&#*#.@ ", +" $ $ A A z.A z #+=#A m.!.!.D 6.F G j k l m | | n 2 4 p 5 7 q r L t N &.a.b.:+-#;#Y@p+Z@>#,#'#)#!#$ $ ~#3@4@_ /@5@r@{#9@s@W+]#x.0 ^#$# ", +" $ $ $ B B B B B X !.f f g E V.F j k l [ J | 1 ].3 4 5 6 7 @.L #.q.%.&.^.H.:+J@o+Y@/#Z@(#_#:#<#!#$ $ $ q+[#4@_ 0 /@q@8@&#s@t@-+c@m@}#|# ", +" $ $ !.!.!.!.h+f D g 6.E F G H H l [ ~.| E.].F. .p 5 7 q @.s M N X@a.b.:@`.<+Y@p+B+>#`@1#:#<#2#3#$ $ 4#U@5#4@6#7#c.5@8#9@9#0#-+]@5#q+ ", +" $ $ $ g g g g 6.E h F G j H k Z @@J | | n 2 o p 5 6 7 @.X.#.t %.X@a.H.:+`.;#Y@a#b#>#c#'#:#!#d#3#$ $ ~#R@c e#4@f#0 5@g#8@h#s@i#j#k#k@ ", +" $ $ E F E V.h Y Y G H k k l [ J | E.n 2 3 4 9.6 W.q @.L t N %.&.b.:@=+J@o+p+B+Z@(#_#'#<#!#3#l#m#$ $ q+n#c o#n@_ 0 /@7@8#9@p#W+s@1@q# ", +" $ $ G i G G +@+@H k k I @@J J | E.{.2 3 4 p 5 6 r#@.L M $.%.X@a.b.:+J@<+o+p+b#>#`@1#s#<#!#3#t#u#$ $ U@2@d@a+4@v#w#0 q@r@9@x#-+7@y#*# ", +" $ $ H 7.7.H k k l [ [ ~.} E.E.n 2 3 4 p 5 6 /++.L L t %.&.&.b.H.:+J@o+Y@a#Z@z#_#'#<#<#d#3#t#u#$ $ $ A#B#d@C#D#E#F#,.G#7@H#I#J#F#y#U@ ", +" $ $ Z l l l l W@[ J } | E.{.].F.3 4 p I@^+7 +.X.#.M $.%.&.a.K#:@`.;#[+L#B+>#`@_#M#<#!#N#O#P#u#Q#$ $ y#;@R#m@S#T#_ 0 /@5@r@/ -+S#=. ", +" $ $ $ [ [ J J J 8.| E.{.n ].2 3 4 p 5 6 7 q @.L #.q.%.&.a.w@r.`.J@o+p+p+Z@>#_#U#:#!#d#3#V#W#X#Y#$ $ Z#[#c m@S#T#`#f#,.p@7@h# $m@y# ", +" $ $ } | 8.E.| E.1 n n 2 3 4 K I@5 6 /+q r L #.$..$X@a.b.H.:+-#o+Y@a#Z@>#`@'#'#<#!#3#l#m#+$Q#Y#@$$ $ C@#$5#g.c a+S@$$_ v+%$&$*$9@g.%# ", +" $ $ E.E.E.n n ].].F.3 4 K p 5 ..6 7 +.@.L #.t N %.&.b.H.:+`.<+o+L#B+Z@>#_#U#:#!#=$3#m#u#X#Q#-$;$$ $ >$3@[#g.c a+,$n@_ ,./@5@'$g#;@C@ ", +" $ $ $ f@2 2 2 ` 3 4 K p p 5 6 ^+/+g@@.L #.t N %.&.a.b.:@:+`.o+L#B+b#L@c#U#:#)#2#N#3#m#X#)$Y#@$!$$ $ $ 3@~${$]$^$m@a+S#4@f#,.5@8@/@/$($ ", +" $ $ 3 3 4 4 4 K p I@5 5 6 q q @.r #.M t N %.&.G.K#r.=+<+_$K@p+B+L@(#,#'#:$<#d#l#V#W#X#Q#@$;$<$[$$ $ ;@3@[#5#g.}$C#|$4@_ 1$/@2$7#3$3@ ", +" $ $ p i+K p 9.5 o.6 W.7 r#+.r L #.t q.N 0.a.G.b.:+=+J@;#Y@p+B+Z@z#`@1#:#<#=$3#t#m#u#4$Y#@$5$6$7$$ $ [#P@;@8$g.9$0$|$S#_ 0 /@a$E#;@ ", +" $ $ 5 5 ....o.6 6 /+q q @.L #.#.p.N %.0.&.G.K#r.=+-#<+Y@L#B+Z@>#`@_#'#:#!#d#3#t#u#X#Q#-$b$c$d$e$$ $ $ [#;@;@[#]$c R#a+,$n@f$0 a$S#{$ ", +" $ $ 6 W.7 r#q q +.@.L L #.#.q.j+%.0.a.G.w@:@:+`.;#o+L#B+B+g$(#_#'#)#<#d#3#t#P#X#Q#Y#@$!$6$h$e$i$$ $ g.{$B#k#D@j$k$0$a+S@n@_ 0 /@m@]$ ", +" $ $ q q q g@@.r L L #.M t N .$0.&.a.b.H.:@`.<+;#[+Y@B+l$g$`@_#'#:#<#!#d#l#m#u#X#m$-$;$c$7$e$n$o$$ $ c '@3@p$;@5#g.c m@a+S#`#0 1$C#c ", +" $ $ L r L #.s s M p.$.N %.%.0.a.a.b.H.:+`.`._$Y@p+a#b#g$(#_#'#'#)#!#q$3#V#u#X#Q#-$b$c$6$7$r$i$o$$ $ $ C#8$#$s$;@t$u$g.m@v$w$4@_ 1$v$0$ ", +" $ $ $ #.#.#.t t q.N %.%.&.&.a.b.w@r.:+x$<+o+K@p+p+Z@>#z#c#'#s#:$<#d#3#t#P#X#)$Y#y$;$<$d$e$i$z$A$B$$ $ a+3$C$l@k#[#'@^$c m@S#e#_ F#a+D$ ", +" $ $ N N N .$j+%.%.&.&.a.b.K#H.H.`.-#<+o+Y@E$a#Z@L@(#,#'#M#<#!#d#3#t#u#X#Q#Y#@$;$c$6$h$F$z$o$G$H$$ $ a+I$Q@1@;@;@J$g.c m@K$4@_ 4@S# ", +" $ $ j+X@&.X@&.&.a.^.G.K#H.:@:+J@J@o+[+Y@p+B+Z@>#z#,#U#:#<#<#!#N#t#m#u#X#Q#L$;$c$6$M$e$N$o$G$B$O$$ $ $ a+k#C@C$l@;@/$5#g.c P$S@4@4@4@ ", +" $ $ a.a.a.^.a.b.b.H.H.:+`.`.<+o+o+K@L#p+B+Z@>#`@_#'#:#)#<#2#3#t#m#u#X#Q#-$@$5$6$[$e$i$o$G$B$Q$R$S$$ $ v+,$T$y#C$1@3@U$J$V$c W$|$S#_ 4@ ", +" $ $ $ b.b.K#w@:@:+:+`.-#`._$o+K@Y@p+B+Z@L@z#`@_#'#M#<#<#=$q$t#m#u#X#Q#Y#@$5$X$d$e$F$z$A$Y$Z$`$ %.%$ $ 5@C#+%@%C$>$3@;@#%5#g.E@t.S#_ v+ ", +" $ $ :@H.:+=+:+`.-#<+_$o+[+E$p+B+B+L@>#(#`@U#'#:$<#!#d#3#O#V#u#X#)$Y#@$;$c$6$7$F$z$o$G$H$Q$R$.%$%$ $ q@%%&%*%n#C$1@3@[#]$g.d@K$,$0 5@ ", +" $ $ `.`.`.<+_$;#o+K@K@E$p+a#l$B+>#>#c#,#1#:#:#<#2#d#3#t#m#u#+$Q#Y#@$;$c$6$7$r$N$z$A$B$Q$`$.%.%=%-%$ $ 5@]$R@R@C@Q@;%k#D@#%5#^$c S#/@5@ ", +" $ $ <+_$_$o+[+[+Y@p+a#a#l$Z@L@>#(#_#1#'#'#:$!#=$N#3#t#>%u#X#Q#m$@$;$c$6$7$r$n$o$,%Y$Q$`$ %'%$%-%)%$ $ 5@[#!%~%{%C@>$]%p$;@t$5#g.4@^%5@ ", +" $ $ Y@Y@Y@Y@p+a#B+B+l$Z@Z@z#`@,#1#1#M#)#<#!#=$N#l#t#m#u#X#4$Y#@$;$c$6$7$e$n$z$G$/%Q$`$R$.%(%=%_%:%$ $ /@3@<%R@=.C@[%C$ /@5@ ", +" $ $ $ p+B+B+b#l$Z@Z@>#(#`@`@_#'#'#:#<#<#!#d#3#t#>%m#u#X#m$Y#@$;$c$6$7$e$n$z$o$G$H$Q$}%.%|%=%_%1%2%$ $ $ ]#,.C$|@3%y#C@ r@o# ", +" $ $ Z@Z@g$Z@>#>#`@c#_#_#'#:#:#:$!#!#d#d#t#t#V#u#u#X#4%Y#@$;$c$6$7$e$N$z$o$G$H$O$ %.%'%=%-%5%6%7%8%$ $ V+_ R@9%U@3% 4@9@ ", +" $ $ >#(#z#`@,#_#1#'#'#s#:#<#!#!#2#N#3#t#>%P#u#X#Q#Y#-$@$;$c$6$7$r$n$z$o$G$Z$`$`$ %.%=%-%_%2%7%0%8%$ $ -+|$a%b%c% c I# ", +" $ $ _#_#1#1#'#'#s#:#<#<#!#!#=$d#3#t#t#m#u#X#X#Q#Y#L$;$;$6$[$M$e$n$z$o$G$B$Q$`$ %.%d%=%5%2%7%e%8%f%$ $ r+%%q+B@ m@s@ ", +" $ $ M#M#s#:#:#:$<#!#<#!#d#q$3#t#t#m#m#u#X#Q#4%Y#@$;$5$<$6$e$e$i$z$A$Y$H$Q$`$S$.%(%g%5%1%6%e%8%h%i%$ $ j% -+[#,@ R@F@s@ ", +" $ $ )#<#<#<#!#!#!#d#N#q$l#l#V#m#W#u#X#Q#4%Y#-$;$;$c$6$7$M$r$z$z$o$G$H$Q$`$ %|%d%=%_%1%6%e%8%k%l%i%m%$ $ ~@3@~# *#%%n% ", +" $ $ $ !#2#d#q$d#3#3#t#t#m#P#u#u#X#)$4%Y#Y#@$;$!$X$[$7$M$F$i$z$,%Y$B$Q$`$S$.%$%g%-%5%2%o%p%h%h%i%m%m%$ $ q%9@m@3%r%}#s%c V+n% ", +" $ $ d#3#3#3#O#t#V#m#u#u#+$X#)$Q#Y#-$@$b$5$c$6$7$M$e$n$z$o$G$Y$Q$Q$R$t%'%$%=%_%2%u%7%p%8%f%v%m%m%m%$ $ 7@-+V+v s@X+X+ ", +" $ $ t#t#>%m#P#u#u#+$X#)$Q#Y#Y#-$b$b$;$c$6$7$h$e$F$z$o$o$G$B$Z$O$ % %.%d%-%-%1%6%7%0%k%f%v%m%m%m%m%$ $ 7@w%F@ ", +" $ $ u#u#u#u#u#X#Q#)$m$4%Y#@$@$b$!$c$6$6$h$M$e$n$z$z$A$G$B$Q$`$ %.%.%=%=%5%:%u%x%p%8%l%i%y%m%m%m%m%$ $ ", +" $ $ X#X#4$Q#Q#Q#m$Y#@$y$;$;$!$c$6$d$7$7$e$n$N$z$o$G$B$H$z%`$t%.%$%$%g%_%2%6%7%p%k%h%i%i%m%m%m%m%m%m%$ $ ", +" $ $ Y#Y#4%Y#Y#-$y$@$;$5$c$X$6$6$7$h$e$n$n$o$o$,%Y$Z$Q$`$`$ %.%(%=%-%)%2%7%x%0%h%h%i%m%m%m%m%m%m%m%m%$ $ ", +" $ $ @$b$;$@$;$;$!$c$c$6$6$7$7$e$r$n$N$z$o$,%G$B$B$Q$`$ %t%$%$%g%-%5%2%7%e%8%A%h%v%m%m%m%m%m%m%m%m%m%$ $ ", +" $ $ ;$5$!$c$X$c$6$6$7$7$h$e$n$n$z$z$o$,%G$Y$B$Q$z% % %.%$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ m%$ $ ", +" $ $ X$6$6$6$[$7$7$h$F$F$n$N$z$o$o$,%B$B$B$Q$`$R$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ 7$7$h$e$e$n$n$i$i$z$z$o$,%G$/%B$Q$Q$`$$ $ $ $ $ $ $ $ $ $ $ ", +" $ $ n$n$n$n$z$z$z$o$o$,%,%G$B$B$Q$Q$$ $ $ $ $ $ $ ", +" $ $ z$z$o$z$o$o$G$G$/%/%B$Z$Q$$ $ $ $ $ $ $ ", +" $ $ A$A$G$G$G$/%B$Q$H$O$z%$ $ $ $ $ $ ", +" $ $ B$B$B$Z$Q$Q$`$`$$ $ $ $ $ $ ", +" $ $ O$`$`$`$`$R$$ $ $ $ $ $ ", +" $ $ }% % % %$ $ $ $ $ $ $ ", +" $ $ |%$%$ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ ", +" j%$ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ ", +" $ $ $ ", +" ", +" ", +" "}; diff --git a/src/Mod/Surfaces/Icons/IsoCurveIco.png b/src/Mod/Surfaces/Icons/IsoCurveIco.png new file mode 100644 index 000000000..3e5dd8f9d Binary files /dev/null and b/src/Mod/Surfaces/Icons/IsoCurveIco.png differ diff --git a/src/Mod/Surfaces/Icons/IsoCurveIco.xcf b/src/Mod/Surfaces/Icons/IsoCurveIco.xcf new file mode 100644 index 000000000..6c05b2c4f Binary files /dev/null and b/src/Mod/Surfaces/Icons/IsoCurveIco.xcf differ diff --git a/src/Mod/Surfaces/Icons/IsoCurveIco.xpm b/src/Mod/Surfaces/Icons/IsoCurveIco.xpm new file mode 100644 index 000000000..6c45b4810 --- /dev/null +++ b/src/Mod/Surfaces/Icons/IsoCurveIco.xpm @@ -0,0 +1,1280 @@ +/* XPM */ +static char * IsoCurveIco_xpm[] = { +"128 128 1149 2", +" c None", +". c #FF0000", +"+ c #005F00", +"@ c #006100", +"# c #00AF05", +"$ c #00B105", +"% c #1E1E1E", +"& c #212121", +"* c #242424", +"= c #262626", +"- c #252525", +"; c #222222", +"> c #009B03", +", c #006600", +"' c #1B1B1B", +") c #050505", +"! c #000000", +"~ c #171717", +"{ c #008C02", +"] c #00B005", +"^ c #00A305", +"/ c #006F01", +"( c #1D1D1D", +"_ c #4C4C4C", +": c #1F1F1F", +"< c #B5B5B5", +"[ c #B4B4B3", +"} c #B3B3B2", +"| c #B1B1B2", +"1 c #B1B0B0", +"2 c #AFAFAF", +"3 c #AEAEAE", +"4 c #ADACAC", +"5 c #ABABAB", +"6 c #AAAAAA", +"7 c #141414", +"8 c #007100", +"9 c #00AC04", +"0 c #008403", +"a c #232323", +"b c #030303", +"c c #A8A8A8", +"d c #787878", +"e c #8B8B8B", +"f c #B6B7B6", +"g c #B9B9BA", +"h c #B8B8B9", +"i c #B8B7B7", +"j c #B6B6B6", +"k c #B5B4B5", +"l c #B3B3B3", +"m c #B2B3B2", +"n c #B1B1B1", +"o c #B0B0B0", +"p c #AFAFAE", +"q c #ADADAD", +"r c #ACACAC", +"s c #A9A9A9", +"t c #A8A7A8", +"u c #A6A7A6", +"v c #A5A5A5", +"w c #010101", +"x c #00A704", +"y c #00AE05", +"z c #00AC05", +"A c #009703", +"B c #1A1A1A", +"C c #C1C2C2", +"D c #C1C1C1", +"E c #C0C1C1", +"F c #C0C0C0", +"G c #BFC0C0", +"H c #BFBFBF", +"I c #BAB9BA", +"J c #898A89", +"K c #7A7A7A", +"L c #B9B9B9", +"M c #B7B8B8", +"N c #B7B6B7", +"O c #B4B4B4", +"P c #B2B1B1", +"Q c #B0AFAF", +"R c #ADAEAD", +"S c #AAA9A9", +"T c #A7A7A7", +"U c #A6A6A5", +"V c #A4A4A4", +"W c #008A02", +"X c #00B104", +"Y c #00AD05", +"Z c #00AA06", +"` c #00A105", +" . c #007101", +".. c #006000", +"+. c #0C0C0C", +"@. c #C3C3C3", +"#. c #C4C3C3", +"$. c #C3C3C4", +"%. c #C3C4C3", +"&. c #C3C2C3", +"*. c #C2C1C2", +"=. c #C1C1C2", +"-. c #BFC0BF", +";. c #BEBEBF", +">. c #BDBDBE", +",. c #9D9C9C", +"'. c #737373", +"). c #A5A5A4", +"!. c #AFB0AF", +"~. c #AEAEAF", +"{. c #ACABAC", +"]. c #A9A9A8", +"^. c #A6A6A6", +"/. c #A4A5A4", +"(. c #A3A3A3", +"_. c #A2A2A2", +":. c #008B02", +"<. c #00B305", +"[. c #00A906", +"}. c #00A505", +"|. c #008303", +"1. c #020202", +"2. c #C2C2C3", +"3. c #C4C4C4", +"4. c #C5C5C5", +"5. c #C4C5C5", +"6. c #C5C4C4", +"7. c #BEBEBE", +"8. c #BDBEBE", +"9. c #9F9F9E", +"0. c #B8B8B8", +"a. c #B4B5B4", +"b. c #B2B2B1", +"c. c #B1B1B0", +"d. c #AAABAB", +"e. c #A4A3A3", +"f. c #A1A0A1", +"g. c #00B405", +"h. c #00A706", +"i. c #00A506", +"j. c #009404", +"k. c #006800", +"l. c #080808", +"m. c #C2C2C2", +"n. c #C3C3C2", +"o. c #C5C6C6", +"p. c #C6C6C6", +"q. c #C7C6C6", +"r. c #C6C6C5", +"s. c #C6C5C6", +"t. c #C4C5C4", +"u. c #C3C4C4", +"v. c #C3C2C2", +"w. c #C1C0C0", +"x. c #C0BFBF", +"y. c #BDBCBD", +"z. c #757575", +"A. c #9D9D9D", +"B. c #B8B8B7", +"C. c #B4B5B5", +"D. c #B3B3B4", +"E. c #B2B1B2", +"F. c #ACADAC", +"G. c #A8A9A8", +"H. c #A7A7A6", +"I. c #A3A4A4", +"J. c #A3A3A2", +"K. c #A1A1A1", +"L. c #9FA0A0", +"M. c #006700", +"N. c #007700", +"O. c #008601", +"P. c #009202", +"Q. c #009D02", +"R. c #00AC03", +"S. c #00B503", +"T. c #00B404", +"U. c #00A806", +"V. c #00A306", +"W. c #009C05", +"X. c #007702", +"Y. c #C2C2C1", +"Z. c #C2C3C2", +"`. c #C5C5C4", +" + c #C7C7C7", +".+ c #C8C8C7", +"++ c #C6C6C7", +"@+ c #C5C4C5", +"#+ c #BFBFBE", +"$+ c #BDBDBD", +"%+ c #BDBCBC", +"&+ c #ADAEAE", +"*+ c #747474", +"=+ c #B7B7B6", +"-+ c #B2B3B3", +";+ c #AFB0B0", +">+ c #ABACAB", +",+ c #A6A5A6", +"'+ c #A4A4A5", +")+ c #9E9E9F", +"!+ c #006D00", +"~+ c #007F00", +"{+ c #009200", +"]+ c #00A201", +"^+ c #00B302", +"/+ c #00C202", +"(+ c #00C803", +"_+ c #00C403", +":+ c #00C204", +"<+ c #00C004", +"[+ c #00BD04", +"}+ c #00BA04", +"|+ c #00B804", +"1+ c #00B504", +"2+ c #00AC06", +"3+ c #00A905", +"4+ c #00A406", +"5+ c #00A006", +"6+ c #009E07", +"7+ c #008A05", +"8+ c #006500", +"9+ c #C1C1C0", +"0+ c #C9C8C9", +"a+ c #C9C9C9", +"b+ c #C9C9C8", +"c+ c #C8C9C9", +"d+ c #C8C8C8", +"e+ c #C7C6C7", +"f+ c #BCBDBD", +"g+ c #BBBBBB", +"h+ c #ABABAA", +"i+ c #A0A0A0", +"j+ c #B6B5B5", +"k+ c #B1B2B2", +"l+ c #B0AFB0", +"m+ c #A8A9A9", +"n+ c #A5A4A5", +"o+ c #A2A2A1", +"p+ c #286F28", +"q+ c #276F27", +"r+ c #004700", +"s+ c #0D500D", +"t+ c #056205", +"u+ c #007D00", +"v+ c #009500", +"w+ c #00AC00", +"x+ c #00C100", +"y+ c #00D201", +"z+ c #00D601", +"A+ c #00D402", +"B+ c #00D202", +"C+ c #00D003", +"D+ c #00CD02", +"E+ c #00CB03", +"F+ c #00C603", +"G+ c #00C303", +"H+ c #00C003", +"I+ c #00BE04", +"J+ c #00BB04", +"K+ c #00B905", +"L+ c #00B704", +"M+ c #00AE06", +"N+ c #00AB05", +"O+ c #00A606", +"P+ c #00A107", +"Q+ c #009F07", +"R+ c #009B07", +"S+ c #009506", +"T+ c #007602", +"U+ c #C7C7C6", +"V+ c #C9CACA", +"W+ c #CACBCB", +"X+ c #CACBCA", +"Y+ c #CAC9CA", +"Z+ c #C7C7C8", +"`+ c #BCBBBC", +" @ c #BABABB", +".@ c #B1B2B1", +"+@ c #AEAFAE", +"@@ c #AAAAAB", +"#@ c #A8A8A7", +"$@ c #297029", +"%@ c #287028", +"&@ c #277427", +"*@ c #278627", +"=@ c #007200", +"-@ c #008600", +";@ c #25A825", +">@ c #00E100", +",@ c #00E101", +"'@ c #00DE01", +")@ c #00DC01", +"!@ c #00DA01", +"~@ c #00D801", +"{@ c #00D502", +"]@ c #00D302", +"^@ c #00D102", +"/@ c #00CE02", +"(@ c #00C903", +"_@ c #00C703", +":@ c #00C404", +"<@ c #00C104", +"[@ c #00BF04", +"}@ c #00BC04", +"|@ c #00A206", +"1@ c #009F06", +"2@ c #009C07", +"3@ c #009907", +"4@ c #009807", +"5@ c #008906", +"6@ c #006801", +"7@ c #C0C0C1", +"8@ c #C8C9C8", +"9@ c #CACACA", +"0@ c #CBCBCB", +"a@ c #CCCCCC", +"b@ c #C9CAC9", +"c@ c #C9C8C8", +"d@ c #BFBEBE", +"e@ c #BCBCBC", +"f@ c #BABBBA", +"g@ c #AEAEAD", +"h@ c #B2B2B2", +"i@ c #2A712A", +"j@ c #297D29", +"k@ c #289328", +"l@ c #28AA29", +"m@ c #28BD28", +"n@ c #27CC28", +"o@ c #27CD28", +"p@ c #27CF28", +"q@ c #00AA00", +"r@ c #21DE21", +"s@ c #00E400", +"t@ c #00E201", +"u@ c #00E001", +"v@ c #00DB01", +"w@ c #00D902", +"x@ c #00D702", +"y@ c #00CF02", +"z@ c #00CD03", +"A@ c #00CA03", +"B@ c #00B205", +"C@ c #00A207", +"D@ c #009D07", +"E@ c #009A07", +"F@ c #009808", +"G@ c #009606", +"H@ c #008004", +"I@ c #006300", +"J@ c #0F0F0F", +"K@ c #CBCACB", +"L@ c #CDCECD", +"M@ c #CECDCE", +"N@ c #CDCDCD", +"O@ c #CBCBCC", +"P@ c #BBBBBA", +"Q@ c #908F8F", +"R@ c #807F7F", +"S@ c #B0B1B1", +"T@ c #AEADAD", +"U@ c #ACADAD", +"V@ c #2A722A", +"W@ c #2A9F2A", +"X@ c #29BA2A", +"Y@ c #29C62A", +"Z@ c #28C729", +"`@ c #28CA29", +" # c #27CE28", +".# c #27D027", +"+# c #26D127", +"@# c #0BB00B", +"## c #03E603", +"$# c #00E401", +"%# c #00DF01", +"&# c #00DC02", +"*# c #00D701", +"=# c #00CF03", +"-# c #00CC02", +";# c #00C503", +"># c #00C103", +",# c #00BF03", +"'# c #00B904", +")# c #00B505", +"!# c #00AF06", +"~# c #00AA05", +"{# c #00A507", +"]# c #009D06", +"^# c #009406", +"/# c #007803", +"(# c #060606", +"_# c #C6C7C6", +":# c #CACACB", +"<# c #CFCFCE", +"[# c #C8C7C8", +"}# c #BBBABA", +"|# c #BAB9B9", +"1# c #B5B5B6", +"2# c #818181", +"3# c #8D8D8D", +"4# c #AFAEAF", +"5# c #297529", +"6# c #29BB2A", +"7# c #29C82A", +"8# c #28C929", +"9# c #28CB29", +"0# c #00AD00", +"a# c #00AF00", +"b# c #22B722", +"c# c #00E500", +"d# c #00C203", +"e# c #00BA05", +"f# c #009006", +"g# c #1C1C1C", +"h# c #C4C4C3", +"i# c #C9C9CA", +"j# c #CECECE", +"k# c #CBCCCC", +"l# c #C2C1C1", +"m# c #C0C1C0", +"n# c #BEBEBD", +"o# c #BCBCBB", +"p# c #B7B8B7", +"q# c #9F9F9F", +"r# c #B0B1B0", +"s# c #ADADAE", +"t# c #298E29", +"u# c #28C72A", +"v# c #27CF27", +"w# c #26D326", +"x# c #23E223", +"y# c #00DD01", +"z# c #00CC03", +"A# c #00C504", +"B# c #00B805", +"C# c #00A705", +"D# c #C7C8C8", +"E# c #CACAC9", +"F# c #CBCCCB", +"G# c #BFBEBF", +"H# c #BABABA", +"I# c #9E9F9E", +"J# c #AEAFAF", +"K# c #ACACAB", +"L# c #29B029", +"M# c #28C82A", +"N# c #27CC29", +"O# c #27CE27", +"P# c #26CF26", +"Q# c #26D126", +"R# c #11AE11", +"S# c #01E102", +"T# c #00B705", +"U# c #009207", +"V# c #C5C5C6", +"W# c #CBCACA", +"X# c #C6C5C5", +"Y# c #C2C3C3", +"Z# c #BEBFBE", +"`# c #858685", +" $ c #8A8A8A", +".$ c #A8A7A7", +"+$ c #298229", +"@$ c #28C629", +"#$ c #27CB28", +"$$ c #26CE27", +"%$ c #26CF27", +"&$ c #25CF26", +"*$ c #00A800", +"=$ c #00A700", +"-$ c #23B323", +";$ c #00D802", +">$ c #00D602", +",$ c #00D002", +"'$ c #00B605", +")$ c #00A106", +"!$ c #007A03", +"~$ c #B8B9B8", +"{$ c #B7B7B7", +"]$ c #B5B6B5", +"^$ c #727272", +"/$ c #A0A1A0", +"($ c #28A829", +"_$ c #28C829", +":$ c #27CA29", +"<$ c #27CC27", +"[$ c #26CC27", +"}$ c #26CD27", +"|$ c #26CD26", +"1$ c #25CC26", +"2$ c #00A600", +"3$ c #06A706", +"4$ c #05DB06", +"5$ c #00BE03", +"6$ c #C8C7C7", +"7$ c #C7C8C7", +"8$ c #C5C6C5", +"9$ c #C4C4C5", +"0$ c #B9BAB9", +"a$ c #B6B7B7", +"b$ c #979796", +"c$ c #7B7B7B", +"d$ c #287D28", +"e$ c #28C429", +"f$ c #27C829", +"g$ c #27C928", +"h$ c #27CA28", +"i$ c #26CB27", +"j$ c #26CA26", +"k$ c #25CA27", +"l$ c #00A400", +"m$ c #26AF26", +"n$ c #00AB06", +"o$ c #009E06", +"p$ c #008404", +"q$ c #111111", +"r$ c #B9B9B8", +"s$ c #B1B0B1", +"t$ c #969696", +"u$ c #ABAAAB", +"v$ c #AAA9AA", +"w$ c #A9A8A9", +"x$ c #A5A5A6", +"y$ c #28A329", +"z$ c #28C529", +"A$ c #27C729", +"B$ c #27C728", +"C$ c #26C927", +"D$ c #26C928", +"E$ c #25C926", +"F$ c #25C826", +"G$ c #25C726", +"H$ c #05A205", +"I$ c #03D505", +"J$ c #00C604", +"K$ c #00A307", +"L$ c #006C01", +"M$ c #C1C0C1", +"N$ c #A9A8A8", +"O$ c #287728", +"P$ c #27C028", +"Q$ c #27C529", +"R$ c #27C628", +"S$ c #26C628", +"T$ c #26C727", +"U$ c #25C727", +"V$ c #25C627", +"W$ c #25C526", +"X$ c #009F00", +"Y$ c #009E01", +"Z$ c #25AC25", +"`$ c #00CE03", +" % c #008D05", +".% c #161616", +"+% c #B8B9B9", +"@% c #B7B7B8", +"#% c #ADACAD", +"$% c #7E7E7E", +"%% c #919191", +"&% c #A7A7A8", +"*% c #27A028", +"=% c #27C328", +"-% c #27C428", +";% c #26C428", +">% c #26C527", +",% c #25C426", +"'% c #25C326", +")% c #24C226", +"!% c #009D01", +"~% c #039D03", +"{% c #05D008", +"]% c #00C902", +"^% c #00B604", +"/% c #007703", +"(% c #2F2F2F", +"_% c #BDBDBC", +":% c #BBBCBB", +"<% c #ACACAD", +"[% c #A5A6A5", +"}% c #A2A2A3", +"|% c #A1A2A1", +"1% c #277927", +"2% c #27C228", +"3% c #26C328", +"4% c #26C227", +"5% c #25C227", +"6% c #25C126", +"7% c #25C226", +"8% c #24C026", +"9% c #009B01", +"0% c #25A725", +"a% c #00A805", +"b% c #009C06", +"c% c #009607", +"d% c #006200", +"e% c #C0BFC0", +"f% c #BCBDBC", +"g% c #ABACAC", +"h% c #7D7D7D", +"i% c #919091", +"j% c #276E27", +"k% c #27A428", +"l% c #26C028", +"m% c #26C128", +"n% c #25C028", +"o% c #25C127", +"p% c #25C026", +"q% c #24BF27", +"r% c #24BE26", +"s% c #24BD26", +"t% c #009801", +"u% c #059A06", +"v% c #05CA07", +"w% c #008504", +"x% c #BBBABB", +"y% c #B9BABA", +"z% c #989898", +"A% c #777777", +"B% c #A0A0A1", +"C% c #278227", +"D% c #26BE28", +"E% c #26BF28", +"F% c #25BF28", +"G% c #25BE27", +"H% c #24BB25", +"I% c #009602", +"J% c #009501", +"K% c #22A323", +"L% c #00C304", +"M% c #00A904", +"N% c #00A005", +"O% c #009504", +"P% c #009204", +"Q% c #009104", +"R% c #007102", +"S% c #0D0D0D", +"T% c #BDBEBD", +"U% c #B5B5B4", +"V% c #ABAAAA", +"W% c #A2A1A1", +"X% c #26B027", +"Y% c #26BC28", +"Z% c #25BC27", +"`% c #24BB26", +" & c #24BA26", +".& c #23B926", +"+& c #23B925", +"@& c #009402", +"#& c #0D970E", +"$& c #01C404", +"%& c #00AF04", +"&& c #009803", +"*& c #007701", +"=& c #009407", +"-& c #BCBBBB", +";& c #B9B8B9", +">& c #B4B3B3", +",& c #A7A8A7", +"'& c #8F8F8F", +")& c #A09F9F", +"!& c #9E9E9E", +"~& c #9A9C9B", +"{& c #269127", +"]& c #26BA28", +"^& c #26BB28", +"/& c #25BA27", +"(& c #25B927", +"_& c #24B926", +":& c #23B726", +"<& c #23B625", +"[& c #009102", +"}& c #23BA24", +"|& c #00A304", +"1& c #008F05", +"2& c #008104", +"3& c #BABAB9", +"4& c #B9B8B8", +"5& c #ADADAC", +"6& c #ACABAB", +"7& c #717171", +"8& c #9C9D9D", +"9& c #9D9E9D", +"0& c #9C9D9C", +"a& c #266E26", +"b& c #267426", +"c& c #26B728", +"d& c #25B828", +"e& c #25B827", +"f& c #25B728", +"g& c #24B727", +"h& c #24B626", +"i& c #23B526", +"j& c #23B426", +"k& c #008F02", +"l& c #1D9A1E", +"m& c #00B204", +"n& c #008604", +"o& c #006D01", +"p& c #B6B6B7", +"q& c #B5B4B4", +"r& c #AAAAA9", +"s& c #838383", +"t& c #888889", +"u& c #9C9C9C", +"v& c #266D26", +"w& c #259E27", +"x& c #25B628", +"y& c #24B627", +"z& c #24B527", +"A& c #24B427", +"B& c #23B427", +"C& c #23B326", +"D& c #23B125", +"E& c #008E02", +"F& c #008D02", +"G& c #10BF14", +"H& c #00A903", +"I& c #007401", +"J& c #007E03", +"K& c #009206", +"L& c #B3B2B3", +"M& c #A9A9AA", +"N& c #A6A7A7", +"O& c #A1A0A0", +"P& c #9B9B9B", +"Q& c #9A9A9A", +"R& c #258126", +"S& c #25B427", +"T& c #25B428", +"U& c #24B327", +"V& c #24B326", +"W& c #23B226", +"X& c #23B126", +"Y& c #23B026", +"Z& c #22AF25", +"`& c #269A27", +" * c #009C03", +".* c #007F04", +"+* c #B3B4B3", +"@* c #AFAFB0", +"#* c #A7A6A6", +"$* c #959596", +"%* c #9C9B9C", +"&* c #9A9A9B", +"** c #99999A", +"=* c #256C25", +"-* c #25A927", +";* c #25B228", +">* c #24B127", +",* c #23AF26", +"'* c #23AE26", +")* c #22AE25", +"!* c #22AC25", +"~* c #008902", +"{* c #088C09", +"]* c #01B606", +"^* c #007002", +"/* c #B2B2B3", +"(* c #A5A6A6", +"_* c #868685", +":* c #9A9999", +"<* c #999999", +"[* c #939693", +"}* c #259126", +"|* c #24B028", +"1* c #24AF27", +"2* c #24AE26", +"3* c #23AD26", +"4* c #23AC25", +"5* c #22AA25", +"6* c #008703", +"7* c #008602", +"8* c #23B927", +"9* c #009702", +"0* c #006A01", +"a* c #009106", +"b* c #A4A4A3", +"c* c #A3A2A3", +"d* c #9C9C9D", +"e* c #9C9B9B", +"f* c #999998", +"g* c #979797", +"h* c #979696", +"i* c #257925", +"j* c #24AD28", +"k* c #24AE27", +"l* c #24AD27", +"m* c #23AC26", +"n* c #23AB27", +"o* c #23AB26", +"p* c #22AB25", +"q* c #22A925", +"r* c #22A825", +"s* c #21A725", +"t* c #008503", +"u* c #208321", +"v* c #006400", +"w* c #007E04", +"x* c #101010", +"y* c #AFAEAE", +"z* c #ABABAC", +"A* c #939393", +"B* c #9A9B9B", +"C* c #246C25", +"D* c #24A327", +"E* c #24AA28", +"F* c #23AA27", +"G* c #23A926", +"H* c #22A826", +"I* c #22A726", +"J* c #21A625", +"K* c #004A00", +"L* c #0B650B", +"M* c #009706", +"N* c #006B01", +"O* c #AAABAA", +"P* c #A7A8A8", +"Q* c #848484", +"R* c #9A999A", +"S* c #999898", +"T* c #979897", +"U* c #979697", +"V* c #959495", +"W* c #919392", +"X* c #246B24", +"Y* c #249126", +"Z* c #24A927", +"`* c #23A927", +" = c #23A827", +".= c #23A726", +"+= c #22A525", +"@= c #21A425", +"#= c #219A25", +"$= c #004B00", +"%= c #236023", +"&= c #009107", +"*= c #A4A5A5", +"== c #A1A2A2", +"-= c #9F9FA0", +";= c #767776", +">= c #949594", +",= c #248025", +"'= c #23A627", +")= c #23A727", +"!= c #23A626", +"~= c #22A626", +"{= c #22A426", +"]= c #22A325", +"^= c #219D24", +"/= c #217021", +"(= c #206820", +"_= c #008C05", +":= c #A2A3A2", +"<= c #A2A1A2", +"[= c #A1A1A0", +"}= c #9F9E9E", +"|= c #9E9E9D", +"1= c #9B9B9C", +"2= c #6F6F6F", +"3= c #959595", +"4= c #969695", +"5= c #939493", +"6= c #929292", +"7= c #247023", +"8= c #23A427", +"9= c #23A327", +"0= c #22A326", +"a= c #22A226", +"b= c #21A025", +"c= c #217622", +"d= c #216821", +"e= c #A5A4A4", +"f= c #A09FA0", +"g= c #9D9C9D", +"h= c #797979", +"i= c #939494", +"j= c #919292", +"k= c #236B23", +"l= c #239927", +"m= c #23A227", +"n= c #22A227", +"o= c #22A127", +"p= c #22A026", +"q= c #219F26", +"r= c #217F23", +"s= c #828282", +"t= c #A4A3A4", +"u= c #9FA09F", +"v= c #7E7F7E", +"w= c #949494", +"x= c #929192", +"y= c #909191", +"z= c #236A23", +"A= c #238A25", +"B= c #239F26", +"C= c #229F27", +"D= c #229F26", +"E= c #218524", +"F= c #838382", +"G= c #818282", +"H= c #808180", +"I= c #A8A8A9", +"J= c #9E9D9D", +"K= c #9B9A9B", +"L= c #999A9A", +"M= c #979798", +"N= c #8D8E8D", +"O= c #909090", +"P= c #8E8F8F", +"Q= c #237B24", +"R= c #229E27", +"S= c #229D26", +"T= c #218E25", +"U= c #216921", +"V= c #7F7F7F", +"W= c #006F02", +"X= c #A1A1A2", +"Y= c #A0A1A1", +"Z= c #9B9C9B", +"`= c #989897", +" - c #969796", +".- c #949495", +"+- c #929393", +"@- c #919192", +"#- c #8E8E8F", +"$- c #8E8E8E", +"%- c #227022", +"&- c #229B27", +"*- c #229B26", +"=- c #229225", +"-- c #216B21", +";- c #718071", +">- c #818182", +",- c #A6A5A5", +"'- c #9F9E9F", +")- c #9D9D9E", +"!- c #9A9B9A", +"~- c #989797", +"{- c #919291", +"]- c #909190", +"^- c #226922", +"/- c #229626", +"(- c #229426", +"_- c #216E21", +":- c #838384", +"<- c #818180", +"[- c #7F8080", +"}- c #7E7E7F", +"|- c #A3A3A4", +"1- c #9E9F9F", +"2- c #999A99", +"3- c #989998", +"4- c #969697", +"5- c #969596", +"6- c #949393", +"7- c #7D7E7D", +"8- c #808080", +"9- c #8C8B8B", +"0- c #898A88", +"a- c #228D25", +"b- c #217222", +"c- c #838484", +"d- c #828382", +"e- c #818281", +"f- c #7D7E7E", +"g- c #7D7D7C", +"h- c #9D9D9C", +"i- c #959594", +"j- c #949394", +"k- c #939292", +"l- c #8F9090", +"m- c #8E8F8E", +"n- c #8C8C8C", +"o- c #217422", +"p- c #828283", +"q- c #818081", +"r- c #7C7B7C", +"s- c #202020", +"t- c #969595", +"u- c #959494", +"v- c #8A8B8B", +"w- c #898989", +"x- c #858484", +"y- c #838483", +"z- c #7C7C7C", +"A- c #7B7B7A", +"B- c #7A7A79", +"C- c #9C9C9B", +"D- c #9B9B9A", +"E- c #929392", +"F- c #929191", +"G- c #6E6E6E", +"H- c #888888", +"I- c #858584", +"J- c #828281", +"K- c #7F7E7F", +"L- c #7E7D7E", +"M- c #7D7C7D", +"N- c #9A9A99", +"O- c #979898", +"P- c #949595", +"Q- c #929291", +"R- c #878787", +"S- c #858686", +"T- c #858585", +"U- c #818080", +"V- c #7B7C7C", +"W- c #7A7B7A", +"X- c #989798", +"Y- c #959696", +"Z- c #8F8F90", +"`- c #8A8B8A", +" ; c #868686", +".; c #808081", +"+; c #7F807F", +"@; c #7A7979", +"#; c #787979", +"$; c #767676", +"%; c #9B9C9C", +"&; c #949493", +"*; c #919090", +"=; c #8F908F", +"-; c #8F8F8E", +";; c #8C8C8D", +">; c #898988", +",; c #888787", +"'; c #828182", +"); c #808181", +"!; c #7F7F80", +"~; c #7D7D7E", +"{; c #7D7C7C", +"]; c #797879", +"^; c #777878", +"/; c #767675", +"(; c #0E0E0E", +"_; c #969797", +":; c #90908F", +"<; c #8D8D8E", +"[; c #757576", +"}; c #7F7E7E", +"|; c #7E7E7D", +"1; c #7C7B7B", +"2; c #787877", +"3; c #757574", +"4; c #8E8D8D", +"5; c #8D8C8D", +"6; c #7A7A7B", +"7; c #787978", +"8; c #767576", +"9; c #757475", +"0; c #737474", +"a; c #8C8D8C", +"b; c #898A8A", +"c; c #898889", +"d; c #787879", +"e; c #747473", +"f; c #727373", +"g; c #727171", +"h; c #959695", +"i; c #939293", +"j; c #8C8B8C", +"k; c #8A8989", +"l; c #878788", +"m; c #828383", +"n; c #787777", +"o; c #727172", +"p; c #0B0B0B", +"q; c #929293", +"r; c #898888", +"s; c #878887", +"t; c #878686", +"u; c #717070", +"v; c #80807F", +"w; c #7C7D7D", +"x; c #797A7A", +"y; c #787778", +"z; c #706F70", +"A; c #868586", +"B; c #848485", +"C; c #777677", +"D; c #767575", +"E; c #747475", +"F; c #737473", +"G; c #707070", +"H; c #6F6E6F", +"I; c #8E8D8E", +"J; c #8D8D8C", +"K; c #8C8C8B", +"L; c #888788", +"M; c #79797A", +"N; c #797978", +"O; c #707170", +"P; c #6F706F", +"Q; c #6D6D6D", +"R; c #848483", +"S; c #7F7F7E", +"T; c #747575", +"U; c #737372", +"V; c #717271", +"W; c #6F7070", +"X; c #181818", +"Y; c #8B8B8A", +"Z; c #868786", +"`; c #858586", +" > c #7A797A", +".> c #747374", +"+> c #707171", +"@> c #6F6F70", +"#> c #6E6F6E", +"$> c #8D8C8C", +"%> c #8B8A8A", +"&> c #8A8A89", +"*> c #878786", +"=> c #7E7D7D", +"-> c #7C7C7D", +";> c #7B7B7C", +">> c #7B7A7A", +",> c #757676", +"'> c #717170", +")> c #6E6F6F", +"!> c #888988", +"~> c #737273", +"{> c #727271", +"]> c #70706F", +"^> c #6D6D6E", +"/> c #89898A", +"(> c #878687", +"_> c #848384", +":> c #767677", +"<> c #757474", +"[> c #6F6E6E", +"}> c #6D6E6E", +"|> c #868787", +"1> c #757675", +"2> c #848383", +"3> c #828181", +"4> c #707071", +"5> c #6F6F6E", +"6> c #848585", +"7> c #7B7C7B", +"8> c #313131", +"9> c #807F80", +"0> c #090909", +"a> c #121212", +"b> c #7C7D7C", +"c> c #7C7C7B", +"d> c #7B7A7B", +"e> c #797878", +"f> c #070707", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . . . ", +" . . . . ", +" . . . . ", +" . . . ", +" . . . ", +" . . . ", +" + . . . ", +" + + + . . . ", +" + + + . . . ", +" + @ + + . . . ", +" + + # + + . . . ", +" + $ # + + + . . . ", +" % & * = = - - - - = ; + + $ > , + + . . . ", +" & - ' ) ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ~ ; + { ] ^ / + + . . . ", +" ( = ~ ! ! ! _ : ! ! ! ! ! < [ } | 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 5 s t u v ! ! w % + + x ] y z A , + + . . . ", +" ( B ! ! ! ! ! ! C D E F G H I J K o L M N j O l P n Q R 4 5 S s T U V ! ! ! a + W X # Y Z ` .+ + .. . . . ", +" a +.! ! ! ! @.#.$.%.@.&.*.=.E -.;.>.,.'.).L M f < O l n !.~.q {.6 ].c ^./.(._.! ! - + :.<.] y z [.}.|...+ + . . . ", +" = 1.! ! ! 2.%.3.3.4.4.5.6.3.#.&.*.D H 7.8.v '.9.0.N j a.l b.c.2 q r d.s c u v e._.f.! ! = + + + + + + + { g.$ # z Z h.i.j.k.+ + . . . ", +" l.! ! ! m.n.3.5.4.o.p.q.p.r.s.t.u.v.C w.x.7.y.R z.A.B.f C.D.E.o 2 3 F.5 6 G.H.v I.J.K.L.! ! & + + + + + + + M.N.O.P.Q.R.S.T.<.] Y Z U.i.V.W.X.+ + + . . ", +" = ! ! ! F Y.Z.#.`.r.q. + +.+ + +++r.@+3.m.D F #+$+%+&+*+A.=+< [ -+n ;+3 q >+6 ].T ,+'+J._.L.)+! w + + + + + + + !+~+{+]+^+/+(+_+:+<+[+}+|+1+<.] y 2+3+i.4+5+6+7+8++ + . . . ", +" ; ! ! 7.x.9+m.$.3.p. +.+0+a+a+b+c+d+e+s.`.@.m.D -.8.f+g+h+'.i+j+O } k+l+p q >+6 m+T U n+(.o+p+q+r+r+s+t+, u+v+w+x+y+z+A+B+C+D+E+(+F+G+H+I+J+K+L+<.$ M+N+[.O+V.P+Q+R+S+T++ + + . . ", +" a ! ! ! #+F Y.@.3.r.U+d+a+V+W+W+X+Y+a+Z+U+4.3.2.=.F 7.$+`+ @c '.^.k l .@o +@&+r @@s #@$@$@%@p+p+&@*@=@-@;@>@,@,@'@)@!@~@{@]@^@/@E+(@_@:@<@[@}@K+L+g.$ # z [.h.4+|@1@2@3@4@5@6@+ + + . . . ", +" % ) ! ! 7@Y.$.t.p.Z+8@9@0@a@a@a@W+b@c@ +p.3.n.Y.F d@$+e@f@L i+z.g@[ h@o 2 q r i@i@i@$@j@k@l@m@n@o@p@q@q@r@s@t@u@'@v@w@x@A+^@y@z@A@_@_+:+[@[+}+L+1+B@# 2+Z h.4+C@Q+D@E@F@4@G@H@I@+ + + . . . ", +" J@! ! m.3.5.q.d+a+K@a@L@M@N@O@9@a+.+p.3.#.m.F H 8.e@P@L 0.Q@R@h@h@S@2 T@U@V@i@W@X@Y@Z@`@`@o@ #.#+#w+@###$#,@%#&#!@*#A+B+=#-#(@_@;#>#,#}@'#L+)#$ !#z ~#h.{#C@Q+]#E@F@4@4@4@^#/#@ + + . . ", +" (#! m.%.4._#d+b@:#a@M@<#N@a@9@a+[#p.4.@.C w.H $+e@}#|#M 1#2#3#b.n 4#&+r d.i@5#6#Y@7#8#9#n@p@.#+#0#a#b#c#t@u@)@!@*#A+B+y@z@A@_@_+d#[@}@e#L+T.B@# Y [.U.i.|@Q+D@3@4@4@4@4@4@f#..+ . . . ", +" g#! ! h#4.p.d+i#W+a@N@j#N@k#X+0+d+p.4.@.l#m#H n#o#}#L p#f +@*+q#r#2 s#r 6 i@i@t#Y@u#`@9#o@ #v#+#w#0#w+x#,@%#y#!@x@A+B+y@z#A@_@A#>#[@[+}+B#T.B@# z ~#C#i.|@Q+2@E@4@F@4@F@F@T++ + . . ", +" = ! ! @+r.D#8@E#0@a@a@F#0@V+d+ +p.@+@.C F G#$+`+H#L M j O I#z.r J#q K#5 s i@$@L#u#M#`@N#o@O#P#Q#Q#q@R#S#'@)@w@x@A+B+=#-#A@_@_+d#[@[+'#T#T.B@# Y Z h.i.C@Q+2@E@4@4@4@4@U#..+ . . ", +" & ! ! V# +d+a+9@W#W+:#V+c+D#_#X#3.Y#D F Z#$+g+}#L p#j O l `# $4#q {.d.s .$$@+$@$M#`@#$n@O#$$%$&$*$=$-$y#v@;$>$]@,$/@z#(+_@_+>#[@}@'#'$T.B@M+z Z h.i.)$Q+2@3@4@4@4@4@!$+ + . . ", +" ) ! `.p.e+.+0+a+a+a+8@.+ +X#6.@.m.w.H 7.f+`+H#~${$]$O l 5 ^$/$q {.@@s c $@$@($Z@_$:$#$<$[$}$|$1$2$3$4$w@*#{@B+,$z@E+(+F+G+<+5$J+'#'$g.$ y 2+Z O+4+P+6+R+3@4@4@4@G@I@+ . . ", +" & ! ! 4.p.U+D#D#6$d+7$q.8$9$#.Z.l#F Z#>.e@g+0$0.a$j+D.l n b$c$K#>+6 m+T v $@d$e$Z@f$g$h$i$i$j$k$l$l$m$*#{@]@^@y@-#A@_@;#G+<+I+J+B#)#<.] Y n$3+O+4+P+o$R+3@4@4@4@p$+ + . . ", +" q$! u.4.X#s.p.++U+p.4.`.3.n.l#w.-.7.$+`+H#r$B.j < l h@s$+@c$t$u$v$w$T x$$@%@y$z$A$B$C$D$C$E$F$G$]+H$I$A+^@y@z@A@(@J$:@>#[@}@e#L+1+<.!#Y ~#h.i.K$5+o$R+4@F@4@4@L$+ . . ", +" % ! ! $.3.3.4.4.6.@+3.#.Z.m.M$-.G#$+e@f@|#0.=+]$O l E.o 2 A.z.N$S #@u v I.p+O$P$Q$R$S$T$T$U$V$W$X$Y$Z$^@,$`$z#(@_@;#G+H+I+J+'#'$g.B@# z 3+C#4+|@1@D@E@4@4@4@ %+ + . . ", +" .%! m.&.@.@.$.#.@.2.m.D w.G Z#>.e@g+H#+%@%f < D.} n o 3 #%$%%%s &%^.n+(.p+p+*%=%-%;%>%>%W$,%'%)%!%~%{%/@z#]%(+F+_+<@[@}@}+B#^%<.$ M+2+[.h.4+P+Q+2@E@4@4@F@/%+ . . ", +" (%! ! D m.*.m.m.Y.*.9+F H Z#8._%:%H#L 0.=+1#O l h@o 2 3 <%A.*+^.H.[%/.}%|%p+1%P$2%3%4%5%5%6%7%8%9%9%0%-#A@(+F+:@:+,#5$J+'#'$)#B@# Y ~#a%O+V.)$6+b%3@F@4@c%d%+ . . . ", +" .%! G F 9+F E 7@e%G #+7.8.f%:%H#|#h {$j k l } n ;+3 q g%6 h%i%T v V _.K.p+j%k%l%l%m%n%o%p%q%r%s%t%u%v%_@F+:@d#<+I+}@e#|+1+<.$ y z [.h.i.|@1@D@R+4@4@4@w%+ + . . ", +" g#! ! H H H H H G#7.$+$+e@g+x%y%h {$j < O l E.r#2 &+r 5 6 z%A%v '+(._.B%q#j%C%D%E%E%F%G%G%r%s%H%I%J%K%;#:@L%<+I+}@}+B#T#g.B@# Y M%N%O%P%Q%o$D@3@4@4@F@R%+ . . ", +" S%! 8.7.8.8.T%$+_%e@:%g+H#L 0.0.j j+U%l k+r#l+~.q r V%S T A%t$V }%W%i+9.j%j%X%Y%Z%Z%Z%Z%`% &.&+&@&#&$&:+H+[@[+J+'#^%g.B@%&&&*&+ + + + + G@R+3@4@F@=&..+ . . ", +" * ! ! e@e@%+e@o#-&P@H#|#;&0.{$f ]$O >&} n o p T@r 5 6 N$,&'&h%(.}%K.)&!&~&j%{&]&^&/&/&(&_&_&:&<&P.[&}&<+5$[+J+'#T#)#<.|&/ + + + + 1&3@4@F@4@2&+ + . . . ", +" ! ! g+}#g+x%f@3&3&L 4&{${$j < O >&h@P o 2 &+5&6&@@s c T _.7&8&o+i+9.9&0&a&b&c&d&e&f&g&g&h&i&j&j&k&l&I+}@J+'#L+1+m&{ @ + + + n&3@4@4@4@o&+ . . ", +" & ! L g L L r$~$0.{${$p&]$q&O l h@.@1 2 3 q g%5 r&c T U ).s&t&K.L.!&0&u&a&v&w&x&x&y&z&A&B&j&C&D&E&F&G&}+'#T#1+H&I&+ + + + J&4@4@F@K&+ + . . ", +" ! ! 0.p#B.M {$a$j j+< a.[ L&h@n o 2 3 q r 5 M&]..$N&v (.t$z.O&q#!&0&P&Q&v&R&S&T&U&V&U&W&X&Y&Z&{ :.`&L+'$)# *I@+ + + X.4@F@4@.*+ . . ", +" ) ! f j j j j 1#< O +*l h@.@c.@*2 3 T@<%h+6 ].#@#*U /.(._.*+$*I#A.%*&***v&=*-*;*>*>*>*Y&,*'*)*!*~*{*]*g.&&@ + + + ^*4@4@4@L$+ . . ", +" - ! ! < < q&O O D.l /*b.n r#o J#3 q r 5 6 s c T (*n+(._.K._*s&A.0&P&:*<*[*=*}*|*1*1*2*'*3*4*!*5*6*7*8*9*..+ + + 0*4@4@a*+ + . . . ", +" ! ! +*>&D.L&-+h@| P n o 2 3 g@#%g%5 v$m+t T ^./.b*c*K.O&t$'.d*e*Q&f*g*h*=*i*j*k*l*m*n*o*p*q*r*s*t*u*..+ + v*4@4@w*+ . . ", +" x*! h@k+k+n n c.r#l+2 y*g@q r z*5 6 ].c T ^.v I.(._.O&)&!&'.A*B***z%g*t$=*C*D*E*F*F*G*H*H*I*J*J*X.K*L*.. + + M*4@N*+ . . ", +" - ! ! s$o o ;+!.J#y*R q U@r 5 O*v$w$P*T ^.v V (.o+K.L.I#!&2#Q*R*S*T*U*V*W*X*Y*Z*`* =.=I*I*+=@=#=$=r+%= + a*&=+ + . . ", +" ! ! 2 2 y*3 3 R q #%r g%d.s s c t ^.U *=I.(.==/$-=)+9&u&'&;=<*z%U*$*>=A*X*,='=)=!=~={={=]=^=/=(=r+q$ + _=.*+ . . ", +" +.! q s#R q F.r >+5 @@6 r&G.t T ^.v '+V :=<=[=i+}=|=0&1=z%2=3=g*4=3=5=6=X*7=8=8=9=0=0=a=b=c=d=(=! ! + n&o&+ . . ", +" = ! r r {.{.>+5 d.M&S s c T #*^.x$e=(.:=_.[=f=)+|=g=u&Q&**h= $t$3=i=A*j=X*k=l=m=n=o=p=q=r=d=d=s=! ! - + H@+ + . . ", +" ! ! 5 @@6 r&s m+G.P*T T ^.(*'+t=(.:=K./$u=9.!&A.%*P&**S*Q*v=$*w=A*x=y='&z=A=B=C=D=D=E=d=d=F=G=H=! x* + !$+ . . ", +" ! ! s s s I=c &%T N&^.U v V b*J._.K.i+q#9.J=u&%*K=L=S*M=N=*+w=A*6=y=O=P=z=Q=R=R=S=T=U=d=s&s=2#V=! ! + W=+ . . ", +" B ! T &%T #*H.u [%x$/.V e.(.:=X=Y=i+q#!&A.8&Z=Q&<*f*`= -.-2=O=+-@-O=#-$-z=%-&-*-=---d=;-s&>-H=V=! ! * + ..+ . . ", +" - ! ! ^.^.(*,-v '+V e.(._.|%K.i+u='-!&)-u&e*!-<*<*~-t$4=V*z.t&{-]-'&$-3#z=^-/-(-_-d=d=:-s=<-[-}-h%! .% + + + . . ", +" ! ! V e=V b*|-(.(.|%_.K.O&f=q#1-A.g=u&P&Q&2-3-g*4-5->=6-7-8-O='&$-3#9-0-^-a-b-d=d=c-d-e-8-V=f-g-! ! + + . . ", +" 1.! |-c*_.}%_.==K.B%/$-=q#I#!&h-0&P&K=Q&<*S*g*t$4=i-j-k-Q*d l-m-3#n-e $^-o-d=d=Q*p-G=q-V=$%h%r-! ! & + + . . ", +" s-! <=<=K.B%K.i+L.q#q#!&J=A.u&P&P&!-**<*z%g*t$t-u-A*6=x=v-7&$-3#n-e $w-^-U=d=x-y-s=<-R@$%h%z-A-B-! ( + + . . ", +" a ! ! i+i+-=u=9.}=!&A.g=8&C-P&D-Q&<*z%g*4-4=3=w=A*E-F-]-m-G-e n-e $w-H-U=d=I-:-s=J-8-K-L-M-c$K h=! ! . . ", +" ! ! 9.1-!&|=!&A.d*u&Z=P&&*N-<*S*O-U*t$$*P-j-A*Q-%%O=Q@$-'.`#e $J H-R-S-T-Q*s&e-U-V=$%g-V-W-h=d ! ! . . ", +" ! ! J=A.A.,.C-%*P&!-!-2-<*3-X-O-t$Y-V*>=5=6=j=%%Z-'&$-3#d V=`-w-H-R- ;T-c-s&>-.;+;}-h%V-c$@;#;A%$;! = . . ", +" .%! %;Z=Z=P&&*&*Q&<*f*f*X-~-U*t$5-w=&;A*+-Q-*;=;-;$-3#;;z-K w->;,; ;T-Q*s&';);!;v=~;{;c$K ];^;$;/;! (; . . ", +" - ! Q&Q&L=L=<*f*z%z%X-g*_;4=3=>=&;&;E-x=y=O=:;-;<;3#n-e 8-[;H-R- ;T-Q*s&s=2#8-};|;z-1;A-h=2;A%[;3;! ! . . ", +" & ! ! <*z%z%`=X-g*g*t$$*3=P-i=A*+-6=F-%%O='&$-4;5;n-e $F=^$R- ;T-Q*s&s=2#8-V=f-g-V-6;h=7;A%8;9;0;! ! ( ", +" ! ! g*g*b$_;t$Y-3=V*w=w=A*6=6=Q-O=O='&P=4;3#a;e e b;c; ;G- ;T-Q*s&s=q-8-V=$%g-r-K @;d;A%$;z.e;f;g;! - ", +" ! ! Y-$*h;3=i-w=&;A*+-i;6=%%i%O=Z-m-$-3#5;j;e $k;H-l;R-G-m;Q*s&';2#8-V=f-M-1;c$K #;n;$;[;*+'.o;7&! J@ ", +" p;! w=w=&;5=A*A*q;6=%%y=O=O=:;'&$-4;3#n-9- $b;w-r;s;t;S-u;v;p-s=2#v;V=$%w;z-c$x;h=y;A%z.*+'.^$7&z;! ! ", +" & ! E-E-q;6=6=Q-%%i%]-O='&#-$-3#3#n-n-e $k;t&H-R- ;A;B;'.z-s=H=8-K-L-g-z-c$B-h=2;C;D;E;F;^$7&G;H;! ! s- ", +" - ! x=F-%%%%O=O=l-'&-;#-I;<;J;n-K;e $k;c;H-L; ; ;T-Q*s&E;M;U-8-V=f-g-z-c$K N;y;A%8;E;F;^$g;O;P;G-Q;! = ", +" ( ! ! l-Z-Q@#-'&$-$-4;3#n-j;e e $J c;H-H-R- ;`#I-R;m;p-$;A%+;S;L-w;V-c$B-#;^;C;$;T;*+U;V;G;W;G-Q;Q;! X; ", +" ! ! P=$-$-$-N=3#J;n-9-e Y; $J w-r;l;R-Z;`;T-Q*s&p-G=2#A%z.};L-z-z-W- >d;d A%8;*+.>f;V;+>@>#>Q;Q;Q;! w ", +" ! ! 3#3#;;$>j;9-e `-%>&>w-r;r;L;*>*> ;T-x-s&F=s=e-U-V=d '.=>->;>>>x;#;y;$;,>9;e;f;o;'>@>)>Q;Q;Q;Q;! ! ", +" ! ! 9-9-e e v- $w-&>!>t&H-,;R-Z;_*T-Q*Q*F=p-s=2#8-+;}-^;^$z-c$K h=#;A%A%z.3;.>~>{>+>]>H;^>Q;Q;Q;Q;! ! ", +" (#! $b;/>w-w-w-!>H-R-(> ; ;`#T-Q*_>s&m;G=2#.;8-V=$%h%d G;c$ >h=d ^;:>8;<>F;'.V;'>W;[>}>Q;Q;Q;Q;Q;Q;! * ", +" ~ ! H-H-t&H-H-l;(>|> ;`;T-I-Q*c-s&d-s=2#);R@V=v=L-M-z-A%2=x;h=2;A%$;1>*+'.~>o;G;W;[>Q;Q;Q;Q;Q;Q;Q;Q;! a ", +" & ! R-*>t;|> ; ;`#T-T-Q*c-2>s&s=>-3>q-8-V=S;$%h%w;V-c$A%2=d d :>$;z.*+'.^$7&4>W;5>Q;Q;Q;Q;Q;Q;Q;Q;Q;! x* ", +" - ! ;A;`#T-I-6>Q*c-s&s&d-s=2#2#8-8-V=S;$%~;h%z-7>K x;^;8>! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Q;! ! ", +" - ! I-Q*c-c-R;s&s&F=J-e-2#q-8-9>V=S;=>=>w;z-c$A-! ! ! ! ! ! ! X;- = = * & % % a = a 7 ! ! ! ! ! ! ", +" a ! s&s&d-s=s=2#2#<-<-8-8-V=v=$%|;h%{;z-c$! ! ! ! ! 0>- s- - a>! ", +" & ! 2#2#2#);8-8-8-9>V=v=S;f-h%h%z-z-! ! ! ! ! q$- ", +" : ! 8-8-9>+;V=V=};$%|;7-h%->z-! ! ! ! ! & s- ", +" % ! K-K-$%$%$%|;h%z-b>r-c>! ! ! ! B : ", +" & ! h%w;h%M-z-z-c$c$! ! ! ! l.- ", +" * ! ;>1;c$c$c$A-! ! ! ! x*& ", +" = ! d>K K x;! ! ! ! % ", +" - ! N;e>! ! ! w = ", +" ; ! ! ! ! b = ", +" p;! ! f>a ", +" ! f>- ", +" s-: ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/src/Mod/Surfaces/Icons/SliceIco.png b/src/Mod/Surfaces/Icons/SliceIco.png new file mode 100644 index 000000000..c5f29a85c Binary files /dev/null and b/src/Mod/Surfaces/Icons/SliceIco.png differ diff --git a/src/Mod/Surfaces/Icons/SliceIco.xcf b/src/Mod/Surfaces/Icons/SliceIco.xcf new file mode 100644 index 000000000..c6c0510f2 Binary files /dev/null and b/src/Mod/Surfaces/Icons/SliceIco.xcf differ diff --git a/src/Mod/Surfaces/Icons/SliceIco.xpm b/src/Mod/Surfaces/Icons/SliceIco.xpm new file mode 100644 index 000000000..64a796a3f --- /dev/null +++ b/src/Mod/Surfaces/Icons/SliceIco.xpm @@ -0,0 +1,865 @@ +/* XPM */ +static char * SliceIco_xpm[] = { +"128 128 734 2", +" c None", +". c #008F00", +"+ c #009100", +"@ c #008700", +"# c #007800", +"$ c #007700", +"% c #009900", +"& c #007B00", +"* c #007500", +"= c #007400", +"- c #007F00", +"; c #008D00", +"> c #008000", +", c #007900", +"' c #009F00", +") c #009000", +"! c #007D00", +"~ c #007600", +"{ c #008100", +"] c #008A00", +"^ c #008E00", +"/ c #009300", +"( c #009E00", +"_ c #00B200", +": c #00D600", +"< c #009400", +"[ c #00A100", +"} c #008800", +"| c #007A00", +"1 c #008300", +"2 c #00A500", +"3 c #00C000", +"4 c #00EA00", +"5 c #00FF00", +"6 c #009D00", +"7 c #007C00", +"8 c #008900", +"9 c #00E700", +"0 c #00FD00", +"a c #00FE00", +"b c #009C00", +"c c #00A700", +"d c #007300", +"e c #00A000", +"f c #00C200", +"g c #00F400", +"h c #00F700", +"i c #00FA00", +"j c #00A300", +"k c #007000", +"l c #00C100", +"m c #00DF00", +"n c #00E900", +"o c #00EF00", +"p c #008200", +"q c #008500", +"r c #007100", +"s c #007E00", +"t c #00AE00", +"u c #00CA00", +"v c #00D400", +"w c #00D700", +"x c #00DE00", +"y c #00E800", +"z c #00F600", +"A c #008C00", +"B c #008600", +"C c #007200", +"D c #008400", +"E c #00A900", +"F c #00BE00", +"G c #00C500", +"H c #00CC00", +"I c #00DA00", +"J c #00ED00", +"K c #009200", +"L c #00AD00", +"M c #00B700", +"N c #00C600", +"O c #00D800", +"P c #009800", +"Q c #00A800", +"R c #00BA00", +"S c #00D100", +"T c #00F200", +"U c #00B500", +"V c #00D500", +"W c #00FC00", +"X c #00EE00", +"Y c #00A200", +"Z c #00C900", +"` c #00EB00", +" . c #00F300", +".. c #00FB00", +"+. c #008B00", +"@. c #00E300", +"#. c #00F100", +"$. c #02FF02", +"%. c #03FF03", +"&. c #05F805", +"*. c #00BF00", +"=. c #05FF05", +"-. c #01FF01", +";. c #000000", +">. c #2DEC2D", +",. c #2DEC2C", +"'. c #2CEB2C", +"). c #2BEA2B", +"!. c #2AE92A", +"~. c #BDBDBD", +"{. c #BCBDBD", +"]. c #BCBCBC", +"^. c #BABBBA", +"/. c #FF0000", +"(. c #2AE82A", +"_. c #29E829", +":. c #C1C2C2", +"<. c #C1C1C1", +"[. c #C0C1C1", +"}. c #C0C0C0", +"|. c #BFC0C0", +"1. c #BFBFBF", +"2. c #BEBDBE", +"3. c #BCBDBC", +"4. c #BBBBBB", +"5. c #BABABA", +"6. c #2CEA2B", +"7. c #C3C3C3", +"8. c #C4C3C3", +"9. c #C3C3C4", +"0. c #C3C4C3", +"a. c #C3C2C3", +"b. c #C2C1C2", +"c. c #C1C1C2", +"d. c #BFC0BF", +"e. c #BEBEBF", +"f. c #BDBDBE", +"g. c #BDBCBC", +"h. c #BCBBBB", +"i. c #BABAB9", +"j. c #B9B9B9", +"k. c #2BEB2B", +"l. c #2BE92B", +"m. c #28E728", +"n. c #C2C2C3", +"o. c #C4C4C4", +"p. c #C5C5C5", +"q. c #C4C5C5", +"r. c #C5C4C4", +"s. c #BEBEBE", +"t. c #BDBEBE", +"u. c #BBBABA", +"v. c #B8B8B8", +"w. c #29E728", +"x. c #C2C2C2", +"y. c #C3C3C2", +"z. c #C5C6C6", +"A. c #C6C6C6", +"B. c #C7C6C6", +"C. c #C6C6C5", +"D. c #C6C5C6", +"E. c #C4C5C4", +"F. c #C3C4C4", +"G. c #C3C2C2", +"H. c #C1C0C0", +"I. c #C0BFBF", +"J. c #BDBCBD", +"K. c #BBBCBB", +"L. c #B8B8B9", +"M. c #B8B8B7", +"N. c #28E829", +"O. c #27E728", +"P. c #C2C2C1", +"Q. c #C2C3C2", +"R. c #C5C5C4", +"S. c #C7C7C7", +"T. c #C8C8C7", +"U. c #C6C6C7", +"V. c #C5C4C5", +"W. c #BFBFBE", +"X. c #BABBBB", +"Y. c #BAB9BA", +"Z. c #B8B7B8", +"`. c #B7B7B6", +" + c #2BEB2C", +".+ c #2AEA2A", +"++ c #27E627", +"@+ c #C1C1C0", +"#+ c #C9C8C9", +"$+ c #C9C9C9", +"%+ c #C9C9C8", +"&+ c #C8C9C9", +"*+ c #C8C8C8", +"=+ c #C7C6C7", +"-+ c #B7B7B7", +";+ c #B6B5B5", +">+ c #2CEA2C", +",+ c #C7C7C6", +"'+ c #C9CACA", +")+ c #CACBCB", +"!+ c #CACBCA", +"~+ c #CAC9CA", +"{+ c #C7C7C8", +"]+ c #BCBBBC", +"^+ c #BABABB", +"/+ c #B9B8B9", +"(+ c #B6B6B6", +"_+ c #B5B4B5", +":+ c #2AE929", +"<+ c #C0C0C1", +"[+ c #C8C9C8", +"}+ c #CACACA", +"|+ c #CBCBCB", +"1+ c #CCCCCC", +"2+ c #C9CAC9", +"3+ c #C9C8C8", +"4+ c #BFBEBE", +"5+ c #B5B5B4", +"6+ c #B4B4B3", +"7+ c #04F204", +"8+ c #CBCACB", +"9+ c #CDCECD", +"0+ c #CECDCE", +"a+ c #CDCDCD", +"b+ c #CBCBCC", +"c+ c #BBBBBA", +"d+ c #B7B6B6", +"e+ c #B5B4B4", +"f+ c #B3B3B3", +"g+ c #B2B2B2", +"h+ c #26E526", +"i+ c #C6C7C6", +"j+ c #CACACB", +"k+ c #CFCFCE", +"l+ c #C8C7C8", +"m+ c #BAB9B9", +"n+ c #B7B8B8", +"o+ c #B6B6B7", +"p+ c #B5B5B5", +"q+ c #B3B3B4", +"r+ c #B2B2B1", +"s+ c #29E929", +"t+ c #C4C4C3", +"u+ c #C9C9CA", +"v+ c #CECECE", +"w+ c #CBCCCC", +"x+ c #C2C1C1", +"y+ c #C0C1C0", +"z+ c #BEBEBD", +"A+ c #BCBCBB", +"B+ c #B7B8B7", +"C+ c #B6B7B6", +"D+ c #B4B5B4", +"E+ c #B0B1B0", +"F+ c #28E729", +"G+ c #C7C8C8", +"H+ c #CACAC9", +"I+ c #CBCCCB", +"J+ c #BFBEBF", +"K+ c #B4B4B4", +"L+ c #B3B4B3", +"M+ c #B0B0B0", +"N+ c #AEAFAF", +"O+ c #C5C5C6", +"P+ c #CBCACA", +"Q+ c #C6C5C5", +"R+ c #C2C3C3", +"S+ c #BEBFBE", +"T+ c #B1B2B1", +"U+ c #AFAEAF", +"V+ c #ADADAD", +"W+ c #2AE829", +"X+ c #25E425", +"Y+ c #B8B9B8", +"Z+ c #B5B6B5", +"`+ c #B1B1B1", +" @ c #AEAFAE", +".@ c #27E526", +"+@ c #26E525", +"@@ c #C8C7C7", +"#@ c #C7C8C7", +"$@ c #C5C6C5", +"%@ c #C4C4C5", +"&@ c #B9BAB9", +"*@ c #B6B7B7", +"=@ c #B0B0AF", +"-@ c #AEAEAE", +";@ c #ADADAC", +">@ c #ABACAB", +",@ c #27E527", +"'@ c #26E425", +")@ c #B9B9B8", +"!@ c #B1B0B1", +"~@ c #AFB0AF", +"{@ c #ADACAC", +"]@ c #ABAAAB", +"^@ c #28E627", +"/@ c #26E527", +"(@ c #C1C0C1", +"_@ c #B2B1B2", +":@ c #AFAFAF", +"<@ c #AEADAE", +"[@ c #ACACAC", +"}@ c #ABAAAA", +"|@ c #AAA9A9", +"1@ c #27E727", +"2@ c #25E325", +"3@ c #B8B9B9", +"4@ c #B7B7B8", +"5@ c #B3B3B2", +"6@ c #ADACAD", +"7@ c #AAAAAB", +"8@ c #A9A9A9", +"9@ c #A7A7A8", +"0@ c #24E324", +"a@ c #084808", +"b@ c #BDBDBC", +"c@ c #B5B5B6", +"d@ c #ACACAD", +"e@ c #ABABAB", +"f@ c #A9AAAA", +"g@ c #A8A8A8", +"h@ c #A7A7A6", +"i@ c #C0BFC0", +"j@ c #AFB0B0", +"k@ c #ABACAC", +"l@ c #AAAAAA", +"m@ c #A8A7A8", +"n@ c #A7A7A7", +"o@ c #A5A5A5", +"p@ c #BBBABB", +"q@ c #B9BABA", +"r@ c #ADAEAE", +"s@ c #A6A6A6", +"t@ c #A4A4A5", +"u@ c #BDBEBD", +"v@ c #B1B2B2", +"w@ c #B0AFB0", +"x@ c #AEAEAF", +"y@ c #A6A7A6", +"z@ c #A5A6A5", +"A@ c #A4A4A4", +"B@ c #25E526", +"C@ c #25E424", +"D@ c #23E224", +"E@ c #23E223", +"F@ c #B4B3B3", +"G@ c #AFAFAE", +"H@ c #AEADAD", +"I@ c #A9A8A8", +"J@ c #A7A8A7", +"K@ c #A4A5A5", +"L@ c #A3A3A3", +"M@ c #A2A2A3", +"N@ c #25E324", +"O@ c #04E804", +"P@ c #B9B8B8", +"Q@ c #B2B1B1", +"R@ c #ACABAB", +"S@ c #A5A4A4", +"T@ c #A2A3A3", +"U@ c #A2A2A1", +"V@ c #B9B9BA", +"W@ c #B1B0B0", +"X@ c #AAAAA9", +"Y@ c #A6A6A5", +"Z@ c #A5A5A4", +"`@ c #A1A1A1", +" # c #9FA0A0", +".# c #25E525", +"+# c #24E424", +"@# c #23E324", +"## c #23E122", +"$# c #B3B2B3", +"%# c #A9A9AA", +"&# c #A9A9A8", +"*# c #A8A7A7", +"=# c #A6A7A7", +"-# c #A2A2A2", +";# c #A1A0A0", +"># c #9F9F9F", +",# c #22E122", +"'# c #B1B1B0", +")# c #AFAFB0", +"!# c #ABABAA", +"~# c #A8A8A7", +"{# c #A7A6A6", +"]# c #A4A5A4", +"^# c #9F9FA0", +"/# c #9E9F9E", +"(# c #9D9D9D", +"_# c #23E123", +":# c #B2B2B3", +"<# c #A5A6A6", +"[# c #A5A4A5", +"}# c #A0A09F", +"|# c #9F9E9F", +"1# c #9C9D9C", +"2# c #24E325", +"3# c #24E223", +"4# c #23E222", +"5# c #B2B3B3", +"6# c #B1B1B2", +"7# c #AEAEAD", +"8# c #AAA9AA", +"9# c #A8A9A9", +"0# c #A4A4A3", +"a# c #A3A2A3", +"b# c #9D9E9E", +"c# c #9C9C9D", +"d# c #9C9B9B", +"e# c #21E021", +"f# c #AFAEAE", +"g# c #ABABAC", +"h# c #A3A4A4", +"i# c #A09F9F", +"j# c #9E9E9E", +"k# c #9C9C9C", +"l# c #9A9B9B", +"m# c #99999A", +"n# c #23E323", +"o# c #21E022", +"p# c #ADAEAD", +"q# c #ACADAD", +"r# c #AAABAA", +"s# c #A9A8A9", +"t# c #A7A8A8", +"u# c #9C9D9D", +"v# c #9B9B9B", +"w# c #9A999A", +"x# c #999898", +"y# c #24E224", +"z# c #AAABAB", +"A# c #A1A2A2", +"B# c #A0A1A0", +"C# c #9E9E9F", +"D# c #9D9E9D", +"E# c #9B9C9B", +"F# c #9A9B9A", +"G# c #999999", +"H# c #989898", +"I# c #22E222", +"J# c #22E021", +"K# c #20E020", +"L# c #ADADAE", +"M# c #ACADAC", +"N# c #A8A9A8", +"O# c #A2A3A2", +"P# c #A2A1A2", +"Q# c #A1A1A0", +"R# c #A0A0A0", +"S# c #9F9E9E", +"T# c #9E9E9D", +"U# c #9B9B9C", +"V# c #9A9A9A", +"W# c #979797", +"X# c #24E323", +"Y# c #20DF20", +"Z# c #ACABAC", +"`# c #A5A5A6", +" $ c #A09FA0", +".$ c #9D9C9D", +"+$ c #969696", +"@$ c #959595", +"#$ c #21DF21", +"$$ c #A4A3A4", +"%$ c #9FA09F", +"&$ c #9F9F9E", +"*$ c #9C9B9C", +"=$ c #969796", +"-$ c #959596", +";$ c #949494", +">$ c #A8A8A9", +",$ c #A3A3A2", +"'$ c #9E9D9D", +")$ c #9B9A9B", +"!$ c #999A9A", +"~$ c #979798", +"{$ c #939393", +"]$ c #1FDE1F", +"^$ c #A4A3A3", +"/$ c #A1A1A2", +"($ c #A0A1A1", +"_$ c #999998", +":$ c #989897", +"<$ c #929393", +"[$ c #22E022", +"}$ c #A6A5A5", +"|$ c #A1A2A1", +"1$ c #9D9D9E", +"2$ c #989797", +"3$ c #969695", +"4$ c #959495", +"5$ c #929293", +"6$ c #919291", +"7$ c #909190", +"8$ c #20DF21", +"9$ c #1FDF20", +"0$ c #A3A3A4", +"a$ c #9E9F9F", +"b$ c #999A99", +"c$ c #989998", +"d$ c #969697", +"e$ c #969596", +"f$ c #949594", +"g$ c #949393", +"h$ c #929392", +"i$ c #919191", +"j$ c #909090", +"k$ c #8F8F8F", +"l$ c #20E021", +"m$ c #A0A0A1", +"n$ c #9D9D9C", +"o$ c #959594", +"p$ c #949394", +"q$ c #939292", +"r$ c #8F9090", +"s$ c #8E8F8E", +"t$ c #21E121", +"u$ c #1FDD1F", +"v$ c #969595", +"w$ c #959494", +"x$ c #929292", +"y$ c #929192", +"z$ c #909191", +"A$ c #8F8F90", +"B$ c #8E8E8E", +"C$ c #8D8D8D", +"D$ c #20DE1F", +"E$ c #1EDD1E", +"F$ c #9C9C9B", +"G$ c #9B9B9A", +"H$ c #929191", +"I$ c #8F908F", +"J$ c #8E8E8F", +"K$ c #8C8C8C", +"L$ c #9A9A9B", +"M$ c #9A9A99", +"N$ c #979898", +"O$ c #979697", +"P$ c #949595", +"Q$ c #929291", +"R$ c #908F8F", +"S$ c #8E8E8D", +"T$ c #8C8D8C", +"U$ c #8B8B8B", +"V$ c #8A8A8A", +"W$ c #1EDE1F", +"X$ c #059A05", +"Y$ c #9D9C9C", +"Z$ c #989798", +"`$ c #959696", +" % c #939493", +".% c #919292", +"+% c #8A8B8A", +"@% c #898989", +"#% c #1FDF1F", +"$% c #1DDC1D", +"%% c #9B9C9C", +"&% c #949493", +"*% c #919090", +"=% c #8F8F8E", +"-% c #8C8C8D", +";% c #898988", +">% c #1FDE20", +",% c #1DDD1E", +"'% c #969797", +")% c #90908F", +"!% c #8D8D8E", +"~% c #89898A", +"{% c #888888", +"]% c #878787", +"^% c #1FDD1E", +"/% c #1EDD1D", +"(% c #017501", +"_% c #939494", +":% c #8E8D8D", +"<% c #8D8C8D", +"[% c #868686", +"}% c #1CDC1D", +"|% c #004C00", +"1% c #979796", +"2% c #8E8F8F", +"3% c #898A8A", +"4% c #898889", +"5% c #858585", +"6% c #1DDC1C", +"7% c #1CDB1C", +"8% c #959695", +"9% c #939293", +"0% c #919091", +"a% c #8C8B8C", +"b% c #8A8989", +"c% c #878788", +"d% c #848585", +"e% c #848484", +"f% c #838383", +"g% c #1EDC1D", +"h% c #8C8B8B", +"i% c #898888", +"j% c #878887", +"k% c #878686", +"l% c #858686", +"m% c #858484", +"n% c #848483", +"o% c #828283", +"p% c #828282", +"q% c #1EDC1E", +"r% c #1CDA1C", +"s% c #888889", +"t% c #868586", +"u% c #848485", +"v% c #838282", +"w% c #808180", +"x% c #1CDC1C", +"y% c #1BDA1B", +"z% c #020A02", +"A% c #8E8D8E", +"B% c #8D8D8C", +"C% c #8C8C8B", +"D% c #888788", +"E% c #818182", +"F% c #818080", +"G% c #808080", +"H% c #1BDB1B", +"I% c #1B901B", +"J% c #000600", +"K% c #898A89", +"L% c #858685", +"M% c #858584", +"N% c #828383", +"O% c #818281", +"P% c #7F807F", +"Q% c #7F7F7E", +"R% c #1BDB1C", +"S% c #8D8E8D", +"T% c #8B8B8A", +"U% c #868786", +"V% c #858586", +"W% c #818282", +"X% c #818181", +"Y% c #7F7F7F", +"Z% c #7F7E7E", +"`% c #7E7D7E", +" & c #1DDB1D", +".& c #1BDA1C", +"+& c #8D8C8C", +"@& c #8B8A8A", +"#& c #8A8A89", +"$& c #878786", +"%& c #838382", +"&& c #7E7E7E", +"*& c #7E7D7D", +"=& c #7C7C7D", +"-& c #8A8B8B", +";& c #888988", +">& c #888787", +",& c #868685", +"'& c #7E7E7F", +")& c #7D7E7E", +"!& c #7D7D7D", +"~& c #7C7C7C", +"{& c #7B7B7B", +"]& c #1CDB1B", +"^& c #878687", +"/& c #848384", +"(& c #808081", +"_& c #7D7D7C", +":& c #7C7C7B", +"<& c #7A797A", +"[& c #257225", +"}& c #868787", +"|& c #838484", +"1& c #828382", +"2& c #808181", +"3& c #807F7F", +"4& c #7E7F7E", +"5& c #7D7C7D", +"6& c #7A7B7B", +"7& c #797A7A", +"8& c #797979", +"9& c #848383", +"0& c #828181", +"a& c #818081", +"b& c #7C7D7D", +"c& c #7B7C7C", +"d& c #7A7A7A", +"e& c #79797A", +"f& c #787878", +"g& c #7D7D7E", +"h& c #7B7C7B", +"i& c #787979", +"j& c #828281", +"k& c #807F80", +"l& c #7B7B7A", +"m& c #04FD04", +"n& c #818180", +"o& c #7E7E7D", +"p& c #7D7C7C", +"q& c #7D7E7D", +"r& c #7F7E7F", +"s& c #7C7D7C", +"t& c #7C7B7C", +"u& c #7B7B7C", +"v& c #7C7B7B", +"w& c #7B7A7B", +"x& c #797978", +"y& c #797878", +"z& c #021902", +"A& c #00BD00", +"B& c #00CF00", +"C& c #009700", +"D& c #00D000", +"E& c #00DC00", +"F& c #00E500", +"G& c #00F500", +"H& c #00A400", +"I& c #00B400", +"J& c #00E400", +"K& c #00F900", +"L& c #00B100", +"M& c #00C400", +"N& c #009600", +"O& c #00E600", +"P& c #00B000", +"Q& c #00B800", +"R& c #00C300", +"S& c #00B300", +"T& c #009500", +"U& c #00E100", +"V& c #00BB00", +"W& c #00F800", +"X& c #009B00", +"Y& c #009A00", +" ", +" ", +" ", +" ", +" ", +" . + @ # $ # ", +" % . & * = = $ - ; > , ", +" ' ) ! ~ ~ $ & { ] ^ / ( _ : < ~ ", +" [ } , # # # | ! - 1 + 2 3 4 5 5 5 5 5 6 * ", +" [ } # , , , , # # 7 8 [ 3 9 0 a a a 5 5 5 5 5 5 b * ", +" c ^ 7 | & 7 & $ = d $ @ e f 4 g g h i a 5 5 5 5 5 5 5 5 5 5 b * ", +" j } , ! - - , = k k $ @ e l m 9 n o h 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" 1 7 p q 1 , r k d s / t u v w x y z 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" 8 A B | C r ~ D < E F G H I J 0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" K K 1 ~ d C $ { . e L M N O J 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" P . ! * = = # > A P ' Q R S T 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ( A , ~ ~ , 7 { } A + ' U V W 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" e B # # # , & ! s D < E G n a 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ; , , # $ ! A 2 N X 0 0 0 a 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" A 7 Y Z ` T .z ..5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.+.@...5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.. g 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 $.%.&.*.*.*.*.*.*.*.*.*.*.*.=.-.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 $.;.;.;.;.;.;.;.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 -.;.;.;.;.;.;.;.;.;.;.;.;.*.>.,.'.'.'.).).).!.!.*.*.*.*.*.*.$.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 ;.;.;.;.;.;.;.;.;.;.~.{.].^././././.>.'.'.'.'.).).).!.!.(._._.*.*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 ;.;.;.;.;.;.;.;.:.<.[.}.|.1.2.3.4.5././././.>.'.'.'.6.).).!.!.!._._._.*.*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ ;.;.;.;.;.;.7.8.9.0.7.a.b.c.[.d.e.f.g.h.i.j./././.>.'.'.k.).).l.!.!.!._._.m.m.*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.;.;.n.0.o.o.p.p.q.r.o.8.a.b.<.1.s.t.].u.i.v./././.'.'.'.).).).!.!.!._._.w.m.m.*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.;.x.y.o.q.p.z.A.B.A.C.D.E.F.G.:.H.I.s.J.K.5.L.M./././.'.'.).).).!.!.!._._.N.m.m.O.*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.;.}.P.Q.8.R.C.B.S.S.T.S.S.U.C.V.o.x.<.}.W.~.g.X.Y.Z.`./././.'. +).)..+!.!._._._.m.m.O.++*.*.%.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.s.I.@+x.9.o.A.S.T.#+$+$+%+&+*+=+D.R.7.x.<.d.t.{.4.i.j.-+;+/././.>+).)..+!.!._._._.m.m.m.++*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.;.W.}.P.7.o.C.,+*+$+'+)+)+!+~+$+{+,+p.o.n.c.}.s.~.]+^+/+Z.(+_+/././.).).).!.!.:+_._.m.m.m.++++*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.;.<+P.9.E.A.{+[+}+|+1+1+1+)+2+3+S.A.o.y.P.}.4+~.].^.j.v.(+5+6+/././.).).!.!.(._._.m.m.m.++++++*.*.7+5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.x.o.q.B.*+$+8+1+9+0+a+b+}+$+T.A.o.8.x.}.1.t.].c+j.v.d+e+f+g+/././.).!.!.!._._.m.m.m.++++++h+*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.x.0.p.i+*+2+j+1+0+k+a+1+}+$+l+A.p.7.:.H.1.~.].u.m+n+o+p+q+r+/././.).!.!.s+_._.w.m.m.++++++h+*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.t+p.A.*+u+)+1+a+v+a+w+!+#+*+A.p.7.x+y+1.z+A+u.j.B+C+D+q+g+E+/././.!.!.!._._.F+m.m.++++++h+h+*.*.&.5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.V.C.G+[+H+|+1+1+I+|+'+*+S.A.V.7.:.}.J+~.]+5.j.n+(+K+L+g+M+N+/././.!.(._._.m.m.m.++++++h+h+h+*.*.5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.;.;.;.O+S.*+$+}+P+)+j+'+&+G+i+Q+o.R+<.}.S+~.4.u.j.B+(+K+f+T+M+U+V+/./.!.W+_._.m.m.m.++++++h+h+X+*.*.*.5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ ;.;.R.A.=+T.#+$+$+$+[+T.S.Q+r.7.x.H.1.s.{.]+5.Y+-+Z+K+f+`+M+ @V+/././.!._._.m.m.m.++++.@h+h++@X+*.*.5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ ;.;.;.p.A.,+G+G+@@*+#@B.$@%@8.Q.x+}.S+f.].4.&@v.*@;+q+f+`+=@-@;@>@/././._._.m.m.m.++++,@h+h+'@X+*.*.*.5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.;.;.F.p.Q+D.A.U.,+A.p.R.o.y.x+H.d.s.~.]+5.)@M.(+p+f+g+!@~@-@{@]@/././._._.m.m.^@++++/@h+h+X+X+X+*.*.5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.;.;.;.9.o.o.p.p.r.V.o.8.Q.x.(@d.J+~.].^.m+v.`.Z+K+f+_@M+:@<@[@}@|@/././.N.m.m.1@++++h+h+h+X+X+2@*.*.*.5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 ;.;.x.a.7.7.9.8.7.n.x.<.H.|.S+f.].4.5.3@4@C+p+q+5@`+M+-@6@[@7@8@9@/./.m.m.m.++++++h+h+h+X+X+2@0@*.*.5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 a@;.;.<.x.b.x.x.P.b.@+}.1.S+t.b@K.5.j.v.`.c@K+f+g+M+:@-@d@e@f@g@h@/././.m.m.++++++h+h+X+X+X+X+0@*.*.*.5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 ;.;.|.}.@+}.[.<+i@|.W.s.t.3.K.5.m+L.-+(+_+f+5@`+j@-@V+k@l@8@m@n@o@/./.m.m.++++/@h+h+X+X+X+0@0@0@*.*.5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 ;.;.;.1.1.1.1.1.J+s.~.~.].4.p@q@L.-+(+p+K+f+_@E+:@r@[@e@l@g@n@s@t@/././.++++++h+h+h+X+X+X+0@0@0@*.*.*.5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 ;.;.t.s.t.t.u@~.b@].K.4.5.j.v.v.(+;+5+f+v@E+w@x@V+[@}@|@g@y@z@A@/././.++++++h+h+B@X+X+C@0@0@D@E@*.*.5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 ;.;.;.].].g.].A+h.c+5.m+/+v.-+C+Z+K+F@5@`+M+G@H@[@e@l@I@J@s@K@L@M@/./.++++,@h+h++@X+X+N@0@0@E@E@*.*.O@5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 ;.;.4.u.4.p@^.i.i.j.P@-+-+(+p+K+F@g+Q@M+:@r@;@R@7@8@g@n@o@S@T@U@/././.++h+h+h+X+X+X+0@0@0@E@E@E@*.*.5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 ;.;.j.V@j.j.)@Y+v.-+-+o+Z+e+K+f+g+T+W@:@-@V+k@e@X@g@n@Y@Z@L@M@`@ #/./.++h+h+.#X+X++#0@0@@#E@E@##*.*.-.5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 O@;.;.v.B+M.n+-+*@(+;+p+D+6+$#g+`+M+:@-@V+[@e@%#&#*#=#o@L@-#U@;#>#/./.h+h+h+X+X+X+0@0@0@E@E@E@,#*.*.*.5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 ;.;.C+(+(+(+(+c@p+K+L+f+g+T+'#)#:@-@H@d@!#l@&#~#{#Y@]#L@-#`@^#/#(#/./.h+h+X+X+X+0@0@0@E@E@_#,#,#*.*.5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 ;.;.;.p+p+e+K+K+q+f+:#r+`+E+M+N+-@V+[@e@l@8@g@n@<#[#L@-#`@}#|#(#1#/./.h+X+X+X+2#0@0@3#E@E@4#,#,#*.*.&.5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 $.;.;.L+F@q+$#5#g+6#Q@`+M+:@-@7#6@k@e@8#9#m@n@s@]#0#a#`@;#>#b#c#d#/./.X+X+X+N@0@0@0@E@E@E@,#,#,#e#*.*.5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 ;.;.g+v@v@`+`+'#E+w@:@f#7#V+[@g#e@l@&#g@n@s@o@h#L@-#;#i#j#(#k#l#m#/./.X+X+2#0@0@n#E@E@,#,#,#o#e#*.*.-.5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 ;.;.;.!@M+M+j@~@N+f#p#V+q#[@e@r#8#s#t#n@s@o@A@L@U@`@ #/#j#u#v#w#x#/./.X+2#0@0@y#E@E@E@,#,#,#e#e#*.*.*.5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 $.;.;.:@:@f#-@-@p#V+6@[@k@z#8@8@g@m@s@Y@K@h#L@A#B#^#C#D#k#E#F#G#H#/./.X+0@0@0@E@E@E@I#,#,#J#e#e#K#*.*.5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 ;.;.V+L#p#V+M#[@>@e@7@l@X@N#m@n@s@o@t@A@O#P#Q#R#S#T#1#U#V#G#H#W#/././.0@0@X#E@E@E@,#,#,#e#e#e#Y#*.*.$.5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 ;.;.[@[@Z#Z#>@e@z#%#|@8@g@n@{#s@`#S@L@O#-#Q# $C#T#.$k#V#m#x#W#+$@$/./.0@0@E@E@E@,#,#,#o#e#e##$Y#*.*.*.5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 &.;.;.e@7@l@X@8@9#N#t#n@n@s@<#t@$$L@O#`@B#%$&$j#(#*$v#m#x#H#=$-$;$/./.0@E@E@E@_#,#,#,#e#e#e#Y#Y#Y#*.*.5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 ;.;.8@8@8@>$g@9@n@=#s@Y@o@A@0#,$-#`@R#>#&$'$k#*$)$!$x#~$=$@$;${$/./.0@E@E@E@,#,#,#o#e#e#Y#Y#Y#]$*.*.-.5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 ;.;.n@9@n@{#h@y@z@`#]#A@^$L@O#/$($R#>#j#(#u#E#V#G#_$:$=$-$;${$<$/././.E@E@,#,#,#[$e#e#e#Y#Y#Y#]$*.*.*.5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 ;.;.;.s@s@<#}$o@t@A@^$L@-#|$`@R#%$|#j#1$k#d#F#G#G#2$+$3$4${$5$6$7$/./.E@_#,#,#,#e#e#e#8$Y#Y#9$]$]$*.*.5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 %.;.;.A@S@A@0#0$L@L@|$-#`@;# $>#a$(#.$k#v#V#b$c$W#d$e$f$g$h$i$j$k$/./.##,#,#,#e#e#e#l$Y#Y#Y#]$]$]$*.*.-.b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 ;.;.0$a#-#M@-#A#`@m$B#^#>#/#j#n$1#v#)$V#G#x#W#+$3$o$p$q$i$i$r$s$/./.,#,#,#t$e#e#e#Y#Y#Y#]$]$]$u$*.*.*.b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 ;.;.P#P#`@m$`@R# #>#>#j#'$(#k#v#v#F#m#G#H#W#+$v$w${$x$y$z$A$B$C$/./.,#,#[$e#e#e#K#Y#Y#D$]$]$]$E$E$*.*.b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 ;.;.;.R#R#^#%$&$S#j#(#.$u#F$v#G$V#G#H#W#d$3$@$;${$h$H$7$I$J$C$K$/././.,#e#e#e#8$Y#Y#Y#]$]$]$E$E$E$*.*.b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 %.;.;.&$a$j#T#j#(#c#k#E#v#L$M$G#x#N$O$+$-$P$p${$Q$i$j$R$B$S$T$U$V$/./.e#e#e#e#Y#Y#Y#]$]$]$W$E$E$E$*.*.X$* ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 ;.;.'$(#(#Y$F$*$v#F#F#b$G#c$Z$N$+$`$4$f$ %x$.%i$A$k$B$C$K$U$+%@%/./.e#e#l$Y#Y#Y##%]$]$W$E$E$E$$%$%*.= * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 ;.;.%%E#E#v#L$L$V#G#_$_$Z$2$O$+$e$;$&%{$<$Q$*%I$=%B$C$-%U$V$@%;%/./.e#e#Y#Y#Y#>%]$]$]$E$E$E$,%$%$%*.= * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 ;.;.V#V#!$!$G#_$H#H#Z$W#'%3$@$f$&%&%h$y$z$j$)%=%!%C$K$U$V$~%{%]%/./.e#Y#Y#Y#Y#]$]$]$^%E$E$/%$%$%$%*.= (% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 ;.;.;.G#H#H#:$Z$W#W#+$-$@$P$_%{$<$x$H$i$j$k$B$:%<%K$U$V$;%{%]%[%/./.Y#Y#Y#Y#]$]$]$W$E$E$E$$%$%$%}%*.= |% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 $.;.;.W#W#1%'%+$`$@$4$;$;${$x$x$Q$j$j$k$2%:%C$T$U$U$3%4%{%]%[%5%/./.Y#Y#Y#]$]$]$u$E$E$E$$%$%$%6%7%7%= |% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 ;.;.`$-$8%@$o$;$&%{$<$9%x$i$0%j$A$s$B$C$<%a%U$V$b%{%c%]%[%d%e%f%/./.Y#]$]$]$^%E$E$E$g%$%$%$%7%7%7%= |% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 ;.;.;$;$&% %{${$5$x$i$z$j$j$)%k$B$:%C$K$h%V$3%@%i%j%k%l%m%n%o%p%/./.]$]$]$]$E$E$E$q%$%$%$%7%7%7%r%= |% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 ;.;.h$h$5$x$x$Q$i$0%7$j$k$J$B$C$C$K$K$U$V$b%s%{%]%[%t%u%e%v%p%w%/./.]$]$]$E$E$E$/%$%$%$%x%7%7%7%y%= |%z% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 ;.;.y$H$i$i$j$j$r$k$=%J$A%!%B%K$C%U$V$b%4%{%D%[%[%5%e%f%o%E%F%G%/./.]$]$E$E$E$q%$%$%$%x%7%7%7%H%y%I%|%J% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 ;.;.;.r$A$R$J$k$B$B$:%C$K$a%U$U$V$K%4%{%{%]%[%L%M%n%N%o%O%w%P%Q%/./.W$E$E$E$,%$%$%$%$%7%7%7%R%y%y%I%|%J% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 $.;.;.2%B$B$B$S%C$B%K$h%U$T%V$K%@%i%c%]%U%V%5%e%f%o%W%X%G%Y%Z%`%/./.E$E$E$E$$%$%$% &7%7%7%.&y%y%y%I%|%J% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.C$C$-%+&a%h%U$+%@&#&@%i%i%D%$&$&[%5%m%f%%&p%O%F%Y%Y%&&*&=&/./.E$E$q%$%$%$%6%7%7%7%.&y%y%y%y%I%|%J% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.h%h%U$U$-&V$@%#&;&s%{%>&]%U%,&5%e%e%%&o%p%X%G%P%'&)&!&~&{&/./.E$$%$%$%$% &7%7%7%]&y%y%y%y%y%I%|%J% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.V$3%~%@%@%@%;&{%]%^&[%[%L%5%e%/&f%N%W%X%(&G%Y%&&!&_&:&{&<&/./.,%$%$%$%x%7%7%7%R%y%y%y%y%y%y%I%[&J%;. ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.{%{%s%{%{%c%^&}&[%V%5%M%e%|&f%1&p%X%2&3&Y%4&`%5&~&{&6&7&8&/./.$%$%$%7%7%7%7%R%y%y%y%y%y%y%y%I%[&J%;. ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.]%$&k%}&[%[%L%5%5%e%|&9&f%p%E%0&a&G%Y%Q%&&!&b&c&{&d&e&f&f&/./.$%$%7%7%7%7%R%y%y%y%y%y%y%y%y%I%[&J%;. ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.[%t%L%5%M%d%e%|&f%f%1&p%X%X%G%G%Y%Q%&&g&!&~&h&d&7&i&;.;.;.;.;.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.= [&J%;. ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.M%e%|&|&n%f%f%%&j&O%X%a&G%k&Y%Q%*&*&b&~&{&l&;.;.;.;.;.;.;.;.;.*.*.*.*.*.7+m&O@*.*.*.*.*.*.*.= |%J%;. ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.f%f%1&p%p%X%X%n&n&G%G%Y%4&&&o&!&p&~&{&;.;.;.;.;.;.;.;.$.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 -.X$|%J%;. ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.X%X%X%2&G%G%G%k&Y%4&Q%)&!&!&~&~&;.;.;.;.;.;.;.$.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.G%G%k&P%Y%Y%Z%&&o&q&!&=&~&;.;.;.;.;.;.;.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.r&r&&&&&&&o&!&~&s&t&:&;.;.;.;.;.;.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.!&b&!&5&~&~&{&{&;.;.;.;.;.;.-.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.u&v&{&{&{&l&;.;.;.;.;.;.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.w&d&d&7&;.;.;.;.;.%.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.x&y&;.;.;.;.;.-.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.;.;.;.;.;.-.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.;.;.;.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.;.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 z&;.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.) h 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" A D A&B&x T a 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ; ~ r ! C&U D&O E&9 z 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" | > s # d k d > 6 f F&n J G&0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" H&} , | & & # * d 7 ) I&J&z h K&0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" e D # , , , , # s + L&E&5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" c K & # # , 7 > 1 A Y M&o 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" N&s $ * $ & 1 A K 6 U w 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" P ; & = = $ { . ' j t M&O&0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" . ) > * C r # @ 6 P&Q&R&I g 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" } } s d k d s P S&Z D&x .5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.& > D { ~ r r s T&M v E&U&` i 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" 6 7 & - s # C k $ } 2 H 4 ` o z 0 5 5 5 5 5 5 5 5 5 5 b * ", +" H&@ # & & | $ * = - T&V&O&h W&i W 5 5 5 5 5 5 b * ", +" X&s , , , , , | 7 } j Z G&5 5 5 5 5 b * ", +" H&) & $ $ $ & > 1 8 Y&R F&5 ( * ", +" 6 } $ ~ * # p +.C&p , ", +" C&+ 7 = d ~ , ", +" ; ^ 1 ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/src/Mod/Surfaces/InitGui.py b/src/Mod/Surfaces/InitGui.py new file mode 100644 index 000000000..1a614efaf --- /dev/null +++ b/src/Mod/Surfaces/InitGui.py @@ -0,0 +1,38 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +class SurfWorkbench ( Workbench ): + """ @brief Workbench of Ship design module. Here toolbars & icons are append. """ + from surfUtils import Paths, Translator + import SurfGui + + Icon = Paths.iconsPath() + "/Ico.png" + MenuText = str(Translator.translate("Surface tools")) + ToolTip = str(Translator.translate("Surface tools")) + + def Initialize(self): + # ToolBar + list = ["Surf_IsoCurve", "Surf_SliceCurve", "Surf_Border", "Surf_Convert"] + self.appendToolbar("Surface tools",list) + + # Menu + list = ["Surf_IsoCurve", "Surf_SliceCurve", "Surf_Border", "Surf_Convert"] + self.appendMenu("Surface tools",list) +Gui.addWorkbench(SurfWorkbench()) diff --git a/src/Mod/Surfaces/SurfGui.py b/src/Mod/Surfaces/SurfGui.py new file mode 100644 index 000000000..9f1832bdd --- /dev/null +++ b/src/Mod/Surfaces/SurfGui.py @@ -0,0 +1,75 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +from PyQt4 import QtCore, QtGui +import FreeCAD, FreeCADGui, os + +class IsoCurve: + def Activated(self): + import surfISOCurve + surfISOCurve.load() + + def GetResources(self): + from surfUtils import Paths, Translator + IconPath = Paths.iconsPath() + "/IsoCurveIco.png" + MenuText = str(Translator.translate('Get ISO curve')) + ToolTip = str(Translator.translate('Get ISO curve from surface')) + return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} + +class SliceCurve: + def Activated(self): + import surfSlice + surfSlice.load() + + def GetResources(self): + from surfUtils import Paths, Translator + IconPath = Paths.iconsPath() + "/SliceIco.png" + MenuText = str(Translator.translate('Get surface slice')) + ToolTip = str(Translator.translate('Get surface intersection with coordinates planes')) + return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} + +class Border: + def Activated(self): + import surfBorder + surfBorder.load() + + def GetResources(self): + from surfUtils import Paths, Translator + IconPath = Paths.iconsPath() + "/BorderIco.png" + MenuText = str(Translator.translate('Get border')) + ToolTip = str(Translator.translate('Get edges from objects')) + return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} + +class Convert: + def Activated(self): + import surfConvert + surfConvert.load() + + def GetResources(self): + from surfUtils import Paths, Translator + IconPath = Paths.iconsPath() + "/ConvertIco.png" + MenuText = str(Translator.translate('Convert to 4 sides surface')) + ToolTip = str(Translator.translate('Convert a surface (or couple of them) into 4 sides surface')) + return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} + +FreeCADGui.addCommand('Surf_IsoCurve', IsoCurve()) +FreeCADGui.addCommand('Surf_SliceCurve', SliceCurve()) +FreeCADGui.addCommand('Surf_Border', Border()) +FreeCADGui.addCommand('Surf_Convert', Convert()) diff --git a/src/Mod/Surfaces/surfBorder/__init__.py b/src/Mod/Surfaces/surfBorder/__init__.py new file mode 100644 index 000000000..f3747dbe9 --- /dev/null +++ b/src/Mod/Surfaces/surfBorder/__init__.py @@ -0,0 +1,48 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# FreeCAD modules +import FreeCAD +import FreeCADGui +from FreeCAD import Base +from FreeCAD import Part + +# Qt libraries +from PyQt4 import QtGui,QtCore + +# Main object +from surfUtils import Geometry, Translator + +def load(): + """ Loads the tool. Getting the border don't require any + option, so can be executed directly without any task panel. """ + edges = Geometry.getBorders() + if not edges: + wrn = Translator.translate("Can't get any edge from selected objects") + FreeCAD.Console.PrintWarning(wrn) + return + obj = edges[0] + for i in range(0,len(edges)): + obj = obj.oldFuse(edges[i]) + Part.show(obj) + objs = FreeCAD.ActiveDocument.Objects + obj = objs[len(objs)-1] + obj.Label = 'Border' + diff --git a/src/Mod/Surfaces/surfConvert/Preview.py b/src/Mod/Surfaces/surfConvert/Preview.py new file mode 100644 index 000000000..2ee908cb8 --- /dev/null +++ b/src/Mod/Surfaces/surfConvert/Preview.py @@ -0,0 +1,79 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# FreeCAD modules +import FreeCAD,FreeCADGui +from FreeCAD import Base +from FreeCAD import Part +# FreeCADShip modules +from surfUtils import Paths +from surfUtils import Geometry +from surfUtils import Math + +class Preview(object): + def __init__(self,U,V): + """ Constructor. + @param U Part::topoShape object that contains the U direction edge. + @param V Part::topoShape object that contains the V direction edge. + """ + self.objU = None + self.objV = None + self.U = U + self.V = V + self.buildObjs() + self.setProperties() + + def buildObjs(self): + """ Builds objects to show. + """ + Part.show(self.U) + objs = FreeCAD.ActiveDocument.Objects + self.objU = objs[len(objs)-1] + Part.show(self.V) + objs = FreeCAD.ActiveDocument.Objects + self.objV = objs[len(objs)-1] + + def setProperties(self): + """ Set colour of lines and width. + """ + self.objU.Label = 'U direction' + self.objV.Label = 'V direction' + # Get GUI objects instance + objU = FreeCADGui.ActiveDocument.getObject(self.objU.Name) + objV = FreeCADGui.ActiveDocument.getObject(self.objV.Name) + objU.LineColor = (0.0,0.0,1.0) + objU.LineWidth = 5.00 + objV.LineColor = (1.0,0.0,0.0) + objV.LineWidth = 5.00 + + def clean(self,Destroy=True): + """ Erase all sections from screen. + @param self Auto call object. + @param Destroy True if the object must be destroyed, False otherwise. + """ + if (not self.objU) or (not self.objV): + return + FreeCADGui.ActiveDocument.hide(self.objU.Name) + FreeCADGui.ActiveDocument.hide(self.objV.Name) + if Destroy: + FreeCAD.ActiveDocument.removeObject(self.objU.Name) + FreeCAD.ActiveDocument.removeObject(self.objV.Name) + self.objU=None + self.objV=None diff --git a/src/Mod/Surfaces/surfConvert/TaskPanel.py b/src/Mod/Surfaces/surfConvert/TaskPanel.py new file mode 100644 index 000000000..49ed1c6e1 --- /dev/null +++ b/src/Mod/Surfaces/surfConvert/TaskPanel.py @@ -0,0 +1,576 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# Alicia Lapique <> +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# Standart libraries +import math +# Import FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +# Import Qt libraries +from PyQt4 import QtGui,QtCore +# Import surface module utils +from surfUtils import Paths, Geometry, Math, Translator +# Import tool utils +import Preview + +class TaskPanel: + def __init__(self): + """ Class constructor, that loads the user interface and set + minimum data as empty values. + """ + self.ui = Paths.modulePath() + "/surfConvert/TaskPanel.ui" + self.objs = [] + self.edges = [] + self.faces = [] + self.surf = None + self.preview = None + + def accept(self): + """ Method called when accept button is clicked. + @return True if all gone right, False otherwise. + """ + if not self.surf: + return False + App.Part.show(self.surf.toShape()) + objs = App.ActiveDocument.Objects + obj = objs[len(objs)-1] + obj.Label = 'Surface' + self.preview.clean() + return True + + def reject(self): + """ Method called when cancel button is clicked. + @return True if all gone right, False otherwise. + """ + if self.preview : + self.preview.clean() + 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): + """ Setups the user interface taking and storing all controls. + """ + mw = self.getMainWindow() + form = mw.findChild(QtGui.QWidget, "TaskPanel") + form.nU = form.findChild(QtGui.QSpinBox, "nU") + form.nV = form.findChild(QtGui.QSpinBox, "nV") + form.deg = form.findChild(QtGui.QSpinBox, "deg") + self.form = form + # Initial values + if self.initValues(): + return True + self.retranslateUi() + # Connect Signals and Slots + QtCore.QObject.connect(form.nU, QtCore.SIGNAL("valueChanged(int)"), self.onNUV) + QtCore.QObject.connect(form.nV, QtCore.SIGNAL("valueChanged(int)"), self.onNUV) + QtCore.QObject.connect(form.deg, QtCore.SIGNAL("valueChanged(int)"), self.onNUV) + return False + + 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 initValues(self): + """ Setup initial values. """ + # Objects to work + self.objs = Gui.Selection.getSelection() + if not self.objs: + msg = Translator.translate("4 connected edges and at least 1 surface must be selected (Any object has been selected)") + App.Console.PrintError(msg) + return True + if len(self.objs) < 5: + msg = Translator.translate("4 connected edges and at least 1 surface must be selected (Less than 5 objects selected)") + App.Console.PrintError(msg) + return True + # Separate edge objects and face objects. + if self.getEdgesFaces(): + return True + # Ensure that closed object given + if not self.isClosed(): + return True + # Sort edges (as connect chain) + if self.sortEdges(): + return True + # First surface draft + if self.getPoints(): + return True + if self.createSurface(): + return True + # On screen data + self.preview = Preview.Preview(self.edges[0],self.edges[1]) + msg = Translator.translate("Ready to work") + App.Console.PrintMessage(msg) + return False + + def retranslateUi(self): + """ Set user interface locale strings. + """ + self.form.setWindowTitle(Translator.translate("Convert to 4 side surface")) + nUString = Translator.translate("Points at U") + self.form.findChild(QtGui.QLabel, "nULabel").setText("" + nUString + "") + nVString = Translator.translate("Points at V2") + self.form.findChild(QtGui.QLabel, "nVLabel").setText("" + nVString + "") + self.form.findChild(QtGui.QLabel, "degLabel").setText(Translator.translate("Surface degree")) + + def onNUV(self, value): + """ Answer to nU points or nV points modification events. + @param value Changed value. + """ + if self.getPoints(): + return + if self.createSurface(): + return + self.form.deg.setMaximum(self.surf.MaxDegree) + + def getEdgesFaces(self): + """ Returns two arrays filled with the edges and faces selected. + @return True if error happens. False otherwise + """ + self.edges = [] + self.faces = [] + for i in range(0,len(self.objs)): + objFaces = Geometry.getFaces(self.objs[i]) + if not objFaces: + objEdges = Geometry.getEdges([self.objs[i]]) + if not objEdges: + msg = Translator.translate("4 connected edges and at least 1 surface must be selected (Any edge found)") + App.Console.PrintError(msg) + return True + for j in range(0, len(objEdges)): + self.edges.append(objEdges[j]) + else: + for j in range(0, len(objFaces)): + self.faces.append(objFaces[j]) + if len(self.edges) != 4: + msg = Translator.translate("4 connected edges and at least 1 surface must be selected (More/less edges not allowed)") + App.Console.PrintError(msg) + return True + return False + + def isClosed(self): + """ Returns if the edges objects are a closed curve. + @return True if a closed curve can be built with edge objects. + False otherwise + """ + edges = self.edges + for i in range(0,len(edges)): + edge = edges[i] + vertex1 = edge.Vertexes + count = [0,0] + for j in range(0,len(edges)): + if j== i: + continue + vertex2 = edges[j].Vertexes + for k in range(0,2): + if Math.isSameVertex(vertex1[0],vertex2[k]): + count[0] = count[0]+1 + if Math.isSameVertex(vertex1[1],vertex2[k]): + count[1] = count[1]+1 + if count != [1,1]: + msg = Translator.translate("4 Edges curve must be closed") + App.Console.PrintError(msg) + return False + return True + + def sortEdges(self): + """ Sort the edges by their connection points. Also gives if + an edge is ill oriented (thir connection point is the end + point, not the starting point), with True when is good oriented, + and False otherwise. + @return True if error happens. False otherwise + """ + edges = self.edges + self.edges = [edges[0]] + self.direction = [True] + Vertex = self.edges[0].Vertexes[1] + for i in range(0,len(edges)-1): + for j in range(0,len(edges)): + if self.edges[i] == edges[j]: + continue + Vertexes = edges[j].Vertexes + if Math.isSameVertex(Vertex,Vertexes[0]): + Vertex = Vertexes[1] + self.edges.append(edges[j]) + self.direction.append(True) + break + if Math.isSameVertex(Vertex,Vertexes[1]): + Vertex = Vertexes[0] + self.edges.append(edges[j]) + self.direction.append(False) + break + return False + + def getPoints(self): + """ Get points that will make the surface. + @return True if error happens. False otherwise. + """ + if self.divideEdges(): + return True + if self.samplePoints(): + return True + if self.getSurfacePoints(): + return True + while self.redistributePointsU(): + continue + while self.redistributePointsV(): + continue + return False + + + def divideEdges(self): + """ Get points along the edges. + @return True if error happens. False otherwise. + """ + # Get curves from edges + curves=[] + for i in range(0,len(self.edges)): + curves.append(self.edges[i].Curve) + # Get number of divisions at U,V + nU = self.form.nU.value() + nV = self.form.nV.value() + # Get points at U direction (length parameter will used) + vertexes = self.edges[0].Vertexes + u = curves[0].parameter(App.Base.Vector(vertexes[0].X, vertexes[0].Y, vertexes[0].Z)) + uEnd = curves[0].parameter(App.Base.Vector(vertexes[1].X, vertexes[1].Y, vertexes[1].Z)) + du = (uEnd - u) / (nU-1.0) + Points0=[] + for i in range(0, nU): + knots = curves[0].KnotSequence + point0 = curves[0].value(u) + Points0.append(point0) + u = u + du + vertexes = self.edges[2].Vertexes + u = curves[2].parameter(App.Base.Vector(vertexes[1].X, vertexes[1].Y, vertexes[1].Z)) + uEnd = curves[2].parameter(App.Base.Vector(vertexes[0].X, vertexes[0].Y, vertexes[0].Z)) + du = (uEnd - u) / (nU-1.0) + Points2=[] + for i in range(0, nU): + knots = curves[2].KnotSequence + point2 = curves[2].value(u) + Points2.append(point2) + u = u + du + # Get points at V direction (length parameter will used) + vertexes = self.edges[1].Vertexes + v = curves[1].parameter(App.Base.Vector(vertexes[0].X, vertexes[0].Y, vertexes[0].Z)) + vEnd = curves[1].parameter(App.Base.Vector(vertexes[1].X, vertexes[1].Y, vertexes[1].Z)) + dv = (vEnd - v) / (nV-1.0) + Points1=[] + for i in range(0, nV): + knots = curves[1].KnotSequence + point1 = curves[1].value(v) + Points1.append(point1) + v = v + dv + vertexes = self.edges[3].Vertexes + v = curves[3].parameter(App.Base.Vector(vertexes[1].X, vertexes[1].Y, vertexes[1].Z)) + vEnd = curves[3].parameter(App.Base.Vector(vertexes[0].X, vertexes[0].Y, vertexes[0].Z)) + dv = (vEnd - v) / (nV-1.0) + Points3=[] + for i in range(0, nV): + knots = curves[3].KnotSequence + point3 = curves[3].value(v) + Points3.append(point3) + v = v + dv + # Store points arrays + self.EdgePoints=[Points0,Points1,Points2,Points3] + # Ensure that is good oriented + for i in range(0,4): + if not self.direction[i]: + self.EdgePoints[i].reverse() + return False + + def samplePoints(self): + """ Builds a set of points between the edges points. + @return True if error happens. False otherwise. + """ + # We will advance in V direction, getting point columns, so two + # points columns are knowed from U starting and end curves + startU = self.EdgePoints[0] + endU = self.EdgePoints[2] + endV = self.EdgePoints[1] + startV = self.EdgePoints[3] + self.sample = [startU] + # Take two guides froms the starting and end U curves. All + # sample points will be reprojects with this guides + Guide0 = startU[len(startU)-1] - startU[0] + Length0 = Guide0.Length + Guide0.normalize() + Guide1 = endU[len(endU)-1] - endU[0] + Length1 = Guide1.Length + Guide1.normalize() + # Loop over columns to get + for i in range(1,len(startV)-1): + # Get the guide + Guide = endV[i] - startV[i] + Length = Guide.Length + Guide.normalize() + # Loop over points of the column + points = [] + points.append(startV[i]) + for j in range(1,len(startU)-1): + # Get deviation at starting U + v0 = (startU[j] - startU[0]).multiply(1.0 / Length0) - Guide0 + # Get deviation at ending U + v1 = (endU[j] - endU[0]).multiply(1.0 / Length1) - Guide1 + # Get factor + factor = float(i) / len(startV) + # Interpolate + v = (v0.multiply(1.0-factor) + v1.multiply(factor) + Guide).multiply(Length) + points.append(startV[i]+v) + points.append(endV[i]) + self.sample.append(points) + # Append las points column (end U curve) + self.sample.append(endU) + return False + + def getSurfacePoints(self): + """ Get the points of the surface. + @return True if error happens. False otherwise. + """ + surf = self.faces[0].Surface + self.uv=[] + self.points=[] + self.surfacesID=[] + for j in range(0,len(self.sample)): + points=[] + uv=[] + surfacesID=[] + for k in range(0,len(self.sample[j])): + UV = surf.parameter(self.sample[j][k]) + umax = surf.UKnotSequence[len(surf.UKnotSequence)-1] + umin = surf.UKnotSequence[0] + vmax = surf.VKnotSequence[len(surf.VKnotSequence)-1] + vmin = surf.VKnotSequence[0] + uv.append([UV[0],UV[1]]) + uv[k][0] = max(min(uv[k][0],umax), umin) + uv[k][1] = max(min(uv[k][1],vmax), vmin) + point = surf.value(uv[k][0], uv[k][1]) + points.append(point) + surfacesID.append(0) + self.uv.append(uv) + self.points.append(points) + self.surfacesID.append(surfacesID) + + for i in range(1,len(self.faces)): + surf = self.faces[i].Surface + for j in range(0,len(self.sample)): + for k in range(0,len(self.sample[j])): + UV = surf.parameter(self.sample[j][k]) + uv = [UV[0],UV[1]] + UV = uv[:] + umax = surf.UKnotSequence[len(surf.UKnotSequence)-1] + umin = surf.UKnotSequence[0] + vmax = surf.VKnotSequence[len(surf.VKnotSequence)-1] + vmin = surf.VKnotSequence[0] + UV[0] = uv[0]/(surf.UKnotSequence[len(surf.UKnotSequence)-1]) + UV[1] = uv[1]/(surf.VKnotSequence[len(surf.VKnotSequence)-1]) + ru=abs(UV[0]-0.5) + rv=abs(UV[1]-0.5) + surf2 = self.faces[self.surfacesID[j][k]].Surface + UV2 = surf2.parameter(self.sample[j][k]) + uv2 = [UV2[0],UV2[1]] + UV2 = uv2[:] + umax2 = surf2.UKnotSequence[len(surf2.UKnotSequence)-1] + umin2 = surf2.UKnotSequence[0] + vmax2 = surf2.VKnotSequence[len(surf2.VKnotSequence)-1] + vmin2 = surf2.VKnotSequence[0] + UV2[0] = uv2[0]/(surf2.UKnotSequence[len(surf2.UKnotSequence)-1]) + UV2[1] = uv2[1]/(surf2.VKnotSequence[len(surf2.VKnotSequence)-1]) + ru2=abs(UV2[0]-0.5) + rv2=abs(UV2[1]-0.5) + point=surf.value(UV[0],UV[1]) + point2=surf2.value(UV2[0],UV2[1]) + dif= math.sqrt((point[0]-self.sample[j][k][0])**2+(point[1]-self.sample[j][k][1])**2+(point[2]-self.sample[j][k][2])**2) + dif2= math.sqrt((point2[0]-self.sample[j][k][0])**2+(point2[1]-self.sample[j][k][1])**2+(point2[2]-self.sample[j][k][2])**2) + nU = len(self.points) + nV = len(self.points[j]) + deltaU = 1/(2*nU) + deltaV = 1/(2*nV) + if ((ru < deltaU) and (rv < deltaV)): + uv[0] = max(min(uv[0],umax), umin) + uv[1] = max(min(uv[1],vmax), vmin) + self.uv[j][k]=uv + point = surf.value(uv[0], uv[1]) + self.points[j][k]=point + self.surfacesID[j][k] = i + elif (dif2 > dif): + uv[0] = max(min(uv[0],umax), umin) + uv[1] = max(min(uv[1],vmax), vmin) + self.uv[j][k]=uv + point = surf.value(uv[0], uv[1]) + self.points[j][k]=point + self.surfacesID[j][k] = i + + return False + + def redistributePointsU(self): + """ Redistributes the points of the surface (U direction). + @return False if all points are right placed. True otherwise. + """ + #Redistribute columns + for i in range(0,len(self.points)): + sumdif=0.0 + difs=[] + for j in range(1,len(self.points[i])): + vdif=self.points[i][j]-self.points[i][j-1] + dif=vdif.Length + sumdif=sumdif+dif + difs.append(dif) + for k in range(0,len(difs)): + if self.surfacesID[i][k] != self.surfacesID[i][k+1]: + if difs[k]>=(2*sumdif/len(difs)): + self.points[i][k][0]=self.points[i][k][0]+0.33*(self.points[i][k+1][0]-self.points[i][k][0]) + self.points[i][k][1]=self.points[i][k][1]+0.33*(self.points[i][k+1][1]-self.points[i][k][1]) + self.points[i][k][2]=self.points[i][k][2]+0.33*(self.points[i][k+1][2]-self.points[i][k][2]) + self.points[i][k+1][0]=self.points[i][k+1][0]-0.33*(self.points[i][k+1][0]-self.points[i][k][0]) + self.points[i][k+1][1]=self.points[i][k+1][1]-0.33*(self.points[i][k+1][1]-self.points[i][k][1]) + self.points[i][k+1][2]=self.points[i][k+1][2]-0.33*(self.points[i][k+1][2]-self.points[i][k][2]) + surf1 = self.faces[self.surfacesID[i][k]].Surface + surf2 = self.faces[self.surfacesID[i][k+1]].Surface + uv = surf1.parameter(self.points[i][k]) + self.uv[i][k] = [uv[0], uv[1]] + uv = surf2.parameter(self.points[i][k+1]) + self.uv[i][k+1] = [uv[0], uv[1]] + self.points[i][k]=surf1.value(self.uv[i][k][0],self.uv[i][k][1]) + self.points[i][k+1]=surf2.value(self.uv[i][k+1][0],self.uv[i][k+1][1]) + return True + break + continue + if difs[k]>=(2*sumdif/len(difs)): + self.uv[i][k][0]=self.uv[i][k][0]+0.33*(self.uv[i][k+1][0]-self.uv[i][k][0]) + self.uv[i][k][1]=self.uv[i][k][1]+0.33*(self.uv[i][k+1][1]-self.uv[i][k][1]) + self.uv[i][k+1][0]=self.uv[i][k+1][0]-0.33*(self.uv[i][k+1][0]-self.uv[i][k][0]) + self.uv[i][k+1][1]=self.uv[i][k+1][1]-0.33*(self.uv[i][k+1][1]-self.uv[i][k][1]) + surf = self.faces[self.surfacesID[i][k]].Surface + self.points[i][k] = surf.value(self.uv[i][k][0], self.uv[i][k][1]) + self.points[i][k+1] = surf.value(self.uv[i][k+1][0], self.uv[i][k+1][1]) + return True + break + return False + def redistributePointsV(self): + """ Redistributes the points of the surface (V direction). + @return False if all points are right placed. True otherwise. + """ + #Redistribute files + for i in range(0,len(self.points[0])): + sumdif=0 + difs=[] + for j in range(1,len(self.points)): + vdif=self.points[j][i]-self.points[j-1][i] + dif=vdif.Length + sumdif=sumdif+dif + difs.append(dif) + for k in range(0,len(difs)): + if self.surfacesID[k][i] != self.surfacesID[k+1][i]: + if difs[k]>=(2*sumdif/len(difs)): + self.points[k][i][0]=self.points[k][i][0]+0.33*(self.points[k+1][i][0]-self.points[k][i][0]) + self.points[k][i][1]=self.points[k][i][1]+0.33*(self.points[k+1][i][1]-self.points[k][i][1]) + self.points[k][i][2]=self.points[k][i][2]+0.33*(self.points[k+1][k+1][2]-self.points[k][i][2]) + self.points[k+1][i][0]=self.points[k+1][i][0]-0.33*(self.points[k+1][i][0]-self.points[k][i][0]) + self.points[k+1][i][1]=self.points[k+1][i][1]-0.33*(self.points[k+1][i][1]-self.points[k][i][1]) + self.points[k+1][i][2]=self.points[k+1][i][2]-0.33*(self.points[k+1][i][2]-self.points[k][i][2]) + surf1 = self.faces[self.surfacesID[k][i]].Surface + surf2 = self.faces[self.surfacesID[k+1][i]].Surface + uv = surf1.parameter(self.points[k][i]) + self.uv[k][i] = [uv[0], uv[1]] + uv = surf2.parameter(self.points[k+1][i]) + self.uv[k+1][i] = [uv[0], uv[1]] + self.points[k][i]=surf1.value(self.uv[k][i][0],self.uv[k][i][1]) + self.points[k+1][i]=surf2.value(self.uv[k+1][i][0],self.uv[k+1][i][1]) + return True + break + continue + if difs[k]>=(2*sumdif/len(difs)): + self.uv[k][i][0]=self.uv[k][i][0]+0.33*(self.uv[k+1][i][0]-self.uv[k][i][0]) + self.uv[k][i][1]=self.uv[k][i][1]+0.33*(self.uv[k+1][i][1]-self.uv[k][i][1]) + self.uv[k+1][i][0]=self.uv[k+1][i][0]-0.33*(self.uv[k+1][i][0]-self.uv[k][i][0]) + self.uv[k+1][i][1]=self.uv[k+1][i][1]-0.33*(self.uv[k+1][i][1]-self.uv[k][i][1]) + surf = self.faces[self.surfacesID[k][i]].Surface + self.points[k][i] = surf.value(self.uv[k][i][0], self.uv[k][i][1]) + self.points[k+1][i] = surf.value(self.uv[k+1][i][0], self.uv[k+1][i][1]) + return True + break + return False + + def createSurface(self): + """ Generates the BSpline surface. + @return False if all gone right. True otherwise. + """ + # Create a (1 x 1) plane with (nU x nV) knots + self.surf = App.Part.BSplineSurface() + nU = len(self.points) + nV = len(self.points[0]) + for i in range(1,nU-1): + u = i / float(nU-1) + self.surf.insertUKnot(u,i,0.000001) + for i in range(1,nV-1): + v = i / float(nV-1) + self.surf.insertVKnot(v,i,0.000001) + # Reposition points of surface + for i in range(0,nU): + for j in range(0,nV): + u = i / float(nU-1) + v = j / float(nV-1) + point = self.points[i][j] + self.surf.movePoint(u,v,point,i+1,i+1,j+1,j+1) + # Reaconditionate surface + self.surf.exchangeUV() + deg = self.form.deg.value() + if (deg > 1) and (deg < self.surf.MaxDegree): + self.surf.increaseDegree(deg,deg) + return False + +def createTask(): + """ Create a task panel. + @return Task panel. + """ + panel = TaskPanel() + Gui.Control.showDialog(panel) + if panel.setupUi(): + Gui.Control.closeDialog(panel) + return None + return panel diff --git a/src/Mod/Surfaces/surfConvert/TaskPanel.ui b/src/Mod/Surfaces/surfConvert/TaskPanel.ui new file mode 100644 index 000000000..73c66e916 --- /dev/null +++ b/src/Mod/Surfaces/surfConvert/TaskPanel.ui @@ -0,0 +1,107 @@ + + + TaskPanel + + + + 0 + 0 + 307 + 268 + + + + Convert surface + + + + + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#0000ff;">Points at U</span></p></body></html> + + + + + + + 4 + + + 10000 + + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#ff0000;">Points at V</span></p></body></html> + + + + + + + 4 + + + 10000 + + + + + + + Surface degree + + + + + + + 1 + + + 25 + + + 3 + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 15 + + + + + + + + + + + + + diff --git a/src/Mod/Surfaces/surfConvert/__init__.py b/src/Mod/Surfaces/surfConvert/__init__.py new file mode 100644 index 000000000..c104e04e8 --- /dev/null +++ b/src/Mod/Surfaces/surfConvert/__init__.py @@ -0,0 +1,34 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# FreeCAD modules +import FreeCAD +import FreeCADGui + +# Qt libraries +from PyQt4 import QtGui,QtCore + +# Main object +import TaskPanel +from surfUtils import Paths + +def load(): + """ Loads the tool """ + TaskPanel.createTask() diff --git a/src/Mod/Surfaces/surfISOCurve/PointTracker.py b/src/Mod/Surfaces/surfISOCurve/PointTracker.py new file mode 100644 index 000000000..0796bab73 --- /dev/null +++ b/src/Mod/Surfaces/surfISOCurve/PointTracker.py @@ -0,0 +1,85 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +import Draft +from FreeCAD import Vector +# Qt library +from PyQt4 import QtGui,QtCore +# Pivy +import pivy +from pivy import coin +from pivy.coin import * +# Module +from surfUtils import Paths +from surfUtils import Geometry +from surfISOCurve import Preview + +class PointTracker: + def __init__(self,view,task): + self.view=view + self.task=task + task.tracker = self + self.callback = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.mouseButton) + self.callbackMove = self.view.addEventCallbackPivy(SoLocation2Event.getClassTypeId(),self.mouseMove) + + def mouseMove(self, event_cb): + event = event_cb.getEvent() + surf = self.task.surf + if not surf: + return + # Get screen point + screen = event.getPosition() + ctrl = event.wasCtrlDown() + # Get snapped object if exist, else the screen point will used + point = Gui.Snapper.snap(screen, ctrl) + + def mouseButton(self, event_cb): + event = event_cb.getEvent() + if event.getState() != coin.SoMouseButtonEvent.DOWN: + return + surf = self.task.surf + if not surf: + return + # Get screen point + screen = event.getPosition() + ctrl = event.wasCtrlDown() + # Get snapped object if exist, else the screen point will used + point = Gui.Snapper.snap(screen, ctrl) + if not point: + point = self.view.getPoint(screen[0],screen[1]) + # Get the nearest surface point parameter + uv = surf.parameter(point) + uv = [uv[0], uv[1]] + uv[0] = uv[0] / surf.UKnotSequence[len(surf.UKnotSequence)-1] + uv[0] = max(0, min(uv[0], 1)) + uv[1] = uv[1] / surf.VKnotSequence[len(surf.VKnotSequence)-1] + uv[1] = max(0, min(uv[1], 1)) + # Set it into the task panel + self.task.setUV(uv[self.task.dirId]) + + def close(self): + # Switch off snapping + Gui.Snapper.off() + # Remove callback (Program crash otherwise) + self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callback) + self.view.removeEventCallbackPivy(SoLocation2Event.getClassTypeId(),self.callbackMove) diff --git a/src/Mod/Surfaces/surfISOCurve/Preview.py b/src/Mod/Surfaces/surfISOCurve/Preview.py new file mode 100644 index 000000000..cd8562d4a --- /dev/null +++ b/src/Mod/Surfaces/surfISOCurve/Preview.py @@ -0,0 +1,122 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# FreeCAD modules +import FreeCAD,FreeCADGui +from FreeCAD import Base +from FreeCAD import Part +# FreeCADShip modules +from surfUtils import Paths +from surfUtils import Geometry +from surfUtils import Math + +class Preview(object): + def __init__(self): + """ Constructor. + @param self Auto call object. + @note Start it as unactive + """ + self.obj = None + self.reinit() + + def reinit(self): + """ Reinitializate drawer. + @param self Auto call object. + """ + self.clean() + self.obj = None + + def update(self, surf, direction, uv): + """ Update the 3D view printing curve. + @param self Auto call object. + @param surf Surf where get the curve. + @param direction 0 if u direction, 1 if v. + @param uv Curve uv index, between 0 and 1. + @return Curve from object (as Part::Feature). + """ + # Errors + if not surf: + return None + # Get curve + if direction == 0: + curve = self.getU(surf, uv) + elif direction == 1: + curve = self.getV(surf, uv) + else: + return None + # Draw at 3D view + self.clean() + Part.show(curve.toShape()) + objs = FreeCAD.ActiveDocument.Objects + self.obj = objs[len(objs)-1] + self.obj.Label = 'surfISOCurve' + return self.obj + + def getU(self, surf, uv): + """ Get U curve from object. + @param self Auto call object. + @param surf Surf where get the curve. + @param uv Curve uv index, between 0 and 1. + @return Curve from object. + """ + # Errors + if not surf: + return None + if (uv < 0.0) or (uv > 1.0): + return None + # Get UV data + knots = surf.UKnotSequence + id0 = knots[0] + id1 = knots[len(knots)-1] + # Get curve + curve = surf.uIso(id0 + uv*(id1-id0)) + return curve + + def getV(self, surf, uv): + """ Get U curve from object. + @param self Auto call object. + @param surf Surf where get the curve. + @param uv Curve uv index, between 0 and 1. + @return Curve from object. + """ + # Errors + if not surf: + return None + if (uv < 0.0) or (uv > 1.0): + return None + # Get UV data + knots = surf.VKnotSequence + id0 = knots[0] + id1 = knots[len(knots)-1] + # Get curve + curve = surf.vIso(id0 + uv*(id1-id0)) + return curve + + def clean(self,Destroy=True): + """ Erase all sections from screen. + @param self Auto call object. + @param Destroy True if the object must be destroyed, False otherwise. + """ + if not self.obj: + return + FreeCADGui.ActiveDocument.hide(self.obj.Name) + if Destroy: + FreeCAD.ActiveDocument.removeObject(self.obj.Name) + self.obj=None diff --git a/src/Mod/Surfaces/surfISOCurve/TaskPanel.py b/src/Mod/Surfaces/surfISOCurve/TaskPanel.py new file mode 100644 index 000000000..2361d0824 --- /dev/null +++ b/src/Mod/Surfaces/surfISOCurve/TaskPanel.py @@ -0,0 +1,165 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +# Qt library +from PyQt4 import QtGui,QtCore +# Module +from surfUtils import Paths, Geometry, Math, Translator +import Preview +import PointTracker + +class TaskPanel: + def __init__(self): + self.ui = Paths.modulePath() + "/surfISOCurve/TaskPanel.ui" + self.preview = Preview.Preview() + self.tracker = None + + def accept(self): + if not self.obj: + return True + self.obj.Label = 'ISOCurve' + self.close() + return True + + def reject(self): + self.preview.clean() + self.close() + 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.direction = form.findChild(QtGui.QComboBox, "direction") + form.uv = form.findChild(QtGui.QSlider, "uv") + form.uvText = form.findChild(QtGui.QDoubleSpinBox, "uvText") + self.form = form + # Initial values + if self.initValues(): + return True + self.obj = self.preview.update(self.surf, self.dirId, self.uv) + self.retranslateUi() + # Connect Signals and Slots + QtCore.QObject.connect(form.direction, QtCore.SIGNAL("activated(QString)"), self.selectDirection) + QtCore.QObject.connect(form.uv, QtCore.SIGNAL("valueChanged(int)"), self.onUVSlider) + QtCore.QObject.connect(form.uvText, QtCore.SIGNAL("valueChanged(double)"), self.onUVText) + + 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 selectDirection(self): + self.dirId = self.form.direction.currentIndex() + self.obj = self.preview.update(self.surf, self.dirId, self.uv) + if not self.obj: + msg = Translator.translate("Can't get the curve from selected object") + App.Console.PrintWarning(msg) + + def onUVSlider(self, value): + uv = self.form.uv.value() + uv = uv/(float(self.form.uv.maximum())) + self.setUV(uv) + + def onUVText(self, value): + uv = self.form.uvText.value() + self.setUV(uv) + + def setUV(self, uv): + self.form.uv.setValue(uv*self.form.uv.maximum()) + self.form.uvText.setValue(uv) + self.uv = uv + if not self.surf: + return + self.obj = self.preview.update(self.surf, self.dirId, self.uv) + if not self.obj: + msg = Translator.translate("Can't get the curve from selected object") + App.Console.PrintWarning(msg) + + def initValues(self): + self.obj = None + self.dirId = 0 + self.uv = 0 + self.surf = None + self.selObj = Geometry.getSelectedObj() + if not self.selObj: + msg = Translator.translate("1 surface must be selected (Any object has been selected)") + App.Console.PrintError(msg) + return True + self.surf = Geometry.getSelectedSurface() + if not self.surf: + msg = Translator.translate("1 surface must be selected (Any face object found into selected objects)") + App.Console.PrintError(msg) + return True + msg = Translator.translate("Ready to work") + App.Console.PrintMessage(msg) + return False + + def retranslateUi(self): + """ Set user interface locale strings. + """ + self.form.setWindowTitle(Translator.translate("Get surface ISO curve")) + self.form.direction.setItemText(0, Translator.translate("U direction")) + self.form.direction.setItemText(1, Translator.translate("V direction")) + + def close(self): + """ Destroy all dependant objects + @param self Main object. + """ + if self.tracker: + self.tracker.close() + +def createTask(): + panel = TaskPanel() + Gui.Control.showDialog(panel) + if panel.setupUi(): + Gui.Control.closeDialog(panel) + return None + tracker = PointTracker.PointTracker(Gui.ActiveDocument.ActiveView, panel) + return panel diff --git a/src/Mod/Surfaces/surfISOCurve/TaskPanel.ui b/src/Mod/Surfaces/surfISOCurve/TaskPanel.ui new file mode 100644 index 000000000..68898bb05 --- /dev/null +++ b/src/Mod/Surfaces/surfISOCurve/TaskPanel.ui @@ -0,0 +1,65 @@ + + + TaskPanel + + + + 0 + 0 + 307 + 268 + + + + Get ISO curve from surface + + + + + + + U direction + + + + + V direction + + + + + + + + + + 0 + + + 10000 + + + Qt::Horizontal + + + + + + + 0.000000000000000 + + + 1.000000000000000 + + + 0.010000000000000 + + + + + + + + + + diff --git a/src/Mod/Surfaces/surfISOCurve/__init__.py b/src/Mod/Surfaces/surfISOCurve/__init__.py new file mode 100644 index 000000000..c104e04e8 --- /dev/null +++ b/src/Mod/Surfaces/surfISOCurve/__init__.py @@ -0,0 +1,34 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# FreeCAD modules +import FreeCAD +import FreeCADGui + +# Qt libraries +from PyQt4 import QtGui,QtCore + +# Main object +import TaskPanel +from surfUtils import Paths + +def load(): + """ Loads the tool """ + TaskPanel.createTask() diff --git a/src/Mod/Surfaces/surfSlice/PointTracker.py b/src/Mod/Surfaces/surfSlice/PointTracker.py new file mode 100644 index 000000000..863c47924 --- /dev/null +++ b/src/Mod/Surfaces/surfSlice/PointTracker.py @@ -0,0 +1,68 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +import Draft +from FreeCAD import Vector +# Qt library +from PyQt4 import QtGui,QtCore +# Pivy +import pivy +from pivy import coin +from pivy.coin import * +# Module +from surfUtils import Paths +from surfUtils import Geometry +from surfSlice import Preview + +class PointTracker: + def __init__(self,view,task): + self.view=view + self.task=task + task.tracker = self + self.callback = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.mouseButton) + self.callbackMove = self.view.addEventCallbackPivy(SoLocation2Event.getClassTypeId(),self.mouseMove) + + def mouseMove(self, event_cb): + event = event_cb.getEvent() + # Get screen point + screen = event.getPosition() + ctrl = event.wasCtrlDown() + # Get snapped object if exist, else the screen point will used + point = Gui.Snapper.snap(screen, ctrl) + + def mouseButton(self, event_cb): + event = event_cb.getEvent() + if event.getState() != coin.SoMouseButtonEvent.DOWN: + return + # Get screen point + screen = event.getPosition() + ctrl = event.wasCtrlDown() + # Get snapped object if exist, else the screen point will used + point = Gui.Snapper.snap(screen, ctrl) + if not point: + point = self.view.getPoint(screen[0],screen[1]) + # Set it into the task panel + self.task.setR3(point) + + def close(self): + self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callback) diff --git a/src/Mod/Surfaces/surfSlice/Preview.py b/src/Mod/Surfaces/surfSlice/Preview.py new file mode 100644 index 000000000..b0c1f1f8c --- /dev/null +++ b/src/Mod/Surfaces/surfSlice/Preview.py @@ -0,0 +1,97 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# FreeCAD modules +import FreeCAD,FreeCADGui +from FreeCAD import Base +from FreeCAD import Part +# FreeCADShip modules +from surfUtils import Paths +from surfUtils import Geometry +from surfUtils import Math + +class Preview(object): + def __init__(self): + """ Constructor. + @param self Auto call object. + @note Start it as unactive + """ + self.objs = None + self.reinit() + + def reinit(self): + """ Reinitializate drawer. + @param self Auto call object. + """ + self.clean() + self.objs = None + + def update(self, surf, direction, r): + """ Update the 3D view printing curve. + @param surf Surf where get the curve. + @param direction Slice plane normal vector. + @param r Absolute position at Slice plane normal direction. + @return Curve from object (as Part::Feature). + """ + # Errors + if not surf: + return None + # Get curve + curve = self.getSlice(surf, direction, r) + # Draw at 3D view + self.clean() + self.objs = [] + for i in range(0,len(curve)): + for j in range(0,len(curve[i])): + Part.show(curve[i][j]) + objs = FreeCAD.ActiveDocument.Objects + objs[len(objs)-1].Label = 'surfSliceCurve' + self.objs.append(objs[len(objs)-1]) + return self.objs + + def getSlice(self, surf, direction, r): + """ Get surface slice. + @param surf Surf where get the curve. + @param direction Slice plane normal vector. + @param r Absolute position at Slice plane normal direction. + @return Curve from object. + """ + # Errors + if not surf: + return None + # Get curve + curve = [] + for i in range(0,len(surf)): + curve.append(surf[i].slice(direction, r)) + return curve + + def clean(self,Destroy=True): + """ Erase all sections from screen. + @param self Auto call object. + @param Destroy True if the object must be destroyed, False otherwise. + """ + if not self.objs: + return + for i in range(0,len(self.objs)): + FreeCADGui.ActiveDocument.hide(self.objs[i].Name) + if Destroy: + FreeCAD.ActiveDocument.removeObject(self.objs[i].Name) + if Destroy: + self.objs=None diff --git a/src/Mod/Surfaces/surfSlice/TaskPanel.py b/src/Mod/Surfaces/surfSlice/TaskPanel.py new file mode 100644 index 000000000..795787b56 --- /dev/null +++ b/src/Mod/Surfaces/surfSlice/TaskPanel.py @@ -0,0 +1,214 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +from FreeCAD import Vector +# Qt library +from PyQt4 import QtGui,QtCore +# Module +from surfUtils import Paths, Geometry, Math, Translator +import Preview +import PointTracker + +class TaskPanel: + def __init__(self): + self.ui = Paths.modulePath() + "/surfSlice/TaskPanel.ui" + self.preview = Preview.Preview() + self.tracker = None + self.dir = Vector(0.0,0.0,1.0) + + def accept(self): + if not self.objs: + return True + for i in range(0,len(self.objs)): + self.objs[i].Label = 'SliceCurve' + self.close() + return True + + def reject(self): + self.preview.clean() + self.close() + 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.direction = form.findChild(QtGui.QComboBox, "direction") + form.r = form.findChild(QtGui.QSlider, "r") + form.rText = form.findChild(QtGui.QDoubleSpinBox, "rText") + self.form = form + # Initial values + if self.initValues(): + return True + self.retranslateUi() + self.form.rText.setMinimum(self.bound[4]) + self.form.rText.setMaximum(self.bound[5]) + self.setR(self.r) + # Connect Signals and Slots + QtCore.QObject.connect(form.direction, QtCore.SIGNAL("activated(QString)"), self.selectDirection) + QtCore.QObject.connect(form.r, QtCore.SIGNAL("valueChanged(int)"), self.onRSlider) + QtCore.QObject.connect(form.rText, QtCore.SIGNAL("valueChanged(double)"), self.onRText) + return False + + def getMainWindow(self): + "returns the main window" + # using QtGui.qApp.activeWindow() isn't very reliable because if another + # widget than the mainwindow is active (i.e. 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 selectDirection(self): + if(self.form.direction.currentIndex() == 0): # XY + self.dir = Vector(0.0,0.0,1.0) + self.r = max(self.r, self.bound[4]) + self.r = min(self.r, self.bound[5]) + self.form.rText.setMinimum(self.bound[4]) + self.form.rText.setMaximum(self.bound[5]) + if(self.form.direction.currentIndex() == 1): # XZ + self.dir = Vector(0.0,1.0,0.0) + self.r = max(self.r, self.bound[2]) + self.r = min(self.r, self.bound[3]) + self.form.rText.setMinimum(self.bound[2]) + self.form.rText.setMaximum(self.bound[3]) + if(self.form.direction.currentIndex() == 2): # YZ + self.dir = Vector(1.0,0.0,0.0) + self.r = max(self.r, self.bound[0]) + self.r = min(self.r, self.bound[1]) + self.form.rText.setMinimum(self.bound[0]) + self.form.rText.setMaximum(self.bound[1]) + self.objs = self.preview.update(self.face, self.dir, self.r) + if not self.objs: + msg = Translator.translate("Can't calculate section") + App.Console.PrintWarning(msg) + + def onRSlider(self, value): + # Get r at [0,1] interval + r = self.form.r.value() + r = r/(float(self.form.r.maximum())) + # Expand to real interval + dr = self.form.rText.maximum()-self.form.rText.minimum() + r = r*dr + self.form.rText.minimum() + # Set value + self.setR(r) + + def onRText(self, value): + r = self.form.rText.value() + self.setR(r) + + def setR(self, r): + self.form.rText.setValue(r) + self.r = max(self.form.rText.minimum(), min(self.form.rText.maximum(), r)) + dr = self.form.rText.maximum()-self.form.rText.minimum() + r = (r - self.form.rText.minimum())/dr*self.form.r.maximum() + self.form.r.setValue(r) + if not self.face: + return + self.objs = self.preview.update(self.face, self.dir, self.r) + if not self.objs: + msg = Translator.translate("Can't calculate section") + App.Console.PrintWarning(msg) + + def setR3(self, r): + if(self.form.direction.currentIndex() == 0): # XY + self.setR(r.z) + if(self.form.direction.currentIndex() == 1): # XZ + self.setR(r.y) + if(self.form.direction.currentIndex() == 2): # YZ + self.setR(r.x) + + def initValues(self): + self.objs = None + self.dir = Vector(0.0,0.0,1.0) + self.r = 0.0 + self.face = None + self.selObj = Geometry.getSelectedObj() + if not self.selObj: + msg = Translator.translate("At least 1 surface must be selected (Any selected object)") + App.Console.PrintError(msg) + return True + self.face = Geometry.getFaces() + if not self.face: + msg = Translator.translate("At least 1 surface must be selected (Any face object found into selected objects)") + App.Console.PrintError(msg) + return True + bound = self.face[0].BoundBox + self.bound = [bound.XMin, bound.XMax, bound.YMin, bound.YMax, bound.ZMin, bound.ZMax] + for i in range(1,len(self.face)): + face = self.face[i] + bound = face.BoundBox + self.bound[0] = min(self.bound[0],bound.XMin) + self.bound[1] = min(self.bound[1],bound.XMax) + self.bound[2] = min(self.bound[2],bound.YMin) + self.bound[3] = min(self.bound[3],bound.YMax) + self.bound[4] = min(self.bound[4],bound.ZMin) + self.bound[5] = min(self.bound[5],bound.ZMax) + self.r = max(self.r, self.bound[4]) + self.r = min(self.r, self.bound[5]) + msg = Translator.translate("Ready to work") + App.Console.PrintMessage(msg) + return False + + def retranslateUi(self): + """ Set user interface locale strings. + """ + self.form.setWindowTitle(Translator.translate("Get surface slice")) + + def close(self): + """ Destroy all dependant objects + @param self Main object. + """ + if self.tracker: + self.tracker.close() + +def createTask(): + panel = TaskPanel() + Gui.Control.showDialog(panel) + if panel.setupUi(): + Gui.Control.closeDialog(panel) + return None + tracker = PointTracker.PointTracker(Gui.ActiveDocument.ActiveView, panel) + return panel diff --git a/src/Mod/Surfaces/surfSlice/TaskPanel.ui b/src/Mod/Surfaces/surfSlice/TaskPanel.ui new file mode 100644 index 000000000..20b7029ef --- /dev/null +++ b/src/Mod/Surfaces/surfSlice/TaskPanel.ui @@ -0,0 +1,70 @@ + + + TaskPanel + + + + 0 + 0 + 307 + 268 + + + + Get surface slice + + + + + + + XY + + + + + XZ + + + + + YZ + + + + + + + + + + 0 + + + 10000 + + + Qt::Horizontal + + + + + + + 0.000000000000000 + + + 1.000000000000000 + + + 0.010000000000000 + + + + + + + + + + diff --git a/src/Mod/Surfaces/surfSlice/__init__.py b/src/Mod/Surfaces/surfSlice/__init__.py new file mode 100644 index 000000000..c104e04e8 --- /dev/null +++ b/src/Mod/Surfaces/surfSlice/__init__.py @@ -0,0 +1,34 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# FreeCAD modules +import FreeCAD +import FreeCADGui + +# Qt libraries +from PyQt4 import QtGui,QtCore + +# Main object +import TaskPanel +from surfUtils import Paths + +def load(): + """ Loads the tool """ + TaskPanel.createTask() diff --git a/src/Mod/Surfaces/surfUtils/Geometry.py b/src/Mod/Surfaces/surfUtils/Geometry.py new file mode 100644 index 000000000..d34844e1f --- /dev/null +++ b/src/Mod/Surfaces/surfUtils/Geometry.py @@ -0,0 +1,171 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import math +# FreeCAD +import FreeCAD, FreeCADGui +from FreeCAD import Base +from FreeCAD import Part +# FreeCAD ship +from surfUtils import Math + +def getSelectedObjs(): + """ Returns the selected objects list + @return Selected objects list + """ + return FreeCADGui.Selection.getSelection() + +def getSelectedObj(): + """ Returns the first element of the selected objects list + @return Selected object. None if errors happens + """ + objs = FreeCADGui.Selection.getSelection() + if not objs: + return None + if not len(objs): + return None + obj = objs[0] + return FreeCAD.ActiveDocument.getObject(obj.Name) + +def getEdges(objs=None): + """ Returns object edges (list of them) + @param objs Object to get the faces, none if selected + object may used. + @return Selected edges. None if errors happens + """ + edges = [] + if not objs: + objs = FreeCADGui.Selection.getSelection() + if not objs: + return None + for i in range(0, len(objs)): + obj = objs[i] + if obj.isDerivedFrom('Part::Feature'): + # get shape + shape = obj.Shape + if not shape: + return None + obj = shape + if not obj.isDerivedFrom('Part::TopoShape'): + return None + objEdges = obj.Edges + if not objEdges: + continue + for j in range(0, len(objEdges)): + edges.append(objEdges[j]) + return edges + +def getFaces(obj=None): + """ Returns object faces (list of them) + @param obj Object to get the faces, none if selected + object may used. + @return Selected faces. None if errors happens + """ + if not obj: + obj = getSelectedObj() + if not obj: + return None + if obj.isDerivedFrom('Part::Feature'): + # get shape + shape = obj.Shape + if not shape: + return None + obj = shape + if not obj.isDerivedFrom('Part::TopoShape'): + return None + # get face + faces = obj.Faces + if not faces: + return None + if not len(faces): + return None + return faces + +def getSelectedSurface(obj=None): + """ Returns object surface (the first of the list) + @param obj Object to get the surface, none if selected + object may used. + @return Selected surface. None if errors happens + """ + faces = getFaces(obj) + if not faces: + return None + obj = faces[0] + # get surface + surf = obj.Surface + if not surf: + return None + return surf + +def getBorders(objs=None): + """ Returns the borders of all selected objects as edge array + @param objs Objects to get the edges, none if selected objects + may used. + @return Borders + """ + edges = [] + if not objs: + objs = FreeCADGui.Selection.getSelection() + if not objs: + return None + if len(objs) < 1: + return None + for i in range(0, len(objs)): + faces = getFaces(objs[i]) + if not faces: + continue + for j in range(0, len(faces)): + edgList = faces[j].Edges + for k in range(0, len(edgList)): + edges.append(edgList[k]) + return edges + + +def lineFaceSection(line,surface): + """ Returns the point of section of a line with a face + @param line Line object, that can be a curve. + @param surface Surface object (must be a Part::Shape) + @return Section points array, [] if line don't cut surface + """ + # Get initial data + result = [] + vertexes = line.Vertexes + nVertex = len(vertexes) + # Perform the cut + section = line.cut(surface) + # Filter all old points + points = section.Vertexes + nPoint = len(points) + if nPoint <= nVertex: + # Any valid point + result + for i in range(0,nPoint): + disp = len(result) + flag = 0 + if not Math.isAprox(points[i].X,vertexes[i-disp].X,0.0001): + flag = flag+1 + if not Math.isAprox(points[i].Y,vertexes[i-disp].Y,0.0001): + flag = flag+1 + if not Math.isAprox(points[i].Z,vertexes[i-disp].Z,0.0001): + flag = flag+1 + if flag > 0: + result.append(points[i]) + return result + diff --git a/src/Mod/Surfaces/surfUtils/Math.py b/src/Mod/Surfaces/surfUtils/Math.py new file mode 100644 index 000000000..9063c9560 --- /dev/null +++ b/src/Mod/Surfaces/surfUtils/Math.py @@ -0,0 +1,54 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +def isAprox(a,b,tol=0.0001): + """returns if a value is into (b-tol,b+tol) + @param a Value to compare. + @param b Center of valid interval + @param tol Radius of valid interval + @return True if a is into (b-tol,b+tol), False otherwise + """ + if (a < b+abs(tol)) and (a > b-abs(tol)): + return True + return False + +def isSamePoint(a,b,tol=0.0001): + """returns if two points are the same with a provided tolerance + @param a Point to compare. + @param b Reference point. + @param tol Radius of valid interval + @return True if twice point are the same, False otherwise + @note FreeCAD::Base::Vector types must be provided + """ + if isAprox(a.x,b.x,tol) and isAprox(a.y,b.y,tol) and isAprox(a.z,b.z,tol): + return True + return False + +def isSameVertex(a,b,tol=0.0001): + """returns if two points are the same with a provided tolerance + @param a Point to compare. + @param b Reference point. + @param tol Radius of valid interval + @return True if twice point are the same, False otherwise + @note FreeCAD::Part::Vertex types must be provided + """ + if isAprox(a.X,b.X,tol) and isAprox(a.Y,b.Y,tol) and isAprox(a.Z,b.Z,tol): + return True + return False diff --git a/src/Mod/Surfaces/surfUtils/Paths.py b/src/Mod/Surfaces/surfUtils/Paths.py new file mode 100644 index 000000000..fc9f8a193 --- /dev/null +++ b/src/Mod/Surfaces/surfUtils/Paths.py @@ -0,0 +1,52 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import FreeCAD, FreeCADGui, os + +def modulePath(): + """returns the current Ship design module path + @return Module path""" + path1 = FreeCAD.ConfigGet("AppHomePath") + "Mod/Surfaces" + path2 = FreeCAD.ConfigGet("UserAppData") + "Mod/Surfaces" + if os.path.exists(path2): + return path2 + else: + return path1 + +def iconsPath(): + """returns the current Ship design module icons path + @return Icons path""" + path = modulePath() + "/Icons" + return path + +def getPathFromFile(fileName): + """ Gets the directory path from a file name + @param fileName Name of the file + @return Directory path. + """ + if not fileName: + return '' + i = 1 + try: + while 1: + i = fileName.index("/", i+1) + except ValueError: + pass + return fileName[0:i+1] diff --git a/src/Mod/Surfaces/surfUtils/Translator.py b/src/Mod/Surfaces/surfUtils/Translator.py new file mode 100644 index 000000000..8d08d7fe4 --- /dev/null +++ b/src/Mod/Surfaces/surfUtils/Translator.py @@ -0,0 +1,27 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import FreeCAD, FreeCADGui, os +from PyQt4 import QtCore,QtGui + +def translate(text,context="surfaces"): + "convenience function for Qt translator" + return QtGui.QApplication.translate(context, text, None, + QtGui.QApplication.UnicodeUTF8) diff --git a/src/Mod/Surfaces/surfUtils/__init__.py b/src/Mod/Surfaces/surfUtils/__init__.py new file mode 100644 index 000000000..e82fff67c --- /dev/null +++ b/src/Mod/Surfaces/surfUtils/__init__.py @@ -0,0 +1,22 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# Author: Jose Luis Cercos Pita +# +# 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, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# Empty file to treat the folder as a package +