CINXE.COM
Outline VPN - Making it safer to break the news
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,user-scalable=yes"><title>Outline VPN - Making it safer to break the news</title><meta name="description" content="Outline is a VPN software that makes it easy for organizations to set up their own VPN service, in order to protect their communications and access the open internet. Outline, created by Jigsaw, is open source, has been audited by a third party, and uses modern a protocol and encryption."><base href="/outline-vpn/"><link rel="icon" href="img/favicon.ico"><link rel="manifest" href="manifest.json"><meta name="theme-color" content="#009688"><meta name="mobile-web-app-capable" content="yes"><meta name="application-name" content="getoutline.org"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"><meta name="apple-mobile-web-app-title" content="getoutline.org"><link rel="apple-touch-icon" href="img/manifest/icon-48x48.png"><link rel="apple-touch-icon" sizes="72x72" href="img/manifest/icon-72x72.png"><link rel="apple-touch-icon" sizes="96x96" href="img/manifest/icon-96x96.png"><link rel="apple-touch-icon" sizes="144x144" href="img/manifest/icon-144x144.png"><link rel="apple-touch-icon" sizes="192x192" href="img/manifest/icon-192x192.png"><meta name="msapplication-TileImage" content="img/manifest/icon-144x144.png"><meta name="msapplication-TileColor" content="#009688"><meta name="msapplication-tap-highlight" content="no"><script>!function(a){"use strict";function b(a,b,c,e){var f=b&&b.prototype instanceof d?b:d,g=Object.create(f.prototype),h=new m(e||[]);return g._invoke=i(a,c,h),g}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(a){["next","throw","return"].forEach(function(b){a[b]=function(a){return this._invoke(b,a)}})}function h(a){function b(d,e,f,g){var h=c(a[d],a,e);if("throw"===h.type)g(h.arg);else{var i=h.arg,j=i.value;return j&&"object"===typeof j&&q.call(j,"__await")?Promise.resolve(j.__await).then(function(a){b("next",a,f,g)},function(a){b("throw",a,f,g)}):Promise.resolve(j).then(function(a){i.value=a,f(i)},g)}}function d(a,c){function d(){return new Promise(function(d,e){b(a,c,d,e)})}return e=e?e.then(d,d):d()}var e;this._invoke=d}function i(a,b,d){var e="suspendedStart";return function(f,g){if(e==="executing")throw new Error("Generator is already running");if("completed"===e){if("throw"===f)throw g;return o()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var i=j(h,d);if(i){if(i===x)continue;return i}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"===e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===x)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}function j(a,b){var d=a.iterator[b.method];if(void 0===d){if(b.delegate=null,"throw"===b.method){if(a.iterator.return&&(b.method="return",b.arg=void 0,j(a,b),"throw"===b.method))return x;b.method="throw",b.arg=new TypeError("The iterator does not provide a 'throw' method")}return x}var e=c(d,a.iterator,b.arg);if("throw"===e.type)return b.method="throw",b.arg=e.arg,b.delegate=null,x;var f=e.arg;if(!f)return b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,x;if(f.done)b[a.resultName]=f.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0);else return f;return b.delegate=null,x}function k(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function l(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function m(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(k,this),this.reset(!0)}function n(a){if(a){var b=a[s];if(b)return b.call(a);if("function"===typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(q.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:o}}function o(){return{value:void 0,done:!0}}var p=Object.prototype,q=p.hasOwnProperty,r="function"===typeof Symbol?Symbol:{},s=r.iterator||"@@iterator",t=r.asyncIterator||"@@asyncIterator",u=r.toStringTag||"@@toStringTag",v="object"===typeof module,w=a.regeneratorRuntime;if(w)return void(v&&(module.exports=w));w=a.regeneratorRuntime=v?module.exports:{},w.wrap=b;var x={},y={};y[s]=function(){return this};var z=Object.getPrototypeOf,A=z&&z(z(n([])));A&&A!==p&&q.call(A,s)&&(y=A);var B=f.prototype=d.prototype=Object.create(y);e.prototype=B.constructor=f,f.constructor=e,f[u]=e.displayName="GeneratorFunction",w.isGeneratorFunction=function(a){var b="function"===typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},w.mark=function(a){return Object.setPrototypeOf?Object.setPrototypeOf(a,f):(a.__proto__=f,!(u in a)&&(a[u]="GeneratorFunction")),a.prototype=Object.create(B),a},w.awrap=function(a){return{__await:a}},g(h.prototype),h.prototype[t]=function(){return this},w.AsyncIterator=h,w.async=function(a,c,d,e){var f=new h(b(a,c,d,e));return w.isGeneratorFunction(c)?f:f.next().then(function(a){return a.done?a.value:f.next()})},g(B),B[u]="Generator",B[s]=function(){return this},B.toString=function(){return"[object Generator]"},w.keys=function(a){var b=[];for(var c in a)b.push(c);return b.reverse(),function c(){for(;b.length;){var d=b.pop();if(d in a)return c.value=d,c.done=!1,c}return c.done=!0,c}},w.values=n,m.prototype={constructor:m,reset:function(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(l),!a)for(var b in this)"t"===b.charAt(0)&&q.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function(){this.done=!0;var a=this.tryEntries[0],b=a.completion;if("throw"===b.type)throw b.arg;return this.rval},dispatchException:function(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=q.call(e,"catchLoc"),h=q.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(g){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);}else if(!h)throw new Error("try statement without catch or finally");else if(this.prev<e.finallyLoc)return b(e.finallyLoc)}}},abrupt:function(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&q.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,x):this.complete(f)},complete:function(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),x},finish:function(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),l(b),x},catch:function(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;l(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function(a,b,c){return this.delegate={iterator:n(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),x}}}(function(){return this}()||Function("return this")());</script><script>(function(a){function b(a){return r.typeof="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?b=function(a){return typeof a}:b=function(a){return a&&"function"===typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},b(a)}function c(a){function b(d,e){try{var f=a[d](e),g=f.value,h=g instanceof r.AwaitValue;Promise.resolve(h?g.wrapped:g).then(function(a){return h?void b("next",a):void c(f.done?"return":"normal",a)},function(a){b("throw",a)})}catch(a){c("throw",a)}}function c(a,c){switch(a){case"return":d.resolve({value:c,done:!0});break;case"throw":d.reject(c);break;default:d.resolve({value:c,done:!1});}d=d.next,d?b(d.key,d.arg):e=null}var d,e;this._invoke=function(a,c){return new Promise(function(f,g){var h={key:a,arg:c,resolve:f,reject:g,next:null};e?e=e.next=h:(d=e=h,b(a,c))})},"function"!==typeof a.return&&(this.return=void 0)}function d(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function e(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function f(a,b){for(var c in b){var d=b[c];d.configurable=d.enumerable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,c,d)}if(Object.getOwnPropertySymbols)for(var e=Object.getOwnPropertySymbols(b),f=0;f<e.length;f++){var g=e[f],d=b[g];d.configurable=d.enumerable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,g,d)}return a}function g(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function h(){return r.extends=h=Object.assign||function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},h.apply(this,arguments)}function i(a){return r.getPrototypeOf=i=Object.setPrototypeOf?Object.getPrototypeOf:function(a){return a.__proto__||Object.getPrototypeOf(a)},i(a)}function j(a,b){return r.setPrototypeOf=j=Object.setPrototypeOf||function(a,b){return a.__proto__=b,a},j(a,b)}function k(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(a){return!1}}function l(){return r.construct=k()?l=Reflect.construct:l=function(b,c,d){var e=[null];e.push.apply(e,c);var a=Function.bind.apply(b,e),f=new a;return d&&r.setPrototypeOf(f,d.prototype),f},l.apply(null,arguments)}function m(a){var b="function"===typeof Map?new Map:void 0;return r.wrapNativeSuper=m=function(a){function c(){return r.construct(a,arguments,r.getPrototypeOf(this).constructor)}if(null===a||!r.isNativeFunction(a))return a;if("function"!==typeof a)throw new TypeError("Super expression must either be null or a function");if("undefined"!==typeof b){if(b.has(a))return b.get(a);b.set(a,c)}return c.prototype=Object.create(a.prototype,{constructor:{value:c,enumerable:!1,writable:!0,configurable:!0}}),r.setPrototypeOf(c,a)},m(a)}function n(a,b,c){return r.get="undefined"!==typeof Reflect&&Reflect.get?n=Reflect.get:n=function(a,b,c){var d=r.superPropBase(a,b);if(d){var e=Object.getOwnPropertyDescriptor(d,b);return e.get?e.get.call(c):e.value}},n(a,b,c||a)}function o(a,b,c,d){return o="undefined"!==typeof Reflect&&Reflect.set?Reflect.set:function(a,b,c,d){var e,f=r.superPropBase(a,b);if(f){if(e=Object.getOwnPropertyDescriptor(f,b),e.set)return e.set.call(d,c),!0;if(!e.writable)return!1}if(e=Object.getOwnPropertyDescriptor(d,b),e){if(!e.writable)return!1;e.value=c,Object.defineProperty(d,b,e)}else r.defineProperty(d,b,c);return!0},o(a,b,c,d)}function p(a,b,c,d,e){var f=o(a,b,c,d||a);if(!f&&e)throw new Error("failed to set property");return c}function q(a){if(Symbol.iterator in Object(a)||"[object Arguments]"===Object.prototype.toString.call(a))return Array.from(a)}var r=a.babelHelpers={};r.typeof=b,r.asyncIterator=function(a){var b;if("function"===typeof Symbol){if(Symbol.asyncIterator&&(b=a[Symbol.asyncIterator],null!=b))return b.call(a);if(Symbol.iterator&&(b=a[Symbol.iterator],null!=b))return b.call(a)}throw new TypeError("Object is not async iterable")},r.AwaitValue=function(a){this.wrapped=a},"function"===typeof Symbol&&Symbol.asyncIterator&&(c.prototype[Symbol.asyncIterator]=function(){return this}),c.prototype.next=function(a){return this._invoke("next",a)},c.prototype.throw=function(a){return this._invoke("throw",a)},c.prototype.return=function(a){return this._invoke("return",a)},r.AsyncGenerator=c,r.wrapAsyncGenerator=function(a){return function(){return new r.AsyncGenerator(a.apply(this,arguments))}},r.awaitAsyncGenerator=function(a){return new r.AwaitValue(a)},r.asyncGeneratorDelegate=function(a,b){function c(c,d){return e=!0,d=new Promise(function(b){b(a[c](d))}),{done:!1,value:b(d)}}var d={},e=!1;return"function"===typeof Symbol&&Symbol.iterator&&(d[Symbol.iterator]=function(){return this}),d.next=function(a){return e?(e=!1,a):c("next",a)},"function"===typeof a.throw&&(d.throw=function(a){if(e)throw e=!1,a;return c("throw",a)}),"function"===typeof a.return&&(d.return=function(a){return c("return",a)}),d},r.asyncToGenerator=function(a){return function(){var b=this,c=arguments;return new Promise(function(e,f){function g(a){d(i,e,f,g,h,"next",a)}function h(a){d(i,e,f,g,h,"throw",a)}var i=a.apply(b,c);g(void 0)})}},r.classCallCheck=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},r.createClass=function(a,b,c){return b&&e(a.prototype,b),c&&e(a,c),a},r.defineEnumerableProperties=f,r.defaults=function(a,b){for(var c=Object.getOwnPropertyNames(b),d=0;d<c.length;d++){var e=c[d],f=Object.getOwnPropertyDescriptor(b,e);f&&f.configurable&&a[e]===void 0&&Object.defineProperty(a,e,f)}return a},r.defineProperty=g,r.extends=h,r.objectSpread=function(a){for(var b=1;b<arguments.length;b++){var c=null==arguments[b]?{}:arguments[b],d=Object.keys(c);"function"===typeof Object.getOwnPropertySymbols&&(d=d.concat(Object.getOwnPropertySymbols(c).filter(function(a){return Object.getOwnPropertyDescriptor(c,a).enumerable}))),d.forEach(function(b){r.defineProperty(a,b,c[b])})}return a},r.inherits=function(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function");a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),b&&r.setPrototypeOf(a,b)},r.getPrototypeOf=i,r.setPrototypeOf=j,r.construct=l,r.isNativeFunction=function(a){return-1!==Function.toString.call(a).indexOf("[native code]")},r.wrapNativeSuper=m,r.instanceof=function(a,b){return null!=b&&"undefined"!==typeof Symbol&&b[Symbol.hasInstance]?b[Symbol.hasInstance](a):a instanceof b},r.interopRequireDefault=function(a){return a&&a.__esModule?a:{default:a}},r.interopRequireWildcard=function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)if(Object.prototype.hasOwnProperty.call(a,c)){var d=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(a,c):{};d.get||d.set?Object.defineProperty(b,c,d):b[c]=a[c]}return b.default=a,b},r.newArrowCheck=function(a,b){if(a!==b)throw new TypeError("Cannot instantiate an arrow function")},r.objectDestructuringEmpty=function(a){if(null==a)throw new TypeError("Cannot destructure undefined")},r.objectWithoutProperties=function(a,b){if(null==a)return{};var c,d,e=r.objectWithoutPropertiesLoose(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],!(0<=b.indexOf(c))&&Object.prototype.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e},r.assertThisInitialized=function(a){if(void 0===a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a},r.possibleConstructorReturn=function(a,b){return b&&("object"===typeof b||"function"===typeof b)?b:r.assertThisInitialized(a)},r.superPropBase=function(a,b){for(;!Object.prototype.hasOwnProperty.call(a,b)&&(a=r.getPrototypeOf(a),null!==a););return a},r.get=n,r.set=p,r.taggedTemplateLiteral=function(a,b){return b||(b=a.slice(0)),Object.freeze(Object.defineProperties(a,{raw:{value:Object.freeze(b)}}))},r.temporalRef=function(a,b){if(a===r.temporalUndefined)throw new ReferenceError(b+" is not defined - temporal dead zone");else return a},r.readOnlyError=function(a){throw new Error("\""+a+"\" is read-only")},r.temporalUndefined={},r.slicedToArray=function(a,b){return r.arrayWithHoles(a)||r.iterableToArrayLimit(a,b)||r.nonIterableRest()},r.toArray=function(a){return r.arrayWithHoles(a)||r.iterableToArray(a)||r.nonIterableRest()},r.toConsumableArray=function(a){return r.arrayWithoutHoles(a)||r.iterableToArray(a)||r.nonIterableSpread()},r.arrayWithoutHoles=function(a){if(Array.isArray(a)){for(var b=0,c=Array(a.length);b<a.length;b++)c[b]=a[b];return c}},r.arrayWithHoles=function(a){if(Array.isArray(a))return a},r.iterableToArray=q,r.iterableToArrayLimit=function(a,b){var c=[],d=!0,e=!1,f=void 0;try{for(var g,h=a[Symbol.iterator]();!(d=(g=h.next()).done)&&(c.push(g.value),!(b&&c.length===b));d=!0);}catch(a){e=!0,f=a}finally{try{d||null==h["return"]||h["return"]()}finally{if(e)throw f}}return c},r.nonIterableSpread=function(){throw new TypeError("Invalid attempt to spread non-iterable instance")},r.nonIterableRest=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")},r.toPropertyKey=function(a){var b=r.toPrimitive(a,"string");return"symbol"===typeof b?b:b+""}})("undefined"===typeof global?self:global);</script><script src="bower_components/outline-i18n/index.js"></script><script>"use strict";(function(window){var isMirror=-1!==window.location.pathname.indexOf("outline-vpn"),isTestSite=-1!==window.location.pathname.indexOf("outline-vpn-test"),isInvite=-1!==window.location.pathname.indexOf("invite.html");window.UdoConfig={isMirror:isMirror,useHashAsPath:isMirror,isTestSite:isTestSite,defaultLanguage:"en",languageById:{am:{id:"am",dir:"ltr"},ar:{id:"ar",dir:"rtl"},az:{id:"az",dir:"ltr"},bg:{id:"bg",dir:"ltr"},ca:{id:"ca",dir:"ltr"},cs:{id:"cs",dir:"ltr"},da:{id:"da",dir:"ltr"},de:{id:"de",dir:"ltr"},el:{id:"el",dir:"ltr"},en:{id:"en",dir:"ltr"},"es-419":{id:"es-419",dir:"ltr"},fa:{id:"fa",dir:"rtl"},fi:{id:"fi",dir:"ltr"},fil:{id:"fil",dir:"ltr"},fr:{id:"fr",dir:"ltr"},he:{id:"he",dir:"rtl"},hi:{id:"hi",dir:"ltr"},hr:{id:"hr",dir:"ltr"},hu:{id:"hu",dir:"ltr"},id:{id:"id",dir:"ltr"},it:{id:"it",dir:"ltr"},ja:{id:"ja",dir:"ltr"},kk:{id:"kk",dir:"ltr"},km:{id:"km",dir:"ltr"},ko:{id:"ko",dir:"ltr"},lt:{id:"lt",dir:"ltr"},lv:{id:"lv",dir:"ltr"},my:{id:"my",dir:"ltr"},nl:{id:"nl",dir:"ltr"},no:{id:"no",dir:"ltr"},pl:{id:"pl",dir:"ltr"},"pt-BR":{id:"pt-BR",dir:"ltr"},ro:{id:"ro",dir:"ltr"},ru:{id:"ru",dir:"ltr"},sk:{id:"sk",dir:"ltr"},sl:{id:"sl",dir:"ltr"},sr:{id:"sr",dir:"ltr"},"sr-Latn":{id:"sr-Latn",dir:"ltr"},sv:{id:"sv",dir:"ltr"},th:{id:"th",dir:"ltr"},tr:{id:"tr",dir:"ltr"},uk:{id:"uk",dir:"ltr"},ur:{id:"ur",dir:"rtl"},vi:{id:"vi",dir:"ltr"},zh:{id:"zh",dir:"ltr"},"zh-CN":{id:"zh-CN",dir:"ltr"},"zh-TW":{id:"zh-TW",dir:"ltr"}},supportLocaleById:{ar:"ar",bg:"bg",ca:"ca",cs:"cs",da:"da",de:"de",el:"el",en:"en_US","es-419":"es",fa:"ar_IQ",fi:"fi",fil:"tl",fr:"fr",he:"iw",hi:"hi",hr:"hr",hu:"hu",id:"in",it:"it",ja:"ja",ko:"ko",lt:"lt",lv:"lv",nl:"nl_NL",no:"no",pl:"pl","pt-BR":"pt_BR",ro:"ro",ru:"ru",sk:"sk",sl:"sl",sr:"sr",sv:"sv",th:"th",tr:"tr",uk:"uk",ur:"ur",vi:"vi","zh-CN":"zh_CN","zh-TW":"zh_TW"},defaultPage:isInvite?"invite":"home",error404Page:"error404",pageById:{home:{id:"home"},invite:{id:"invite"},support:{id:"support"}},serviceWorker:!1,gaTrackerId:"UA-44818243-6"};var $base=document.head.querySelector("base"),rootPath=$base?$base.getAttribute("href"):"/";window.Polymer={rootPath:rootPath};if(window.UdoConfig.serviceWorker&&"serviceWorker"in navigator){window.addEventListener("load",function(){navigator.serviceWorker.register("service-worker.js",{scope:Polymer.rootPath})},{once:!0})}if(!window.UdoConfig.isTestSite){(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","https://www.google-analytics.com/analytics.js","ga");ga("create",window.UdoConfig.gaTrackerId,"auto");ga("send","pageview")}})(window);</script><script src="third_party/babel-polyfill/polyfill.min.js"></script><script>if(!window.customElements){document.write("<!--")}</script><script type="text/javascript" src="bower_components/webcomponentsjs/custom-elements-es5-adapter.js"></script><!--! do not remove --><script src="bower_components/webcomponentsjs/webcomponents-loader.js"></script><link rel="import" href="src/udo-app.html"><style>html, body{width:100vw;min-height:100vh;overflow-x:hidden;}body{font-family:Roboto, Noto, sans-serif;font-weight:300;overflow-x:hidden;color:#263238;}body{margin:0;}#appColumn{max-width:100vw;min-height:100vh;}#appColumn{margin:auto;background:#243239;}#polymerNotLoaded{display:none;}body[unresolved] #polymerNotLoaded{display:block;}#notSupported, #loading{display:none;}#polymerNotLoaded.showLoading #loading{display:block;}#polymerNotLoaded.showNotSupported #notSupported{display:block;}#loading, #notSupported{color:#aaa;font-size:1.5rem;}#loading, #notSupported{margin:125px auto;text-align:center;}#notSupported a, #notSupported a:visited{color:white;}</style></head><body unresolved=""><div id="polymerNotLoaded" class="showLoading"><div id="loading">Loading...</div><div id="notSupported">The browser version you are using is too old to display the Outline Website. Please upgrade to the latest version of <a href="https://www.google.com/chrome/">Chrome</a>, <a href="https://www.mozilla.org/firefox/">Firefox</a>, <a href="https://www.apple.com/safari/">Safari</a>, or <a href="https://www.microsoft.com/windows/microsoft-edge">Edge</a></div></div><div id="appColumn"><udo-app></udo-app></div><noscript>Please enable JavaScript to view this website.</noscript><script src="src/browser-fallback.js"></script></body></html>