CINXE.COM
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/styles.ebc39305a45dd3a86b2f.css">@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i);.banner{position:relative}.banner,.banner .hero{height:30rem}.banner .fps{position:absolute;bottom:1rem;right:1rem}.banner .fps>div{position:relative!important}.banner .container{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;padding:0 2rem;width:100%;height:100%;color:#fff}.banner p{font-size:16px}.banner h1,.banner p{text-shadow:3px 3px 5px #000}.banner h1{font-size:5em;text-transform:uppercase;letter-spacing:4px;font-weight:700;margin:96px 0 8px}.banner .btn{font-size:12px;line-height:44px;letter-spacing:2px;font-weight:700;margin:4rem 0;padding:0 4rem;pointer-events:all;-webkit-transition:background-color .25s ease-in,color .25s ease-in;transition:background-color .25s ease-in,color .25s ease-in;border:2px solid #7989b7;-webkit-border-image:-webkit-gradient(linear,left top,right top,from(#7989b7),to(#ccc7e4));-webkit-border-image:linear-gradient(90deg,#7989b7 0,#ccc7e4);-o-border-image:linear-gradient(90deg,#7989b7 0,#ccc7e4);border-image:-webkit-gradient(linear,left top,right top,from(#7989b7),to(#ccc7e4));border-image:linear-gradient(90deg,#7989b7 0,#ccc7e4);border-image-slice:2}.banner .btn:hover{background-color:#7989b7;color:#000}.bg-black{background:#2e3446;color:#ededed}.thumb{cursor:pointer;position:relative;width:24%;display:inline-block;line-height:0}.thumb>div:after,.thumb>div:before,.thumb img{-webkit-transition:opacity .4s;transition:opacity .4s}.thumb>div:after,.thumb>div:before{display:block;z-index:1;position:absolute;opacity:0;text-align:center;pointer-events:none;box-sizing:border-box;line-height:1.5}.thumb>div:before{content:attr(data-title);font-size:1.4em;font-weight:100;width:100%;padding:12%;left:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.thumb>div:after{font-size:.833em;content:attr(data-name);padding:5%;width:80%;height:80%;margin:10%;top:0;left:0;border:2px solid;-webkit-border-image:-webkit-gradient(linear,left top,right top,from(#7989b7),to(#ccc7e4));-webkit-border-image:linear-gradient(90deg,#7989b7 0,#ccc7e4);-o-border-image:linear-gradient(90deg,#7989b7 0,#ccc7e4);border-image:-webkit-gradient(linear,left top,right top,from(#7989b7),to(#ccc7e4));border-image:linear-gradient(90deg,#7989b7 0,#ccc7e4);border-image-slice:2;box-sizing:border-box}.thumb>div:hover img{opacity:.2}.thumb>div:hover:after,.thumb>div:hover:before{opacity:1}.options-panel{width:284px;background:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);font-size:12px;margin:88px 24px 24px;padding:12px 24px;outline:none}.options-panel p{margin-bottom:16px}.options-panel code{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace!important}.top-right{right:0}.top-left,.top-right{position:absolute;top:0}body{font-family:ff-clan-web-pro,Helvetica Neue,Helvetica,sans-serif!important}header{position:fixed;display:flex;top:0;left:0;width:100%;-webkit-transition:all .3s;transition:all .3s;max-height:4rem;line-height:4rem;overflow:hidden;-webkit-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;z-index:101}header .header-content{padding:0 1rem;width:100%}.Hero{color:#ededed;background-color:#213746;-webkit-user-select:none;-ms-user-select:none;user-select:none;padding:5rem 4rem;overflow:hidden}.Hero h1{font-size:56px;font-weight:600;line-height:80px;text-transform:capitalize}.Hero p{color:#8d9ba3}.Hero .btn{border:2px solid #7989b7;-webkit-border-image:-webkit-gradient(linear,left top,right top,from(#7989b7),to(#ccc7e4));-webkit-border-image:linear-gradient(90deg,#7989b7 0,#ccc7e4);-o-border-image:linear-gradient(90deg,#7989b7 0,#ccc7e4);border-image:-webkit-gradient(linear,left top,right top,from(#7989b7),to(#ccc7e4));border-image:linear-gradient(90deg,#7989b7 0,#ccc7e4);border-image-slice:2;-webkit-transition:background-color .15s ease-in,color .15s ease-in;transition:background-color .15s ease-in,color .15s ease-in;font-size:20px;line-height:28px;padding:1rem 3rem;margin-top:2rem}.Hero .btn:hover{color:#ededed;background-color:rgba(0,173,230,.3)}@media screen and (max-width:576px){.Hero{padding:3rem 2rem}.Hero h1{font-size:1.75rem}.Hero p{font-size:.75rem}}.toc{position:fixed;width:300px;height:calc(100% - 4rem);font-weight:500;padding:1rem 0;flex-shrink:0;z-index:1;overflow-y:auto;-webkit-overflow-scrolling:touch;background-color:#fff;border-right:1px solid #ededed;-webkit-transition:all .3s;transition:all .3s;white-space:nowrap}.toc .toggle-expanded{display:flex;align-content:center;justify-items:center;border-bottom:1px solid #ededed}.toc .toggle-expanded>button{display:flex}.toc>div{padding-bottom:80px}.toc .subpages{overflow:hidden}.toc .subpages ul{margin-bottom:0;margin-top:0;padding-left:0}.toc .subpages ul>div:not(.section){line-height:55px;border-top:1px solid #ededed}.toc .subpages ul>div:not(.section):first-of-type{border-top:none}.toc .subpages ul>div:not(.section):last-of-type{border-bottom:1px solid #ededed}.toc li{list-style:none}.toc a,.toc a:hover,.toc a:visited{display:block;color:#333}.toc .link{padding-left:28px;color:#333;background:transparent;border:solid transparent;border-width:0 0 0 1px;font-size:14px;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.toc .link:hover{color:#8d9ba3}.toc .link.active{border-left:1px solid #2c55b1;background:#f7f7f7}.toc .list-header{border-bottom:1px solid #ededed;position:relative;font-weight:500;font-size:14px;line-height:56px;color:#8d9ba3;padding-left:40px}.toc .list-header.expanded{background:#f7f7f7}.toc .list-header img{position:absolute;top:50%;-webkit-transform:translate(-30px,-50%);transform:translate(-30px,-50%)}.toc .list-header:not(.active):not(.expanded)+.subpages{max-height:0!important}.toc+*{margin-left:300px}.navigation{position:relative;max-width:100%}.navigation .next,.navigation .prev{background:#f7f7f7;border-radius:4px;width:200px;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;padding:10px 30px;position:absolute;margin-bottom:1rem;-webkit-transition:background .2s;transition:background .2s}.navigation .next .label,.navigation .prev .label{color:#ccc;font-size:14px}.navigation .next:hover,.navigation .prev:hover{background:#f0f0f0}.navigation .next *,.navigation .prev *{position:relative}.navigation .next{right:2rem}.navigation .next .label{text-align:right;left:16px}.navigation .next .label:after{border:0 solid;border-width:2px 2px 0 0;content:"";display:inline-block;margin:0 0 0 6px;-webkit-transform:rotate(45deg);transform:rotate(45deg);width:8px;height:8px}.navigation .prev{left:2rem}.navigation .prev .label{left:-16px}.navigation .prev .label:before{border:0 solid;border-width:0 0 2px 2px;content:"";display:inline-block;margin:0 6px 0 0;-webkit-transform:rotate(45deg);transform:rotate(45deg);width:8px;height:8px}@media screen and (max-width:576px){.toc{position:absolute;width:100vw;padding:0}.toc.open{padding:1rem;height:100%}.toc.open+*{display:none}.toc+*{margin-left:0}}.search-input{padding:.5rem 1rem;border:1px solid rgba(0,0,0,.2);outline:none}.results{margin-top:1rem}.search-item .search-title{font-weight:700;margin-bottom:.5rem}.search-item .search-title a,.search-item .search-title a:hover,.search-item .search-title a:visited{color:#333}.search-item .search-content{max-height:5rem;overflow:hidden}.search-item+.search-item{margin-top:1rem}.search-item>div:last-child img,.search-item>div:last-child table{display:none}.markdown{width:calc(100% - 300px);position:absolute}@media screen and (max-width:576px){.markdown{width:100%}}.markdown-body{padding:40px 36px 96px}.overlays{cursor:crosshair}.container.page{max-width:inherit}.demo{position:relative;height:100%;overflow:hidden!important;height:35vh;-webkit-transition:height .6s cubic-bezier(.22,.61,.36,1);transition:height .6s cubic-bezier(.22,.61,.36,1)}.demo h2{margin-bottom:0;font-size:1rem}.demo>div:first-child{margin-top:-20vh;-webkit-transition:margin-top .6s cubic-bezier(.22,.61,.36,1);transition:margin-top .6s cubic-bezier(.22,.61,.36,1)}.demo:hover{height:70vh}.demo:hover>div:first-child{margin-top:0}.guideline-chart{border:1px solid #e5e5e4;padding:20px;max-width:700px}.inline-code{padding:1rem 2rem;overflow-x:hidden}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,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) format("woff")}.container.page .markdown-body.container{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#2e3446;font-size:16px;line-height:24px;max-width:42em;word-wrap:break-word}.markdown-body .badges{float:right}.markdown-body .pl-c{color:#969896}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#0086b3}.markdown-body .pl-e,.markdown-body .pl-en{color:#795da3}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#333}.markdown-body .pl-ent{color:#63a35c}.markdown-body .pl-k{color:#a71d5d}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#183691}.markdown-body .pl-v{color:#ed6a43}.markdown-body .pl-id{color:#b52a1d}.markdown-body .pl-ii{color:#f8f8f8;background-color:#b52a1d}.markdown-body .pl-sr .pl-cce{font-weight:700;color:#63a35c}.markdown-body .pl-ml{color:#693a17}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:#1d3e81}.markdown-body .pl-mq{color:teal}.markdown-body .pl-mi{font-style:italic;color:#333}.markdown-body .pl-mb{font-weight:700;color:#333}.markdown-body .pl-md{color:#bd2c00;background-color:#ffecec}.markdown-body .pl-mi1{color:#55a532;background-color:#eaffea}.markdown-body .pl-mdr{font-weight:700;color:#795da3}.markdown-body .pl-mo{color:#1d3e81}.markdown-body .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}.markdown-body a{background-color:transparent;-webkit-text-decoration-skip:objects}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit;font-weight:bolder}.markdown-body img{border-style:none}.markdown-body svg:not(:root){overflow:hidden}.markdown-body hr{box-sizing:content-box;overflow:visible}.markdown-body input{font:inherit;margin:0;overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{text-decoration:none}.markdown-body a:active,.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom:1px solid #ddd}.markdown-body hr:after,.markdown-body hr:before{display:table;content:""}.markdown-body hr:after{clear:both}.markdown-body table{border-spacing:0;font-size:75%;border-collapse:collapse}.markdown-body td,.markdown-body th{padding:0}.markdown-body p2{padding:2rem 2rem 2rem 4rem}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{padding-left:0;margin-top:0;margin-bottom:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code{font-size:12px}.markdown-body code,.markdown-body pre{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace}.markdown-body pre{margin-bottom:0;padding:1rem 2rem;margin-top:2.5rem!important;margin-left:-1rem}.markdown-body .octicon{vertical-align:text-bottom}.markdown-body input{font-feature-settings:"liga" 0}.markdown-body:after,.markdown-body:before{display:table;content:""}.markdown-body:after{clear:both}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.05em;padding:0;margin:24px 0;background-color:#e7e7e7;border:0}.markdown-body blockquote{padding:0 1em;color:#777;border-left:.25em solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{font-size:11px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:1rem;margin-bottom:16px;font-weight:500}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1{padding-bottom:.5em;font-size:32px;line-height:48px}.markdown-body h2{padding-bottom:.5em;font-size:28px;line-height:36px}.markdown-body h3{font-size:24px;line-height:36px}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:1em;margin-bottom:8px}.markdown-body h6{font-size:.85em;color:#777;margin-bottom:4px}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:700}.markdown-body table td,.markdown-body table th{padding:6px;border:1px solid #ddd}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body code{padding:.2em 0;margin:0;background-color:rgba(0,0,0,.04);border-radius:3px;font-size:inherit!important}.markdown-body code:after,.markdown-body code:before{letter-spacing:-.2em;content:"\A0"}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;word-break:normal;white-space:pre;background:transparent;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code:after,.markdown-body pre code:before{content:normal}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:3px!important}.markdown-body .pl-2{padding-left:6px!important}.markdown-body .pl-3{padding-left:12px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:36px!important}.markdown-body .pl-6{padding-left:48px!important}.markdown-body .full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;color:#555;vertical-align:middle;background-color:#fcfcfc;border:1px solid;border-color:#ccc #ccc #bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb}.markdown-body :checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee}body{font-family:Source Sans Pro,Helvetica Neue,Helvetica,sans-serif!important}.f{display:flex}.f1{flex:1 1}.fac{align-items:center}.fac,.fjc{display:flex}.fjc{justify-content:center}.fje{justify-content:flex-end}.fje,.z{display:flex}.z{align-items:center;justify-content:center}.fg{flex-grow:1}.fw{flex-wrap:wrap}.fcol{flex-direction:column}.p{padding:1rem}.p-bottom{padding-bottom:1rem}.p-right{padding-right:1rem}.p-left{padding-left:1rem}.p-top{padding-top:1rem}.p2{padding:2rem}.p2-bottom{padding-bottom:2rem}.p2-right{padding-right:2rem}.p2-left{padding-left:2rem}.p2-top{padding-top:2rem}.p4{padding:4rem}@media screen and (max-width:576px){.p4{padding:.5rem 1rem}}.p4-bottom{padding-bottom:4rem}.p4-right{padding-right:4rem}.p4-left{padding-left:4rem}.p4-top{padding-top:4rem}.ph{padding:0 1rem}.ph2{padding:0 2rem}.mv1>*+*{margin-top:1rem!important}.mv2>*+*{margin-top:2rem!important}.mh1>*+*{margin-left:1rem!important}.m{margin:1rem}.m-bottom{margin-bottom:1rem}.m-right{margin-right:1rem}.m-left{margin-left:1rem}.m-top{margin-top:1rem}.m2{margin:2rem}.m2-bottom{margin-bottom:2rem}.m2-right{margin-right:2rem}.m2-left{margin-left:2rem}.m2-top{margin-top:2rem}.m4{margin:4rem}.m4-bottom{margin-bottom:4rem}.m4-right{margin-right:4rem}.m4-left{margin-left:4rem}.m4-top{margin-top:4rem}.hide{display:none}@media screen and (max-width:576px){.hide-mobile{display:none}}@font-face{font-family:UberMove;src:url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMove-Light.woff2) format("woff2"),url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMove-Light.woff) format("woff");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:UberMove;src:url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMove-Regular.woff2) format("woff2"),url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMove-Regular.woff) format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:UberMove;src:url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMove-Medium.woff2) format("woff2"),url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMove-Medium.woff) format("woff");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:UberMove;src:url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMove-Bold.woff2) format("woff2"),url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMove-Bold.woff) format("woff");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:UberMoveText;src:url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMoveText-Light.woff2) format("woff2"),url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMoveText-Light.woff) format("woff");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:UberMoveText;src:url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMoveText-Regular.woff2) format("woff2"),url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMoveText-Regular.woff) format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:UberMoveText;src:url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMoveText-Medium.woff2) format("woff2"),url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMoveText-Medium.woff) format("woff");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:UberMoveText;src:url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMoveText-Bold.woff2) format("woff2"),url(https://d1a3f4spazzrp4.cloudfront.net/dotcom-assets/fonts/UberMoveText-Bold.woff) format("woff");font-weight:600;font-style:normal;font-display:swap}body{font-family:Uber Move,UberMove,Helvetica Neue,Helvetica,sans-serif!important;font-size:12px;line-height:22px}.banner .container{text-shadow:none;padding-left:24px;background:#213746;max-width:none}.banner .container h1{font-size:5em;text-shadow:none;text-transform:uppercase;letter-spacing:4px;font-weight:700;margin:96px 0 8px;padding:96px 24px 8px}.banner .container p{text-shadow:none;padding:12px 24px}.banner .container .btn{margin-left:24px}.header-content .logo,.header-content .site-links .site-link{text-transform:uppercase}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b4b7b4}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#969896}.token.punctuation{color:#c5c8c6}.token.namespace{opacity:.7}.token.boolean,.token.number,.token.operator{color:#de935f}.token.property{color:#f0c674}.token.tag{color:#81a2be}.token.string{color:#8abeb7}.token.selector{color:#b294bb}.token.attr-name{color:#de935f}.language-css .token.string,.style .token.string,.token.entity,.token.url{color:#8abeb7}.token.attr-value,.token.control,.token.directive,.token.keyword,.token.unit{color:#b5bd68}.token.atrule,.token.regex,.token.statement{color:#8abeb7}.token.placeholder,.token.variable{color:#81a2be}.token.deleted{text-decoration:line-through}.token.inserted{border-bottom:1px dotted #fff;text-decoration:none}.token.italic{font-style:italic}.token.bold,.token.important{font-weight:700}.token.important{color:#c66}.token.entity{cursor:help}pre>code.highlight{outline:.4em solid #c66;outline-offset:.4em}*{box-sizing:border-box;font:inherit;color:inherit;border:none;background:transparent}body,html{height:100vh}#root{display:flex;flex-direction:column;min-height:100vh}a{outline:none;text-decoration:none;display:inline-block;cursor:pointer}#root>div{position:relative}#root>div,#root>div>div{display:flex;flex-direction:column;flex-grow:1}#root>div>div{margin-top:4rem}body{font-size:16px;font-weight:400;line-height:24px;margin:0;overflow-y:auto}h1{font-size:36px;line-height:48px;font-weight:800;margin:0 0 16px}h2{font-size:28px;line-height:40px;font-weight:600;margin:32px 0 16px}h3{font-size:20px;line-height:30px;margin:24px 0 8px}h4{font-size:16px;line-height:24px;margin:10px 0 8px}h3,h4{font-weight:400}h3{font-size:24px;line-height:36px;margin:32px 0 8px}strong{font-weight:700}.Contributors{display:flex;flex-wrap:wrap;justify-content:center}.Contributors .Contributor{width:10rem;height:10rem;position:relative;background-color:rgba(0,0,0,.1)}.Contributors .Contributor span{position:absolute;bottom:.5rem;left:.5rem;font-weight:700;color:#fff;text-shadow:3px 3px 3px #000}.Contributors .Contributor img{opacity:.9;-webkit-transition:opacity .25s ease-in;transition:opacity .25s ease-in}.Contributors .Contributor:hover img{opacity:1}.container{max-width:80rem;width:100%}hr{border:none;background-color:#ededed;height:1px}hr.short{display:inline-block;margin:24px 0 0;width:32px;height:2px;background:-webkit-gradient(linear,left top,right top,from(#7989b7),to(#ccc7e4));background:linear-gradient(90deg,#7989b7 0,#ccc7e4)}footer{position:absolute;bottom:-13rem;width:100%;z-index:2;background-image:url(data:image/gif;base64,R0lGODlhIAAgAKIAABUjMRYkMhclM0xXYU1YYgAAAAAAAAAAACwAAAAAIAAgAAADKjgjEP4wyklWmzg/IbTPwPWNZGmeaKqubOu+cCzPdG3feK7vfO//wKAwAQA7);background-size:32px;background-repeat:repeat;background-position:16px -8px;color:#ededed;height:13rem;padding:4rem 0 4rem 2rem}footer h4{font-size:12px;line-height:20px;font-weight:400;letter-spacing:2px;opacity:.4;margin-bottom:1rem;margin-right:1rem}footer img{display:inline-block}</style><meta name="generator" content="Gatsby 2.18.11"/><title data-react-helmet="true"></title><meta data-react-helmet="true" name="description"/><meta data-react-helmet="true" name="image" content="NaN"/><meta data-react-helmet="true" property="og:url" content="NaN"/><meta data-react-helmet="true" property="og:title"/><meta data-react-helmet="true" property="og:description"/><meta data-react-helmet="true" property="og:image" content="NaN"/><meta data-react-helmet="true" property="fb:app_id" content=""/><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"/><meta data-react-helmet="true" name="twitter:creator" content=""/><meta data-react-helmet="true" name="twitter:title"/><meta data-react-helmet="true" name="twitter:description"/><meta data-react-helmet="true" name="twitter:image" content="NaN"/><script data-react-helmet="true" type="application/ld+json">[{"@context":"http://schema.org","@type":"WebSite","url":null,"alternateName":""}]</script><style class="_styletron_hydrate_">.ae{-ms-grid-column:1;-ms-grid-column-span:2;grid-column:1 / 3}.af{-ms-grid-row:1;-ms-grid-row-span:1;grid-row:1 / 2}.ag{z-index:2}.ai{margin:0 auto}</style><style class="_styletron_hydrate_" media="screen and (max-width: 600px)">.ah{order:1}</style><style data-styled="" data-styled-version="4.4.1"></style><style type="text/css"> .anchor { float: left; padding-right: 4px; margin-left: -20px; } h1 .anchor svg, h2 .anchor svg, h3 .anchor svg, h4 .anchor svg, h5 .anchor svg, h6 .anchor svg { visibility: hidden; } h1:hover .anchor svg, h2:hover .anchor svg, h3:hover .anchor svg, h4:hover .anchor svg, h5:hover .anchor svg, h6:hover .anchor svg, h1 .anchor:focus svg, h2 .anchor:focus svg, h3 .anchor:focus svg, h4 .anchor:focus svg, h5 .anchor:focus svg, h6 .anchor:focus svg { visibility: visible; } </style><script> document.addEventListener("DOMContentLoaded", function(event) { var hash = window.decodeURI(location.hash.replace('#', '')) if (hash !== '') { var element = document.getElementById(hash) if (element) { var offset = element.offsetTop // Wait for the browser to finish rendering before scrolling. setTimeout((function() { window.scrollTo(0, offset - 0) }), 0) } } }) </script><link as="script" rel="preload" href="/webpack-runtime-aad7fa877189c52d6bf5.js"/><link as="script" rel="preload" href="/styles-e0a9b8cb94688787502e.js"/><link as="script" rel="preload" href="/app-941a2479b61308a9e480.js"/><link as="script" rel="preload" href="/commons-13fe0372a19478f945c6.js"/><link as="script" rel="preload" href="/component---node-modules-gatsby-theme-ocular-src-templates-index-jsx-1e48fa7c4309187bef61.js"/><link as="fetch" rel="preload" href="/page-data/index/page-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" role="group" id="gatsby-focus-wrapper"><div><div><div><div class="ae af ag ah"><div></div></div><div class="ai"><div style="position:relative;height:100%"><main><div class="fg"><section class="banner"><div class="f hero"></div><div class="container"><h1>nebula.gl</h1><p>High-Performance, 3D-enabled GeoJSON editing deck.gl and React</p><a class="btn" href="/docs">GET STARTED</a></div></section><div class="fg p4"><div class="container f fw"><div class="f1 p" style="min-width:10rem"><h2>High-Performance, 3D-enabled GeoJSON editing deck.gl and React</h2><hr class="short"/><div><h3 class="fac"><img src="images/icon-high-precision.svg" class="m-right" alt=""/>High Performance Editing</h3><p>Can be used with deck.gl for performant rendering of 100K+ segment datasets</p></div><div><h3 class="fac"><img src="images/icon-high-precision.svg" class="m-right" alt=""/>Full GeoJson Support</h3><p>Supports corner cases like converting between Polygon and MultiPolygon features as points are added</p></div><div><h3 class="fac"><img src="images/icon-high-precision.svg" class="m-right" alt=""/>3D Editing</h3><p>Edit Volumes and Elevations.</p></div></div><div class="f1 p" style="min-width:10rem"></div></div><div class="container"><hr class="short"/><h3>Contributors</h3><span>Join us!</span><div class="Contributors m-top"></div></div></div></div></main></div></div></div></div></div><div></div></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"app":["/app-941a2479b61308a9e480.js"],"component---node-modules-gatsby-theme-ocular-src-templates-index-jsx":["/component---node-modules-gatsby-theme-ocular-src-templates-index-jsx-1e48fa7c4309187bef61.js"],"component---node-modules-gatsby-theme-ocular-src-templates-doc-page-markdown-jsx":["/component---node-modules-gatsby-theme-ocular-src-templates-doc-page-markdown-jsx-6df205247bf8e6378699.js"],"component---node-modules-gatsby-theme-ocular-src-templates-search-jsx":["/component---node-modules-gatsby-theme-ocular-src-templates-search-jsx-efb24082683f4a80e97e.js"],"component---src-pages-geojson-editor-tsx":["/component---src-pages-geojson-editor-tsx-135cfb85d1f16ba0fbb9.js"]};/*]]>*/</script><script src="/component---node-modules-gatsby-theme-ocular-src-templates-index-jsx-1e48fa7c4309187bef61.js" async=""></script><script src="/commons-13fe0372a19478f945c6.js" async=""></script><script src="/app-941a2479b61308a9e480.js" async=""></script><script src="/styles-e0a9b8cb94688787502e.js" async=""></script><script src="/webpack-runtime-aad7fa877189c52d6bf5.js" async=""></script></body></html>