From ce0f8dbea861e285fb97f42c76e485891bac7265 Mon Sep 17 00:00:00 2001 From: Dominic Graefen Date: Thu, 2 Jun 2011 14:55:02 +0200 Subject: [PATCH 1/8] Initial commit --- index.html | 1 + 1 file changed, 1 insertion(+) create mode 100644 index.html diff --git a/index.html b/index.html new file mode 100644 index 0000000..7844851 --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +fTask github-page From af153a4face603b3c03860b6712bbc5c5cc30de0 Mon Sep 17 00:00:00 2001 From: Dominic Graefen Date: Fri, 3 Jun 2011 20:11:42 +0200 Subject: [PATCH 2/8] Initial commit --- css/css3buttons.css | 87 +++++++++++++++ css/reset.css | 53 +++++++++ css/screen.css | 168 +++++++++++++++++++++++++++++ images/css3buttons_backgrounds.png | Bin 0 -> 18157 bytes images/css3buttons_icons.png | Bin 0 -> 3116 bytes images/devboy.png | Bin 0 -> 6538 bytes index.html | 47 +++++++- 7 files changed, 354 insertions(+), 1 deletion(-) create mode 100644 css/css3buttons.css create mode 100644 css/reset.css create mode 100644 css/screen.css create mode 100644 images/css3buttons_backgrounds.png create mode 100644 images/css3buttons_icons.png create mode 100644 images/devboy.png diff --git a/css/css3buttons.css b/css/css3buttons.css new file mode 100644 index 0000000..5a0c34f --- /dev/null +++ b/css/css3buttons.css @@ -0,0 +1,87 @@ +a.button, button { display: inline-block; padding: 5px; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 12px; color: #3C3C3D; text-shadow: 1px 1px 0 #FFFFFF; background: #ECECEC url('../images/css3buttons_backgrounds.png') 0 0 no-repeat; white-space: nowrap; overflow: visible; cursor: pointer; text-decoration: none; border: 1px solid #CACACA; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; outline: none; position: relative; zoom: 1; line-height: 1.11; *display: inline; *vertical-align: middle; } +button { margin-left: 0; margin-right: 0; *padding: 5px 5px 3px 5px; } +a.button { -moz-user-select: none; -webkit-tap-highlight-color: rgba(0,0,0,0); -webkit-user-select: none; -webkit-touch-callout: none;} +button::-moz-focus-inner { border: 0; padding:0px; } +a.button.primary, button.primary { font-weight: bold } +button:focus,a.button:hover, +button:hover { color: #FFFFFF; border-color: #388AD4; text-decoration: none; text-shadow: -1px -1px 0 rgba(0,0,0,0.3); background-position: 0 -40px; background-color: #2D7DC5; } +a.button:active, button:active, +a.button.active, button.active { background-position: 0 -81px; border-color: #347BBA; background-color: #0F5EA2; color: #FFFFFF; text-shadow: none; } +a.button:active, button:active { top: 1px } +a.button.negative:hover, button.negative:hover { color: #FFFFFF; background-position: 0 -121px; background-color: #D84743; border-color: #911D1B; } +a.button.negative:active, button.negative:active, +a.button.negative.active, button.negative.active { background-position: 0 -161px; background-color: #A5211E; border-color: #911D1B; } +a.button.positive:hover, button.positive:hover { background-position: 0 -280px; background-color: #96ED89; border-color: #45BF55; } +a.button.positive:active, button.positive:active, +a.button.positive.active, button.positive.active { background-position: 0 -320px; background-color: #45BF55; } +a.button.pill, button.pill { -webkit-border-radius: 19px; -moz-border-radius: 19px; border-radius: 19px; padding: 5px 10px 4px 10px; *padding: 4px 10px; } +a.button.left, button.left { -webkit-border-bottom-right-radius: 0px; -webkit-border-top-right-radius: 0px; -moz-border-radius-bottomright: 0px; -moz-border-radius-topright: 0px; border-bottom-right-radius: 0px; border-top-right-radius: 0px; margin-right: 0px; border-right: none; } +a.button.middle, button.middle { margin-right: 0px; margin-left: 0px; -webkit-border-radius: 0px; -moz-border-radius: 0px; border-radius: 0px; border-right: none; } +a.button.right, button.right { -webkit-border-bottom-left-radius: 0px; -webkit-border-top-left-radius: 0px; -moz-border-radius-bottomleft: 0px; -moz-border-radius-topleft: 0px; border-top-left-radius: 0px; border-bottom-left-radius: 0px; margin-left: 0px; } +a.button.left:active, button.left:active, +a.button.middle:active, button.middle:active, +a.button.right:active, button.right:active { top: 0px } +a.button.big, button.big { font-size: 16px; padding-left: 14px; padding-right: 17px; } +button.big { *padding: 4px 17px 2px 17px; } +a.button span.icon, button span.icon { display: inline-block; width: 14px; height: 12px; margin: auto 7px auto auto; position: relative; top: 0; *top: 0px; background-image: url('../images/css3buttons_icons.png'); background-repeat: no-repeat; } +a.big.button span.icon, button.big span.icon { top: 0px } +a.button span.icon.book, button span.icon.book { background-position: 0 0 } +a.button:hover span.icon.book, button:hover span.icon.book { background-position: 0 -15px } +a.button span.icon.calendar, button span.icon.calendar { background-position: 0 -30px } +a.button:hover span.icon.calendar, button:hover span.icon.calendar { background-position: 0 -45px } +a.button span.icon.chat, button span.icon.chat { background-position: 0 -60px } +a.button:hover span.icon.chat, button:hover span.icon.chat { background-position: 0 -75px } +a.button span.icon.check, button span.icon.check { background-position: 0 -90px } +a.button:hover span.icon.check, button:hover span.icon.check { background-position: 0 -103px } +a.button span.icon.clock, button span.icon.clock { background-position: 0 -116px } +a.button:hover span.icon.clock, button:hover span.icon.clock { background-position: 0 -131px } +a.button span.icon.cog, button span.icon.cog { background-position: 0 -146px } +a.button:hover span.icon.cog, button:hover span.icon.cog { background-position: 0 -161px } +a.button span.icon.comment, button span.icon.comment { background-position: 0 -176px } +a.button:hover span.icon.comment, button:hover span.icon.comment { background-position: 0 -190px } +a.button span.icon.cross, button span.icon.cross { background-position: 0 -204px } +a.button:hover span.icon.cross, button:hover span.icon.cross { background-position: 0 -219px } +a.button span.icon.downarrow, button span.icon.downarrow { background-position: 0 -234px } +a.button:hover span.icon.downarrow, button:hover span.icon.downarrow { background-position: 0 -249px } +a.button span.icon.fork, button span.icon.fork { background-position: 0 -264px } +a.button:hover span.icon.fork, button:hover span.icon.fork { background-position: 0 -279px } +a.button span.icon.heart, button span.icon.heart { background-position: 0 -294px } +a.button:hover span.icon.heart, button:hover span.icon.heart { background-position: 0 -308px } +a.button span.icon.home, button span.icon.home { background-position: 0 -322px } +a.button:hover span.icon.home, button:hover span.icon.home { background-position: 0 -337px } +a.button span.icon.key, button span.icon.key { background-position: 0 -352px } +a.button:hover span.icon.key, button:hover span.icon.key { background-position: 0 -367px } +a.button span.icon.leftarrow, button span.icon.leftarrow { background-position: 0 -382px } +a.button:hover span.icon.leftarrow, button:hover span.icon.leftarrow { background-position: 0 -397px } +a.button span.icon.lock, button span.icon.lock { background-position: 0 -412px } +a.button:hover span.icon.lock, button:hover span.icon.lock { background-position: 0 -427px } +a.button span.icon.loop, button span.icon.loop { background-position: 0 -442px } +a.button:hover span.icon.loop, button:hover span.icon.loop { background-position: 0 -457px } +a.button span.icon.magnifier, button span.icon.magnifier { background-position: 0 -472px } +a.button:hover span.icon.magnifier, button:hover span.icon.magnifier { background-position: 0 -487px } +a.button span.icon.mail, button span.icon.mail { background-position: 0 -502px } +a.button:hover span.icon.mail, button:hover span.icon.mail { background-position: 0 -514px } +a.button span.icon.move, button span.icon.move { background-position: 0 -526px } +a.button:hover span.icon.move, button:hover span.icon.move { background-position: 0 -541px } +a.button span.icon.pen, button span.icon.pen { background-position: 0 -556px } +a.button:hover span.icon.pen, button:hover span.icon.pen { background-position: 0 -571px } +a.button span.icon.pin, button span.icon.pin { background-position: 0 -586px } +a.button:hover span.icon.pin, button:hover span.icon.pin { background-position: 0 -601px } +a.button span.icon.plus, button span.icon.plus { background-position: 0 -616px } +a.button:hover span.icon.plus, button:hover span.icon.plus { background-position: 0 -631px } +a.button span.icon.reload, button span.icon.reload { background-position: 0 -646px } +a.button:hover span.icon.reload, button:hover span.icon.reload { background-position: 0 -660px } +a.button span.icon.rightarrow, button span.icon.rightarrow { background-position: 0 -674px } +a.button:hover span.icon.rightarrow, button:hover span.icon.rightarrow { background-position: 0 -689px } +a.button span.icon.rss, button span.icon.rss { background-position: 0 -704px } +a.button:hover span.icon.rss, button:hover span.icon.rss { background-position: 0 -719px } +a.button span.icon.tag, button span.icon.tag { background-position: 0 -734px } +a.button:hover span.icon.tag, button:hover span.icon.tag { background-position: 0 -749px } +a.button span.icon.trash, button span.icon.trash { background-position: 0 -764px } +a.button:hover span.icon.trash, button:hover span.icon.trash { background-position: 0 -779px } +a.button span.icon.unlock, button span.icon.unlock { background-position: 0 -794px } +a.button:hover span.icon.unlock, button:hover span.icon.unlock { background-position: 0 -809px } +a.button span.icon.uparrow, button span.icon.uparrow { background-position: 0 -824px } +a.button:hover span.icon.uparrow, button:hover span.icon.uparrow { background-position: 0 -839px } +a.button span.icon.user, button span.icon.user { background-position: 0 -854px } +a.button:hover span.icon.user, button:hover span.icon.user { background-position: 0 -869px } diff --git a/css/reset.css b/css/reset.css new file mode 100644 index 0000000..1c85489 --- /dev/null +++ b/css/reset.css @@ -0,0 +1,53 @@ +/* http://meyerweb.com/eric/tools/css/reset/ */ +/* v1.0 | 20080212 */ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-size: 100%; + vertical-align: baseline; + background: transparent; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} + +/* remember to define focus styles! */ +:focus { + outline: 0; +} + +/* remember to highlight inserts somehow! */ +ins { + text-decoration: none; +} +del { + text-decoration: line-through; +} + +/* tables still need 'cellspacing="0"' in the markup */ +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/css/screen.css b/css/screen.css new file mode 100644 index 0000000..88fe06b --- /dev/null +++ b/css/screen.css @@ -0,0 +1,168 @@ +@import url("./reset.css"); + +body { + font-family: Cabin, 'Lucida Grande', Verdana, sans-serif; + background-color: #f1f1f1; + overflow: auto; + color: #444; + font-size: 16px; + text-shadow: white 0px 1px 0; +} + +h1, h2 { + font-family: Cabin, 'Myriad Pro', 'Lucida Grande', sans-serif; +} + + + +h1 { + font-family: Cabin, 'Myriad Pro', 'Lucida Grande', sans-serif; + font-weight: bold; + margin-bottom: 30px; + padding-bottom: 20px; + color: #222; + font-size: 140px; + text-shadow: white 0px 1px 0, black 0 -1px 0; + letter-spacing: -3px; + text-align: center; +} + +h2 { + font-weight: normal; + color: #666; + font-size: 40px; +} + +h2 strong { + color: #555; +} + +h2 strong:hover { + color: #444; +} + +h4 { + color: #666; +} + +section, article { + margin-bottom: 35px; + padding: 30px; + background-color: #fefefe; + box-shadow: 0 0 3px rgba(0, 0, 0, 0.5); + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.5); + border-radius: 10px; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; +} + +section h2 { + text-align: center; + margin-bottom: 35px; +} + +section h2:last-child { + margin-bottom: 0px; +} + +article .content { + color: #333; +} + +article .content p { + margin: 10px 0; +} + +footer { + text-align: right; + color: #aaa; +} + +footer div.adr { + color: #444; +} + +ul { + margin-left: 20px; +} + +a { + text-decoration: none; + +img#forkme { + position: absolute; + top: 0; + left: 0; + border: 0; +} + +#container { + width: 800px; + margin: 100px auto; +} + +ul#projects { + list-style: none; + color: #333; + margin: 0px 0px 25px 0px; + color: #999; + font-weight: bold; +} + +a:hover { + color: #444; +} +} + +ul#projects > li { + margin-bottom: 20px; +} + +ul#projects > li:last-child { + margin-bottom: 0px; +} + +ul#projects hgroup { + position: relative; + height: 37px; +} + +ul#projects hgroup h3 { + position: absolute; + bottom: 0px; + left: 0px; + font-size: 30px; + color: #555; +} + +ul#projects hgroup h4 { + margin: 0px; + position: absolute; + bottom: 0px; + right: 0px; + color: #aaa; +} + +ul#projects h4 { + margin-top: 15px; +} + +pre { + background: #444; + color: #fff; + padding: 8px 10px; + -box-shadow: 0 0 3px rgba(0, 0, 0, 0.5); + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.5); + border-radius: 10px; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + /*overflow-x: hidden;*/ +} + +pre code { + /*font-size: 10pt;*/ + /*font-family: "Droid sans";*/ + font-weight: lighter; +} \ No newline at end of file diff --git a/images/css3buttons_backgrounds.png b/images/css3buttons_backgrounds.png new file mode 100644 index 0000000000000000000000000000000000000000..6a503daaf1af8173bc811f9ddeffcef02d02d27a GIT binary patch literal 18157 zcmbTdcT`jBw>7MyA{G!)kd8=|Ceoyf3Wzl6HK23|p@m*8AkslPp(wotq=gcSbm^S{ zfkY{xC-eXz@Nv%X_l`Tp`~9=`W{>sEHP>9_$=G`n_C`bb)^&#K7cN}5rSj^f z_Js?Vu3flr(d^pQ^EMmiO9fr;navFQT@XSm3*KU^-5<>?O?&4FtU_Q&q%HO~&vPa_p$I+=&<( zbVyEfPUb==`|ZC@AO1RAyL^6l#&&-AS^J#rgor+qy>#*XuiNJ_TzLQN{BYs&rSpUT z*rh+XQ!MVk-)H*^>NkY;S`eZ3Z!Dfmf1IiR+v5LYv?~$x>Dl>;|A78||35s?)z1#s zTTX$0JNqy9|HeGbztUz-y!SV;@Mnj7|J_L9-Zjy`NdNbBf5&yd61`IQ&<6{g*QOf5=c{*p*A2Y3IwoUAx>XOLndr^)+Wg8<7;( zrabW;iCwgi+?W3$0A%37J5r2@RQyZp&j()BDWk@xTGzx}ze-M0Iy zo1gtf)C%CpQHTA!I27SC}@$KBng<+_dkVnZgTJmr^I&d=)7fyX7~S1{wf|F z_78ZbFB(s(SZ=hR^gsT+=Vj3m|Cq3xogzu#Ik;m9lHPGRKXQ`!VRTRw$-IFGBAK)z zPyaJ_&bj=~a8_Wu@HZE8pKh;*|8zb9eF`9%qiO?4h;_?QG-*&YpCmcI_-E|5Hy^Yh&gE<+|Qq+vCShv7&?hi@UmNg^1awq;3_ zKX^4?`KLx@ypblPJiVxGAi5By(-*XhXh zV1#*4hFbVv>#no`%bWh~kAQtWk_Nqe<^Qrb52XJmDF02MIjK5?nhx)f82<^OBeC2a zl8&q>KfmKKe0lRsvXTTO9XO>KY2oLcM*&Q<(~tG2ns z!6I3Di%!G~K!Fe!9&rB_t%jhX~sRbEe+H$X)p{%SzWa>2Gdz636$cZ0TLiaO14dvs7-e#UXPCi9j zFm^5P1ht$=1|eQ5>UEUDR8Ff7alx!eg5n_%!Cla7(mggV0)aEk?0hr$V%qgi8UuLY zyg(RL@+rjxmg%s1Zc3x#&rAbZvABhO2RI&#fXYXLa_0p%kZjRRyt1H)gOZ`~5zB!T zElGwL?d4oi(H#m0r`$ zA@A~q6VFYuGWpjMF)@}yqx>T^U-R%o_8EgwBvu$rnKa!~q(7&SkP5So%pKN*-_ z0y8wM)wqriFnRnmWGF`9usk_dLe+gr_xd~8Qtw6W$i#zh-50b)L0M=0FBnfj!D(V)|schNW2Ni3}p}KwQT8c((V1W9{_{B*XvwF*=2UYI!pY= zT7tj^JwtI_guL=e3FiT%*V()cxjG01K=&59S<3IPH{Mi96&Wq{p_Z8!Cl5?;g4$~^ zB^-PmkNGHr6lcl4VnnO1wIm&wKPm;EtGt`1 z;v#V`K_JFiexNVNi^eAqe(iF-VHW2e;*fW6JAF?mBITX{@Av0S=qv#Jy! z%$y%phtKfB8zTUz82jn&@}6OoQzSs($iblR_2WR)@y5_;`I%kDbwr~tKx!Rz1VSp{ z$X+fu>EM%D)RQzoQSeucNl=rd%QYuWfz#p=3x(?!7Y3(Hlu8MkJ;4*HN*VfKd_~jE zbyQ}qXADkh<^X$8gy@r+@IC@%1R|Tp-i87sukF}=nvBHt!oOt)9M5Rwr4l(e-j?Lo zI#f3A&8eF{l`vQ}aZnjB+zH4{RQ3YuH=$J-&D6@0x<1kpa`i=Qv_$M{D=1iQ(de7f z&xcz>CKNy38>-csrmrsP3XDP>aSc#Dygw@bAUjGnuh>&%kVE1s2mA&|d=oyW0aL>= zcJ)XtdRm#V_UR{ncfP{;wg79(0@esw%e~_l5$-9CtM=00cdCd8>6+YiDHuF(jVrz4 z5T&Xds`oUe$?hT5C4L^!&2CSv$!X#IJtol zN!(&;G4N3zQ1^+oJ2FkFti+)T%-mcs@U6l^(A6m_paNN@gZVRs>U^1=1-1J)M^#s1 zC*c9AeM(evtQGhCDPW2UMNoApD29sv=t@X{)ko>P#gX%xaY2Ntr*40892zZ$g{Vy9 zJuxrh-`+`>7s9DUpQ3iM<^+2-FW35cqPO+$o<$;;bLq)YELhwNtH(Ndd86smW}%x6 zd0ts)#kEk^L5R)-=apY}J@TA;6XKFo zoQlc9eh1EKwy`UnK7uKX_DpUJ&E=vul*G{k7@m+ z44Y{kfXx1G_>=Bw#oD1Yyfy;XHTR@HHKR{ohYhk?ucGTb-0WipTF@00+;YfZ)~4Hb zw&(s)_kH!D?TdpMPe}W12#_Uov+S<2tx)ABuZIKDtQ&W7N{qD=!qbg}#zAj1OWR8- z3bW3tSe-4;91Ughw`MvMqz)Gc_x2{(bEOPJ7+Br6$&ih|RoqmPG=@zQq7CNtgi=rN z8A}z!CWi-G7^G*ed#xuIhxuo=;I0`TkDSBg(PLC8D^GlKo}pl9GQFpCvuwO^64&+S zeXCz#r{kR~H&J05>c0XeaWlDLrxL4lNg#H9$}ua2VY~Z0uFqGQm+^6EYsOF)(ZRef z+Pmcm`l@c+PA`xuW6k<6B#eQT%s0$H9fYus`P!EXn^#190k*{4GVx%lQ|%QGT6mF39h>$F9UOXq^`*PGS6DGU9p#Qg6AN0s|_ z!Z_3Jb&=q9bO9k%s%y=QQf>9dja8X1T{fyV@c04dB`9hO-u`q**gIa;|G1v9wm<`m zg~ZQ{eRhfUF2afuIFcw&1FYl6|46)~H5v5g2SuyKo!WIiRYj6j%VE5cva-+)c<|n2aAB3g=%Z>g`YE#M6 zFN=S?H@Y&J)pga;Mm~{g-rTD(v@H8Ei4)z<-g_I3OxSwq)5@u+sHou@z1m@x*>o{@ zd*^%rQH(fJe)a_*9m$DKf1MD997%oap<#5hEjUfHL8?5gs>o_S1OeCVb^N@szicFZKxwf=Nq4&7bhSUwndPg*s;>S21Pc$A6{1M43# zs;))($e}ciX1FP(C%s9wy2Cxz&BojDVw`;}2^dy3xY5b|{Z?qR&}%xzAS2U*s#D`x z8G`Y<)`xsTl%GS7+G z>red{vOGLfdilvUw;S`kDU!1?sRYAD?b=v-Ir~4$LSDMk*QW*L9KVDj0yBAp!EKIcin`08+YQIPSt=j=eSXj(@Ryzgi&a@mK7vQqz;={l|@BM<$#N0PyJ?<}_ zP`0IAQ&iesl+F`hhUZY!?8oQ(m3+|g9OSO{M>W1-RynJ8-dxUI-b@zf)%2HVth`yu z{^shL4IX>^TMT4@+jQxBQVVaG`w*qYfj!a$i4{Pb^UTnBCTq3&1n&dJucD}iF>-OH zCAF;e;MeIKIgN!x|CLVz6!)0L8Euc%n$M)TGaj3Nj+zdX%3($NWcIdt5$lR}*kXX2 z{hej%rSyDac}dXAuO2o!QYX<##M;lj+LVM|*=MMV@y@c`1uvb&3rM@jfZ_!%*O)uV ziG5vO@()+JTKfX)_ooyL_yp8oNzHaXPTj>O2MznG?lz08?DS8RQHP?Wz!`TC~zI2-I^9b8SnZNzxnYeW99@BbWSzlLj!Ii{E?Ya$W zG5R}2`|&aP8$jRt6Fwd8lnQC96;+S-{J8mKCkRaoekor^XB=3Qo-73uyl502rXq)! zmA?++zQ4-&(H_3Z##v$^^hpY@B5aa1<&Z%0Xb?AUE8X9RtS;5`!v+?htsgmpZzV?- z%$F*Qn;OtYB$N#dk~jCwl7sp*Br|q@)vGVuOegqCtSuk$M|IC9jvPQ)7NKiN+V)mv zK-(3+%@aaXZWe#Jw#}epp>!IA8#lq!o5Q*5RO{((f?8R;to0 zpSp<(be>=9as4&7#KKTj+NTz+7KG9!>Qic(Y7uHg55**I?YM!UZMJu`%ra!w5Un{gGt@&Lbz7_ zi0t4tcHKPPfvmse>#f}+v3sh~udN4g*b^CV&#MhRNI623kCjRM`XP_m*vpslJG0!5 zPgWw-C=_=sxS{q?UPkSupGma%LP!A_O!2-qpNilQH<`K`Ue=m4jq21Shvs01!wuk$ zN1pGo{WmNlGVSZ8%X-vlhOkpp&N@y1t990i1gsQe-Nw)QZ`u#dd#e&JpJL_w*$XOT zp!wq>ax1b!3gI8#BwyUN%8Ty#Rlh8`GRU_7QI64Nw^`^6C{tdrdYH*PW33-GXcg1&6a053r_mP593R!-uf+x8wt8s z#N#lj4a=LDY{5&VtjPdJeFG(j@Oi1i8zo?=U3(fof360qDax#AZH;yI?XS#+?~^IN zzyz%Xp3))>!#huQYQ1C$TI=nU@CRC|T!dLL#V`gB38<{0R%>u&w2u12rx`t%M#gy#g|j=jW#HRkYs~5X@T*0zxDl03(&7!MXl(YfjV6Uywh8Ccf~!f4=x5LjG(w8nl^hS zs}BBTdWr85Yw!f)BFB{YckaTc2Lj=sHL5VgWkJ8WIEB)~olf=oRcl9`ssdS56Q$pZ zKiX|~Du06?Vgaf4K)jA41e|#yP?+FPksdkwfzjq`cMLYb$@wz$;NP|atLa_fGB4M$ zsr*X%G{^3Gu7Os6X=?-xb->veD=fSDxd{+>?-yA$vV`f1#1+n!8wZOGGrV;k<`6tH z(kx{)QofwZX~qon z6rWj=;t>}wndzQJ=Krn?bF(|)ZFepOg%~dwR7go50gKYVw$C{{v7c-cXg>~ZY+e~ldz1wv`w)GJPgP&8_M!7A zqbf~6#XzSCGzr!^+v&aqYx{7>)VxH)ctpgLu~10Iw`P#_lpzLFo8u2DO1}CafqUS` z13L%w%v*;scM#mZ&_SS&0sP6zU~=acb9p5Y-QFfMYjo8ygRBm34kf%w$a0MT*4o2cckdFKF8o^iYDi8RbzhiLQf8TwPoL%TqzkfwcE{5gXBnh;oBaLhTNlE z_z@JGo?Wv#=_R*)ag3|put&S@2N#B2e{}IBqBTIoh~lIDjDYwfH$kR=`_~3kqTLdz z$JOqW8C~^4q=pq3iI(^jX%sK9%$SzniFvEp9oZ@GmwdT}j?MOJ<8*eEspaHN@aAe| zYz4M(Ks87e{7n${`{>Z))%|?Ep9ylA*a3bcsuRI%0kE{+m`>*RP7BXB%=r-EtGL&A z>TNi$?a@tecbw4z+dgnmo9D&6JR?^9Wm4yCm!j_CQ?j^QM47ugs_+h(7K}x{dKR70 zU8;dphT4bGMCpy$pHdA@)~WeVXVJyX9f^wiK%_(xzdUNVI*bBdpFJJ(N(XJ>!CnCe zfsPG$vEEimGS^~$tp=SOJ}Ch?NhS2JPHL~xgoSh7*j*Cw?Y6{;NYW7VVnn;!IMu+fZ7CUII-D=EEqVm#RWbky=ciAyrG0Ur8i)@vC};QT zh0eL@FaB8~*EyZ&Pj2B>FECdt=B!!?>p^^89&u;Yw=`1KZyyf5idI(H<|jT!ssHkm zi`^SL+C56skHEQ~KR30P)bk0DR7p}-sr@j7Fgp~Qd5uuNzPW=Nz`fM5&x*9YgR9Ua z1eFM;>+ySY-=!M!U3%24-mp~^l;K=4(_vO2w2y8&eJda@;z zwyh>0W3{WQ4iJBSRJ#p7Y{k2|xkQAh0r~Qgm#sqm6)a8D(QLSOys>Y@r8fz;o*FgaD7_OpPU;x`z8>;24TIjbw_o!9S$~)_}-h%6blthz}25RiDhY)>Zs5 zf^UDrd9TQN-u=+DlwZ4ll0|G`*m$^nVmlH!<~)~EIl3LIz5QKvk9CvxvCaz#YTmIK z8|(*K)(X1?HG*P?bh$!3;}{S9a~3VUH~3osE=7>b@A!i@V(6 zIt>}x+Hvtqf_J$iLOv~e`K&AeSR17SWBlYz&jLXuKs1_c&{w`FhH_4$ELgb21RB$H z-x%kNQkSYMG)bQ`bLy0^XCGaMM@swCy-68ZnihRXw0}SOIiqFl>iClSC(3S0I9Zzg z>>;|6{#dBmHd!-qIj-(vv5y|7~~IY$%@z+}KN9#}t_vh|VKVyl-{%FR@!b>(*EP-fuE-EWvV`;V>iw@P|td znZDVWbS@XRaQ6ERNd7r0D|FC#UDrqx;4*5@~PdYXeRdp~Eq%u*O0N;uThR%>I0XjZxy^-4cn>T24q0Em;zmgdpLH)d+LPJ1m{gl+44R;%y;Z`8#O zsoOQ(pS?`GyqpE?7FHlWwNtSJu(4bD6PJGA2j)iY8iqw%wPg?6;;RB7@rsylk$e1e zjbh6SrPk%jthP8!w;FnXb=umbC3l603qRBN3^V-jJE^rYE(N!MwyZx#Cl0VD%o)}S z#dAGn-GA~=tG6P&lvTJQx>A1^Zk!2z5FnS^ur5^x>ZxCmq11HGO*c~isoR_n2wx4Z zgub|KFE?04;FvqYu2GUzSLR|l(D$pY#Ud;QWu)wK zI@a()Sh|!m!F~~y@LGUw zZ7XDM)~21-LdvvqK!w1RH)+*pcZrQE0ID84&!wwY_1){l$+kcBl3dN_d;3HV9HLZA z&Y2>AFcEOyjd@MV>;V&^re3qUU?mM-+}>y~&wi5QKScC09NtfxAT}c>tiPvoRfHJ` zt7~!brS_K&C1Y)_fUXZ6)3Y)lD8VUYkR{I-K7i4)SX%-!KUW6&pwwr0hDUF9?o~(Wt3?y!XwloMs3a# zxGu(pRBcbp30p^P$W{Q7s_MUXF4}H@MaN%uDu>qP%P_3=n5YI*K70eqNW4YZs84|m zy>OB3Ln{icz>HQZmpgwJc?UKb?=^^{pe|ypF9J0K9|J{#l%4)e#d3r)ct>UxdF5H#DyT03SaD#zWbE-P^&K)!`j@)tk5bqC0Yho3uY%-W`N zGq6nmb)0yXUDoxo2>S|Gr4g=+fl-GQ;*2iIe7}tOs>O&kn&0oaJv5y&d691!_n>^x z3*`l$c+x(xXa}(Pp?G0TH18^1+wGfqg2O6l4hGiODQem`AIsN^^+*f!^sb-`$!(Hi zOUtO3!utQ{NQ%S7%9eu}rC7gDDn-^9h-XQPT+N(je^T}`vB1mUG}kM+`rWm(5H#vC zMnBL4n>>=vs2b~+oWdU-fK=Gh%F6ehy>#{A^CmB5wWfimYn26eX?i#us*9v?05w`u zKct^4w{&(ha?GJ5^VRQ!QH574CUE+7M+(^60UhS0@lJS`0A#u9orM5{aO%}zkV*FIpUc6{w0hc*b)QRH{?X=b24VH;Irccqrd$@IyG_$|No0Srd)%ds zdJMQ5^&@m8B-Vy;(U*H224&LVpxcJ0zusOCm2x7tkA6S%`%dhqUWqY7lYUEpr8~~v zNFdMmlIoeWgxrAEMo!zSvDs!d>c{&KOrXcM8Qe$6bRLPV-^B2)|DL5he|`RYprL`N zbMG2IvXT12v6%CFn9l+<1C*^vr*KnfX7yQUCAXV*QuT zwzh1juhkYycCAgMn%bIbC;H*R$t`%!hs(YIF5eR4jF3n3U$4i(*E@EqYi`dC=xBD? zKIOTLM8%6vD1@TzOCW(Iqt=;l%r-f#`IkhqQ1ogGTE9~I2v_5llhiDwch*nDM(soN z6aYc;^@TfmOywSWyZRyKa5?$fZaH?#TZap_MV9_&<7TH)F|}oAV|pC1@pcIU`HnRO zy>6;?z(s`b)c~(3pP6Y=jsWv|PmD|&lV#32yaHtMEk3MO?WQxG*vJnyxOxT3XnL>> z>6%PH$v1b0i_3w>j%S2rOyoiZc(=wz_JGh_Rh%m`M7?e+$r5x7z|T2-|GbuWkYmKs zQ6F8@KW9<0*(`LJpR8Sn7y|9v(53QaH*KA>UZ=v_9;XBUkEJE!pJ+5 z^#JvYfz$jJ9f)KcwxFNBJ>|x(w#0$IeDbJMEf!d~>A%LZcj8u3Hpf5IIT;ycGdq(i z`L+dT(v}<8)qx&-Q*AVdOU>I^X`j)-&@s=rd2`nb?t3;(czaf21@J*xo8V2wu(~do zHlNg^G?yztOnY^pueF2yIy0g$qVQD~1zIoSg}|5azTxI;H%<0*%!N$$kELPd@y+dG zFJx-*2PZJi1TK558$OGWU7jZh$Z(37i~yDGee5i9V#JRj@BsnJKHV0Z;B4A{SJc!WvN6TyB09l&6cHUfzAOipo6&J{yx{`w9jl9e!TEayP;;-3@z z9~()}W9=Br`EICYQVF$~dv0K_B*|fpt>LwrAYJ(!Yq?QX?$v|WYkMK0K=A48{;4ki zAkxzw1X>(8@OM(8Tu>8gX&FKw>XjxAe4c@W8l$)SvL@!o(=mLY`%BU=4?oWORfLmhUx*DdONxIkCK)n6AN@4s?>I>KSb_33y-B-Nw|->L%@f)@_0 zH8$UvKK{s3Yk!Bw*FI&r2U=8~78JM&|Cc?)4qZ`S)6G0DQE!iews zAqsN_w)B4Fp7na-iLq6K7^yH4S2KRKmE9Tm6plY@7 zRj!2)=Y>h1rMoF!m;AO{B*${=*B^Q*vOQ~!S7|MKF>KLR zKcL9A?TVcQPo?3(L-!_h&k^drel?_uvTMa{a3avFMRvEXebh;J_NR~%bnw;gK`1H% zlWO;*q7%FLt4}-11yj9GPnB_5D55&~n>%za0Uf~1cTyPhY zLTa~HGBPXtE*?9%kSD``6_MwR{B=j@1K3*!fk+nCqYw(r?xWq6~HrhGi zG8IE%{Wt}W+p(|}$ct`BrXs@_%!_9!HY!IBG>|V9iYqm(N$MKeGvtbRoa~fsyvMm| z`q1YIbC)IEakej6t+#`LJ?6vP88fA{{#Lt^!cg(?2XJ=HIz*1Hp?@RzPu6{80cVgW z;q|S_0b-#ybK0p`^I+E(-Iv|B(>%txck1wy?y`ntF_T7dQYhLuC65;(0|1}dx$P-} zY5Dl#1?PD-)0hZ&8x0{G6o-h=?2`}4Uls7~8M{6&T`10{yu+w0q$Wb&Nr*W8b>h5F zm)$+0sRq{+H2zXqF5cz(YHL6pziz7p#QLp0LJdu6Chi7kZ2Eq)g;o^wwwVJOsnU*( zXv2@ZUqxz4rmrBytHy<@PXJ;gVl?K_TvZXc0~h&4!W)#jvDmF+ddDL{29cKh`!{51 zIx{|T2&zUJh06n~JKb*D>y0rGYdU4~Cq`R>0=0MMbS8O9wz!?EJos$BtnRt;+Is5G zJz3FDn|ockW;-X{-@EzrO{MRCHPsdc-oM&@6EiiH5pF1<3Q^#G_gcPW`$CnQp;X5* zb^RMgkA101GBrNkF-E|%1s*GZnen)}>D|=ttqiGoZikm5fwxUf&yv_*961|LzO%zG)oueyqpU~KE96XR}(;zuQn{- z0MR4c&oH!xiTyOqXAqM*JuZ=Os!XZn(#nzR6ZAbbK6fJYV~1&bVw$c<05lZqw5IWw zYsb=IWh%KQ#)tF2Y6T3{l4OU9wF1&L^#>Js2ge$KlQ8p+W)73Ljwl7KM(d`{<(n+{1vRZ7n&MTq9*rc zUBnZ`so-b+{$3vLJ~g$;d%f3zPwydvn3-MxG(kLeUZ4~cqkVkb9?3JYHW4Ec}uHsgFR zbCmLEv(Jl#_@_lMl^s!}YtICl=j0tVFy5klz^6|^txi1#h`wOk;3g7~s#_+>+G{VB zhzbWb4Qb#Pct?51)`h>{4Jo!Rcig^jQb~r>8t%yjYEU^ddw9JT7ym#M{opWt@;Wt_ z0U0Wdd1p^Wi!7#6?Vr!Skzcp(Bq}iJl;Qvu<;PuuJq*;=49|U6p&X7oSg-ta0RQIy ztSxnR0MiL(1T|+o&uv0h6-f_rpN=cxW@em$L$>qXQP%i`x*WSnrp?)A;5N@zjiR8u zuWZ2G?g-@iN+6Tb+_w1~ss>jDn;S#H=6Z6{3fi>mn)4f(Y>YWVFoqZ8l@n!C2v`sQ zqti;zU63?8G*32vzM095%#3FMb^TiHT8 zU_{+;`gH{}-9ESTK{Crn&^Q;|MQ@rg<8~CEIKn*X2)`a2BZGJ4gTI^`>bCXT_7oSX z^BZSYPry8l+pB-?er=<2-!;Z1Q1Z~MR5q<}hS0V^?}ERn;*+}Xgy~8YkuTrnC4?1Q z%>Z}WO^0>~jJ(UBvFM;73AV3bb*7BrN6iYVr!{WDe1zcmm>+T2$tBTYE}Zgmc#^M; z+@7MVB!#MAh0IuXy?$n)YBzr;R{ zj;dULiAjhlk_jX^sRHp7i#p4M#-z<11zN_UO6o$?M&nxD)GEVnRK9D5IiU_1qXlh1 zz2=EKx&WcuyT9wa3)628E}L#qEzrsDOS+X}(+m{q0|BuQVw?Jl2!=Om=R#a{X}lPe z3C1Ru(;7hPgRM`l#9;3K95(Rqia7K-3R{-9&mLXA3FlczI~l7yFk})4gQFd3R_{0@ z27{%1A0mUDCQ6>9GWa>$E}MT{?1>1|bhp0*jPDg?DfHLdJn2U;w;0Y1&g0$TKQ6lo=j?amhrx)U8=xtD>eLm8c&uyL5T zZr){FiM?-?1y#(zGRl;_8x~rx-Kr-Otp(p#bb&i2gu1Yxb>DFLN4%8%FXf4&wgOod zlfs-8HFA)K^oexr*P9aap4?*lAW^aaaZ3Hlb?kD&rCte2onZ1Ms zziA*BS47u{leqxeoagjmIPF`PJC8T?rjkjqo_7!eU5C{OywHO z%@v>Q30gB-OKR|8RGz6;a=RmS<3(B7aOzVB{!m!NtkaPSz4)9Vmh$$V7`yvTx#%N~ zQkKGL%tbztI4|1`X-V4vl|efJ95+aL{OiQf`G-6b9#|%mEHV|^97ov!6S&5sh`s6C z`QGE0 zHU7#@+)(ZZwq6mPhM(E`N^yR|Y*XT{=z2*ce~A8zA-A5-ZWp*@KGhpWZjZa9E;|13 zcG^{MIJ*xQOQ^nv^NBlD2z6~5h{DW%E7LrB%DE~JjACRjpoy`c0nt(Q6|QkT1I!HX z$I==@DSm2z$CHZ0_lxS9CuqJVnKsR(FVjhaUCA&{=)A*5OpCJ z)Kw|Mvw>)kuA*YlV$INWU}@hbWOVz*faI6m?KItSwnO!f&C4AS(;c}!1bFziRb5dA za81i&u6^979Xdco%k6ukRa*}2jcN#$wW57FxWQPq4sJK!4J;sHJo&*i`f}F=Q5eRdm)lHec;-|4f7YK6a{l z?G~^hg{`f4u>UJnQ8g<(QBkC;zvBRrAR%`Ug9`Z(MZ3AF&BcI|uj3G4Uai(%wpIm{ zZWBX)x6OB`XvoT&FE%*{6PG%L$(dgN7`&R?CO&9k8eDuY)It=DSGEk;r1oeXtB{?e zHmpc1H-WS#st7yDzN%WNpMEA~kk+vOJyJ}<_Q-GQicNL%;qTu2w}DY5{Kmr#@4w%F zxYGSf#)F_vv~-yjc&8ETG(sc zuyxFnRguz~)D(9Q<0cjB)K8GBT4hj%+WD#bF+(ZA3Z5yjY1&qGXiHg4REqfhIdDtd zUdDn}8&^rThEa=BR(?n8RMQaedd5CuNHcNpUIE}}#ldB8`eUum`{_q@t2Xvk-Chz_ zijWwenGIHF+HJjUSpIKcn%RU&3chaS3rYgNpn;LtQ2v@+VukY~TAuFJD5?m(LCCC5 zH&4uQrND8U1S?WhQD9HMF0jFL?wmykb3R$wPge#XXcNNQzv?;9es_4Sd`HytX`Ah) zk-7Bot<)z56WsW2N}_G0v*t&6ZJ>+JV~>eq7NkV_ndZlqAJW#2`(F$UR^9GTrnM;! zS*=V?8bD|A4AR=kC2&e6haFJl13mPFc29 z)>%iK)@i{`gnDU$B(pzG%Rrk-I-PwzWbRTeHzYEa>iJBEOBf7=+ zyGNeK2J^33u^i;+AJ=qR9`6Bk4#LGFO2*^G0F=LdcI}oJ#L~sld6d+mO^cv-wN-YQ zy&W0x{N-ZZ(ct4mhZ!~0TvE4#Yr1|;ac22rR}R@2*wsl;kHGQ^*|#uAiu4%(mZ^;S zFziVS5K2ng{Ns%h8kus0Iml=*HeS{NW~6OYkXjHb8#|#etI8-spH*sT(vw( zjdnE5!$JELRyEI#Gz}qxCRQ0LARcMIne;TNBZp7Ay^ohgk9b`;4i74UiqTm;dvB{e z-}V~Y%0PnFSIEYc9xJ=YY=-A4HX?TVwiGOGEE)uaKjR`?^PAAH@3Jbl@` z0dfgkZ~dS(ka^|$EMssKEQ@klvLvLEB1u{}Q$NvL(P0bvtKnv?=n%Vdq5<6YX4nS} zgQIKjL~J5#S$p#}>12vA-jf-U4Sfwq-tW{_MPf8mzAY0N${&uB4`sPXuhN|@Yl=$> zQ1)>Nn19SL+Omqf?p`!RuoO`CJAZjI{h?xOG1I{@RYduPX zB3KvO293MiPgc&fpl7yl-Y^>MuwpXcT|M4>*V<*hW+gdwdo|l->$oAK3RB2)H0^0P zacy<^n+F=IMP(ZturO;>P0;H7Gb0YW+XlYAA^6B*b0aMy->tzM+F6`wh|n*}h#{y2 zp^w35gx#tNzQj0L#woV1(J8A9rOtsRlZF@FUe;vta09Ns7WCyAwY?-Q!UvT9-Jkd6 z78%lUW3FUI0guR z6+`F>Y^iYxkxyLEG)!?{s`H|Yvln@gXbGwqEy5%cUS1h+iySMyQoLy6++{~W3+tq{ z*TVXwJ%Gy7Bb(dZHo(TZ$lj3kC$#}S2fiO|^s@c<+cPvK+&O*4tSLm9yVlnBERG!| z%NVhIOVz8Nw||7dz9$?#RSVsQ`DS{a^u0Ybyyq%8`%48GYMlaBt;cL(L$_C|?o#d+ zgx&1U%#&qfdy-&oUTteMm?mZ*J+u{c6p>Yl^*?Wm1m>^5Zr<~^ymW8*)93@K8LA#G zd~2+bobH$r4SdnkZ+R^)R|Y%LZ9rBo@&E5inFo~U3Mm3ujGj?OcE{S z#C=ML2dKA|tnjU?HH~o4$|IMkui;|>K76&>yBV+O;2 z(u*rs%;PztFvR9{AG_Tap^{}RVW5{d8t_BlY923BFRKykf%&tl+ed`GrX~!}s{^Je zG39XSJh<2NC;xS)K~~1HBf*cn0WM%=VQaw&_~hCYQmd-ZcA%55rfl##t;55oyRKET zk-STr=x9S=fAUDKYx!z40Lu_pAr#(m!k={9K@qch@J7;SICcQuk-4aQ=m$5XAlq9Q zUar-O+Vzfv|58|tO7XnjHmlzGLm)!zsT*5URuY3mLvZ6uUM|kPS{q9_-3FMAeLMp# z_iU%FN6lHAN_zjpj|Ee=#!QSgn-1c~+ zGhKXt*@@hZCOrFoc+ui%!^~jx#fvlP=o%YJbzEH|jZvges(O0o#_*ov`bSK)4b|8? zP*1#<)`IvD-5k^7s0v-4O<(6@)ib=j2`8ax-4 zvz5ZYDXe^wxjr@**Hs^|Cep9PaQ*<9Zs{F6s9^;~D0_mSD#E?nqVGu;Mc~Rnk*}Wa zEwQLQN_Lr+=h55w3;Riz_AP zurusH#130dTZB;lAo4@opGIC%|KAu6*t-Jf7CFQgyk+#Vha9=U*myt>v`HGgS(u~6 sTsMN7fnnd*;^+3)c7BzAT>H0v!;Dz=y&fA^0TnTLy85}Sb4q9e0J28GMgRZ+ literal 0 HcmV?d00001 diff --git a/images/css3buttons_icons.png b/images/css3buttons_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..30e3f3dbed6fb200aa2eb97ae7bfbd50fdf645b6 GIT binary patch literal 3116 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 literal 0 HcmV?d00001 diff --git a/images/devboy.png b/images/devboy.png new file mode 100644 index 0000000000000000000000000000000000000000..09ab555523f229af497404d115153305374e1d43 GIT binary patch literal 6538 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

;+%v6sUbtg1u@al(F`)E(M*#4-PKviT{t%xE zC9(ZhE^?0I24{Pq(_2QZc%a%&CD0d?6|C7kR;8@DMpopO4}Kb~SbA+MF=2{sR11`E zjg3!_(q(6VvF@Fq%EALsrpY0S3(?D@_~~(-wL2VYr|cH@wYk+k_K}VG#7~>q1QwJG ziVGBVE#2U_bT~WICH2)w?9A9`&7EptOLa=r*DghYwI{hC6w6fCu z9Hr$2r^HWPWml|EA;L2GiQW8ed*o#W`(UmE-=_}(gqXa#axCgaySTO`#&xzJSGT%D zB(G;%tcjewg1MFs+SYOY*!lWoNw?7Lq5jBV0Mikk7^YwP#NIc$_zp;2?J_j>sknKreYRQ>b&FIsF zC6u^e4~df?-{^Xt@bkFwl?35AJF|FX_x7!zq!95f^N2?_kvz2xbSoPxw_mi597uf@ z3X!Z;Y@8ZP_P?XyV}0WLrjr_n8=0&<)ZiH7+#+cb{7Sd3Y85&y9lk7)Zt>a|Y?@qh zMOL-2BEQOg-nhx%eoNLAVFi(J>RnyPXkt$gdI-JQ@nM3yHu}r*%VX^>nKCbMOh~O#nky)f->JLw16QKnikz*S-YA<-cckUbXPR-XYT>dNln;95c~YC}2=n9a54?Amad05tkj~s8 z`V}*Ua{!^z<9o~9)#qj>{KMUg+8gs?QT?`EHri+IgbCbWREa>;$hEw#w4Xvpq7#<0 zuqPx#&||s8h(~MaN!+K4lenKxBxR(nDJuEorc_Te=V^~Cwsf$+wkrll!Q zgHmnI>`m|^3Ldf7D2~z_Rh|&ezc0{rSk`@6stWPB(JAY35b@WPhGRF*&@XOlB-JA- z^wJZdg>%a$l^5C%-)uV_=_Taszb(>>GfnECQgsne{ffsamTU9v`Kjd5Pdz%(j7yb( z)~zZ*BSGh;F9p)BhI4)wHZnQ$Ehn`Lk|OeQ#^%Ma?_b~h9DA%Z-Y=lC(kD2V5FBtW z-OxDHP?^vZ7yD!5)OYE2}KNy4#d)wtX-oMQQ4v^|@OuwM>31 z_OutFk`cRm??e_eITifj#*wbk(`d}4+iyfYJMLoWWmBIL;aGT4>Of-*D6*)DKWb`x z`b&@^xRXA3Hc>o#s?n}$@X^2=g2ZXy%tne1OR)I8VmnRkBSVB6Vg&g}1sWLM{@-L6 zBUP2PWY4PV^WLg1I*}FhuvF7kHs0Riwit^i0*vH)2R+lD)(XwyM8GdLNPRX(qV&%@ z4i;`XkY1cBM+xR>)Sg^>secY%-kT5f*mO{h)HkI!4`O<%M!vG<)!#||lc!PYl853# zysYjUm`xKcsTw24tKXPLT$x!NS&_`tDP{SD83-|qS&ZX8 zJOE4>wjS_jF*>s+W=mwRjyv>DEiLNHMaWQ}uK@;m(eG+gL{>vCPkym=ZpEtN4>Cst|_j&$m2R=xLOGF#;{U zBjpM6eI~2>U~1`LZTts3s(9~Ud4DU2%dwAVheclt@Y${Lr$?tLY3yy+ZL_@KNQ+&{ zsSI3weQVveQs20`Me?=FRs~$WsI{ON*)Lf`JK9Swp=hp1 zF}{C%#o+s86BVVNF8%~M4NhEypy+}pjY&CuMG5ricROd$;koQIpZQ8(b|E$JPAq!9 zX_|DmJGRCrGSq)WQjI=l5p2FL3t_;Q2j0Fw + + + fTask — ActionScript3 task-system + + + + + + + + + +Fork me on GitHub + +

+

fTask

+
+

fTask is a task-system written in ActionScript.
It is heavily inspired by Rake for Ruby.

+
+
+

Quick example:

+
var shape:Shape = new Shape();
+
+task("paintShape", function(t){
+  shape.graphics.beginFill(t.color);
+  shape.graphics.drawRect(0, 0, 100, 100);
+  shape.graphics.endFill();
+});
+
+task("addShape", function(t){
+  addChild(shape);
+});
+
+task("rotateShape", ["addShape","paintShape"], function(t){
+  shape.rotation = 29
+}).invoke({color:0x0000FF});
+
+
+ + From 6769bfab581475e97fca6753eaa4e81115622437 Mon Sep 17 00:00:00 2001 From: Dominic Graefen Date: Fri, 3 Jun 2011 20:21:15 +0200 Subject: [PATCH 3/8] Initial commit --- css/screen.css | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/css/screen.css b/css/screen.css index 88fe06b..ad49297 100644 --- a/css/screen.css +++ b/css/screen.css @@ -6,15 +6,17 @@ body { overflow: auto; color: #444; font-size: 16px; - text-shadow: white 0px 1px 0; + +} + +container h1 { + /*text-shadow: white 0px 1px 0;*/ } h1, h2 { font-family: Cabin, 'Myriad Pro', 'Lucida Grande', sans-serif; } - - h1 { font-family: Cabin, 'Myriad Pro', 'Lucida Grande', sans-serif; font-weight: bold; @@ -89,6 +91,13 @@ ul { a { text-decoration: none; + color: #999; + font-weight: bold; +} + +a:hover { + color: #444; +} img#forkme { position: absolute; @@ -106,13 +115,6 @@ ul#projects { list-style: none; color: #333; margin: 0px 0px 25px 0px; - color: #999; - font-weight: bold; -} - -a:hover { - color: #444; -} } ul#projects > li { @@ -165,4 +167,5 @@ pre code { /*font-size: 10pt;*/ /*font-family: "Droid sans";*/ font-weight: lighter; -} \ No newline at end of file +} + From b9be7af6bccac58cb6aad173d10eeaa9170534c9 Mon Sep 17 00:00:00 2001 From: Dominic Graefen Date: Sat, 4 Jun 2011 14:31:20 +0200 Subject: [PATCH 4/8] pages --- index.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/index.html b/index.html index a09a2db..2d1eb36 100644 --- a/index.html +++ b/index.html @@ -27,16 +27,19 @@

fTask is a task-system written in ActionScript.
It is he

Quick example:

var shape:Shape = new Shape();
 
+
 task("paintShape", function(t){
   shape.graphics.beginFill(t.color);
   shape.graphics.drawRect(0, 0, 100, 100);
   shape.graphics.endFill();
 });
 
+
 task("addShape", function(t){
   addChild(shape);
 });
 
+
 task("rotateShape", ["addShape","paintShape"], function(t){
   shape.rotation = 29
 }).invoke({color:0x0000FF});
From 7ad2dbe3178c12ae2bd29bed79594323a3e3dfbb Mon Sep 17 00:00:00 2001 From: Dominic Graefen Date: Mon, 6 Jun 2011 15:06:43 +0200 Subject: [PATCH 5/8] HTML updated --- index.html | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/index.html b/index.html index 2d1eb36..e65edc5 100644 --- a/index.html +++ b/index.html @@ -21,27 +21,51 @@

fTask

fTask is a task-system written in ActionScript.
It is heavily inspired by Rake for Ruby.

+ href="http://rake.rubyforge.org/">Rake for Ruby.

fTask is available in two + flavors:
as a library
and
as a build-tool
-
-

Quick example:

+
+

Use the fTask library

+
import org.devboy.ftask.*;
+
+var shape:Shape = new Shape();
+
+
+task("paintShape", function(t){
+    shape.graphics.beginFill(t.color);
+    shape.graphics.drawRect(0, 0, 100, 100);
+    shape.graphics.endFill();
+});
+
+
+task("addShape", function(t){
+    addChild(shape);
+});
+
+
+task("rotateShape", ["addShape","paintShape"], function(t){
+    shape.rotation = 29
+}).invoke({color:0x0000FF});
+
+
+

Use the fTask build-tool

var shape:Shape = new Shape();
 
 
 task("paintShape", function(t){
-  shape.graphics.beginFill(t.color);
-  shape.graphics.drawRect(0, 0, 100, 100);
-  shape.graphics.endFill();
+shape.graphics.beginFill(t.color);
+shape.graphics.drawRect(0, 0, 100, 100);
+shape.graphics.endFill();
 });
 
 
 task("addShape", function(t){
-  addChild(shape);
+addChild(shape);
 });
 
 
 task("rotateShape", ["addShape","paintShape"], function(t){
-  shape.rotation = 29
+shape.rotation = 29
 }).invoke({color:0x0000FF});
From 8d13adaf315e0ce5ea0897d28556a333ec472f3b Mon Sep 17 00:00:00 2001 From: Dominic Graefen Date: Mon, 6 Jun 2011 17:40:12 +0200 Subject: [PATCH 6/8] Updated pages! --- index.html | 73 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 56 insertions(+), 17 deletions(-) diff --git a/index.html b/index.html index e65edc5..bac25f8 100644 --- a/index.html +++ b/index.html @@ -26,47 +26,86 @@

fTask is a task-system written in ActionScript.
It is he

Use the fTask library

+

Start by downloading the source or the swc-file and inlcude it in your project.
+Now you can start defining tasks, and execute them in your ActionScript projects.

import org.devboy.ftask.*;
 
 var shape:Shape = new Shape();
 
-
+// Define a task named "paintShape"
 task("paintShape", function(t){
     shape.graphics.beginFill(t.color);
     shape.graphics.drawRect(0, 0, 100, 100);
     shape.graphics.endFill();
 });
 
-
+// Define a task named "addShape"
 task("addShape", function(t){
     addChild(shape);
 });
 
-
+// Define a task named "rotateShape"
+// Define "addShape" & "paintShape" as its dependencies
 task("rotateShape", ["addShape","paintShape"], function(t){
     shape.rotation = 29
-}).invoke({color:0x0000FF});
+}).invoke({color:0x0000FF}); +//invoke will execute the task and its dependencies

Use the fTask build-tool

-
var shape:Shape = new Shape();
+        

Thanks to the redtamarin-project we are able to run ActionScript3 on the command-line.
To start with the fTask build-tool just download an executable for your OS here.

+

Put the executable on your path and verify it by checking fTask's version:

+
$ ftask -v
+fTask version: 0.0.1-SNAPSHOT
+

Now you can write buildfiles in ActionScript3 and run them with fTask.
Let's work with this example buildfile:

+
import avmplus.*;
+import org.devboy.ftask.*;
 
+var content:String = "Created by the compile task.";
 
-task("paintShape", function(t){
-shape.graphics.beginFill(t.color);
-shape.graphics.drawRect(0, 0, 100, 100);
-shape.graphics.endFill();
-});
+task("compile", function(t)
+{
+    FileSystem.write("compile.txt",content)
+}).
+describe("Compile task example.");
 
+task("clean", function(t)
+{
+    if(FileSystem.exists("compile.txt"))
+        FileSystem.remove("compile.txt");
+}).
+describe("Clean task example.");
 
-task("addShape", function(t){
-addChild(shape);
-});
+task("test",["compile"], function(t)
+{
+    if(FileSystem.exists("compile.txt"))
+        if( FileSystem.read("compile.txt") == content )
+            trace("Test passed!");
+        else
+            trace("Test failed!");
+}).
+describe("Test task example.");
 
-
-task("rotateShape", ["addShape","paintShape"], function(t){
-shape.rotation = 29
-}).invoke({color:0x0000FF});
+task("build", ["test"]).describe("Build task example.");
+

Save the script above as "build.as". Then cd into the directory containing "build.as".

+
$ cd path/to/directory
+

Let's run fTask to see what tasks are available in our buildfile:

+
$ ftask -T
+compile	#Compile task example.
+clean	#Clean task example.
+test	#Test task example.
+build	#Build task example.
+

Now we can run each task by just "calling" its name:

+
$ ftask compile
+

We could also run multiple tasks at once:

+
$ ftask clean compile
+

We can open the help message by typing:

+
$ ftask -help
+Usage: ftask [-f buildfile] tasks...
+Options:
+-help: Prints this screen.
+-v: Prints the version of fTask.
+-T: Prints all available tasks.
From 563bda6fa8a7d533c178452de10600ead71081fe Mon Sep 17 00:00:00 2001 From: Dominic Graefen Date: Mon, 6 Jun 2011 17:41:43 +0200 Subject: [PATCH 7/8] Updated pages! --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index bac25f8..feba2a7 100644 --- a/index.html +++ b/index.html @@ -25,7 +25,7 @@

fTask is a task-system written in ActionScript.
It is he flavors:
as a library
and
as a build-tool

-

Use the fTask library

+

Using the fTask library

Start by downloading the source or the swc-file and inlcude it in your project.
Now you can start defining tasks, and execute them in your ActionScript projects.

import org.devboy.ftask.*;
@@ -52,7 +52,7 @@ 

Use the fTask library

//invoke will execute the task and its dependencies
-

Use the fTask build-tool

+

Using the fTask build-tool

Thanks to the redtamarin-project we are able to run ActionScript3 on the command-line.
To start with the fTask build-tool just download an executable for your OS here.

Put the executable on your path and verify it by checking fTask's version:

$ ftask -v

From c58b7ff68d33b287512306755d7cd413d0db0640 Mon Sep 17 00:00:00 2001
From: Dominic Graefen 
Date: Mon, 6 Jun 2011 17:42:12 +0200
Subject: [PATCH 8/8] css

---
 css/screen.css | 56 +++++++++++++++-----------------------------------
 1 file changed, 17 insertions(+), 39 deletions(-)

diff --git a/css/screen.css b/css/screen.css
index ad49297..9713888 100644
--- a/css/screen.css
+++ b/css/screen.css
@@ -13,10 +13,27 @@ container h1 {
     /*text-shadow: white 0px 1px 0;*/
 }
 
+.left-column {
+    width: 50%;
+    float: left;
+    display: block;
+}
+
+.right-column {
+    width: 50%;
+    float: right;
+}
+
 h1, h2 {
     font-family: Cabin, 'Myriad Pro', 'Lucida Grande', sans-serif;
 }
 
+p {
+    padding-bottom: 10px;
+    padding-top: 10px;
+    line-height: 18px;
+}
+
 h1 {
     font-family: Cabin, 'Myriad Pro', 'Lucida Grande', sans-serif;
     font-weight: bold;
@@ -111,45 +128,6 @@ img#forkme {
     margin: 100px auto;
 }
 
-ul#projects {
-    list-style: none;
-    color: #333;
-    margin: 0px 0px 25px 0px;
-}
-
-ul#projects > li {
-    margin-bottom: 20px;
-}
-
-ul#projects > li:last-child {
-    margin-bottom: 0px;
-}
-
-ul#projects hgroup {
-    position: relative;
-    height: 37px;
-}
-
-ul#projects hgroup h3 {
-    position: absolute;
-    bottom: 0px;
-    left: 0px;
-    font-size: 30px;
-    color: #555;
-}
-
-ul#projects hgroup h4 {
-    margin: 0px;
-    position: absolute;
-    bottom: 0px;
-    right: 0px;
-    color: #aaa;
-}
-
-ul#projects h4 {
-    margin-top: 15px;
-}
-
 pre {
 	background: #444;
 	color: #fff;