Skip to content

Instantly share code, notes, and snippets.

@moorage
Last active August 29, 2015 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save moorage/260ebfbfb351b308c4b3 to your computer and use it in GitHub Desktop.
Save moorage/260ebfbfb351b308c4b3 to your computer and use it in GitHub Desktop.
Talk given at AdRoll, SF HQ - January 2015
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>In Introduction to Go(lang) for Programmers</title>
<script>
(function(d,ua){
if ((ua.indexOf('chrome') > -1) || (ua.indexOf('safari') > -1 && ua.indexOf("mobile") === -1)) {
d.className += " supported ";
}
})(document.documentElement, navigator.userAgent.toLowerCase());
</script>
<link href="http://fonts.googleapis.com/css?family=Ubuntu:700|Ubuntu+Mono|Crimson+Text:400,700,400italic" rel="stylesheet" />
<style>
/*
* WARNING
* =======================================================================
*
* You won't see any vendor -prefixes in this code.
*
* This stylesheet requires prefixfree.js to be included in the document.
*/
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
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, 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,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
body {
font-family: 'Crimson Text', georgia, times, serif;
font-size: 2em;
line-height: 1.3;
background: rgb(215, 215, 215);
background: radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190));
user-select: none;
font-smoothing: antialiased;
}
b, strong { font-weight: bold }
i, em { font-style: italic}
a {
color: inherit;
text-decoration: none;
padding: 0 0.1em;
background: rgba(255,255,255,0.3);
text-shadow: -1px -1px 2px rgba(100,100,100,0.9);
border-radius: 0.2em;
transition: 0.5s;
}
a:hover {
background: rgba(255,255,255,1);
text-shadow: -1px -1px 2px rgba(100,100,100,0.5);
}
a.cognifide {
display: block;
width: 200px;
background: none;
margin: 20px auto 0;
}
code {
font-family: 'Ubuntu Mono', monospace;
}
code.snippet {
display: block;
position: relative;
padding: 5px 10px;
border-radius: 10px;
background: rgba(255,255,255,.5);
}
code.snippet .disabled {
opacity: 0.5;
text-decoration: line-through;
}
code.snippet .indent { white-space: pre; }
code.snippet .comment { font-size: 0.8em; color: #777; }
.step {
width: 800px;
padding: 20px;
border-radius: 20px;
transition: 1s;
}
.step h2 {
font-size: 3.5em;
text-transform: lowercase;
color: transparent;
text-shadow: 2px 2px 10px rgba(50,50,50,.8);
position: absolute;
transform-origin: 100% 100%;
transform: translate(-110%, -120%) rotate(-90deg);
}
.step h3 {
font-size: 2.5em;
text-transform: lowercase;
margin-bottom: 0.2em;
}
.step ul {
font-size: 1.2em;
}
.step ul li { margin-bottom: 0.1em }
.step ul li:before {
content: "★";
text-shadow: 0 0 5px rgba(50,50,50,0.7);
color: transparent;
margin-right: 0.5em;
}
.step ul b { font-size: 1.1em }
/*
* TITLE STEP
* =============================================================================
*/
#impress.step-title .step { opacity: 0.1; }
#impress.step-title .active { opacity: 1; }
@keyframes rotate-h1 {
0% { transform: perspective(1000px) rotateY(-10deg); }
100% { transform: perspective(1000px) rotateY(10deg); }
}
#title h1 {
font-weight: bold;
text-align: center;
font-size: 3em;
line-height: 1;
transform-style: preserve-3d;
animation: rotate-h1 2s infinite alternate ease-in-out;
transform: perspective(1000px) rotateY(0deg);
transition: all 2s ease-in-out;
}
#title h1 .short {
display: inline-block;
font-weight: bold;
font-size: 1.3em;
transform: translateZ(-50px);
}
#title h1 .css {
font-weight: 100;
letter-spacing: 30px;
}
#title h1 .d3 {
display: inline-block;
transform: translateZ(20px);
}
#title h1 .transforms {
display: inline-block;
font-weight: bold;
font-size: 0.75em;
transform: translateY(-0.2em) translateZ(50px);
}
#title .author {
display: block;
width: 400px;
margin: 0 auto 0;
text-align: center;
font-weight: normal;
line-height: 1.5;
opacity: 0;
transition: opacity 1s;
}
#title .producer {
margin-top:20px;
display:block;
}
#title.active .author {
opacity: 1;
}
/*
* SUPPORT STEP
* =============================================================================
*/
#support { width: 760px }
#support h2 { font-size: 2.5em; }
#support .browser {
width: 240px;
height: 240px;
float: left;
margin-right: 20px;
background: transparent no-repeat 50% 50%;
background-size: 75% 75%;
margin-bottom: 20px;
position: relative;
overflow: hidden;
}
#support code {
display: inline-block;
background: rgba(255,255,255,0.5);
border-radius: 10px;
padding: 5px;
}
#support .version {
font-family: "Ubuntu", sans-serif;
color: rgba(255,255,255,0.85);
text-shadow: 1px 1px 5px rgba(0,0,0,0.4);
font-size: 6em;
position: absolute;
bottom: -30px;
right: -5px;
letter-spacing: -0.1em;
width: 220px;
text-align: right;
}
#support .browser:last-child { margin-right: 0 }
#support .staticlinked {background-image:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22100%22%20height%3D%22100%22%3E%3Cpath%20fill%3D%22%23E74C3C%22%20d%3D%22M100%2094c0%203.313-2.687%206-6%206h-88c-3.313%200-6-2.687-6-6v-88c0-3.313%202.687-6%206-6h88c3.313%200%206%202.687%206%206v88z%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23C0392B%22%20d%3D%22M68.494%2010.847l-18.287-10.847h24.383l-6.096%2010.847zm-34.662-10.847c-.212.913-.548%201.81-1.027%202.662l-11.746%2020.908-20.616-12.228-.443-.294v-5.048c0-3.313%202.687-6%206-6h27.832zm-31.174%2049.794l1.955-3.479c2.704-4.813%208.742-6.433%2013.488-3.617%204.742%202.814%206.399%208.996%203.696%2013.808l-11.746%2020.908-10.051-5.961v-23.235l2.658%201.576zm19.509%2042.704c2.703-4.812%208.741-6.432%2013.487-3.617l3.432%202.033%201.956-3.479c2.703-4.812%208.741-6.434%2013.487-3.617%204.742%202.816%206.4%208.996%203.697%2013.809l-1.331%202.373h-35.706c-.618-2.459-.346-5.145.978-7.502zm35.321-27.807l-20.616-12.228c-4.746-2.815-6.398-8.997-3.697-13.809%202.704-4.812%208.742-6.432%2013.487-3.617l3.432%202.034%201.956-3.479c2.705-4.812%208.742-6.433%2013.488-3.618%204.742%202.817%206.4%208.998%203.697%2013.811l-11.747%2020.906zm26.821-24.95c-4.746-2.815-6.398-8.997-3.697-13.81%202.703-4.813%208.742-6.433%2013.486-3.617l3.432%202.034%201.957-3.479c.158-.283.332-.554.514-.815v28.995l-15.692-9.308zm-11.008%2053.843c-4.746-2.814-6.398-8.996-3.697-13.809%202.703-4.812%208.742-6.434%2013.488-3.617l3.432%202.035%201.955-3.48c2.342-4.168%207.184-5.936%2011.521-4.506v23.791c0%20.412-.043.814-.121%201.201l-1.771%203.154c-1.077%201.014-2.514%201.647-4.108%201.647h-9.885l-10.814-6.416zm-66.208%202.957c1.474.875%202.648%202.076%203.487%203.459h-4.58c-2.843%200-5.211-1.982-5.83-4.637%202.281-.463%204.738-.117%206.923%201.178z%22%2F%3E%3Cpath%20opacity%3D%22.15%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M70.116%2047.232c1.354-.733%202.475-1.552%203.399-2.485%205.881-5.944%205.956-15.538.168-21.385-2.774-2.803-6.479-4.345-10.43-4.345-4.043%200-7.855%201.603-10.74%204.516-.946.957-1.772%202.124-2.511%203.539-.74-1.42-1.568-2.594-2.518-3.553-2.882-2.912-6.696-4.529-10.738-4.529-3.952%200-7.655%201.514-10.43%204.315-5.789%205.849-5.714%2015.385.169%2021.33.957.968%202.131%201.791%203.55%202.52-1.311.684-2.494%201.477-3.438%202.401-2.935%202.88-4.551%206.709-4.551%2010.782.001%203.983%201.558%207.705%204.384%2010.477%202.761%202.709%206.432%204.201%2010.336%204.201%203.996%200%207.776-1.551%2010.646-4.366%201.004-.985%201.857-2.229%202.586-3.606.728%201.377%201.581%202.621%202.585%203.605%202.871%202.816%206.652%204.367%2010.647%204.367%203.903%200%207.575-1.492%2010.337-4.201%202.825-2.771%204.382-6.492%204.383-10.477%200-4.072-1.615-7.9-4.551-10.783-.904-.891-2.033-1.658-3.283-2.323zm-38.152-18.281c2.689-2.644%207.127-2.566%209.912.171%202.926%202.875%204.149%2013.854%204.128%2013.877-.022.022-10.941-1.43-13.866-4.305-2.786-2.738-2.863-7.1-.174-9.743zm9.833%2035.071c-2.76%202.59-7.155%202.661-9.819.161-2.663-2.5-2.587-6.627.172-9.217%202.897-2.719%2013.839-3.975%2013.861-3.954.021.021-1.316%2010.291-4.214%2013.01zm26.253.162c-2.669%202.5-7.073%202.429-9.838-.161-2.904-2.72-4.244-12.989-4.222-13.01.021-.021%2010.984%201.235%2013.889%203.954%202.764%202.59%202.84%206.717.171%209.217zm-.17-25.398c-2.903%202.898-13.861%204.236-13.883%204.213-.022-.022%201.317-10.963%204.22-13.861%202.764-2.759%207.167-2.835%209.835-.171%202.668%202.663%202.591%207.059-.172%209.819z%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23fff%22%20d%3D%22M100%2039h-25.019c4.361-6%203.955-14.332-1.298-19.639-2.774-2.803-6.479-4.345-10.43-4.345-3.386%200-6.602%201.137-9.254%203.213v-18.229h-8v18.214c-2.651-2.079-5.869-3.226-9.253-3.226-3.952%200-7.655%201.514-10.43%204.314-5.285%205.343-5.665%2013.698-1.214%2019.698h-25.102v8h25.316c-2.111%202.662-3.268%205.908-3.268%209.336.001%203.983%201.558%207.705%204.384%2010.477%202.761%202.709%206.432%204.201%2010.336%204.201%203.373%200%206.584-1.116%209.232-3.153v32.139h8v-32.14c2.648%202.037%205.861%203.153%209.232%203.153%203.903%200%207.575-1.492%2010.337-4.201%202.825-2.771%204.382-6.492%204.383-10.477%200-3.427-1.156-6.673-3.268-9.336h25.316v-7.999zm-41.783-13.862c2.764-2.759%207.167-2.835%209.835-.171%202.668%202.664%202.591%207.06-.172%209.819-2.896%202.89-13.799%204.228-13.88%204.213v-.043c.069-.728%201.415-11.02%204.217-13.818zm-26.253-.187c2.689-2.644%207.127-2.566%209.912.171%202.812%202.763%204.05%2013.003%204.124%2013.82v.057c-.102.011-10.948-1.44-13.862-4.305-2.786-2.738-2.863-7.1-.174-9.743zm9.833%2035.071c-2.76%202.59-7.155%202.661-9.819.161-2.663-2.5-2.587-6.627.172-9.217%202.868-2.691%2013.614-3.948%2013.851-3.954v.108c-.132%201.096-1.476%2010.342-4.204%2012.902zm26.253.162c-2.669%202.5-7.073%202.429-9.838-.161-2.741-2.568-4.088-11.856-4.212-12.909v-.101c.217.003%2011.001%201.26%2013.879%203.954%202.764%202.59%202.84%206.717.171%209.217z%22%2F%3E%3Cpath%20opacity%3D%22.2%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M94%20100h-88c-3.313%200-6-2.687-6-6.001v-13.999c0%203.313%202.687%206%206%206h88c3.313%200%206-2.687%206-6v13.999c0%203.314-2.687%206.001-6%206.001z%22%2F%3E%3C%2Fsvg%3E")}
#support .garbage {background-image:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22100%22%20height%3D%22100%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23F1C40F%22%20d%3D%22M78.993%2026h21l.007%2074h-60.135v-.004l-.355.004c-21.828%200-39.521-5.73-39.521-12.801l.004-74.199h79v13z%22%2F%3E%3Crect%20x%3D%2240%22%20y%3D%2213%22%20fill%3D%22%23F39C12%22%20width%3D%2239%22%20height%3D%2213%22%2F%3E%3Cellipse%20fill%3D%22%23E67E22%22%20cx%3D%2239.5%22%20cy%3D%2213%22%20rx%3D%2239.5%22%20ry%3D%2213%22%2F%3E%3Cellipse%20opacity%3D%22.2%22%20cx%3D%2240.334%22%20cy%3D%2212.812%22%20rx%3D%2216%22%20ry%3D%224.5%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23F39C12%22%20d%3D%22M40.668%2093c-1.105%200-2%20.896-2%202%200%201.105.895%202%202%202%201.104%200%201.999-.895%201.999-2%200-1.104-.895-2-1.999-2zm0-8c-1.105%200-2%20.896-2%202%200%201.105.895%202%202%202%201.104%200%201.999-.895%201.999-2%200-1.104-.895-2-1.999-2zm0-8c-1.105%200-2%20.896-2%202s.895%202%202%202c1.104%200%201.999-.896%201.999-2s-.895-2-1.999-2zm0-8c-1.105%200-2%20.896-2%202%200%201.105.895%202%202%202%201.104%200%201.999-.895%201.999-2%200-1.104-.895-2-1.999-2zm0-16c-1.105%200-2%20.896-2%202%200%201.105.895%202%202%202%201.104%200%201.999-.895%201.999-2%200-1.104-.895-2-1.999-2zm0-8c-1.105%200-2%20.896-2%202%200%201.105.895%202%202%202%201.104%200%201.999-.895%201.999-2%200-1.104-.895-2-1.999-2zm0-12c1.104%200%201.999-.895%201.999-2s-.895-2-1.999-2c-1.105%200-2%20.896-2%202s.894%202%202%202zm0%204c-1.105%200-2%20.896-2%202s.895%202%202%202c1.104%200%201.999-.896%201.999-2s-.895-2-1.999-2zm0%2024c-1.105%200-2%20.896-2%202s.895%202%202%202c1.104%200%201.999-.896%201.999-2s-.895-2-1.999-2z%22%2F%3E%3C%2Fsvg%3E") }
#support .compiled {background-image:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22100%22%20height%3D%22100%22%3E%3Cpath%20fill%3D%22%2327AE60%22%20d%3D%22M100%2094c0%203.313-2.687%206-6%206h-88c-3.313%200-6-2.687-6-6v-78c0-3.313%202.687-6%206-6h88c3.313%200%206%202.687%206%206v78z%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23fff%22%20d%3D%22M82%2087c0%201.104-.896%202-2%202h-60c-1.104%200-2-.896-2-2v-69c0-1.104.896-2%202-2h60c1.104%200%202%20.896%202%202v69z%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23BDC3C7%22%20d%3D%22M72%2020h-44c-1.657%200-3-1.343-3-3v-7c0-1.657%201.343-3%203-3h15c0-3.866%203.134-7%207-7s7%203.134%207%207h15c1.657%200%203%201.343%203%203v7c0%201.657-1.343%203-3%203zm-22-16c-1.657%200-3%201.344-3%203%200%201.657%201.343%203%203%203s3-1.343%203-3c0-1.656-1.343-3-3-3z%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23A1A6A9%22%20d%3D%22M72%2020h-44c-1.656%200-3-1.343-3-3v-2c0%201.657%201.344%203%203%203h44c1.656%200%203-1.343%203-3v2c0%201.657-1.344%203-3%203z%22%2F%3E%3Cpath%20opacity%3D%22.15%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M94%2097h-88c-3.313%200-6-2.687-6-6v3c0%203.313%202.687%206%206%206h88c3.313%200%206-2.687%206-6v-3c0%203.313-2.687%206-6%206z%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23BDC3C7%22%20d%3D%22M41%2040.999v3h31v-3h-31zm0%2014.001h31v-3.001h-31v3.001zm0%2010.998h31v-2.999h-31v2.999zm0%2011.001h31v-3h-31v3zm-13-31h7v-7h-7v7zm0%2011h7v-7h-7v7zm0%2011h7v-7h-7v7zm0%2011.001h7v-7.001h-7v7.001z%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%2327AE60%22%20d%3D%22M41%2029v3.001h31v-3.001h-31zm-5.073-1.214l-.708-.713c-.097-.098-.256-.098-.354%200l-3.728%203.703c-.098.099-.257.099-.354%200l-1.633-1.66c-.048-.049-.112-.072-.175-.073-.064%200-.13.023-.179.073l-.722.648c-.048.049-.074.11-.074.175l.011.054h-.011v.998h.011l.063.127%201.647%201.725.354.355.708.713c.097.098.256.098.354%200l4.79-4.771.067-.144h.006v-.998h-.006c.01-.076-.01-.155-.067-.212z%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23A1A6A9%22%20d%3D%22M50%204c1.305%200%202.403.837%202.816%202%20.112-.313.184-.646.184-.999%200-1.657-1.344-3-3-3-1.657%200-3.001%201.343-3.001%203%200%20.353.072.686.184%201%20.413-1.163%201.512-2.001%202.817-2.001z%22%2F%3E%3C%2Fsvg%3E") }
#support .threaded {background-image:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22100%22%20height%3D%22100%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23F2F2F2%22%20d%3D%22M75%2087.425l-25%2012.575-25-12.575-25%2012.575v-87.424l25-12.576%2025%2012.576%2025-12.576%2025%2012.576v87.424l-25-12.575z%22%2F%3E%3Cpath%20clip-rule%3D%22evenodd%22%20stroke%3D%22%236BC9F2%22%20stroke-width%3D%224%22%20stroke-miterlimit%3D%2210%22%20d%3D%22M15%2060v-28l9.988-5.006%2025.012%2014.006%2025-12%2012%204%22%20fill%3D%22none%22%2F%3E%3Cpath%20clip-rule%3D%22evenodd%22%20stroke%3D%22%23E64C3C%22%20stroke-width%3D%224%22%20stroke-miterlimit%3D%2210%22%20d%3D%22M15%2061v-8l10-5%2025%2013%2025-11%2012-5v-13%22%20fill%3D%22none%22%2F%3E%3Cpath%20clip-rule%3D%22evenodd%22%20stroke%3D%22%23F29C1F%22%20stroke-width%3D%224%22%20stroke-miterlimit%3D%2210%22%20d%3D%22M15%2061l35%2018%2017-8v-28l20-10%22%20fill%3D%22none%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23fff%22%20d%3D%22M87%2036.5c-1.93%200-3.5-1.57-3.5-3.5s1.57-3.5%203.5-3.5%203.5%201.57%203.5%203.5-1.57%203.5-3.5%203.5z%22%2F%3E%3Cpath%20fill%3D%22%232980BA%22%20d%3D%22M87%2031c1.103%200%202%20.897%202%202s-.897%202-2%202-2-.897-2-2%20.897-2%202-2m0-3c-2.761%200-5%202.239-5%205s2.239%205%205%205%205-2.239%205-5-2.239-5-5-5z%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23fff%22%20d%3D%22M15%2064.5c-1.93%200-3.5-1.57-3.5-3.5s1.57-3.5%203.5-3.5%203.5%201.57%203.5%203.5-1.57%203.5-3.5%203.5z%22%2F%3E%3Cpath%20fill%3D%22%232980BA%22%20d%3D%22M15%2059c1.103%200%202%20.897%202%202s-.897%202-2%202-2-.897-2-2%20.897-2%202-2m0-3c-2.761%200-5%202.239-5%205s2.239%205%205%205%205-2.239%205-5-2.239-5-5-5z%22%2F%3E%3Cpath%20opacity%3D%22.15%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%232C3E50%22%20d%3D%22M0%20100l25-12.576v-87.424l-25%2012.576v87.424zm50-87.424v87.424l25-12.576v-87.424l-25%2012.576z%22%2F%3E%3C%2Fsvg%3E") }
#support .typed {background-image:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%22117%22%20height%3D%22104%22%3E%3Cpath%20fill%3D%22%2326B99A%22%20d%3D%22M50%204c27.614%200%2050%2022.386%2050%2050%200%2027.613-22.386%2050-50%2050s-50-22.387-50-50c0-27.614%2022.386-50%2050-50z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M81.309%2043.339l-35.868%2035.869c-.731.731-1.924.731-2.651%200l-20.286-20.498c-.362-.366-.556-1.374-.556-1.859%200-.484.194-.947.556-1.315l5.404-4.871c.366-.375.855-.555%201.338-.55.476.001.951.185%201.313.55l12.231%2012.478c.728.743%201.92.743%202.651%200l27.918-27.835c.728-.737%201.92-.737%202.647%200l5.302%205.354c.732.734.732%201.942.001%202.677z%22%2F%3E%3Ccircle%20cx%3D%2284.625%22%20cy%3D%2233%22%20r%3D%2226%22%20opacity%3D%22.15%22%2F%3E%3Cpath%20fill%3D%22%2326B99A%22%20d%3D%22M87.999%2056.5c-15.163%200-27.499-12.337-27.499-27.5s12.336-27.5%2027.499-27.5c15.164%200%2027.501%2012.336%2027.501%2027.5%200%2015.163-12.337%2027.5-27.501%2027.5z%22%2F%3E%3Cpath%20fill%3D%22%23ECF0F1%22%20d%3D%22M87.999%203c14.337%200%2026.001%2011.663%2026.001%2026s-11.664%2026-26.001%2026c-14.336%200-25.999-11.664-25.999-26s11.663-26%2025.999-26m0-3c-16.015%200-28.999%2012.984-28.999%2029%200%2016.017%2012.984%2029%2028.999%2029%2016.017%200%2029.001-12.984%2029.001-29s-12.984-29-29.001-29z%22%2F%3E%3Cdefs%3E%3Cpath%20id%3D%22a%22%20d%3D%22M114%2029c0%2014.359-11.64%2026-25.998%2026-14.362%200-26.002-11.641-26.002-26s11.64-26%2026.002-26c14.358%200%2025.998%2011.64%2025.998%2026z%22%2F%3E%3C%2Fdefs%3E%3CclipPath%20id%3D%22b%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22%20overflow%3D%22visible%22%2F%3E%3C%2FclipPath%3E%3Cpath%20clip-path%3D%22url(%23b)%22%20fill%3D%22%23fff%22%20d%3D%22M107.314%2030.594l-81.091%2081.092c-1.653%201.654-4.349%201.654-5.994%200l-11.987-12.097c-1.644-1.674-4.348-4.391-5.993-6.063l-27.885-29.303c-.818-.828-1.257-1.982-1.257-3.082%200-1.094.439-2.141%201.257-2.974l12.218-11.01c.827-.849%201.935-1.257%203.025-1.246%201.075.004%202.149.417%202.969%201.246l27.653%2028.213c1.645%201.683%204.341%201.683%205.994%200l63.121-62.932c1.644-1.666%204.34-1.666%205.984%200l11.986%2012.102c1.655%201.661%201.655%204.393%200%206.054z%22%2F%3E%3C%2Fsvg%3E") }
#support .oo {background-image:url("data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20%3F%3E%3Csvg%20height%3D%22150%22%20id%3D%22svg2%22%20version%3D%221.1%22%20width%3D%22150%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Acc%3D%22http%3A%2F%2Fcreativecommons.org%2Fns%23%22%20xmlns%3Adc%3D%22http%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%22%20xmlns%3Ainkscape%3D%22http%3A%2F%2Fwww.inkscape.org%2Fnamespaces%2Finkscape%22%20xmlns%3Ardf%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%22%20xmlns%3Asodipodi%3D%22http%3A%2F%2Fsodipodi.sourceforge.net%2FDTD%2Fsodipodi-0.dtd%22%20xmlns%3Asvg%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cdefs%20id%3D%22defs4%22%3E%3ClinearGradient%20id%3D%22linearGradient8227%22%3E%3Cstop%20id%3D%22stop8229%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23e0ded2%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop8231%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23cac6b2%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient8033%22%3E%3Cstop%20id%3D%22stop8035%22%20offset%3D%220%22%20style%3D%22stop-color%3A%236cb5ec%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop8037%22%20offset%3D%221%22%20style%3D%22stop-color%3A%235eaeea%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient8017%22%3E%3Cstop%20id%3D%22stop8019%22%20offset%3D%220%22%20style%3D%22stop-color%3A%231c87d8%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop8021%22%20offset%3D%221%22%20style%3D%22stop-color%3A%233197e4%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient7904%22%3E%3Cstop%20id%3D%22stop7906%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23a8815a%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop7908%22%20offset%3D%220.5%22%20style%3D%22stop-color%3A%2390704c%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop7910%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23725433%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient7898%22%3E%3Cstop%20id%3D%22stop7900%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23473726%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop7902%22%20offset%3D%221%22%20style%3D%22stop-color%3A%236f553a%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3Cmarker%20id%3D%22Arrow1Lend%22%20orient%3D%22auto%22%20refX%3D%220%22%20refY%3D%220%22%20style%3D%22overflow%3Avisible%22%3E%3Cpath%20d%3D%22M%200%2C0%205%2C-5%20-12.5%2C0%205%2C5%200%2C0%20z%22%20id%3D%22path5948%22%20style%3D%22fill-rule%3Aevenodd%3Bstroke%3A%23000000%3Bstroke-width%3A1pt%22%20transform%3D%22matrix(-0.8%2C0%2C0%2C-0.8%2C-10%2C0)%22%2F%3E%3C%2Fmarker%3E%3Cmarker%20id%3D%22TriangleInL%22%20orient%3D%22auto%22%20refX%3D%220%22%20refY%3D%220%22%20style%3D%22overflow%3Avisible%22%3E%3Cpath%20d%3D%22m%205.77%2C0%20-8.65%2C5%200%2C-10%208.65%2C5%20z%22%20id%3D%22path6078%22%20style%3D%22fill-rule%3Aevenodd%3Bstroke%3A%23000000%3Bstroke-width%3A1pt%22%20transform%3D%22scale(-0.8%2C-0.8)%22%2F%3E%3C%2Fmarker%3E%3Cmarker%20id%3D%22Tail%22%20orient%3D%22auto%22%20refX%3D%220%22%20refY%3D%220%22%20style%3D%22overflow%3Avisible%22%3E%3Cg%20id%3D%22g5981%22%20transform%3D%22scale(-1.2%2C-1.2)%22%3E%3Cpath%20d%3D%22M%20-3.8048674%2C-3.9585227%200.54352094%2C0%22%20id%3D%22path5983%22%20style%3D%22fill%3Anone%3Bstroke%3A%23000000%3Bstroke-width%3A0.80000001%3Bstroke-linecap%3Around%22%2F%3E%3Cpath%20d%3D%22M%20-1.2866832%2C-3.9585227%203.0617053%2C0%22%20id%3D%22path5985%22%20style%3D%22fill%3Anone%3Bstroke%3A%23000000%3Bstroke-width%3A0.80000001%3Bstroke-linecap%3Around%22%2F%3E%3Cpath%20d%3D%22M%201.3053582%2C-3.9585227%205.6537466%2C0%22%20id%3D%22path5987%22%20style%3D%22fill%3Anone%3Bstroke%3A%23000000%3Bstroke-width%3A0.80000001%3Bstroke-linecap%3Around%22%2F%3E%3Cpath%20d%3D%22M%20-3.8048674%2C4.1775838%200.54352094%2C0.21974226%22%20id%3D%22path5989%22%20style%3D%22fill%3Anone%3Bstroke%3A%23000000%3Bstroke-width%3A0.80000001%3Bstroke-linecap%3Around%22%2F%3E%3Cpath%20d%3D%22M%20-1.2866832%2C4.1775838%203.0617053%2C0.21974226%22%20id%3D%22path5991%22%20style%3D%22fill%3Anone%3Bstroke%3A%23000000%3Bstroke-width%3A0.80000001%3Bstroke-linecap%3Around%22%2F%3E%3Cpath%20d%3D%22M%201.3053582%2C4.1775838%205.6537466%2C0.21974226%22%20id%3D%22path5993%22%20style%3D%22fill%3Anone%3Bstroke%3A%23000000%3Bstroke-width%3A0.80000001%3Bstroke-linecap%3Around%22%2F%3E%3C%2Fg%3E%3C%2Fmarker%3E%3Cmarker%20id%3D%22DiamondLend%22%20orient%3D%22auto%22%20refX%3D%220%22%20refY%3D%220%22%20style%3D%22overflow%3Avisible%22%3E%3Cpath%20d%3D%22M%200%2C-7.0710768%20-7.0710894%2C0%200%2C7.0710589%207.0710462%2C0%200%2C-7.0710768%20z%22%20id%3D%22path6042%22%20style%3D%22fill-rule%3Aevenodd%3Bstroke%3A%23000000%3Bstroke-width%3A1pt%22%20transform%3D%22matrix(0.8%2C0%2C0%2C0.8%2C-5.6%2C0)%22%2F%3E%3C%2Fmarker%3E%3Cmarker%20id%3D%22Arrow1Lstart%22%20orient%3D%22auto%22%20refX%3D%220%22%20refY%3D%220%22%20style%3D%22overflow%3Avisible%22%3E%3Cpath%20d%3D%22M%200%2C0%205%2C-5%20-12.5%2C0%205%2C5%200%2C0%20z%22%20id%3D%22path5945%22%20style%3D%22fill-rule%3Aevenodd%3Bstroke%3A%23000000%3Bstroke-width%3A1pt%22%20transform%3D%22matrix(0.8%2C0%2C0%2C0.8%2C10%2C0)%22%2F%3E%3C%2Fmarker%3E%3ClinearGradient%20id%3D%22linearGradient5927%22%3E%3Cstop%20id%3D%22stop5929%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23ffffff%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop5931%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23ffffff%3Bstop-opacity%3A0%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient5465%22%3E%3Cstop%20id%3D%22stop5467%22%20offset%3D%220%22%20style%3D%22stop-color%3A%2397744f%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop5469%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23866746%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient5439%22%3E%3Cstop%20id%3D%22stop5441%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23c7ae95%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop5447%22%20offset%3D%220.5%22%20style%3D%22stop-color%3A%23b69775%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop5443%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23a57f57%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient5415%22%3E%3Cstop%20id%3D%22stop5417%22%20offset%3D%220%22%20style%3D%22stop-color%3A%238c6b49%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop5419%22%20offset%3D%221%22%20style%3D%22stop-color%3A%236d5339%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient5389%22%3E%3Cstop%20id%3D%22stop5391%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23b08e69%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop5397%22%20offset%3D%220.5%22%20style%3D%22stop-color%3A%239e7a53%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop5393%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23906f4c%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient5363%22%3E%3Cstop%20id%3D%22stop5365%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23bb9d7d%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop5371%22%20offset%3D%220.5%22%20style%3D%22stop-color%3A%23ab865f%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop5367%22%20offset%3D%221%22%20style%3D%22stop-color%3A%239f7a53%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient5339%22%3E%3Cstop%20id%3D%22stop5341%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23755a3d%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop5343%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23a58057%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient3976%22%3E%3Cstop%20id%3D%22stop3978%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23b1b1b1%3Bstop-opacity%3A0%3B%22%2F%3E%3Cstop%20id%3D%22stop3984%22%20offset%3D%220.5%22%20style%3D%22stop-color%3A%23b1b1b1%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop3980%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23b1b1b1%3Bstop-opacity%3A0%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient3949%22%3E%3Cstop%20id%3D%22stop3951%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23b3b3b3%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop3953%22%20offset%3D%221%22%20style%3D%22stop-color%3A%239c9c9c%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient3933%22%3E%3Cstop%20id%3D%22stop3935%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23f4f4f4%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop3937%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23cfcfcf%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient3823%22%3E%3Cstop%20id%3D%22stop3825%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23bdb295%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop3827%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23c6bca3%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient3815%22%3E%3Cstop%20id%3D%22stop3817%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23ada07b%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop3819%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23b7ab8b%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient3803%22%3E%3Cstop%20id%3D%22stop3805%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23c3ba9f%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop3813%22%20offset%3D%220.20000003%22%20style%3D%22stop-color%3A%23cec6b1%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop3811%22%20offset%3D%220.79999989%22%20style%3D%22stop-color%3A%23cec6b1%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop3807%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23cdc5ae%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20clipPathUnits%3D%22userSpaceOnUse%22%20id%3D%22clipPath5921%22%3E%3Crect%20height%3D%22150.50972%22%20id%3D%22rect5923%22%20style%3D%22fill%3A%23505050%3Bfill-opacity%3A0.56306308%3Bstroke%3A%23484848%3Bstroke-width%3A0.60299915%3Bstroke-linecap%3Around%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A4%3Bstroke-opacity%3A1%3Bstroke-dasharray%3Anone%22%20width%3D%22485.88034%22%20x%3D%221288.9561%22%20y%3D%22912.96265%22%2F%3E%3C%2FclipPath%3E%3ClinearGradient%20gradientTransform%3D%22translate(505.07623%2C2.5078125e-5)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5937%22%20x1%3D%221527.3507%22%20x2%3D%221527.3507%22%20xlink%3Ahref%3D%22%23linearGradient5927%22%20y1%3D%221056.0612%22%20y2%3D%221025.4558%22%2F%3E%3CclipPath%20clipPathUnits%3D%22userSpaceOnUse%22%20id%3D%22clipPath7360%22%3E%3Crect%20height%3D%22150.50972%22%20id%3D%22rect7362%22%20style%3D%22fill%3A%23505050%3Bfill-opacity%3A0.56306308%3Bstroke%3A%23484848%3Bstroke-width%3A0.60299915%3Bstroke-linecap%3Around%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A4%3Bstroke-opacity%3A1%3Bstroke-dasharray%3Anone%22%20width%3D%22485.88034%22%20x%3D%221316.2302%22%20y%3D%22912.96265%22%2F%3E%3C%2FclipPath%3E%3ClinearGradient%20id%3D%22linearGradient3803-9%22%3E%3Cstop%20id%3D%22stop3805-8%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23c3ba9f%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop3813-2%22%20offset%3D%220.20000003%22%20style%3D%22stop-color%3A%23cec6b1%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop3811-9%22%20offset%3D%220.79999989%22%20style%3D%22stop-color%3A%23cec6b1%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop3807-5%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23cdc5ae%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20gradientTransform%3D%22matrix(0.43087994%2C0%2C0%2C0.42951339%2C89.143173%2C155.50435)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient3821-0%22%20x1%3D%22199.4586%22%20x2%3D%22291.51642%22%20xlink%3Ahref%3D%22%23linearGradient3815-9%22%20y1%3D%22671.45667%22%20y2%3D%22671.45667%22%2F%3E%3ClinearGradient%20id%3D%22linearGradient3815-9%22%3E%3Cstop%20id%3D%22stop3817-8%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23ada07b%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop3819-4%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23b7ab8b%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22linearGradient3823-9%22%3E%3Cstop%20id%3D%22stop3825-5%22%20offset%3D%220%22%20style%3D%22stop-color%3A%23bdb295%3Bstop-opacity%3A1%3B%22%2F%3E%3Cstop%20id%3D%22stop3827-1%22%20offset%3D%221%22%20style%3D%22stop-color%3A%23c6bca3%3Bstop-opacity%3A1%3B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5528%22%20x1%3D%22423.46597%22%20x2%3D%22432.67175%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22471.25983%22%20y2%3D%22455.31494%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5530%22%20x1%3D%22439.16608%22%20x2%3D%22445.04929%22%20xlink%3Ahref%3D%22%23linearGradient5465%22%20y1%3D%22472.61322%22%20y2%3D%22460.47037%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5532%22%20x1%3D%22447.77405%22%20x2%3D%22453.81378%22%20xlink%3Ahref%3D%22%23linearGradient5465%22%20y1%3D%22458.94562%22%20y2%3D%22439.75269%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5534%22%20x1%3D%22446.46677%22%20x2%3D%22459.87476%22%20xlink%3Ahref%3D%22%23linearGradient5465%22%20y1%3D%22439.28809%22%20y2%3D%22418.83249%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5536%22%20x1%3D%22429.60315%22%20x2%3D%22484.83783%22%20xlink%3Ahref%3D%22%23linearGradient5339%22%20y1%3D%22393.30707%22%20y2%3D%22393.30707%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5538%22%20x1%3D%22414.26019%22%20x2%3D%22469.49487%22%20xlink%3Ahref%3D%22%23linearGradient5339%22%20y1%3D%22402.16534%22%20y2%3D%22402.16534%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5540%22%20x1%3D%22398.91721%22%20x2%3D%22454.15189%22%20xlink%3Ahref%3D%22%23linearGradient5339%22%20y1%3D%22411.02359%22%20y2%3D%22411.02359%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22423.42517%22%20fx%3D%22464.87555%22%20fy%3D%22423.42517%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.92310072%2C0%2C32.561091)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5542%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient5439%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22441.14172%22%20fx%3D%22464.87555%22%20fy%3D%22441.14172%22%20gradientTransform%3D%22matrix(1.6661898%2C-0.69232592%2C0.35420157%2C0.85244107%2C-465.94844%2C386.93979)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5544%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient5439%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22458.85825%22%20fx%3D%22480.78546%22%20fy%3D%22449.00952%22%20gradientTransform%3D%22matrix(1.6661898%2C-0.69232545%2C0.35420145%2C0.85244136%2C-472.2236%2C389.55367)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5546%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient5439%22%2F%3E%3CradialGradient%20cx%3D%22413.20245%22%20cy%3D%22462.09317%22%20fx%3D%22428.20245%22%20fy%3D%22470.88528%22%20gradientTransform%3D%22matrix(1.6140294%2C0.53176326%2C-0.30506375%2C0.92594182%2C-114.76146%2C-186.96737)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5548%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5389%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5550%22%20x1%3D%22417.32877%22%20x2%3D%22429.60315%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22449.99997%22%20y2%3D%22435.82675%22%2F%3E%3CradialGradient%20cx%3D%22415.7504%22%20cy%3D%22442.91336%22%20fx%3D%22415.7504%22%20fy%3D%22442.91336%22%20gradientTransform%3D%22matrix(1.9210446%2C0.88627399%2C-0.40840287%2C0.88523427%2C-202.03755%2C-317.63749)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5552%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5389%22%2F%3E%3CradialGradient%20cx%3D%22426.53455%22%20cy%3D%22407.61435%22%20fx%3D%22426.53455%22%20fy%3D%22407.61435%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.57735021%2C0%2C172.27811)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5554%22%20r%3D%2227.617346%22%20xlink%3Ahref%3D%22%23linearGradient5363%22%2F%3E%3CradialGradient%20cx%3D%22441.87753%22%20cy%3D%22398.75607%22%20fx%3D%22441.87753%22%20fy%3D%22398.75607%22%20gradientTransform%3D%22matrix(1.111111%2C0.9573967%2C-0.37687149%2C0.43737986%2C101.18236%2C-198.7039)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5556%22%20r%3D%2227.617346%22%20xlink%3Ahref%3D%22%23linearGradient5363%22%2F%3E%3CradialGradient%20cx%3D%22457.22049%22%20cy%3D%22389.8978%22%20fx%3D%22447.7562%22%20fy%3D%22375.67023%22%20gradientTransform%3D%22matrix(1.5555559%2C0.57249688%2C-0.19940829%2C0.54182083%2C-176.26268%2C-83.114256)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5558%22%20r%3D%2227.617346%22%20xlink%3Ahref%3D%22%23linearGradient5363%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5560%22%20x1%3D%22420.39737%22%20x2%3D%22435.74033%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22437.59839%22%20y2%3D%22421.65353%22%2F%3E%3CradialGradient%20cx%3D%22415.7504%22%20cy%3D%22425.19684%22%20fx%3D%22415.7504%22%20fy%3D%22425.19684%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.97490109%2C0%2C10.671978)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5562%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5389%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(124.30357%2C51.5)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5564%22%20x1%3D%22429.60315%22%20x2%3D%22484.83783%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22393.30707%22%20y2%3D%22393.30707%22%2F%3E%3CradialGradient%20cx%3D%22457.22049%22%20cy%3D%22389.8978%22%20fx%3D%22447.7562%22%20fy%3D%22375.67023%22%20gradientTransform%3D%22matrix(1.5555559%2C0.57249688%2C-0.19940829%2C0.54182083%2C-51.959106%2C-31.614256)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5566%22%20r%3D%2227.617346%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(104.30357%2C61.5)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5568%22%20x1%3D%22429.60315%22%20x2%3D%22484.83783%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22393.30707%22%20y2%3D%22393.30707%22%2F%3E%3CradialGradient%20cx%3D%22457.22049%22%20cy%3D%22389.8978%22%20fx%3D%22447.7562%22%20fy%3D%22375.67023%22%20gradientTransform%3D%22matrix(1.5555559%2C0.57249688%2C-0.19940829%2C0.54182083%2C-71.959106%2C-21.614256)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5570%22%20r%3D%2227.617346%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(173.12234%2C-27.521664)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5572%22%20x1%3D%22423.46597%22%20x2%3D%22432.67175%22%20xlink%3Ahref%3D%22%23linearGradient7904%22%20y1%3D%22471.25983%22%20y2%3D%22455.31494%22%2F%3E%3CradialGradient%20cx%3D%22413.20245%22%20cy%3D%22462.09317%22%20fx%3D%22428.20245%22%20fy%3D%22470.88528%22%20gradientTransform%3D%22matrix(1.6140294%2C0.53176326%2C-0.30506375%2C0.92594182%2C58.36087%2C-214.48903)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5574%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(173.12234%2C-27.521664)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5576%22%20x1%3D%22419.24255%22%20x2%3D%22429.60315%22%20xlink%3Ahref%3D%22%23linearGradient7904%22%20y1%3D%22447.02472%22%20y2%3D%22435.82675%22%2F%3E%3CradialGradient%20cx%3D%22415.7504%22%20cy%3D%22442.91336%22%20fx%3D%22415.7504%22%20fy%3D%22442.91336%22%20gradientTransform%3D%22matrix(1.9210446%2C0.88627399%2C-0.40840287%2C0.88523427%2C-28.91522%2C-345.15915)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5578%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(173.12234%2C-27.521664)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5580%22%20x1%3D%22425.37976%22%20x2%3D%22435.74033%22%20xlink%3Ahref%3D%22%23linearGradient7904%22%20y1%3D%22432.8515%22%20y2%3D%22421.65353%22%2F%3E%3CradialGradient%20cx%3D%22415.7504%22%20cy%3D%22425.19684%22%20fx%3D%22415.7504%22%20fy%3D%22425.19684%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.97490109%2C173.12234%2C-16.849686)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5582%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(83.169006%2C-23.233508)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5584%22%20x1%3D%22439.16608%22%20x2%3D%22445.04929%22%20xlink%3Ahref%3D%22%23linearGradient7898%22%20y1%3D%22472.61322%22%20y2%3D%22460.47037%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(83.169006%2C-23.233508)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5586%22%20x1%3D%22447.77405%22%20x2%3D%22453.81378%22%20xlink%3Ahref%3D%22%23linearGradient7898%22%20y1%3D%22458.94562%22%20y2%3D%22439.75269%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(83.169006%2C-23.233508)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5588%22%20x1%3D%22446.46677%22%20x2%3D%22459.87476%22%20xlink%3Ahref%3D%22%23linearGradient7898%22%20y1%3D%22439.28809%22%20y2%3D%22418.83249%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22423.42517%22%20fx%3D%22464.87555%22%20fy%3D%22423.42517%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.92310072%2C83.169006%2C9.3275826)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5590%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient7904%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22441.14172%22%20fx%3D%22464.87555%22%20fy%3D%22441.14172%22%20gradientTransform%3D%22matrix(1.6661898%2C-0.69232592%2C0.35420157%2C0.85244107%2C-382.77943%2C363.70628)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5592%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient7904%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22458.85825%22%20fx%3D%22480.78546%22%20fy%3D%22449.00952%22%20gradientTransform%3D%22matrix(1.6661898%2C-0.69232545%2C0.35420145%2C0.85244136%2C-389.05459%2C366.32016)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5594%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient7904%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(122.81749%2C0)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5596%22%20x1%3D%22423.46597%22%20x2%3D%22432.67175%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22471.25983%22%20y2%3D%22455.31494%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(122.81749%2C0)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5598%22%20x1%3D%22439.16608%22%20x2%3D%22445.04929%22%20xlink%3Ahref%3D%22%23linearGradient5465%22%20y1%3D%22472.61322%22%20y2%3D%22460.47037%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(122.81749%2C0)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5600%22%20x1%3D%22447.77405%22%20x2%3D%22453.81378%22%20xlink%3Ahref%3D%22%23linearGradient5465%22%20y1%3D%22458.94562%22%20y2%3D%22439.75269%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(122.81749%2C0)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5602%22%20x1%3D%22446.46677%22%20x2%3D%22459.87476%22%20xlink%3Ahref%3D%22%23linearGradient5465%22%20y1%3D%22439.28809%22%20y2%3D%22418.83249%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22423.42517%22%20fx%3D%22464.87555%22%20fy%3D%22423.42517%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.92310072%2C122.81749%2C32.561091)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5604%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient5439%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22441.14172%22%20fx%3D%22464.87555%22%20fy%3D%22441.14172%22%20gradientTransform%3D%22matrix(1.6661898%2C-0.69232592%2C0.35420157%2C0.85244107%2C-343.13095%2C386.93979)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5606%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient5439%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22458.85825%22%20fx%3D%22480.78546%22%20fy%3D%22449.00952%22%20gradientTransform%3D%22matrix(1.6661898%2C-0.69232545%2C0.35420145%2C0.85244136%2C-349.40611%2C389.55367)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5608%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient5439%22%2F%3E%3CradialGradient%20cx%3D%22413.20245%22%20cy%3D%22462.09317%22%20fx%3D%22428.20245%22%20fy%3D%22470.88528%22%20gradientTransform%3D%22matrix(1.6140294%2C0.53176326%2C-0.30506375%2C0.92594182%2C8.0560292%2C-186.96737)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5610%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5389%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(122.81749%2C0)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5612%22%20x1%3D%22417.32877%22%20x2%3D%22429.60315%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22449.99997%22%20y2%3D%22435.82675%22%2F%3E%3CradialGradient%20cx%3D%22415.7504%22%20cy%3D%22442.91336%22%20fx%3D%22415.7504%22%20fy%3D%22442.91336%22%20gradientTransform%3D%22matrix(1.9210446%2C0.88627399%2C-0.40840287%2C0.88523427%2C-79.220061%2C-317.63749)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5614%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5389%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(122.81749%2C0)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5616%22%20x1%3D%22420.39737%22%20x2%3D%22435.74033%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22437.59839%22%20y2%3D%22421.65353%22%2F%3E%3CradialGradient%20cx%3D%22415.7504%22%20cy%3D%22425.19684%22%20fx%3D%22415.7504%22%20fy%3D%22425.19684%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.97490109%2C122.81749%2C10.671978)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5618%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5389%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(0%2C-164.65486)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5620%22%20x1%3D%22300.75635%22%20x2%3D%22328.9751%22%20xlink%3Ahref%3D%22%23linearGradient3933%22%20y1%3D%22560.90332%22%20y2%3D%22560.90332%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22matrix(1.0744501%2C0%2C0%2C1.2634101%2C-24.444906%2C-314.45641)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5622%22%20x1%3D%22306.85941%22%20x2%3D%22312.99658%22%20xlink%3Ahref%3D%22%23linearGradient3949%22%20y1%3D%22566.92914%22%20y2%3D%22559.84247%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22matrix(-1%2C0%2C0%2C1%2C657.19158%2C-164.65486)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5624%22%20x1%3D%22300.75635%22%20x2%3D%22328.9751%22%20xlink%3Ahref%3D%22%23linearGradient3933%22%20y1%3D%22560.90332%22%20y2%3D%22560.90332%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22matrix(1.0951123%2C0%2C0%2C1.306036%2C-31.229117%2C-338.69889)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5626%22%20x1%3D%22346.75113%22%20x2%3D%22343.68253%22%20xlink%3Ahref%3D%22%23linearGradient3949%22%20y1%3D%22568.70074%22%20y2%3D%22559.84247%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(0%2C-164.65486)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5628%22%20x1%3D%22325.27097%22%20x2%3D%22331.40814%22%20xlink%3Ahref%3D%22%23linearGradient3976%22%20y1%3D%22563.3858%22%20y2%3D%22563.3858%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22matrix(0.43087994%2C0%2C0%2C0.42951339%2C89.143173%2C155.50435)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5630%22%20x1%3D%22199.4586%22%20x2%3D%22291.51642%22%20xlink%3Ahref%3D%22%23linearGradient3815%22%20y1%3D%22671.45667%22%20y2%3D%22671.45667%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22matrix(0.43087994%2C0%2C0%2C0.42951339%2C89.143173%2C155.50435)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5632%22%20x1%3D%22291.51642%22%20x2%3D%22398.91721%22%20xlink%3Ahref%3D%22%23linearGradient3823%22%20y1%3D%22667.02753%22%20y2%3D%22667.02753%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22matrix(0.43087994%2C0%2C0%2C0.42951339%2C89.143173%2C155.50435)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5634%22%20x1%3D%22260.83047%22%20x2%3D%22337.54535%22%20xlink%3Ahref%3D%22%23linearGradient3803%22%20y1%3D%22618.30707%22%20y2%3D%22538.58264%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(0%2C35.714286)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5820%22%20x1%3D%22223.9375%22%20x2%3D%22242.53125%22%20xlink%3Ahref%3D%22%23linearGradient8017%22%20y1%3D%22526.78125%22%20y2%3D%22526.78125%22%2F%3E%3CradialGradient%20cx%3D%22203.18814%22%20cy%3D%22534.65778%22%20fx%3D%22203.18814%22%20fy%3D%22534.65778%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.5%2C0%2C267.32889)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5822%22%20r%3D%229.8667269%22%20xlink%3Ahref%3D%22%23linearGradient8033%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(0%2C35.714286)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5824%22%20x1%3D%22193.69606%22%20x2%3D%22212.28981%22%20xlink%3Ahref%3D%22%23linearGradient8017%22%20y1%3D%22533.22095%22%20y2%3D%22533.22095%22%2F%3E%3CradialGradient%20cx%3D%22203.18814%22%20cy%3D%22534.65778%22%20fx%3D%22203.18814%22%20fy%3D%22534.65778%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.5%2C0%2C267.32889)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient5826%22%20r%3D%229.8667269%22%20xlink%3Ahref%3D%22%23linearGradient8033%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient5828%22%20x1%3D%22422.47955%22%20x2%3D%22428.02603%22%20xlink%3Ahref%3D%22%23linearGradient8227%22%20y1%3D%22568.0675%22%20y2%3D%22555.44055%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22matrix(0.43087994%2C0%2C0%2C0.42951339%2C89.143173%2C155.50435)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11064%22%20x1%3D%22199.4586%22%20x2%3D%22291.51642%22%20xlink%3Ahref%3D%22%23linearGradient3815%22%20y1%3D%22671.45667%22%20y2%3D%22671.45667%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22matrix(0.43087994%2C0%2C0%2C0.42951339%2C89.143173%2C155.50435)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11066%22%20x1%3D%22291.51642%22%20x2%3D%22398.91721%22%20xlink%3Ahref%3D%22%23linearGradient3823%22%20y1%3D%22667.02753%22%20y2%3D%22667.02753%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22matrix(0.43087994%2C0%2C0%2C0.42951339%2C89.143173%2C155.50435)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11068%22%20x1%3D%22260.83047%22%20x2%3D%22337.54535%22%20xlink%3Ahref%3D%22%23linearGradient3803%22%20y1%3D%22618.30707%22%20y2%3D%22538.58264%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(0%2C-164.65486)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11070%22%20x1%3D%22300.75635%22%20x2%3D%22328.9751%22%20xlink%3Ahref%3D%22%23linearGradient3933%22%20y1%3D%22560.90332%22%20y2%3D%22560.90332%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22matrix(1.0744501%2C0%2C0%2C1.2634101%2C-24.444906%2C-314.45641)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11072%22%20x1%3D%22306.85941%22%20x2%3D%22312.99658%22%20xlink%3Ahref%3D%22%23linearGradient3949%22%20y1%3D%22566.92914%22%20y2%3D%22559.84247%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22matrix(-1%2C0%2C0%2C1%2C657.19158%2C-164.65486)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11074%22%20x1%3D%22300.75635%22%20x2%3D%22328.9751%22%20xlink%3Ahref%3D%22%23linearGradient3933%22%20y1%3D%22560.90332%22%20y2%3D%22560.90332%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22matrix(1.0951123%2C0%2C0%2C1.306036%2C-31.229117%2C-338.69889)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11076%22%20x1%3D%22346.75113%22%20x2%3D%22343.68253%22%20xlink%3Ahref%3D%22%23linearGradient3949%22%20y1%3D%22568.70074%22%20y2%3D%22559.84247%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(0%2C-164.65486)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11078%22%20x1%3D%22325.27097%22%20x2%3D%22331.40814%22%20xlink%3Ahref%3D%22%23linearGradient3976%22%20y1%3D%22563.3858%22%20y2%3D%22563.3858%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(124.30357%2C51.5)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11080%22%20x1%3D%22429.60315%22%20x2%3D%22484.83783%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22393.30707%22%20y2%3D%22393.30707%22%2F%3E%3CradialGradient%20cx%3D%22457.22049%22%20cy%3D%22389.8978%22%20fx%3D%22447.7562%22%20fy%3D%22375.67023%22%20gradientTransform%3D%22matrix(1.5555559%2C0.57249688%2C-0.19940829%2C0.54182083%2C-51.959106%2C-31.614256)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11082%22%20r%3D%2227.617346%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(104.30357%2C61.5)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11084%22%20x1%3D%22429.60315%22%20x2%3D%22484.83783%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22393.30707%22%20y2%3D%22393.30707%22%2F%3E%3CradialGradient%20cx%3D%22457.22049%22%20cy%3D%22389.8978%22%20fx%3D%22447.7562%22%20fy%3D%22375.67023%22%20gradientTransform%3D%22matrix(1.5555559%2C0.57249688%2C-0.19940829%2C0.54182083%2C-71.959106%2C-21.614256)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11086%22%20r%3D%2227.617346%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(173.12234%2C-27.521664)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11088%22%20x1%3D%22423.46597%22%20x2%3D%22432.67175%22%20xlink%3Ahref%3D%22%23linearGradient7904%22%20y1%3D%22471.25983%22%20y2%3D%22455.31494%22%2F%3E%3CradialGradient%20cx%3D%22413.20245%22%20cy%3D%22462.09317%22%20fx%3D%22428.20245%22%20fy%3D%22470.88528%22%20gradientTransform%3D%22matrix(1.6140294%2C0.53176326%2C-0.30506375%2C0.92594182%2C58.36087%2C-214.48903)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11090%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(173.12234%2C-27.521664)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11092%22%20x1%3D%22419.24255%22%20x2%3D%22429.60315%22%20xlink%3Ahref%3D%22%23linearGradient7904%22%20y1%3D%22447.02472%22%20y2%3D%22435.82675%22%2F%3E%3CradialGradient%20cx%3D%22415.7504%22%20cy%3D%22442.91336%22%20fx%3D%22415.7504%22%20fy%3D%22442.91336%22%20gradientTransform%3D%22matrix(1.9210446%2C0.88627399%2C-0.40840287%2C0.88523427%2C-28.91522%2C-345.15915)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11094%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(173.12234%2C-27.521664)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11096%22%20x1%3D%22425.37976%22%20x2%3D%22435.74033%22%20xlink%3Ahref%3D%22%23linearGradient7904%22%20y1%3D%22432.8515%22%20y2%3D%22421.65353%22%2F%3E%3CradialGradient%20cx%3D%22415.7504%22%20cy%3D%22425.19684%22%20fx%3D%22415.7504%22%20fy%3D%22425.19684%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.97490109%2C173.12234%2C-16.849686)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11098%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(83.169006%2C-23.233508)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11100%22%20x1%3D%22439.16608%22%20x2%3D%22445.04929%22%20xlink%3Ahref%3D%22%23linearGradient7898%22%20y1%3D%22472.61322%22%20y2%3D%22460.47037%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(83.169006%2C-23.233508)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11102%22%20x1%3D%22447.77405%22%20x2%3D%22453.81378%22%20xlink%3Ahref%3D%22%23linearGradient7898%22%20y1%3D%22458.94562%22%20y2%3D%22439.75269%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(83.169006%2C-23.233508)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11104%22%20x1%3D%22446.46677%22%20x2%3D%22459.87476%22%20xlink%3Ahref%3D%22%23linearGradient7898%22%20y1%3D%22439.28809%22%20y2%3D%22418.83249%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22423.42517%22%20fx%3D%22464.87555%22%20fy%3D%22423.42517%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.92310072%2C83.169006%2C9.3275826)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11106%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient7904%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22441.14172%22%20fx%3D%22464.87555%22%20fy%3D%22441.14172%22%20gradientTransform%3D%22matrix(1.6661898%2C-0.69232592%2C0.35420157%2C0.85244107%2C-382.77943%2C363.70628)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11108%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient7904%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22458.85825%22%20fx%3D%22480.78546%22%20fy%3D%22449.00952%22%20gradientTransform%3D%22matrix(1.6661898%2C-0.69232545%2C0.35420145%2C0.85244136%2C-389.05459%2C366.32016)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11110%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient7904%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(122.81749%2C0)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11112%22%20x1%3D%22423.46597%22%20x2%3D%22432.67175%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22471.25983%22%20y2%3D%22455.31494%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(122.81749%2C0)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11114%22%20x1%3D%22439.16608%22%20x2%3D%22445.04929%22%20xlink%3Ahref%3D%22%23linearGradient5465%22%20y1%3D%22472.61322%22%20y2%3D%22460.47037%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(122.81749%2C0)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11116%22%20x1%3D%22447.77405%22%20x2%3D%22453.81378%22%20xlink%3Ahref%3D%22%23linearGradient5465%22%20y1%3D%22458.94562%22%20y2%3D%22439.75269%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(122.81749%2C0)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11118%22%20x1%3D%22446.46677%22%20x2%3D%22459.87476%22%20xlink%3Ahref%3D%22%23linearGradient5465%22%20y1%3D%22439.28809%22%20y2%3D%22418.83249%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22423.42517%22%20fx%3D%22464.87555%22%20fy%3D%22423.42517%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.92310072%2C122.81749%2C32.561091)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11120%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient5439%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22441.14172%22%20fx%3D%22464.87555%22%20fy%3D%22441.14172%22%20gradientTransform%3D%22matrix(1.6661898%2C-0.69232592%2C0.35420157%2C0.85244107%2C-343.13095%2C386.93979)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11122%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient5439%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22458.85825%22%20fx%3D%22480.78546%22%20fy%3D%22449.00952%22%20gradientTransform%3D%22matrix(1.6661898%2C-0.69232545%2C0.35420145%2C0.85244136%2C-349.40611%2C389.55367)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11124%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient5439%22%2F%3E%3CradialGradient%20cx%3D%22413.20245%22%20cy%3D%22462.09317%22%20fx%3D%22428.20245%22%20fy%3D%22470.88528%22%20gradientTransform%3D%22matrix(1.6140294%2C0.53176326%2C-0.30506375%2C0.92594182%2C8.0560292%2C-186.96737)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11126%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5389%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(122.81749%2C0)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11128%22%20x1%3D%22417.32877%22%20x2%3D%22429.60315%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22449.99997%22%20y2%3D%22435.82675%22%2F%3E%3CradialGradient%20cx%3D%22415.7504%22%20cy%3D%22442.91336%22%20fx%3D%22415.7504%22%20fy%3D%22442.91336%22%20gradientTransform%3D%22matrix(1.9210446%2C0.88627399%2C-0.40840287%2C0.88523427%2C-79.220061%2C-317.63749)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11130%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5389%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(122.81749%2C0)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11132%22%20x1%3D%22420.39737%22%20x2%3D%22435.74033%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22437.59839%22%20y2%3D%22421.65353%22%2F%3E%3CradialGradient%20cx%3D%22415.7504%22%20cy%3D%22425.19684%22%20fx%3D%22415.7504%22%20fy%3D%22425.19684%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.97490109%2C122.81749%2C10.671978)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11134%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5389%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11136%22%20x1%3D%22423.46597%22%20x2%3D%22432.67175%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22471.25983%22%20y2%3D%22455.31494%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11138%22%20x1%3D%22439.16608%22%20x2%3D%22445.04929%22%20xlink%3Ahref%3D%22%23linearGradient5465%22%20y1%3D%22472.61322%22%20y2%3D%22460.47037%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11140%22%20x1%3D%22447.77405%22%20x2%3D%22453.81378%22%20xlink%3Ahref%3D%22%23linearGradient5465%22%20y1%3D%22458.94562%22%20y2%3D%22439.75269%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11142%22%20x1%3D%22446.46677%22%20x2%3D%22459.87476%22%20xlink%3Ahref%3D%22%23linearGradient5465%22%20y1%3D%22439.28809%22%20y2%3D%22418.83249%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11144%22%20x1%3D%22429.60315%22%20x2%3D%22484.83783%22%20xlink%3Ahref%3D%22%23linearGradient5339%22%20y1%3D%22393.30707%22%20y2%3D%22393.30707%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11146%22%20x1%3D%22414.26019%22%20x2%3D%22469.49487%22%20xlink%3Ahref%3D%22%23linearGradient5339%22%20y1%3D%22402.16534%22%20y2%3D%22402.16534%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11148%22%20x1%3D%22398.91721%22%20x2%3D%22454.15189%22%20xlink%3Ahref%3D%22%23linearGradient5339%22%20y1%3D%22411.02359%22%20y2%3D%22411.02359%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22423.42517%22%20fx%3D%22464.87555%22%20fy%3D%22423.42517%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.92310072%2C0%2C32.561091)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11150%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient5439%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22441.14172%22%20fx%3D%22464.87555%22%20fy%3D%22441.14172%22%20gradientTransform%3D%22matrix(1.6661898%2C-0.69232592%2C0.35420157%2C0.85244107%2C-465.94844%2C386.93979)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11152%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient5439%22%2F%3E%3CradialGradient%20cx%3D%22464.87555%22%20cy%3D%22458.85825%22%20fx%3D%22480.78546%22%20fy%3D%22449.00952%22%20gradientTransform%3D%22matrix(1.6661898%2C-0.69232545%2C0.35420145%2C0.85244136%2C-472.2236%2C389.55367)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11154%22%20r%3D%2223.030905%22%20xlink%3Ahref%3D%22%23linearGradient5439%22%2F%3E%3CradialGradient%20cx%3D%22413.20245%22%20cy%3D%22462.09317%22%20fx%3D%22428.20245%22%20fy%3D%22470.88528%22%20gradientTransform%3D%22matrix(1.6140294%2C0.53176326%2C-0.30506375%2C0.92594182%2C-114.76146%2C-186.96737)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11156%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5389%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11158%22%20x1%3D%22417.32877%22%20x2%3D%22429.60315%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22449.99997%22%20y2%3D%22435.82675%22%2F%3E%3CradialGradient%20cx%3D%22415.7504%22%20cy%3D%22442.91336%22%20fx%3D%22415.7504%22%20fy%3D%22442.91336%22%20gradientTransform%3D%22matrix(1.9210446%2C0.88627399%2C-0.40840287%2C0.88523427%2C-202.03755%2C-317.63749)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11160%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5389%22%2F%3E%3CradialGradient%20cx%3D%22426.53455%22%20cy%3D%22407.61435%22%20fx%3D%22426.53455%22%20fy%3D%22407.61435%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.57735021%2C0%2C172.27811)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11162%22%20r%3D%2227.617346%22%20xlink%3Ahref%3D%22%23linearGradient5363%22%2F%3E%3CradialGradient%20cx%3D%22441.87753%22%20cy%3D%22398.75607%22%20fx%3D%22441.87753%22%20fy%3D%22398.75607%22%20gradientTransform%3D%22matrix(1.111111%2C0.9573967%2C-0.37687149%2C0.43737986%2C101.18236%2C-198.7039)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11164%22%20r%3D%2227.617346%22%20xlink%3Ahref%3D%22%23linearGradient5363%22%2F%3E%3CradialGradient%20cx%3D%22457.22049%22%20cy%3D%22389.8978%22%20fx%3D%22447.7562%22%20fy%3D%22375.67023%22%20gradientTransform%3D%22matrix(1.5555559%2C0.57249688%2C-0.19940829%2C0.54182083%2C-176.26268%2C-83.114256)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11166%22%20r%3D%2227.617346%22%20xlink%3Ahref%3D%22%23linearGradient5363%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11168%22%20x1%3D%22420.39737%22%20x2%3D%22435.74033%22%20xlink%3Ahref%3D%22%23linearGradient5415%22%20y1%3D%22437.59839%22%20y2%3D%22421.65353%22%2F%3E%3CradialGradient%20cx%3D%22415.7504%22%20cy%3D%22425.19684%22%20fx%3D%22415.7504%22%20fy%3D%22425.19684%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.97490109%2C0%2C10.671978)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11170%22%20r%3D%2219.98991%22%20xlink%3Ahref%3D%22%23linearGradient5389%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(0%2C35.714286)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11172%22%20x1%3D%22223.9375%22%20x2%3D%22242.53125%22%20xlink%3Ahref%3D%22%23linearGradient8017%22%20y1%3D%22526.78125%22%20y2%3D%22526.78125%22%2F%3E%3CradialGradient%20cx%3D%22203.18814%22%20cy%3D%22534.65778%22%20fx%3D%22203.18814%22%20fy%3D%22534.65778%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.5%2C0%2C267.32889)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11174%22%20r%3D%229.8667269%22%20xlink%3Ahref%3D%22%23linearGradient8033%22%2F%3E%3ClinearGradient%20gradientTransform%3D%22translate(0%2C35.714286)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11176%22%20x1%3D%22193.69606%22%20x2%3D%22212.28981%22%20xlink%3Ahref%3D%22%23linearGradient8017%22%20y1%3D%22533.22095%22%20y2%3D%22533.22095%22%2F%3E%3CradialGradient%20cx%3D%22203.18814%22%20cy%3D%22534.65778%22%20fx%3D%22203.18814%22%20fy%3D%22534.65778%22%20gradientTransform%3D%22matrix(1%2C0%2C0%2C0.5%2C0%2C267.32889)%22%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22radialGradient11178%22%20r%3D%229.8667269%22%20xlink%3Ahref%3D%22%23linearGradient8033%22%2F%3E%3ClinearGradient%20gradientUnits%3D%22userSpaceOnUse%22%20id%3D%22linearGradient11180%22%20x1%3D%22422.47955%22%20x2%3D%22428.02603%22%20xlink%3Ahref%3D%22%23linearGradient8227%22%20y1%3D%22568.0675%22%20y2%3D%22555.44055%22%2F%3E%3C%2Fdefs%3E%3Cg%20id%3D%22layer1%22%20transform%3D%22translate(-168.79235%2C-495.03329)%22%3E%3Cg%20id%3D%22g3791%22%20transform%3D%22matrix(1.3630056%2C0%2C0%2C1.3630056%2C-53.172495%2C-239.31221)%22%3E%3Cpath%20d%3D%22m%20174.90625%2C607.96429%200%2C14.15625%2039.90625%2C23.03125%200%2C-14.15625%20-39.90625%2C-23.03125%20z%22%20id%3D%22path8015%22%20style%3D%22fill%3A%23d64b25%3Bfill-opacity%3A1%3Bstroke%3Anone%22%2F%3E%3Cpath%20d%3D%22m%20174.90625%2C590.24554%200%2C14.15625%2039.90625%2C23.03125%200%2C-14.15625%20-39.90625%2C-23.03125%20z%22%20id%3D%22path8013%22%20style%3D%22fill%3A%2362be30%3Bfill-opacity%3A1%3Bstroke%3Anone%22%2F%3E%3Cpath%20d%3D%22m%20174.90625%2C568.99554%200%2C17.6875%2039.90625%2C23.0625%200%2C-17.71875%20-39.90625%2C-23.03125%20z%22%20id%3D%22path7952%22%20style%3D%22fill%3A%231c87d8%3Bfill-opacity%3A1%3Bstroke%3Anone%22%2F%3E%3Cpath%20d%3D%22m%20260.84375%2C604.40179%20-46.03125%2C26.59375%200%2C14.15625%2046.03125%2C-26.5625%200%2C-14.1875%20z%22%20id%3D%22path8010%22%20style%3D%22fill%3A%23e06746%3Bfill-opacity%3A1%3Bstroke%3Anone%22%2F%3E%3Cpath%20d%3D%22m%20260.84375%2C586.68304%20-46.03125%2C26.59375%200%2C14.15625%2046.03125%2C-26.5625%200%2C-14.1875%20z%22%20id%3D%22path8008%22%20style%3D%22fill%3A%2375c847%3Bfill-opacity%3A1%3Bstroke%3Anone%22%2F%3E%3Cpath%20d%3D%22m%20260.84375%2C565.43304%20-46.03125%2C26.59375%200%2C17.71875%2046.03125%2C-26.59375%200%2C-17.71875%20z%22%20id%3D%22path7954%22%20style%3D%22fill%3A%2344a1e7%3Bfill-opacity%3A1%3Bstroke%3Anone%22%2F%3E%3Cpath%20d%3D%22m%20174.90986%2C568.98198%2046.36355%2C-26.54437%2039.55708%2C23.00107%20-46.02891%2C26.5748%20z%22%20id%3D%22path7956%22%20style%3D%22fill%3A%236cb5ec%3Bfill-opacity%3A1%3Bstroke%3Anone%22%2F%3E%3Cpath%20d%3D%22m%20233.21875%2C555.12054%20c%20-5.10056%2C0%20-9.21875%2C2.07471%20-9.21875%2C4.625%200%2C0.0635%20-0.005%2C0.12465%200%2C0.1875%20l%200%2C4.71875%20c%20-0.0455%2C0.18644%20-0.0625%2C0.36992%20-0.0625%2C0.5625%200%2C2.56772%204.14583%2C4.65625%209.28125%2C4.65625%205.13542%2C0%209.3125%2C-2.08853%209.3125%2C-4.65625%200%2C-0.23573%20-0.0573%2C-0.4612%20-0.125%2C-0.6875%20l%200%2C-4.3125%20c%200.0315%2C-0.15523%200.0625%2C-0.30936%200.0625%2C-0.46875%200%2C-2.55029%20-4.14944%2C-4.625%20-9.25%2C-4.625%20z%22%20id%3D%22path7966%22%20style%3D%22fill%3Aurl(%23linearGradient5820)%3Bfill-opacity%3A1%3Bstroke%3Anone%22%2F%3E%3Cpath%20d%3D%22m%20213.05487%2C534.65778%20c%200%2C2.72462%20-4.41749%2C4.93336%20-9.86673%2C4.93336%20-5.44924%2C0%20-9.86673%2C-2.20874%20-9.86673%2C-4.93336%200%2C-2.72463%204.41749%2C-4.93337%209.86673%2C-4.93337%205.44924%2C0%209.86673%2C2.20874%209.86673%2C4.93337%20z%22%20id%3D%22path7970%22%20style%3D%22fill%3Aurl(%23radialGradient5822)%3Bfill-opacity%3A1%3Bstroke%3Anone%22%20transform%3D%22matrix(0.91041778%2C0%2C0%2C0.93601271%2C48.243514%2C59.511135)%22%2F%3E%3Cpath%20d%3D%22m%20202.97731%2C561.56026%20c%20-5.10056%2C0%20-9.21875%2C2.07471%20-9.21875%2C4.625%200%2C0.0635%20-0.005%2C0.12465%200%2C0.1875%20l%200%2C4.71875%20c%20-0.0455%2C0.18644%20-0.0625%2C0.36992%20-0.0625%2C0.5625%200%2C2.56772%204.14583%2C4.65625%209.28125%2C4.65625%205.13542%2C0%209.3125%2C-2.08853%209.3125%2C-4.65625%200%2C-0.23573%20-0.0573%2C-0.4612%20-0.125%2C-0.6875%20l%200%2C-4.3125%20c%200.0315%2C-0.15523%200.0625%2C-0.30936%200.0625%2C-0.46875%200%2C-2.55029%20-4.14944%2C-4.625%20-9.25%2C-4.625%20z%22%20id%3D%22path7979%22%20style%3D%22fill%3Aurl(%23linearGradient5824)%3Bfill-opacity%3A1%3Bstroke%3Anone%22%2F%3E%3Cpath%20d%3D%22m%20213.05487%2C534.65778%20c%200%2C2.72462%20-4.41749%2C4.93336%20-9.86673%2C4.93336%20-5.44924%2C0%20-9.86673%2C-2.20874%20-9.86673%2C-4.93336%200%2C-2.72463%204.41749%2C-4.93337%209.86673%2C-4.93337%205.44924%2C0%209.86673%2C2.20874%209.86673%2C4.93337%20z%22%20id%3D%22path7981%22%20style%3D%22fill%3Aurl(%23radialGradient5826)%3Bfill-opacity%3A1%3Bstroke%3Anone%22%20transform%3D%22matrix(0.91041778%2C0%2C0%2C0.93601271%2C18.002072%2C65.950857)%22%2F%3E%3Cpath%20d%3D%22m%20177.97845%2C606.18671%20-3.06859%2C1.77165%2039.89172%2C23.0315%200%2C-3.54331%20z%22%20id%3D%22path7983%22%20style%3D%22fill%3A%23a63b1d%3Bfill-opacity%3A1%3Bstroke%3Anone%22%2F%3E%3Cpath%20d%3D%22m%20177.97845%2C588.47017%20-3.06859%2C1.77166%2039.89172%2C23.03149%200%2C-3.5433%20z%22%20id%3D%22path7985%22%20style%3D%22fill%3A%23509c27%3Bfill-opacity%3A1%3Bstroke%3Anone%22%2F%3E%3Cpath%20d%3D%22m%20214.80158%2C609.73002%200%2C3.5433%2046.02891%2C-26.5748%20-3.0686%2C-1.77165%20z%22%20id%3D%22path7987%22%20style%3D%22fill%3A%2358ab2b%3Bfill-opacity%3A1%3Bstroke%3Anone%22%2F%3E%3Cpath%20d%3D%22m%20214.80158%2C627.44655%200%2C3.54331%2046.02891%2C-26.5748%20-3.0686%2C-1.77166%20z%22%20id%3D%22path7989%22%20style%3D%22fill%3A%23be4321%3Bfill-opacity%3A1%3Bstroke%3Anone%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}
#support .future,
#support prefix,
#support .version {
opacity: 1;
transition: opacity 0.5s;
}
#support .disabled {
opacity: 0.2;
cursor: pointer;
}
#support .disabled .version,
#support .disabled .prefix { opacity: 0 }
/*
* TRANSFORMS SLIDES COMMONS
* =============================================================================
*/
.target {
position: relative;
width: 200px;
height: 200px;
margin: 50px auto 150px;
transition: transform 1s ease-in-out;
transform-style: preserve-3d;
}
.face {
width: 200px;
height: 200px;
font-family: "Ubuntu Mono", monospace;
font-size: 2em;
line-height: 185px;
text-align: center;
color: #FFF;
text-shadow: -2px -1px 2px rgba(0,0,0,0.2);
transform-style: preserve-3d;
backface-visibility: inherit;
}
.axis {
display: block;
width: 200px; height: 200px;
border: 2px dashed #444;
border-width: 2px 0 0 0;
position: absolute;
top: 101px; left: 101px;
transform-style: preserve-3d;
transform: translateZ(1px);
}
.axis.y {
border-width: 0 0 0 2px;
}
.axis.z {
transform: translateZ(1px) rotateY(-90deg);
transform-origin: 0 0;
}
.axis:before {
position: absolute;
width: 20px;
height: 20px;
line-height: 20px;
text-align: center;
top: 0; right: 0;
content: " ";
background: rgba(100,100,100,0.2);
font-family: sans-serif;
font-size: 16px;
color: #333;
}
.axis.x:before { content: "X" }
.axis.y:before { content: "Y"; left: -20px; bottom: 0; top: auto; right: auto; }
.axis.z:before { content: "Z" }
.axis:after {
content: " ";
position: absolute;
width: 100%; height: 100%;
border-top: 2px dashed #444;
transform: translate3d(0,-1px,-1px) rotateX(90deg);
transform-origin: 0 0;
}
.axis.y:after {
border-top: none;
border-left: 2px dashed #444;
transform: translate3d(-1px,0,-1px) rotateY(-90deg);
transform-origin: 0 0;
}
#transforms2d { width: 900px }
#transforms2d .face { background: rgba( 0,153,255,1); }
#transforms2d h2 { font-size: 3.5em; }
/*
* TRANSFORMS 3D
* =============================================================================
*/
#transforms3d { width: 940px; }
#transforms3d-cube { width: 960px; }
#transforms3d .snippet,
#transforms3d-cube .snippet { font-size: 0.7em; }
#transforms3d .face { background: rgba(102, 51,255,1); }
#transforms3d-cube .cube {
transform-style: flat;
transform: perspective(600px) rotateX(330deg) rotateY(320deg);
}
#transforms3d-cube .flip {
position: relative;
transform: perspective(1000px) rotateX(0deg);
transform-style: preserve-3d;
transition: transform 1s ease-in-out;
}
#transforms3d-cube .flip.back {
transform: perspective(1000px) rotateX(180deg);
}
#transforms3d-cube .flip .snippet {
backface-visibility: hidden;
transform-style: preserve-3d;
}
#transforms3d-cube .flip .back {
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
transform: rotateX(-180deg);
}
.cube > .face {
position: absolute;
opacity: 1;
transition: all 1s, transform 1s;
}
.cube > .face:nth-child(1) { transition-delay: 0, 0; background: rgba(102, 51,255,1); transform: rotateY( 0deg) translateZ(100px); }
.cube > .face:nth-child(2) { transition-delay: 0, 1s; background: rgba(255,153, 0,1); transform: rotateY(180deg) translateZ(100px); }
.cube > .face:nth-child(3) { transition-delay: 0, 2s; background: rgba(255, 0, 0,1); transform: rotateY(-90deg) translateZ(100px); }
.cube > .face:nth-child(4) { transition-delay: 0, 3s; background: rgba( 51,255, 0,1); transform: rotateY( 90deg) translateZ(100px); }
.cube > .face:nth-child(5) { transition-delay: 0, 4s; background: rgba(255,255, 0,1); transform: rotateX( 90deg) translateZ(100px); }
.cube > .face:nth-child(6) { transition-delay: 0, 5s; background: rgba( 0,153,255,1); transform: rotateX(-90deg) translateZ(100px); }
.cube.flat > .face {
transform: translate3d(0,0,0);
}
.cube.target {
width: 204px;
height: 204px;
transform-style: preserve-3d;
backface-visibility: visible;
}
/*
* PERSPECTIVE
* =============================================================================
*/
.step-perspective #title { pointer-events: none }
#perspective { width: 600px; z-index: 100; }
#perspective h2 { width: 550px;
font-size: 2em;
top: 2em;
text-align: center;
}
#perspective .paradigm {
background-color: #961b1e;
color: #fff;
width: 700px;
height: 700px;
border: 2px solid #a62a2d;
/*perspective: 1000px;*/
perspective-origin: 50% 50%;
overflow: hidden;
margin: 20px auto;
position: relative;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0,0,0,0.2) inset;
pointer-events: auto;
transform-style: flat;
transition: perspective 0.5s ease-in-out;
}
#perspective .paradigm .handle {
position:absolute;
z-index: 1;
border:10px solid #666;
border-radius:35px;
width:50%;
left:25%;
top:-10%;
height:15%;
opacity:0.5;
box-shadow:0px 0px 2px black;
}
#perspective .paradigm .keyhole {
position:absolute;
width:1%;
left:51.5%;
top:1%;
height:5%;
opacity:0.3;
box-shadow:inset -2px -2px 2px black;
background-color:#333;
border-radius:35px;
}
#perspective .paradigm .row {
height:25%;
border-top:3px dashed #a62a2d;
}
#perspective .paradigm .row div {
display: inline-block;
width:24%;
height:100%;
line-height: 1100%; /* don't get this but it works */
font-size:0.5em;
text-align:center;
vertical-align:middle;
}
#perspective .paradigm .header,
#perspective .paradigm .lbl {
color:#c39495;
border-top:none;
font-weight:bold;
}
#perspective .paradigm .header {
font-size: 1.3em;
}
#perspective .cross {
width: 10000px; height: 10000px;
position: absolute;
left: -4700px; top: -4800px;
cursor: move;
}
#perspective .cross:before,
#perspective .cross:after {
content: "";
position: absolute;
border: 0px dashed #AAA;
height: 100%; width: 100%;
bottom: 0; left: 0;
}
#perspective .cross:before { height: 50%; border-top-width: 2px; }
#perspective .cross:after { width: 50%; border-right-width: 2px; }
#perspective .box {
width: 100px;
height: 100px;
transform-style: preserve-3d;
}
#perspective .top,
#perspective .left,
#perspective .right,
#perspective .bottom,
#perspective .front,
#perspective .back {
box-sizing: border-box;
width: 100px; height: 100px;
position: absolute;
}
#perspective .left:before,
#perspective .right:before {
content: "";
box-sizing: border-box;
height: 100px; width: 10000px;
border: 2px solid #777;
border-width: 2px 0;
position: absolute;
top: 0; left: 101px;
}
#perspective .left:before {
left: auto; right: 101px;
}
#perspective .box .front { background: rgba(255,255, 0,.5); transform: translateZ(50px); }
#perspective .box .top { background: rgba(255,153, 0,.5); transform: translate(0px,-50px) rotateX(90deg); }
#perspective .box .right { background: rgba(255, 0, 0,.5); transform: translate(50px,0px) rotateY(90deg); }
#perspective .box .bottom { background: rgba( 51,255, 0,.5); transform: translate(0px,50px) rotateX(-90deg); }
#perspective .box .left { background: rgba(102, 51,255,.5); transform: translate(-50px,0px) rotateY(-90deg); }
#perspective .box .back { background: rgba( 0,153,255,.5); transform: translateZ(-50px) rotateY(180deg); }
#perspective .box:nth-child(2) {
position: absolute;
top: 50px; left: 100px;
}
#perspective .box:nth-child(3) {
position: absolute;
top: 250px; left: 400px;
/* transform: translateZ(-300px);
transform-style: preserve-3d; */
}
/*
* END
* =============================================================================
*/
#remember { width: 900px }
#remember h2 {}
#demos h3,
#learn h3 { font-size: 1.6em }
#demos p,
#learn p { line-height: 1.6 }
#demos a,
#learn a { white-space: nowrap; }
#end {
height: 0;
width: 0;
}
#end .author {
text-align: center;
position: absolute;
top: 200px;
width: 600px;
margin-left: -300px;
}
/*
* SLIDER
* =============================================================================
*/
.switch { cursor: pointer; }
label.slider {
display: inline-block;
position: relative;
user-select: none;
}
label.slider .val { white-space: pre; }
label.disabled input { display: none }
label.slider input[type=range] {
appearance: none;
background: transparent;
position: absolute;
left: 0;
right: 0;
top: 0;
left: 0;
overflow: hidden;
}
label.slider input[type=range]::-webkit-slider-thumb {
appearance: none;
width: 50px;
height: 35px;
background-color: rgba(200,100,100,0.4);
border-radius: 5px;
cursor: move;
transition: background-color 500ms ease-in-out;
}
/* IMPRESS NOT SUPPORTED STYLES */
.impress-not-supported .step {
clear: both;
position: relative;
opacity: 1;
margin: 20px auto;
}
.fallback-message {
font-size: 16px;
font-family: sans-serif;
line-height: 1.3;
display: block;
width: 780px;
padding: 10px 10px 0;
margin: 20px auto;
border-radius: 10px;
border: 1px solid #E4C652;
background: #EEDC94;
position: fixed;
top: 10px;
left: 50%;
margin-left: -400px;
}
.fallback-message p {
margin-bottom: 10px;
}
.supported .fallback-message {
display: none;
}
.impress-not-supported .fallback-message {
position: static;
margin: 20px auto;
}
</style>
<script src="http://leaverou.github.io/prefixfree/prefixfree.js"></script>
</head>
<body>
<div class="fallback-message">
<p>This presentation was build for latest <b>Chrome</b> or <b>Safari</b> browser.</p>
<p>You are viewing simplified view, but most of the CSS 3D will not work for you, sorry.</p>
</div>
<div id="impress">
<div id="title" class="step">
<h1>
<span class="short">Go-ing,&nbsp;Go-ing</span>
<span class="css">back,&nbsp;<span class="d3">back</span></span>
<span class="transforms">to compiling,&nbsp;'piling</span>
</h1>
<span class="author">
<i>by</i>
<a href="http://twitter.com/m3moore">@m3moore</a>
<span class="producer"><img src="http://i.imgur.com/lAz5mLv.png" width=200></span>
</span>
</div>
<div id="support" class="step" data-x="-640" data-y="0" data-rotate="30" data-scale="0.4">
<h2>Key Features</h2>
<div class="current">
<div class="compiled browser"><span class="prefix"><code>Compiled</code></span></div>
<div class="typed browser"><span class="prefix"><code>Strongly Typed</code></span></div>
<div class="threaded browser"><span class="prefix"><code>Multithreaded</code></span></div>
</div>
<div class="future">
<div class="oo browser"><span class="prefix"><code>Simplisticly OO*</code></span></div>
<div class="garbage browser"><span class="prefix"><code>Garbage Collected</code></span></div>
<div class="staticlinked browser"><span class="prefix"><code>Statically linked</code></span></div>
</div>
</div>
<div id="transforms2d" class="step" data-x="-620" data-y="500" data-rotate="90" data-scale="0.5">
<h2>Key Strengths</h2>
<h3>It is <b>not</b> a <b>panacea</b> (duh)</h3>
<ul>
<li>amazing at <b>parsing huge files</b></li>
<li><b>concurrency syntax is simple</b> to maintain</li>
<li>large-team-oriented: <b>easy to maintain</b></li>
<li><b>vibrant community</b> and libraries</li>
<li>well-designed <b>standard libraries</b></li>
</ul>
</div>
<div id="perspective" class="step" data-x="-90" data-y="540" data-rotate="190" data-scale="0.6">
<h2><i>@m3moore</i>'s Toolbox</h2>
<div class="paradigm">
<div class="handle"></div>
<div class="keyhole"></div>
<div class="header row">
<div class="lbl"></div>
<div class="proto"><span>Prototyping</span></div>
<div class="noncpu"><b>!</b>CPU-Bound</div>
<div class="cpu">CPU-Bound</div>
</div>
<div class="row">
<div class="lbl">Server-Side</div>
<div class="proto">Ruby on Rails</div>
<div class="noncpu">Go</div>
<div class="cpu">Rust/C/D (?)</div>
</div>
<div class="row">
<div class="lbl">Desktop-Side</div>
<div class="proto">JS/Nodejs</div>
<div class="noncpu">ObjC/.NET</div>
<div class="cpu">C</div>
</div>
<div class="row">
<div class="lbl">Embedded System</div>
<div class="proto">Nodejs</div>
<div class="noncpu">C</div>
<div class="cpu">Assembly</div>
</div>
</div>
</div>
<div id="transforms3d" class="step" data-x="450" data-y="300" data-rotate="100" data-scale="0.25">
<h2>Unique Syntaxes</h2>
<code class="snippet">
<b>var</b> err <b>error</b> <span class="comment">// error is a native type</span><br>
<br>
foo := []<b>byte</b>(<i>"hello world\n"</i>) <span class="comment">// declare variable and auto-type</span><br>
<br>
err = <i>ioutil</i>.WriteFile(<i>"/dev/null"</i>, foo, <i>0644</i>) <span class="comment">// *no* throw/catch</span><br>
<br>
if err != <i>nil</i> { <b>panic</b>(e) } <span class="comment">// nil as opposed to NULL</span><br>
<br>
<b>func</b> p(x <b>string</b>, y <b>int</b>) (<b>int</b>, <b>error</b>) { <span class="comment">// type(s) come after</span><br>
<span class="indent"> </span>x_i, err := <i>strconv</i>.ParseInt(x, <i>10</i>, <i>32</i>) <span class="comment">// multiple return values</span><br>
<span class="indent"> </span><b>if</b> err != <i>nil</i> { <b>return</b> x_i + y, err } <br>
<span class="indent"> </span><b>return</b> <i>-1</i>, err<br>
}<br>
<br>
<b>type</b> Point <b>struct</b> { X, Y <b>float64</b> } <span class="comment">// `type struct` is class</span><br>
<br>
<b>func</b> (p *Point) Distance() <b>float64</b> { <span class="comment">// public methods are Uppercase</span><br>
<span class="indent"> </span><b>return</b> <i>math</i>.Sqrt(p.X*p.X + p.Y*p.Y)<br>
}<br>
</code>
</div>
<div id="transforms3d-cube" class="step" data-x="670" data-y="800" data-rotate="10" data-scale="0.6">
<h2>Concurrency</h2>
<code class="snippet">
<span class="comment">// go &lt;3 concurrency</span><br>
<br>
<b>go</b> <b>func</b>() { <span class="comment">// spawn anonymous `goroutine` / quasi-thread</span><br>
<span class="indent"> </span><b>for</b> { <i>fmt</i>.Println(<i>"hello\nworld"</i>) } <span class="comment">// never stops &amp; won't block</span><br>
}() <br>
<br>
<span class="comment">// insanely elegant communication &amp; control via `channels`</span><br>
<b>var</b> final []<b>string</b> <span class="comment">// string array to aggregate results</span><br>
collector := <b><i>make</i></b>(<b>chan</b> <b>string</b>) <span class="comment">// create a `channel` for message passing</span><br>
<b>go</b> <b>func</b>() { collector &lt;- slowly(<i>"google"</i>) } () <span class="comment">// notify channel when done</span><br>
<b>go</b> <b>func</b>() { collector &lt;- slowly(<i>"bing"</i>) &nbsp;&nbsp;} () <span class="comment">// ditto</span><br>
<b>go</b> <b>func</b>() { collector &lt;- slowly(<i>"yahoo"</i>) &nbsp;} () <span class="comment">// yet another</span><br>
timeout := <i>time</i>.After(<i>80</i> * <i>time</i>.Millisecond) <span class="comment">// *returns* a channel</span><br>
for i := 0; i &lt; 3; i++ { <span class="comment">// one loop per goroutine</span><br>
<span class="indent"> </span><b>select</b> { <span class="comment">// wait for a notify on multiple channels</span><br>
<span class="indent"> </span><b>case</b> single := &lt;-collector: <span class="comment">// block until `collector` notifies</span><br>
<span class="indent"> </span> final = <b><i>append</i></b>(final, single) <span class="comment">// result of goroutine that notified</span><br>
<span class="indent"> </span><b>case</b> &lt;-timeout: <span class="comment">// *or* block until `timeout` notifies</span><br>
<span class="indent"> </span> <b><i>panic</i></b>(<i>"I am a failure."</i>)<br>
<span class="indent"> </span>}<br>
}<br>
<i>fmt</i>.Printf(<i>"%x\t%x\t%x"</i>, final[0], final[1], final[2]) <span class="comment">// all results</span><br>
<br>
<span class="comment">// further reading: <a href="http://talks.golang.org/2012/concurrency.slide">http://talks.golang.org/2012/concurrency.slide</a></span>
<br>
</code>
</div>
<div id="remember" class="step" data-x="750" data-y="70" data-rotate="30" data-scale="0.4">
<h2>Wise Words</h2>
<h3>Give in to <b>convention</b></h3>
<ul>
<li>put all code in <i>$GOPATH</i>/codesite/owner/repo</li>
<li> -&gt; even private projects; thank me later</b></li>
<li>`go <b>get</b> <i>github.com/owner/repo</i>` for 3rd party libs</li>
<li>`go <b>run</b> ./<i>main</i>.go` to execute app</li>
<li>`go <b>build</b> -o ./<i>main.app</i> .` for a self-contained bin</li>
</ul>
</div>
<div id="demos" class="step" data-x="950" data-y="300" data-rotate="-60" data-scale="0.2">
<h2>Playtime</h2>
<h3>Let's <b>make 2 little apps</b>.</h3>
<ul>
<li>parse a 1GB+ file and check out the memory usage</li>
<li>fetch a ton of favicons and render them on a page</b></li>
</ul>
</div>
<div id="learn" class="step" data-x="1050" data-y="360" data-rotate="-60" data-scale="0.2">
<h3>parse an epic file</h3>
<code class="snippet">
<span class="comment">// There's a helpful function called `ForeachLine` on gist.</span>
<i><b>ForeachLine</b></i>(<i>"~/long.log"</i>, <b>func</b>(line <b>string</b>) {<br>
<span class="indent"> </span>myParseLineFunction(line) <span class="comment">// your code</span><br>
})<br>
<br>
<span class="comment">// get gist: <a href="https://gist.github.com/crowdmatt/5051453" target="_blank">https://gist.github.com/crowdmatt/5051453</a></span>
</code>
<p>
<br>Open Activity Monitor, and watch your RAM <i>not</i> grow!</p>
</div>
<div id="learn2" class="step" data-x="1190" data-y="420" data-rotate="-60" data-scale="0.2">
<h3>crazy favys: icon fetcher</h3>
<code class="snippet">
<span class="comment">// Booster chair: sample code for concurrent http fetches.</span><br>
<span class="comment">// <a href="http://bit.ly/gomultihttps" target="_blank">http://bit.ly/gomultihttps</a></span><br>
<span class="comment">// Gist of lot of popular sites, in a Go slice.</span><br>
<span class="comment">// <a href="https://gist.github.com/moorage/08577559658b5f0755e7" target="_blank">https://gist.github.com/moorage/08577559658b5f0755e7</a></span><br>
<br>
<span class="comment">// Favicon regular expression made easy.</span><br>
<span class="comment">// <a href="http://stackoverflow.com/a/10726953/370800" target="_blank">http://stackoverflow.com/a/10726953/370800</a></span><br>
<span class="comment">// Using a regex in Go.</span><br>
<span class="comment">// <a href="https://gobyexample.com/regular-expressions" target="_blank">https://gobyexample.com/regular-expressions</a></span><br>
<br>
<span class="comment">// Baby's first Go webserver.</span><br>
<span class="comment">// <a href="http://thenewstack.io/building-a-web-server-in-go/" target="_blank">http://thenewstack.io/building-a-web-server-in-go/</a></span><br>
<br>
<span class="comment">// Great artists steal: a robust solution on github.</span><br>
<span class="comment">// <a href="https://github.com/PuerkitoBio/gocrawl" target="_blank">https://github.com/PuerkitoBio/gocrawl</a></span>
<br>
</code>
</div>
<div id="end" class="step" data-x="0" data-y="500" data-rotate="0" data-scale="2">
<span class="author">
<br>
<i>by</i> <a href="http://twitter.com/m3moore">@m3moore</a>
<br>
<img src="http://i.imgur.com/lAz5mLv.png" width=150 style="margin-top:10px">
</span>
</div>
</div>
<script src="http://bartaz.github.io/impress.js/js/impress.js"></script>
<script src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
<script>impress().init();</script>
<script>
$(function(){
/* TRANSFORMS 2D 3D STEPS */
// borrowed from impress.js ;)
var pfx = (function () {
var style = document.createElement('dummy').style,
prefixes = 'Wecbkit Moz O ms Khtml'.split(' '),
memory = {};
return function ( prop ) {
if ( typeof memory[ prop ] === "undefined" ) {
var ucProp = prop.charAt(0).toUpperCase() + prop.substr(1),
props = (prop + ' ' + prefixes.join(ucProp + ' ') + ucProp).split(' ');
memory[ prop ] = null;
for ( var i in props ) {
if ( style[ props[i] ] !== undefined ) {
memory[ prop ] = props[i];
break;
}
}
}
return memory[ prop ];
}
})();
// pads given string from the left
// used to justify slider values
var lpad = function(str, length, padString) {
while (str.length < length)
str = (padString || " ") + str;
return str;
}
var tid = null;
function codeToTarget($input) {
var code = $input.closest(".code").clone().find(".disabled,.ignore").remove().end();
if (code.data("property")) {
var text = code.text().trim().replace(/\n/ig," ");
var target = $input.closest(".step").find( ".target " + (code.data("selector") || "") );
target.css( pfx( code.data("property") ), text || "" )
}
}
// updates target element styles property
// when code is changed (by clicking or sliders)
var updateTarget = function ($input) {
clearTimeout(tid);
tid = setTimeout(function(){
codeToTarget($input)
},50);
}
$(".switch").attr("title", "Double click to toggle");
$(document)
.on("dblclick", ".switch", function () {
$(this).toggleClass("disabled");
updateTarget( $(this) );
return false;
})
.on("dblclick", ".flip", function (event) {
// flip the "cube" code around
if ($(event.target).is(".snippet")) {
$(this).toggleClass("back");
}
})
.on("dblclick", "#transforms3d-cube .cube-flat.switch", function () {
// special treatment for cube class switch in code
$("#transforms3d-cube .cube").toggleClass("flat");
})
$(".slider input[type=range]")
.on("change", function(){
var $slider = $(this);
var val = $slider.val();
var divider = $slider.data("divider") || 1;
val /= divider;
val = "" + val.toFixed(1);
if (divider == 1) { val = parseInt(val); }
$slider.closest("label").find(".val").text(val);
updateTarget( $slider );
});
$("#transforms3d-cube .cube").css("-webkit-transform-style", "preserve-3d");
/* PERSPECTIVE STEP */
var $document = $(document),
$scene = $("#perspective .scene"),
$cross = $scene.find(".cross"),
originOffset = { top: $cross.height() / 2, left: $cross.width() / 2 };
$scene.css(pfx("perspective"), "1000px");
$scene
.on("mousedown", function (mouseDownEvent) {
var offset = $cross.position();
$document.on("mousemove.drag", function (moveEvent) {
var left = offset.left + moveEvent.pageX - mouseDownEvent.pageX,
top = offset.top + moveEvent.pageY - mouseDownEvent.pageY;
$cross.css({ left: left, top: top });
$scene.css(pfx("perspective-origin"),
(left + originOffset.left) + "px " +
(top + originOffset.top) + "px");
$("code .origin .value")
.text(~~(left + originOffset.left) +"px "+ ~~(top + originOffset.top) +"px");
return false;
});
return false;
})
$document.on("mouseup", function () {
$document.off("mousemove.drag");
});
// init interactive code
$(".step:has(.target) .code").each(function(){
codeToTarget($(this).children().eq(0));
})
});
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-57137383-1', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment