diff --git a/media/css/readthedocs-doc-embed.css b/media/css/readthedocs-doc-embed.css index ac46963eb8d..26cc8e0a8a3 100644 --- a/media/css/readthedocs-doc-embed.css +++ b/media/css/readthedocs-doc-embed.css @@ -42,144 +42,77 @@ To support sphinx_rtd_theme, a `wy-menu` element is added. Other themes are targeted using the theme identifier and use custom elements instead of a CSS framework html structure. -div.rst-pro is deprecated in favor of div.rtd-pro here, though we still need -both rules for historical docs. */ -div.rtd-pro, -div.rst-pro { - display: block; - padding: .5em; - margin: 1em 0em 1em 0em; - text-align: center; +div.ethical-sidebar, div.ethical-footer { + display: block !important; } -div.rtd-pro.wy-menu, -div.rtd-pro.wy-menu { - width: 300px; -} -div.rtd-pro.alabaster { - width: 100%; - box-sizing: border-box; -} - -div.rtd-pro.wy-menu, -div.rst-pro.wy-menu { - bottom: 60px; - background: rgba(0, 0, 0, .06); -} - -div.rtd-pro.alabaster { - background: rgba(220, 220, 220, .1); -} - -div.rtd-pro > span, -div.rst-pro > span { - display: block; - font-size: 90%; -} - -div.rtd-pro.wy-menu > span, -div.rst-pro.wy-menu > span { - color: #b3b3b3; -} - -div.rtd-pro.wy-menu a, -div.rtd-pro.wy-menu a:link, -div.rtd-pro.wy-menu a:visited, -div.rst-pro.wy-menu a, -div.rst-pro.wy-menu a:link, -div.rst-pro.wy-menu a:visited, -div.rtd-pro.wy-menu a:hover, -div.rtd-pro.wy-menu a:active, -div.rst-pro.wy-menu a:hover, -div.rst-pro.wy-menu a:active { color: #efefef; } - -div.rtd-pro a.rtd-pro-image-wrapper { - display: inline-block; - padding: 6px; - margin: 5px 0px 10px 0px; - border: 1px solid #434343; - border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; -} - -div.rtd-pro.wy-menu a.rtd-pro-image-wrapper, -div.rst-pro.wy-menu a.rst-pro-image-wrapper { - border-color: #434343; -} - -div.rtd-pro.alabaster a.rtd-pro-image-wrapper { - border-color: #d3d3d3; +.ethical-sidebar, .ethical-footer { + padding: .5em; + margin: 1em 0; } - -div.rtd-pro img, -div.rst-pro.wy-menu img { +.ethical-sidebar img, .ethical-footer img { width: 120px; height: 90px; + display: inline-block; } - -div.rtd-pro div.rtd-pro-about { - float: right; - text-align: right; - font-size: 90%; +.ethical-sidebar .ethical-callout, .ethical-footer .ethical-callout { + padding-top: 1em; + clear: both; } -div.rtd-pro.wy-menu div.rtd-pro-about, -div.rst-pro.wy-menu div.rst-pro-about { - color: white; +.ethical-sidebar .ethical-pixel, .ethical-footer .ethical-pixel { + display: none !important; } - -div.rtd-pro.alabaster div.rtd-pro-about a { - border-bottom: 0px; +.ethical-sidebar .ethical-text, .ethical-footer .ethical-text { + margin-top: 1em; } - -div.rtd-pro.alabaster div.rtd-pro-about i.fa-info-circle:before, -div.rtd-pro.rtd-pro-footer div.rtd-pro-about i.fa-info-circle:before { - content: ""; - color: #a3a3a3; +.ethical-sidebar .ethical-image-link, .ethical-footer .ethical-image-link { + border: 0; } -/* Hide the "sponsored" note in the left navigation */ -div.rtd-pro-about span { - display: none; +/* Sidebar promotions */ +.ethical-sidebar { + text-align: center; } -/* Footer promos */ -div.rtd-pro.rtd-pro-footer div.rtd-pro-about span { - display: inline; -} -div.rtd-pro.rtd-pro-footer div.rtd-pro-about { - float: none; -} -div.rtd-pro.rtd-pro-footer div.rtd-pro-about a { - text-decoration: none; -} -div.rtd-pro.rtd-pro-footer { +/* Footer promotions */ +.ethical-footer { text-align: left; + font-size: 90%; } -div.rtd-pro.rtd-pro-footer a.rtd-pro-image-wrapper { +.ethical-footer img { float: right; margin-left: 25px; } - -div.rtd-pro-wrapper { - clear: both; +.ethical-footer .ethical-callout { + text-align: right; } -@media (max-width: 768px) { - div.rst-pro.wy-menu { - display: none; - } +/* RTD Theme specific customizations */ +.ethical-rtd .ethical-sidebar { + /* RTD theme doesn't set sidebar text color */ + color: #b3b3b3; - div.rtd-pro.alabaster { - background: rgba(220, 220, 220, .05); - } + /* RTD theme doesn't correctly set the sidebar width */ + width: 300px; - div.rtd-pro.alabaster a.rtd-pro-image-wrapper { - border-color: #656565; - } + font-size: 14px; + line-height: 20px; +} +.ethical-rtd .ethical-sidebar a, +.ethical-rtd .ethical-sidebar a:visited, +.ethical-rtd .ethical-sidebar a:hover, +.ethical-rtd .ethical-sidebar a:active { + /* RTD theme doesn't set sidebar link color */ + color: #efefef; } -div.rtd-pro > p.ethical-callout { - margin-top: 1em; +/* Alabaster specific customizations */ +.ethical-alabaster a.ethical-image-link { + /* Alabaster adds a border even to image links on hover */ + border: 0 !important; +} +.ethical-alabaster hr { + /* Alabaster needs some extra spacing before the footer ad */ + margin-top: 2em; } diff --git a/readthedocs/core/static-src/core/js/doc-embed/constants.js b/readthedocs/core/static-src/core/js/doc-embed/constants.js index 13fc45ba6cc..5474def9285 100644 --- a/readthedocs/core/static-src/core/js/doc-embed/constants.js +++ b/readthedocs/core/static-src/core/js/doc-embed/constants.js @@ -3,18 +3,18 @@ var exports = { THEME_RTD: 'sphinx_rtd_theme', THEME_ALABASTER: 'alabaster', - THEME_CELERY: 'sphinx_celery' -} + THEME_CELERY: 'sphinx_celery', +}; exports.PROMO_SUPPORTED_THEMES = [ exports.THEME_RTD, exports.THEME_ALABASTER, - exports.THEME_CELERY -] + exports.THEME_CELERY, +]; exports.PROMO_TYPES = { LEFTNAV: 'doc', // Left navigation on documentation pages - FOOTER: 'site-footer' // Footer of documentation pages + FOOTER: 'site-footer', // Footer of documentation pages }; module.exports = exports; diff --git a/readthedocs/core/static-src/core/js/doc-embed/footer.js b/readthedocs/core/static-src/core/js/doc-embed/footer.js index aa957bd1439..3cca7456697 100644 --- a/readthedocs/core/static-src/core/js/doc-embed/footer.js +++ b/readthedocs/core/static-src/core/js/doc-embed/footer.js @@ -1,6 +1,5 @@ var rtddata = require('./rtd-data'); var versionCompare = require('./version-compare'); -var sponsorship = require('../sponsorship'); function injectFooter(data) { @@ -19,22 +18,6 @@ function injectFooter(data) { } else if (!data['version_supported']) { //$('.rst-current-version').addClass('rst-active-old-version') } - - // Show promo selectively - if (data.promo && config.show_promo()) { - var promo = new sponsorship.Promo( - data.promo_data.id, - data.promo_data.text, - data.promo_data.link, - data.promo_data.image, - config.theme, - data.promo_data.display_type, - data.promo_data.pixel - ) - if (promo) { - promo.display(); - } - } } @@ -53,7 +36,6 @@ function setupBookmarkCSRFToken() { }); } - function init() { var rtd = rtddata.get(); @@ -79,15 +61,6 @@ function init() { get_data['subproject'] = true; } - if (typeof URL !== 'undefined' && typeof URLSearchParams !== 'undefined') { - // Force a specific promo to be displayed - var params = new URL(window.location).searchParams; - var force_promo = params.get('promo'); - if (force_promo) { - get_data['promo'] = force_promo; - } - } - // Get footer HTML from API and inject it into the page. $.ajax({ url: rtd.api_host + "/api/v2/footer_html/", @@ -108,7 +81,6 @@ function init() { }); } - module.exports = { init: init }; diff --git a/readthedocs/core/static-src/core/js/doc-embed/sponsorship.js b/readthedocs/core/static-src/core/js/doc-embed/sponsorship.js new file mode 100644 index 00000000000..e1257c1dc28 --- /dev/null +++ b/readthedocs/core/static-src/core/js/doc-embed/sponsorship.js @@ -0,0 +1,182 @@ +/* Read the Docs - Documentation promotions */ + +var constants = require('./constants'); +var rtddata = require('./rtd-data'); + +var rtd; + +/* + * Creates a sidebar div where an ad could go + */ +function create_sidebar_placement () { + var element_id = 'rtd-' + (Math.random() + 1).toString(36).substring(4); + var display_type = constants.PROMO_TYPES.LEFTNAV; + var selector = null; + var class_name; // Used for theme specific CSS customizations + + if (rtd.is_rtd_theme()) { + selector = 'nav.wy-nav-side > div.wy-side-scroll'; + class_name = 'ethical-rtd'; + } else if (rtd.get_theme_name() === constants.THEME_ALABASTER || + rtd.get_theme_name() === constants.THEME_CELERY) { + selector = 'div.sphinxsidebar > div.sphinxsidebarwrapper'; + class_name = 'ethical-alabaster'; + } + + if (selector) { + $('
').attr('id', element_id) + .addClass(class_name).appendTo(selector); + return {'div_id': element_id, 'display_type': display_type}; + } + + return null; +} + +/* + * Creates a sidebar div where an ad could go + * Returns the ID of the div or none if no footer ad is possible + */ +function create_footer_placement () { + var element_id = 'rtd-' + (Math.random() + 1).toString(36).substring(4); + var display_type = constants.PROMO_TYPES.FOOTER; + var selector = null; + var class_name; + + if (rtd.is_rtd_theme()) { + selector = $('
').insertAfter('footer hr'); + class_name = 'ethical-rtd'; + } else if (rtd.get_theme_name() === constants.THEME_ALABASTER || + rtd.get_theme_name() === constants.THEME_CELERY) { + selector = 'div.bodywrapper .body'; + class_name = 'ethical-alabaster'; + } + + if (selector) { + $('
').attr('id', element_id) + .addClass(class_name).appendTo(selector); + return {'div_id': element_id, 'display_type': display_type}; + } + + return null; +} + +/* + * Returns an array of possible places where a promo could go + */ +function get_placements () { + var placements = []; + var placement_funcs = [create_footer_placement, create_sidebar_placement]; + var placement; + + for (var i = 0; i < placement_funcs.length; i += 1) { + placement = placement_funcs[i](); + if (placement) { + placements.push(placement); + } + } + + return placements; +} + +function Promo (data) { + this.id = data.id; // analytics id + this.div_id = data.div_id || ''; + this.html = data.html || ''; + this.display_type = data.display_type || ''; + + // Handler when a promo receives a click + this.click_handler = function () { + // This needs to handle both old style legacy analytics for previously built docs + // as well as the newer universal analytics + if (typeof ga !== 'undefined') { + ga('rtfd.send', 'event', 'Promo', 'Click', data.id); + } else if (typeof _gaq !== 'undefined') { + _gaq.push( + ['rtfd._setAccount', 'UA-17997319-1'], + ['rtfd._trackEvent', 'Promo', 'Click', data.id] + ); + } + }; +} + +/* + * Position and inject the promo + */ +Promo.prototype.display = function () { + $('#' + this.div_id).html(this.html); + $('#' + this.div_id).find('a[href*="/sustainability/click/"]') + .on('click', this.click_handler); + + this.post_promo_display(); +}; + +Promo.prototype.disable = function () { + $('#' + this.div_id).hide(); +}; + +/* + * Perform any additional tweaks after the ad is successfully injected + */ +Promo.prototype.post_promo_display = function () { + if (this.display_type === constants.PROMO_TYPES.FOOTER) { + $('
').insertAfter('#' + this.div_id); + + // Alabaster only + $('
').insertBefore('#' + this.div_id + '.ethical-alabaster .ethical-footer'); + } + +}; + +function init() { + var post_data = {}; + var params; + + rtd = rtddata.get(); + + if (!rtd.show_promo()) { + return; + } + + post_data.placements = get_placements(rtd); + post_data.project = rtd.project; + + if (typeof URL !== 'undefined' && typeof URLSearchParams !== 'undefined') { + // Force a specific promo to be displayed + params = new URL(window.location).searchParams; + if (params.get('force_promo')) { + post_data.force_promo = params.get('force_promo'); + } + + // Force a promo from a specific campaign + if (params.get('force_campaign')) { + post_data.force_campaign = params.get('force_campaign'); + } + } + + // Request a promo to inject onto the page + $.ajax({ + url: rtd.api_host + "/api/v2/sustainability/", + type: 'post', + xhrFields: { + withCredentials: true, + }, + dataType: "json", + data: JSON.stringify(post_data), + contentType: "application/json", + success: function (data) { + var promo; + if (data && data.div_id && data.html) { + promo = new Promo(data); + promo.display(); + } + }, + error: function () { + console.error('Error loading Read the Docs promo'); + }, + }); +} + +module.exports = { + Promo: Promo, + init: init, +}; diff --git a/readthedocs/core/static-src/core/js/readthedocs-doc-embed.js b/readthedocs/core/static-src/core/js/readthedocs-doc-embed.js index a9c9bbc061f..2c6721dc185 100644 --- a/readthedocs/core/static-src/core/js/readthedocs-doc-embed.js +++ b/readthedocs/core/static-src/core/js/readthedocs-doc-embed.js @@ -1,4 +1,4 @@ -var sponsorship = require('./sponsorship'); +var sponsorship = require('./doc-embed/sponsorship'); var footer = require('./doc-embed/footer.js'); // grokthedocs = require('./doc-embed/grokthedocs-client'), // mkdocs = require('./doc-embed/mkdocs'), @@ -12,4 +12,5 @@ $(document).ready(function () { // grokthedocs.init(); // mkdocs.init(); search.init(); + sponsorship.init(); }); diff --git a/readthedocs/core/static-src/core/js/sponsorship.js b/readthedocs/core/static-src/core/js/sponsorship.js deleted file mode 100644 index 2ac946a355f..00000000000 --- a/readthedocs/core/static-src/core/js/sponsorship.js +++ /dev/null @@ -1,196 +0,0 @@ -/* Read the Docs - Documentation promotions */ - -var constants = require('./doc-embed/constants'); - - -function Promo (id, text, link, image, theme, display_type, pixel) { - this.id = id; // analytics id - this.text = text; - this.link = link; - this.image = image; - this.theme = theme || constants.THEME_RTD; - this.display_type = display_type || constants.PROMO_TYPES.LEFTNAV; - this.pixel = pixel; - this.promo = null; - - // Handler when a promo receives a click - this.click_handler = function () { - // This needs to handle both old style legacy analytics for previously built docs - // as well as the newer universal analytics - if (typeof ga !== 'undefined') { - ga('rtfd.send', 'event', 'Promo', 'Click', id); - } else if (typeof _gaq !== 'undefined') { - _gaq.push( - ['rtfd._setAccount', 'UA-17997319-1'], - ['rtfd._trackEvent', 'Promo', 'Click', id] - ); - } - }; -} - -Promo.prototype.create = function () { - var self = this; - var menu; - var promo_class; - if (this.theme === constants.THEME_RTD) { - menu = this.get_sphinx_rtd_theme_promo_selector(); - promo_class = this.display_type === constants.PROMO_TYPES.FOOTER ? 'rtd-pro-footer' : 'wy-menu'; - } - else if (this.theme === constants.THEME_ALABASTER || this.theme === constants.THEME_CELERY) { - menu = this.get_alabaster_promo_selector(); - promo_class = this.display_type === constants.PROMO_TYPES.FOOTER ? 'rtd-pro-footer' : 'alabaster'; - } - - if (typeof(menu) !== 'undefined') { - this.place_promo(menu, promo_class); - } -} - -Promo.prototype.place_promo = function (selector, promo_class) { - var self = this; - - // Add elements - var promo = $('
') - .attr('class', 'rtd-pro ' + promo_class); - - // Promo info - var promo_about = $('
') - .attr('class', 'rtd-pro-about'); - var promo_about_link = $('') - .attr('href', 'https://readthedocs.org/sustainability/advertising/') - .appendTo(promo_about); - $('').text('Sponsored ').appendTo(promo_about_link); - var promo_about_icon = $('') - .attr('class', 'fa fa-info-circle') - .appendTo(promo_about_link); - promo_about.appendTo(promo); - - // Promo image - if (self.pixel) { - // Use a first-party tracking pixel for text ads, - // so we can still count the number of times they are displayed - var pixel = $('') - .attr('style', 'display: none;') - .attr('src', self.image) - .appendTo(promo); - } else { - var promo_image_link = $('') - .attr('class', 'rtd-pro-image-wrapper') - .attr('href', self.link) - .attr('target', '_blank') - .attr('rel', 'nofollow') - .on('click', self.click_handler); - var promo_image = $('') - .attr('class', 'rtd-pro-image') - .attr('src', self.image) - .appendTo(promo_image_link); - promo.append(promo_image_link); - } - - // Create link with callback - var promo_text = $('') - .html(self.text); - $(promo_text).find('a').each(function () { - $(this) - .attr('class', 'rtd-pro-link') - .attr('href', self.link) - .attr('target', '_blank') - .attr('rel', 'nofollow') - .on('click', self.click_handler); - }); - promo.append(promo_text); - - var copy_text = $( - '

' + - 'Ads served ethically' + - '

' - ) - promo.append(copy_text); - - - promo.appendTo(selector); - - promo.wrapper = $('
') - .attr('class', 'rtd-pro-wrapper') - .appendTo(selector); - - return promo; -}; - -Promo.prototype.get_alabaster_promo_selector = function () { - // Return a jQuery selector where the promo goes on the Alabaster theme - var self = this; - var selector; - var wrapper; - - if (self.display_type === constants.PROMO_TYPES.FOOTER) { - wrapper = $('
') - .attr('class', 'rtd-pro-footer-wrapper body') - .appendTo('div.bodywrapper'); - $('
').appendTo(wrapper); - selector = $('
').appendTo(wrapper); - $('
').appendTo(wrapper); - } else { - selector = $('div.sphinxsidebar > div.sphinxsidebarwrapper'); - } - - if (selector.length) { - return selector; - } -}; - - -Promo.prototype.get_sphinx_rtd_theme_promo_selector = function () { - // Return a jQuery selector where the promo goes on the RTD theme - var self = this; - var selector; - - if (self.display_type === constants.PROMO_TYPES.FOOTER) { - selector = $('
') - .attr('class', 'rtd-pro-footer-wrapper') - .insertBefore('footer hr'); - $('
').insertBefore(selector); - } else { - selector = $('nav.wy-nav-side > div.wy-side-scroll'); - } - - if (selector.length) { - return selector; - } -}; - -// Position promo -Promo.prototype.display = function () { - var promo = this.promo; - var self = this; - - if (! promo) { - promo = this.promo = this.create(); - } - - // Promo still might not exist yet - if (promo) { - promo.show(); - } -}; - -Promo.prototype.disable = function () { -}; - -// Variant factory method -Promo.from_variants = function (variants) { - if (variants.length === 0) { - return null; - } - var chosen = Math.floor(Math.random() * variants.length); - var variant = variants[chosen]; - var text = variant.text; - var link = variant.link; - var image = variant.image; - var id = variant.id; - return new Promo(id, text, link, image); -}; - -module.exports = { - Promo: Promo -}; diff --git a/readthedocs/core/static/core/js/readthedocs-doc-embed.js b/readthedocs/core/static/core/js/readthedocs-doc-embed.js index 2b272743bd3..25ec3e4c4a5 100644 --- a/readthedocs/core/static/core/js/readthedocs-doc-embed.js +++ b/readthedocs/core/static/core/js/readthedocs-doc-embed.js @@ -1 +1 @@ -!function t(e,r,n){function i(a,s){if(!r[a]){if(!e[a]){var l="function"==typeof require&&require;if(!s&&l)return l(a,!0);if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var u=r[a]={exports:{}};e[a][0].call(u.exports,function(t){var r=e[a][1][t];return i(r?r:t)},u,u.exports,t,e,r,n)}return r[a].exports}for(var o="function"==typeof require&&require,a=0;a
"),t(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var r=t(this);expand=t(''),expand.on("click",function(t){return e.toggleCurrent(r),t.stopPropagation(),!1}),r.prepend(expand)})},t.reset=function(){var t=encodeURI(window.location.hash);if(t)try{var e=$(".wy-menu-vertical").find('[href="'+t+'"]');if(0===e.length){var r=$('.document a[href="'+t+'"]'),n=r.closest("div.section");e=$(".wy-menu-vertical").find('[href="#'+n.attr("id")+'"]')}$(".wy-menu-vertical li.toctree-l1 li.current").removeClass("current"),e.closest("li.toctree-l2").addClass("current"),e.closest("li.toctree-l3").addClass("current"),e.closest("li.toctree-l4").addClass("current")}catch(i){console.log("Error expanding nav for anchor",i)}},t.onScroll=function(){this.winScroll=!1;var t=this.win.scrollTop(),e=t+this.winHeight,r=this.navBar.scrollTop(),n=r+(t-this.winPosition);t<0||e>this.docHeight||(this.navBar.scrollTop(n),this.winPosition=t)},t.onResize=function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},t.hashChange=function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},t.toggleCurrent=function(t){var e=t.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")},t}var i="undefined"!=typeof window?window.jQuery:t("jquery");e.exports.ThemeNav=n(),"undefined"!=typeof window&&(window.SphinxRtdTheme={StickyNav:e.exports.ThemeNav})},{jquery:"jquery"}],2:[function(t,e,r){function n(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]}}function i(t,e,r){}function o(t,e,r){}function a(t,e,r){}function s(t,e,r){}function l(t){return t.replace(E,"<").replace(S,">")}function c(t,e,r,n){if(r=g(r),"href"===e||"src"===e){if(r=T.trim(r),"#"===r)return"#";if("http://"!==r.substr(0,7)&&"https://"!==r.substr(0,8)&&"mailto:"!==r.substr(0,7)&&"#"!==r[0]&&"/"!==r[0])return""}else if("background"===e){if(I.lastIndex=0,I.test(r))return""}else if("style"===e){if(j.lastIndex=0,j.test(r))return"";if(P.lastIndex=0,P.test(r)&&(I.lastIndex=0,I.test(r)))return"";n!==!1&&(n=n||k,r=n.process(r))}return r=m(r)}function u(t){return t.replace(A,""")}function d(t){return t.replace(C,'"')}function p(t){return t.replace(O,function(t,e){return"x"===e[0]||"X"===e[0]?String.fromCharCode(parseInt(e.substr(1),16)):String.fromCharCode(parseInt(e,10))})}function f(t){return t.replace($,":").replace(R," ")}function h(t){for(var e="",r=0,n=t.length;r/g,A=/"/g,C=/"/g,O=/&#([a-zA-Z0-9]*);?/gim,$=/:?/gim,R=/&newline;?/gim,I=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,j=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,P=/u\s*r\s*l\s*\(.*/gi,H=//g;r.whiteList=n(),r.getDefaultWhiteList=n,r.onTag=i,r.onIgnoreTag=o,r.onTagAttr=a,r.onIgnoreTagAttr=s,r.safeAttrValue=c,r.escapeHtml=l,r.escapeQuote=u,r.unescapeQuote=d,r.escapeHtmlEntities=p,r.escapeDangerHtml5Entities=f,r.clearNonPrintableCharacter=h,r.friendlyAttrValue=g,r.escapeAttrValue=m,r.onIgnoreTagStripAll=v,r.StripTagBody=b,r.stripCommentTag=w,r.stripBlankChar=y,r.cssFilter=k,r.getDefaultCSSWhiteList=_},{"./util":5,cssfilter:9}],3:[function(t,e,r){function n(t,e){var r=new a(e);return r.process(t)}var i=t("./default"),o=t("./parser"),a=t("./xss");r=e.exports=n,r.FilterXSS=a;for(var s in i)r[s]=i[s];for(var s in o)r[s]=o[s];"undefined"!=typeof window&&(window.filterXSS=e.exports)},{"./default":2,"./parser":4,"./xss":6}],4:[function(t,e,r){function n(t){var e=t.indexOf(" ");if(e===-1)var r=t.slice(1,-1);else var r=t.slice(1,e+1);return r=d.trim(r).toLowerCase(),"/"===r.slice(0,1)&&(r=r.slice(1)),"/"===r.slice(-1)&&(r=r.slice(0,-1)),r}function i(t){return""===f){o+=r(t.slice(a,s)),d=t.slice(s,c+1),p=n(d),o+=e(s,o.length,p,d,i(d)),a=c+1,s=!1;continue}if(('"'===f||"'"===f)&&"="===t.charAt(c-1)){l=f;continue}}else if(f===l){l=!1;continue}}return a0;e--){var r=t[e];if(" "!==r)return"="===r?e:-1}}function c(t){return'"'===t[0]&&'"'===t[t.length-1]||"'"===t[0]&&"'"===t[t.length-1]}function u(t){return c(t)?t.substr(1,t.length-2):t}var d=t("./util"),p=/[^a-zA-Z0-9_:\.\-]/gim;r.parseTag=o,r.parseAttr=a},{"./util":5}],5:[function(t,e,r){e.exports={indexOf:function(t,e){var r,n;if(Array.prototype.indexOf)return t.indexOf(e);for(r=0,n=t.length;r";var w=i(l),y=o[r],x=d(w.html,function(t,e){var i=p.indexOf(y,t)!==-1,o=c(r,t,e,i);if(!n(o))return o;if(i)return e=h(r,t,e,m),e?t+'="'+e+'"':t;var o=f(r,t,e,i);return n(o)?void 0:o}),l="<"+r;return x&&(l+=" "+x),w.closing&&(l+=" /"),l+=">"}var b=s(r,l,v);return n(b)?g(l):b},g);return v&&(b=v.remove(b)),b},e.exports=a},{"./default":2,"./parser":4,"./util":5,cssfilter:9}],7:[function(t,e,r){function n(t){return void 0===t||null===t}function i(t){t=t||{},t.whiteList=t.whiteList||o.whiteList,t.onAttr=t.onAttr||o.onAttr,t.onIgnoreAttr=t.onIgnoreAttr||o.onIgnoreAttr,this.options=t}var o=t("./default"),a=t("./parser");t("./util");i.prototype.process=function(t){if(t=t||"",t=t.toString(),!t)return"";var e=this,r=e.options,i=r.whiteList,o=r.onAttr,s=r.onIgnoreAttr,l=a(t,function(t,e,r,a,l){var c=i[r],u=!1;c===!0?u=c:"function"==typeof c?u=c(a):c instanceof RegExp&&(u=c.test(a)),u!==!0&&(u=!1);var d={position:e,sourcePosition:t,source:l,isWhite:u};if(u){var p=o(r,a,d);return n(p)?r+":"+a:p}var p=s(r,a,d);if(!n(p))return p});return l},e.exports=i},{"./default":8,"./parser":10,"./util":11}],8:[function(t,e,r){function n(){var t={};return t["align-content"]=!1,t["align-items"]=!1,t["align-self"]=!1,t["alignment-adjust"]=!1,t["alignment-baseline"]=!1,t.all=!1,t["anchor-point"]=!1,t.animation=!1,t["animation-delay"]=!1,t["animation-direction"]=!1,t["animation-duration"]=!1,t["animation-fill-mode"]=!1,t["animation-iteration-count"]=!1,t["animation-name"]=!1,t["animation-play-state"]=!1,t["animation-timing-function"]=!1,t.azimuth=!1,t["backface-visibility"]=!1,t.background=!0,t["background-attachment"]=!0,t["background-clip"]=!0,t["background-color"]=!0,t["background-image"]=!0,t["background-origin"]=!0,t["background-position"]=!0,t["background-repeat"]=!0,t["background-size"]=!0,t["baseline-shift"]=!1,t.binding=!1,t.bleed=!1,t["bookmark-label"]=!1,t["bookmark-level"]=!1,t["bookmark-state"]=!1,t.border=!0,t["border-bottom"]=!0,t["border-bottom-color"]=!0,t["border-bottom-left-radius"]=!0,t["border-bottom-right-radius"]=!0,t["border-bottom-style"]=!0,t["border-bottom-width"]=!0,t["border-collapse"]=!0,t["border-color"]=!0,t["border-image"]=!0,t["border-image-outset"]=!0,t["border-image-repeat"]=!0,t["border-image-slice"]=!0,t["border-image-source"]=!0,t["border-image-width"]=!0,t["border-left"]=!0,t["border-left-color"]=!0,t["border-left-style"]=!0,t["border-left-width"]=!0,t["border-radius"]=!0,t["border-right"]=!0,t["border-right-color"]=!0,t["border-right-style"]=!0,t["border-right-width"]=!0,t["border-spacing"]=!0,t["border-style"]=!0,t["border-top"]=!0,t["border-top-color"]=!0,t["border-top-left-radius"]=!0,t["border-top-right-radius"]=!0,t["border-top-style"]=!0,t["border-top-width"]=!0,t["border-width"]=!0,t.bottom=!1,t["box-decoration-break"]=!0,t["box-shadow"]=!0,t["box-sizing"]=!0,t["box-snap"]=!0,t["box-suppress"]=!0,t["break-after"]=!0,t["break-before"]=!0,t["break-inside"]=!0,t["caption-side"]=!1,t.chains=!1,t.clear=!0,t.clip=!1,t["clip-path"]=!1,t["clip-rule"]=!1,t.color=!0,t["color-interpolation-filters"]=!0,t["column-count"]=!1,t["column-fill"]=!1,t["column-gap"]=!1,t["column-rule"]=!1,t["column-rule-color"]=!1,t["column-rule-style"]=!1,t["column-rule-width"]=!1,t["column-span"]=!1,t["column-width"]=!1,t.columns=!1,t.contain=!1,t.content=!1,t["counter-increment"]=!1,t["counter-reset"]=!1,t["counter-set"]=!1,t.crop=!1,t.cue=!1,t["cue-after"]=!1,t["cue-before"]=!1,t.cursor=!1,t.direction=!1,t.display=!0,t["display-inside"]=!0,t["display-list"]=!0,t["display-outside"]=!0,t["dominant-baseline"]=!1,t.elevation=!1,t["empty-cells"]=!1,t.filter=!1,t.flex=!1,t["flex-basis"]=!1,t["flex-direction"]=!1,t["flex-flow"]=!1,t["flex-grow"]=!1,t["flex-shrink"]=!1,t["flex-wrap"]=!1,t["float"]=!1,t["float-offset"]=!1,t["flood-color"]=!1,t["flood-opacity"]=!1,t["flow-from"]=!1,t["flow-into"]=!1,t.font=!0,t["font-family"]=!0,t["font-feature-settings"]=!0,t["font-kerning"]=!0,t["font-language-override"]=!0,t["font-size"]=!0,t["font-size-adjust"]=!0,t["font-stretch"]=!0,t["font-style"]=!0,t["font-synthesis"]=!0,t["font-variant"]=!0,t["font-variant-alternates"]=!0,t["font-variant-caps"]=!0,t["font-variant-east-asian"]=!0,t["font-variant-ligatures"]=!0,t["font-variant-numeric"]=!0,t["font-variant-position"]=!0,t["font-weight"]=!0,t.grid=!1,t["grid-area"]=!1,t["grid-auto-columns"]=!1,t["grid-auto-flow"]=!1,t["grid-auto-rows"]=!1,t["grid-column"]=!1,t["grid-column-end"]=!1,t["grid-column-start"]=!1,t["grid-row"]=!1,t["grid-row-end"]=!1,t["grid-row-start"]=!1,t["grid-template"]=!1,t["grid-template-areas"]=!1,t["grid-template-columns"]=!1,t["grid-template-rows"]=!1,t["hanging-punctuation"]=!1,t.height=!0,t.hyphens=!1,t.icon=!1,t["image-orientation"]=!1,t["image-resolution"]=!1,t["ime-mode"]=!1,t["initial-letters"]=!1,t["inline-box-align"]=!1,t["justify-content"]=!1,t["justify-items"]=!1,t["justify-self"]=!1,t.left=!1,t["letter-spacing"]=!0,t["lighting-color"]=!0,t["line-box-contain"]=!1,t["line-break"]=!1,t["line-grid"]=!1,t["line-height"]=!1,t["line-snap"]=!1,t["line-stacking"]=!1,t["line-stacking-ruby"]=!1,t["line-stacking-shift"]=!1,t["line-stacking-strategy"]=!1,t["list-style"]=!0,t["list-style-image"]=!0,t["list-style-position"]=!0,t["list-style-type"]=!0,t.margin=!0,t["margin-bottom"]=!0,t["margin-left"]=!0,t["margin-right"]=!0,t["margin-top"]=!0,t["marker-offset"]=!1,t["marker-side"]=!1,t.marks=!1,t.mask=!1,t["mask-box"]=!1,t["mask-box-outset"]=!1,t["mask-box-repeat"]=!1,t["mask-box-slice"]=!1,t["mask-box-source"]=!1,t["mask-box-width"]=!1,t["mask-clip"]=!1,t["mask-image"]=!1,t["mask-origin"]=!1,t["mask-position"]=!1,t["mask-repeat"]=!1,t["mask-size"]=!1,t["mask-source-type"]=!1,t["mask-type"]=!1,t["max-height"]=!0,t["max-lines"]=!1,t["max-width"]=!0,t["min-height"]=!0,t["min-width"]=!0,t["move-to"]=!1,t["nav-down"]=!1,t["nav-index"]=!1,t["nav-left"]=!1,t["nav-right"]=!1,t["nav-up"]=!1,t["object-fit"]=!1,t["object-position"]=!1,t.opacity=!1,t.order=!1,t.orphans=!1,t.outline=!1,t["outline-color"]=!1,t["outline-offset"]=!1,t["outline-style"]=!1,t["outline-width"]=!1,t.overflow=!1,t["overflow-wrap"]=!1,t["overflow-x"]=!1,t["overflow-y"]=!1,t.padding=!0,t["padding-bottom"]=!0,t["padding-left"]=!0,t["padding-right"]=!0,t["padding-top"]=!0,t.page=!1,t["page-break-after"]=!1,t["page-break-before"]=!1,t["page-break-inside"]=!1,t["page-policy"]=!1,t.pause=!1,t["pause-after"]=!1,t["pause-before"]=!1,t.perspective=!1,t["perspective-origin"]=!1,t.pitch=!1,t["pitch-range"]=!1,t["play-during"]=!1,t.position=!1,t["presentation-level"]=!1,t.quotes=!1,t["region-fragment"]=!1,t.resize=!1,t.rest=!1,t["rest-after"]=!1,t["rest-before"]=!1,t.richness=!1,t.right=!1,t.rotation=!1,t["rotation-point"]=!1,t["ruby-align"]=!1,t["ruby-merge"]=!1,t["ruby-position"]=!1,t["shape-image-threshold"]=!1,t["shape-outside"]=!1,t["shape-margin"]=!1,t.size=!1,t.speak=!1,t["speak-as"]=!1,t["speak-header"]=!1,t["speak-numeral"]=!1,t["speak-punctuation"]=!1,t["speech-rate"]=!1,t.stress=!1,t["string-set"]=!1,t["tab-size"]=!1,t["table-layout"]=!1,t["text-align"]=!0,t["text-align-last"]=!0,t["text-combine-upright"]=!0,t["text-decoration"]=!0,t["text-decoration-color"]=!0,t["text-decoration-line"]=!0,t["text-decoration-skip"]=!0,t["text-decoration-style"]=!0,t["text-emphasis"]=!0,t["text-emphasis-color"]=!0,t["text-emphasis-position"]=!0,t["text-emphasis-style"]=!0,t["text-height"]=!0,t["text-indent"]=!0,t["text-justify"]=!0,t["text-orientation"]=!0,t["text-overflow"]=!0,t["text-shadow"]=!0,t["text-space-collapse"]=!0,t["text-transform"]=!0,t["text-underline-position"]=!0,t["text-wrap"]=!0,t.top=!1,t.transform=!1,t["transform-origin"]=!1,t["transform-style"]=!1,t.transition=!1,t["transition-delay"]=!1,t["transition-duration"]=!1,t["transition-property"]=!1,t["transition-timing-function"]=!1,t["unicode-bidi"]=!1,t["vertical-align"]=!1,t.visibility=!1,t["voice-balance"]=!1,t["voice-duration"]=!1,t["voice-family"]=!1,t["voice-pitch"]=!1,t["voice-range"]=!1,t["voice-rate"]=!1,t["voice-stress"]=!1,t["voice-volume"]=!1,t.volume=!1,t["white-space"]=!1,t.widows=!1,t.width=!0,t["will-change"]=!1,t["word-break"]=!0,t["word-spacing"]=!0,t["word-wrap"]=!0,t["wrap-flow"]=!1,t["wrap-through"]=!1,t["writing-mode"]=!1,t["z-index"]=!1,t}function i(t,e,r){}function o(t,e,r){}r.whiteList=n(),r.getDefaultWhiteList=n,r.onAttr=i,r.onIgnoreAttr=o},{}],9:[function(t,e,r){function n(t,e){var r=new o(e);return r.process(t)}var i=t("./default"),o=t("./css");r=e.exports=n,r.FilterCSS=o;for(var a in i)r[a]=i[a];"undefined"!=typeof window&&(window.filterCSS=e.exports)},{"./css":7,"./default":8}],10:[function(t,e,r){function n(t,e){function r(){if(!o){var r=i.trim(t.slice(a,s)),n=r.indexOf(":");if(n!==-1){var c=i.trim(r.slice(0,n)),u=i.trim(r.slice(n+1));if(c){var d=e(a,l.length,c,u,r);d&&(l+=d+"; ")}}}a=s+1}t=i.trimRight(t),";"!==t[t.length-1]&&(t+=";");for(var n=t.length,o=!1,a=0,s=0,l="";s-1},is_sphinx_builder:function(){return!("builder"in this)||"mkdocs"!=this.builder},get_theme_name:function(){return this.theme!==i.THEME_RTD&&1===$("div.rst-other-versions").length?i.THEME_RTD:this.theme},show_promo:function(){return"https://readthedocs.com"!==this.api_host&&this.is_sphinx_builder()&&this.theme_supports_promo()}};e.exports={get:n}},{"./constants":12}],15:[function(t,e,r){function n(){var t=o.get();i(t)}function i(t){var e=t.project,r=t.version,n=t.language||"en",i=t.api_host,o=function(t){var o=$.Deferred(),s=document.createElement("a");s.href=i,s.pathname="/api/v2/docsearch/",s.search="?q="+$.urlencode(t)+"&project="+e+"&version="+r+"&language="+n,o.then(function(r){var n=r.hits||{},i=n.hits||[];if(i.length)for(var o in i){var s=i[o],l=s.fields||{},c=$('
  • '),u=document.createElement("a"),d=s.highlight;if(u.href+=l.link+DOCUMENTATION_OPTIONS.FILE_SUFFIX,u.search="?highlight="+$.urlencode(t),c.append($("").attr("href",u).html(l.title)),l.project!=e&&c.append($("").text(" (from project "+l.project+")")),d.content.length){var p=$('
    ').html(a(d.content[0]));p.find("em").addClass("highlighted"),c.append(p)}Search.output.append(c),c.slideDown(5)}i.length?Search.status.text(_("Search finished, found %s page(s) matching the search query.").replace("%s",i.length)):Search.query_fallback(t)}).fail(function(e){Search.query_fallback(t)}).always(function(){$("#search-progress").empty(),Search.stopPulse(),Search.title.text(_("Search Results")),Search.status.fadeIn(500)}),$.ajax({url:s.href,crossDomain:!0,xhrFields:{withCredentials:!0},complete:function(t,e){return"undefined"==typeof t.responseJSON||"undefined"==typeof t.responseJSON.results?o.reject():o.resolve(t.responseJSON.results)}}).error(function(t,e,r){return o.reject()})};if("undefined"!=typeof Search&&e&&r){var s=Search.query;Search.query_fallback=s,Search.query=o}$(document).ready(function(){"undefined"!=typeof Search&&Search.init()})}var o=t("./rtd-data"),a=t("./../../../../../../bower_components/xss/lib/index");e.exports={init:n}},{"./../../../../../../bower_components/xss/lib/index":3,"./rtd-data":14}],16:[function(t,e,r){function n(){var t=i.get();if($(document).on("click","[data-toggle='rst-current-version']",function(){var t=$("[data-toggle='rst-versions']").hasClass("shift-up")?"was_open":"was_closed";"undefined"!=typeof ga?ga("rtfd.send","event","Flyout","Click",t):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Flyout","Click",t])}),!("builder"in t)||"builder"in t&&"mkdocs"!=t.builder){var e=o.ThemeNav;if($(document).ready(function(){setTimeout(function(){e.navBar||e.enable()},1e3)}),t.is_rtd_theme()){var r=jquery("div.wy-side-scroll:first");if(!r.length){var n=jquery("nav.wy-nav-side:first"),a=$("
    ").addClass("wy-side-scroll");n.children().detach().appendTo(a),a.prependTo(n),e.navBar=a}}}}var i=t("./rtd-data"),o=t("./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js");e.exports={init:n}},{"./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js":1,"./rtd-data":14}],17:[function(t,e,r){function n(t){var e=i.get();if(!t.is_highest){var r=window.location.pathname.replace(e.version,t.slug),n=$('');n.find("a").attr("href",r).text(t.version);var o=$("div.body");o.length||(o=$("div.document")),o.prepend(n)}}var i=t("./rtd-data");e.exports={init:n}},{"./rtd-data":14}],18:[function(t,e,r){var n=(t("./sponsorship"),t("./doc-embed/footer.js")),i=(t("./doc-embed/rtd-data"),t("./doc-embed/sphinx")),o=t("./doc-embed/search");$(document).ready(function(){n.init(),i.init(),o.init()})},{"./doc-embed/footer.js":13,"./doc-embed/rtd-data":14,"./doc-embed/search":15,"./doc-embed/sphinx":16,"./sponsorship":19}],19:[function(t,e,r){function n(t,e,r,n,o,a,s){this.id=t,this.text=e,this.link=r,this.image=n,this.theme=o||i.THEME_RTD,this.display_type=a||i.PROMO_TYPES.LEFTNAV,this.pixel=s,this.promo=null,this.click_handler=function(){"undefined"!=typeof ga?ga("rtfd.send","event","Promo","Click",t):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Promo","Click",t])}}var i=t("./doc-embed/constants");e.exports={Promo:n},n.prototype.create=function(){var t,e;this.theme==i.THEME_RTD?(t=this.get_sphinx_rtd_theme_promo_selector(),e=this.display_type===i.PROMO_TYPES.FOOTER?"rtd-pro-footer":"wy-menu"):this.theme!=i.THEME_ALABASTER&&this.theme!=i.THEME_CELERY||(t=this.get_alabaster_promo_selector(),e=this.display_type===i.PROMO_TYPES.FOOTER?"rtd-pro-footer":"alabaster"),"undefined"!=typeof t&&this.place_promo(t,e)},n.prototype.place_promo=function(t,e){var r=this,n=$("
    ").attr("class","rtd-pro "+e),i=$("
    ").attr("class","rtd-pro-about"),o=$("").attr("href","https://readthedocs.org/sustainability/advertising/").appendTo(i);$("").text("Sponsored ").appendTo(o);$("").attr("class","fa fa-info-circle").appendTo(o);if(i.appendTo(n),r.pixel){$("").attr("style","display: none;").attr("src",r.image).appendTo(n)}else{var a=$("").attr("class","rtd-pro-image-wrapper").attr("href",r.link).attr("target","_blank").attr("rel","nofollow").on("click",r.click_handler);$("").attr("class","rtd-pro-image").attr("src",r.image).appendTo(a);n.append(a)}var s=$("").html(r.text);$(s).find("a").each(function(){$(this).attr("class","rtd-pro-link").attr("href",r.link).attr("target","_blank").attr("rel","nofollow").on("click",r.click_handler)}),n.append(s);var l=$('

    Ads served ethically

    ');return n.append(l),n.appendTo(t),n.wrapper=$("
    ").attr("class","rtd-pro-wrapper").appendTo(t),n},n.prototype.get_alabaster_promo_selector=function(){var t,e,r=this;if(r.display_type===i.PROMO_TYPES.FOOTER?(e=$("
    ").attr("class","rtd-pro-footer-wrapper body").appendTo("div.bodywrapper"),$("
    ").appendTo(e),t=$("
    ").appendTo(e),$("
    ").appendTo(e)):t=$("div.sphinxsidebar > div.sphinxsidebarwrapper"),t.length)return t},n.prototype.get_sphinx_rtd_theme_promo_selector=function(){var t,e=this;if(e.display_type===i.PROMO_TYPES.FOOTER?(t=$("
    ").attr("class","rtd-pro-footer-wrapper").insertBefore("footer hr"),$("
    ").insertBefore(t)):t=$("nav.wy-nav-side > div.wy-side-scroll"),t.length)return t},n.prototype.display=function(){var t=this.promo;t||(t=this.promo=this.create()),t&&t.show()},n.prototype.disable=function(){},n.from_variants=function(t){if(0==t.length)return null;var e=Math.floor(Math.random()*t.length),r=t[e],i=r.text,o=r.link,a=r.image,s=r.id;return new n(s,i,o,a)}},{"./doc-embed/constants":12}]},{},[18]); \ No newline at end of file +!function t(e,r,i){function n(a,s){if(!r[a]){if(!e[a]){var l="function"==typeof require&&require;if(!s&&l)return l(a,!0);if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var u=r[a]={exports:{}};e[a][0].call(u.exports,function(t){var r=e[a][1][t];return n(r?r:t)},u,u.exports,t,e,r,i)}return r[a].exports}for(var o="function"==typeof require&&require,a=0;a
    "),t(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var r=t(this);expand=t(''),expand.on("click",function(t){return e.toggleCurrent(r),t.stopPropagation(),!1}),r.prepend(expand)})},t.reset=function(){var t=encodeURI(window.location.hash);if(t)try{var e=$(".wy-menu-vertical").find('[href="'+t+'"]');if(0===e.length){var r=$('.document a[href="'+t+'"]'),i=r.closest("div.section");e=$(".wy-menu-vertical").find('[href="#'+i.attr("id")+'"]')}$(".wy-menu-vertical li.toctree-l1 li.current").removeClass("current"),e.closest("li.toctree-l2").addClass("current"),e.closest("li.toctree-l3").addClass("current"),e.closest("li.toctree-l4").addClass("current")}catch(n){console.log("Error expanding nav for anchor",n)}},t.onScroll=function(){this.winScroll=!1;var t=this.win.scrollTop(),e=t+this.winHeight,r=this.navBar.scrollTop(),i=r+(t-this.winPosition);t<0||e>this.docHeight||(this.navBar.scrollTop(i),this.winPosition=t)},t.onResize=function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},t.hashChange=function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},t.toggleCurrent=function(t){var e=t.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")},t}var n="undefined"!=typeof window?window.jQuery:t("jquery");e.exports.ThemeNav=i(),"undefined"!=typeof window&&(window.SphinxRtdTheme={StickyNav:e.exports.ThemeNav})},{jquery:"jquery"}],2:[function(t,e,r){function i(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]}}function n(t,e,r){}function o(t,e,r){}function a(t,e,r){}function s(t,e,r){}function l(t){return t.replace(E,"<").replace(S,">")}function c(t,e,r,i){if(r=g(r),"href"===e||"src"===e){if(r=T.trim(r),"#"===r)return"#";if("http://"!==r.substr(0,7)&&"https://"!==r.substr(0,8)&&"mailto:"!==r.substr(0,7)&&"#"!==r[0]&&"/"!==r[0])return""}else if("background"===e){if($.lastIndex=0,$.test(r))return""}else if("style"===e){if(I.lastIndex=0,I.test(r))return"";if(H.lastIndex=0,H.test(r)&&($.lastIndex=0,$.test(r)))return"";i!==!1&&(i=i||k,r=i.process(r))}return r=m(r)}function u(t){return t.replace(A,""")}function d(t){return t.replace(C,'"')}function f(t){return t.replace(R,function(t,e){return"x"===e[0]||"X"===e[0]?String.fromCharCode(parseInt(e.substr(1),16)):String.fromCharCode(parseInt(e,10))})}function p(t){return t.replace(O,":").replace(j," ")}function h(t){for(var e="",r=0,i=t.length;r/g,A=/"/g,C=/"/g,R=/&#([a-zA-Z0-9]*);?/gim,O=/:?/gim,j=/&newline;?/gim,$=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,I=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,H=/u\s*r\s*l\s*\(.*/gi,L=//g;r.whiteList=i(),r.getDefaultWhiteList=i,r.onTag=n,r.onIgnoreTag=o,r.onTagAttr=a,r.onIgnoreTagAttr=s,r.safeAttrValue=c,r.escapeHtml=l,r.escapeQuote=u,r.unescapeQuote=d,r.escapeHtmlEntities=f,r.escapeDangerHtml5Entities=p,r.clearNonPrintableCharacter=h,r.friendlyAttrValue=g,r.escapeAttrValue=m,r.onIgnoreTagStripAll=v,r.StripTagBody=b,r.stripCommentTag=w,r.stripBlankChar=y,r.cssFilter=k,r.getDefaultCSSWhiteList=_},{"./util":5,cssfilter:9}],3:[function(t,e,r){function i(t,e){var r=new a(e);return r.process(t)}var n=t("./default"),o=t("./parser"),a=t("./xss");r=e.exports=i,r.FilterXSS=a;for(var s in n)r[s]=n[s];for(var s in o)r[s]=o[s];"undefined"!=typeof window&&(window.filterXSS=e.exports)},{"./default":2,"./parser":4,"./xss":6}],4:[function(t,e,r){function i(t){var e=t.indexOf(" ");if(e===-1)var r=t.slice(1,-1);else var r=t.slice(1,e+1);return r=d.trim(r).toLowerCase(),"/"===r.slice(0,1)&&(r=r.slice(1)),"/"===r.slice(-1)&&(r=r.slice(0,-1)),r}function n(t){return""===p){o+=r(t.slice(a,s)),d=t.slice(s,c+1),f=i(d),o+=e(s,o.length,f,d,n(d)),a=c+1,s=!1;continue}if(('"'===p||"'"===p)&&"="===t.charAt(c-1)){l=p;continue}}else if(p===l){l=!1;continue}}return a0;e--){var r=t[e];if(" "!==r)return"="===r?e:-1}}function c(t){return'"'===t[0]&&'"'===t[t.length-1]||"'"===t[0]&&"'"===t[t.length-1]}function u(t){return c(t)?t.substr(1,t.length-2):t}var d=t("./util"),f=/[^a-zA-Z0-9_:\.\-]/gim;r.parseTag=o,r.parseAttr=a},{"./util":5}],5:[function(t,e,r){e.exports={indexOf:function(t,e){var r,i;if(Array.prototype.indexOf)return t.indexOf(e);for(r=0,i=t.length;r";var w=n(l),y=o[r],x=d(w.html,function(t,e){var n=f.indexOf(y,t)!==-1,o=c(r,t,e,n);if(!i(o))return o;if(n)return e=h(r,t,e,m),e?t+'="'+e+'"':t;var o=p(r,t,e,n);return i(o)?void 0:o}),l="<"+r;return x&&(l+=" "+x),w.closing&&(l+=" /"),l+=">"}var b=s(r,l,v);return i(b)?g(l):b},g);return v&&(b=v.remove(b)),b},e.exports=a},{"./default":2,"./parser":4,"./util":5,cssfilter:9}],7:[function(t,e,r){function i(t){return void 0===t||null===t}function n(t){t=t||{},t.whiteList=t.whiteList||o.whiteList,t.onAttr=t.onAttr||o.onAttr,t.onIgnoreAttr=t.onIgnoreAttr||o.onIgnoreAttr,this.options=t}var o=t("./default"),a=t("./parser");t("./util");n.prototype.process=function(t){if(t=t||"",t=t.toString(),!t)return"";var e=this,r=e.options,n=r.whiteList,o=r.onAttr,s=r.onIgnoreAttr,l=a(t,function(t,e,r,a,l){var c=n[r],u=!1;c===!0?u=c:"function"==typeof c?u=c(a):c instanceof RegExp&&(u=c.test(a)),u!==!0&&(u=!1);var d={position:e,sourcePosition:t,source:l,isWhite:u};if(u){var f=o(r,a,d);return i(f)?r+":"+a:f}var f=s(r,a,d);if(!i(f))return f});return l},e.exports=n},{"./default":8,"./parser":10,"./util":11}],8:[function(t,e,r){function i(){var t={};return t["align-content"]=!1,t["align-items"]=!1,t["align-self"]=!1,t["alignment-adjust"]=!1,t["alignment-baseline"]=!1,t.all=!1,t["anchor-point"]=!1,t.animation=!1,t["animation-delay"]=!1,t["animation-direction"]=!1,t["animation-duration"]=!1,t["animation-fill-mode"]=!1,t["animation-iteration-count"]=!1,t["animation-name"]=!1,t["animation-play-state"]=!1,t["animation-timing-function"]=!1,t.azimuth=!1,t["backface-visibility"]=!1,t.background=!0,t["background-attachment"]=!0,t["background-clip"]=!0,t["background-color"]=!0,t["background-image"]=!0,t["background-origin"]=!0,t["background-position"]=!0,t["background-repeat"]=!0,t["background-size"]=!0,t["baseline-shift"]=!1,t.binding=!1,t.bleed=!1,t["bookmark-label"]=!1,t["bookmark-level"]=!1,t["bookmark-state"]=!1,t.border=!0,t["border-bottom"]=!0,t["border-bottom-color"]=!0,t["border-bottom-left-radius"]=!0,t["border-bottom-right-radius"]=!0,t["border-bottom-style"]=!0,t["border-bottom-width"]=!0,t["border-collapse"]=!0,t["border-color"]=!0,t["border-image"]=!0,t["border-image-outset"]=!0,t["border-image-repeat"]=!0,t["border-image-slice"]=!0,t["border-image-source"]=!0,t["border-image-width"]=!0,t["border-left"]=!0,t["border-left-color"]=!0,t["border-left-style"]=!0,t["border-left-width"]=!0,t["border-radius"]=!0,t["border-right"]=!0,t["border-right-color"]=!0,t["border-right-style"]=!0,t["border-right-width"]=!0,t["border-spacing"]=!0,t["border-style"]=!0,t["border-top"]=!0,t["border-top-color"]=!0,t["border-top-left-radius"]=!0,t["border-top-right-radius"]=!0,t["border-top-style"]=!0,t["border-top-width"]=!0,t["border-width"]=!0,t.bottom=!1,t["box-decoration-break"]=!0,t["box-shadow"]=!0,t["box-sizing"]=!0,t["box-snap"]=!0,t["box-suppress"]=!0,t["break-after"]=!0,t["break-before"]=!0,t["break-inside"]=!0,t["caption-side"]=!1,t.chains=!1,t.clear=!0,t.clip=!1,t["clip-path"]=!1,t["clip-rule"]=!1,t.color=!0,t["color-interpolation-filters"]=!0,t["column-count"]=!1,t["column-fill"]=!1,t["column-gap"]=!1,t["column-rule"]=!1,t["column-rule-color"]=!1,t["column-rule-style"]=!1,t["column-rule-width"]=!1,t["column-span"]=!1,t["column-width"]=!1,t.columns=!1,t.contain=!1,t.content=!1,t["counter-increment"]=!1,t["counter-reset"]=!1,t["counter-set"]=!1,t.crop=!1,t.cue=!1,t["cue-after"]=!1,t["cue-before"]=!1,t.cursor=!1,t.direction=!1,t.display=!0,t["display-inside"]=!0,t["display-list"]=!0,t["display-outside"]=!0,t["dominant-baseline"]=!1,t.elevation=!1,t["empty-cells"]=!1,t.filter=!1,t.flex=!1,t["flex-basis"]=!1,t["flex-direction"]=!1,t["flex-flow"]=!1,t["flex-grow"]=!1,t["flex-shrink"]=!1,t["flex-wrap"]=!1,t["float"]=!1,t["float-offset"]=!1,t["flood-color"]=!1,t["flood-opacity"]=!1,t["flow-from"]=!1,t["flow-into"]=!1,t.font=!0,t["font-family"]=!0,t["font-feature-settings"]=!0,t["font-kerning"]=!0,t["font-language-override"]=!0,t["font-size"]=!0,t["font-size-adjust"]=!0,t["font-stretch"]=!0,t["font-style"]=!0,t["font-synthesis"]=!0,t["font-variant"]=!0,t["font-variant-alternates"]=!0,t["font-variant-caps"]=!0,t["font-variant-east-asian"]=!0,t["font-variant-ligatures"]=!0,t["font-variant-numeric"]=!0,t["font-variant-position"]=!0,t["font-weight"]=!0,t.grid=!1,t["grid-area"]=!1,t["grid-auto-columns"]=!1,t["grid-auto-flow"]=!1,t["grid-auto-rows"]=!1,t["grid-column"]=!1,t["grid-column-end"]=!1,t["grid-column-start"]=!1,t["grid-row"]=!1,t["grid-row-end"]=!1,t["grid-row-start"]=!1,t["grid-template"]=!1,t["grid-template-areas"]=!1,t["grid-template-columns"]=!1,t["grid-template-rows"]=!1,t["hanging-punctuation"]=!1,t.height=!0,t.hyphens=!1,t.icon=!1,t["image-orientation"]=!1,t["image-resolution"]=!1,t["ime-mode"]=!1,t["initial-letters"]=!1,t["inline-box-align"]=!1,t["justify-content"]=!1,t["justify-items"]=!1,t["justify-self"]=!1,t.left=!1,t["letter-spacing"]=!0,t["lighting-color"]=!0,t["line-box-contain"]=!1,t["line-break"]=!1,t["line-grid"]=!1,t["line-height"]=!1,t["line-snap"]=!1,t["line-stacking"]=!1,t["line-stacking-ruby"]=!1,t["line-stacking-shift"]=!1,t["line-stacking-strategy"]=!1,t["list-style"]=!0,t["list-style-image"]=!0,t["list-style-position"]=!0,t["list-style-type"]=!0,t.margin=!0,t["margin-bottom"]=!0,t["margin-left"]=!0,t["margin-right"]=!0,t["margin-top"]=!0,t["marker-offset"]=!1,t["marker-side"]=!1,t.marks=!1,t.mask=!1,t["mask-box"]=!1,t["mask-box-outset"]=!1,t["mask-box-repeat"]=!1,t["mask-box-slice"]=!1,t["mask-box-source"]=!1,t["mask-box-width"]=!1,t["mask-clip"]=!1,t["mask-image"]=!1,t["mask-origin"]=!1,t["mask-position"]=!1,t["mask-repeat"]=!1,t["mask-size"]=!1,t["mask-source-type"]=!1,t["mask-type"]=!1,t["max-height"]=!0,t["max-lines"]=!1,t["max-width"]=!0,t["min-height"]=!0,t["min-width"]=!0,t["move-to"]=!1,t["nav-down"]=!1,t["nav-index"]=!1,t["nav-left"]=!1,t["nav-right"]=!1,t["nav-up"]=!1,t["object-fit"]=!1,t["object-position"]=!1,t.opacity=!1,t.order=!1,t.orphans=!1,t.outline=!1,t["outline-color"]=!1,t["outline-offset"]=!1,t["outline-style"]=!1,t["outline-width"]=!1,t.overflow=!1,t["overflow-wrap"]=!1,t["overflow-x"]=!1,t["overflow-y"]=!1,t.padding=!0,t["padding-bottom"]=!0,t["padding-left"]=!0,t["padding-right"]=!0,t["padding-top"]=!0,t.page=!1,t["page-break-after"]=!1,t["page-break-before"]=!1,t["page-break-inside"]=!1,t["page-policy"]=!1,t.pause=!1,t["pause-after"]=!1,t["pause-before"]=!1,t.perspective=!1,t["perspective-origin"]=!1,t.pitch=!1,t["pitch-range"]=!1,t["play-during"]=!1,t.position=!1,t["presentation-level"]=!1,t.quotes=!1,t["region-fragment"]=!1,t.resize=!1,t.rest=!1,t["rest-after"]=!1,t["rest-before"]=!1,t.richness=!1,t.right=!1,t.rotation=!1,t["rotation-point"]=!1,t["ruby-align"]=!1,t["ruby-merge"]=!1,t["ruby-position"]=!1,t["shape-image-threshold"]=!1,t["shape-outside"]=!1,t["shape-margin"]=!1,t.size=!1,t.speak=!1,t["speak-as"]=!1,t["speak-header"]=!1,t["speak-numeral"]=!1,t["speak-punctuation"]=!1,t["speech-rate"]=!1,t.stress=!1,t["string-set"]=!1,t["tab-size"]=!1,t["table-layout"]=!1,t["text-align"]=!0,t["text-align-last"]=!0,t["text-combine-upright"]=!0,t["text-decoration"]=!0,t["text-decoration-color"]=!0,t["text-decoration-line"]=!0,t["text-decoration-skip"]=!0,t["text-decoration-style"]=!0,t["text-emphasis"]=!0,t["text-emphasis-color"]=!0,t["text-emphasis-position"]=!0,t["text-emphasis-style"]=!0,t["text-height"]=!0,t["text-indent"]=!0,t["text-justify"]=!0,t["text-orientation"]=!0,t["text-overflow"]=!0,t["text-shadow"]=!0,t["text-space-collapse"]=!0,t["text-transform"]=!0,t["text-underline-position"]=!0,t["text-wrap"]=!0,t.top=!1,t.transform=!1,t["transform-origin"]=!1,t["transform-style"]=!1,t.transition=!1,t["transition-delay"]=!1,t["transition-duration"]=!1,t["transition-property"]=!1,t["transition-timing-function"]=!1,t["unicode-bidi"]=!1,t["vertical-align"]=!1,t.visibility=!1,t["voice-balance"]=!1,t["voice-duration"]=!1,t["voice-family"]=!1,t["voice-pitch"]=!1,t["voice-range"]=!1,t["voice-rate"]=!1,t["voice-stress"]=!1,t["voice-volume"]=!1,t.volume=!1,t["white-space"]=!1,t.widows=!1,t.width=!0,t["will-change"]=!1,t["word-break"]=!0,t["word-spacing"]=!0,t["word-wrap"]=!0,t["wrap-flow"]=!1,t["wrap-through"]=!1,t["writing-mode"]=!1,t["z-index"]=!1,t}function n(t,e,r){}function o(t,e,r){}r.whiteList=i(),r.getDefaultWhiteList=i,r.onAttr=n,r.onIgnoreAttr=o},{}],9:[function(t,e,r){function i(t,e){var r=new o(e);return r.process(t)}var n=t("./default"),o=t("./css");r=e.exports=i,r.FilterCSS=o;for(var a in n)r[a]=n[a];"undefined"!=typeof window&&(window.filterCSS=e.exports)},{"./css":7,"./default":8}],10:[function(t,e,r){function i(t,e){function r(){if(!o){var r=n.trim(t.slice(a,s)),i=r.indexOf(":");if(i!==-1){var c=n.trim(r.slice(0,i)),u=n.trim(r.slice(i+1));if(c){var d=e(a,l.length,c,u,r);d&&(l+=d+"; ")}}}a=s+1}t=n.trimRight(t),";"!==t[t.length-1]&&(t+=";");for(var i=t.length,o=!1,a=0,s=0,l="";s-1},is_sphinx_builder:function(){return!("builder"in this)||"mkdocs"!=this.builder},get_theme_name:function(){return this.theme!==n.THEME_RTD&&1===$("div.rst-other-versions").length?n.THEME_RTD:this.theme},show_promo:function(){return"https://readthedocs.com"!==this.api_host&&this.is_sphinx_builder()&&this.theme_supports_promo()}};e.exports={get:i}},{"./constants":12}],15:[function(t,e,r){function i(){var t=o.get();n(t)}function n(t){var e=t.project,r=t.version,i=t.language||"en",n=t.api_host,o=function(t){var o=$.Deferred(),s=document.createElement("a");s.href=n,s.pathname="/api/v2/docsearch/",s.search="?q="+$.urlencode(t)+"&project="+e+"&version="+r+"&language="+i,o.then(function(r){var i=r.hits||{},n=i.hits||[];if(n.length)for(var o in n){var s=n[o],l=s.fields||{},c=$('
  • '),u=document.createElement("a"),d=s.highlight;if(u.href+=l.link+DOCUMENTATION_OPTIONS.FILE_SUFFIX,u.search="?highlight="+$.urlencode(t),c.append($("").attr("href",u).html(l.title)),l.project!=e&&c.append($("").text(" (from project "+l.project+")")),d.content.length){var f=$('
    ').html(a(d.content[0]));f.find("em").addClass("highlighted"),c.append(f)}Search.output.append(c),c.slideDown(5)}n.length?Search.status.text(_("Search finished, found %s page(s) matching the search query.").replace("%s",n.length)):Search.query_fallback(t)}).fail(function(e){Search.query_fallback(t)}).always(function(){$("#search-progress").empty(),Search.stopPulse(),Search.title.text(_("Search Results")),Search.status.fadeIn(500)}),$.ajax({url:s.href,crossDomain:!0,xhrFields:{withCredentials:!0},complete:function(t,e){return"undefined"==typeof t.responseJSON||"undefined"==typeof t.responseJSON.results?o.reject():o.resolve(t.responseJSON.results)}}).error(function(t,e,r){return o.reject()})};if("undefined"!=typeof Search&&e&&r){var s=Search.query;Search.query_fallback=s,Search.query=o}$(document).ready(function(){"undefined"!=typeof Search&&Search.init()})}var o=t("./rtd-data"),a=t("./../../../../../../bower_components/xss/lib/index");e.exports={init:i}},{"./../../../../../../bower_components/xss/lib/index":3,"./rtd-data":14}],16:[function(t,e,r){function i(){var t=n.get();if($(document).on("click","[data-toggle='rst-current-version']",function(){var t=$("[data-toggle='rst-versions']").hasClass("shift-up")?"was_open":"was_closed";"undefined"!=typeof ga?ga("rtfd.send","event","Flyout","Click",t):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Flyout","Click",t])}),!("builder"in t)||"builder"in t&&"mkdocs"!=t.builder){var e=o.ThemeNav;if($(document).ready(function(){setTimeout(function(){e.navBar||e.enable()},1e3)}),t.is_rtd_theme()){var r=jquery("div.wy-side-scroll:first");if(!r.length){var i=jquery("nav.wy-nav-side:first"),a=$("
    ").addClass("wy-side-scroll");i.children().detach().appendTo(a),a.prependTo(i),e.navBar=a}}}}var n=t("./rtd-data"),o=t("./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js");e.exports={init:i}},{"./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js":1,"./rtd-data":14}],17:[function(t,e,r){function i(){var t,e,r={};l=u.get(),l.show_promo()&&(r.placements=n(l),r.project=l.project,"undefined"!=typeof URL&&"undefined"!=typeof URLSearchParams&&(e=new URL(window.location).searchParams,t=e.get("promo"),t&&(r.promo=t),t=e.get("campaign"),t&&(r.campaign=t)),$.ajax({url:l.api_host+"/api/v2/sustainability/",type:"post",xhrFields:{withCredentials:!0},dataType:"json",data:JSON.stringify(r),contentType:"application/json",success:function(t){var e;t&&t.div_id&&t.html&&(e=new s(t),e.display())},error:function(){console.error("Error loading Read the Docs promo")}}))}function n(){for(var t,e=[],r=[a,o],i=0;i div.sphinxsidebarwrapper",t="ethical-alabaster"),i?($("
    ").attr("id",e).addClass(t).appendTo(i),{div_id:e,display_type:r}):null}function a(){var t,e="rtd-"+(Math.random()+1).toString(36).substring(4),r=c.PROMO_TYPES.FOOTER,i=null;return l.is_rtd_theme()?(i=$("
    ").insertAfter("footer hr"),t="ethical-rtd"):l.get_theme_name()!=c.THEME_ALABASTER&&l.get_theme_name()!=c.THEME_CELERY||(i="div.bodywrapper .body",t="ethical-alabaster"),i?($("
    ").attr("id",e).addClass(t).appendTo(i),{div_id:e,display_type:r}):null}function s(t){this.id=t.id,this.div_id=t.div_id||"",this.html=t.html||"",this.pixel=t.pixel||"",this.display_type=t.display_type||"",this.click_handler=function(){"undefined"!=typeof ga?ga("rtfd.send","event","Promo","Click",t.id):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Promo","Click",t.id])}}var l,c=t("./constants"),u=t("./rtd-data");s.prototype.display=function(){$("#"+this.div_id).html(this.html),$("#"+this.div_id).find('a[href*="/sustainability/click/"]').on("click",this.click_handler),this.post_promo_display()},s.prototype.disable=function(){$("#"+this.div_id).hide()},s.prototype.post_promo_display=function(){this.display_type===c.PROMO_TYPES.FOOTER&&($("
    ").insertAfter("#"+this.div_id),$("
    ").insertBefore("#"+this.div_id+".ethical-alabaster .ethical-footer"))},e.exports={Promo:s,init:i}},{"./constants":12,"./rtd-data":14}],18:[function(t,e,r){function i(t){var e=n.get();if(!t.is_highest){var r=window.location.pathname.replace(e.version,t.slug),i=$('
    ');i.find("a").attr("href",r).text(t.version);var o=$("div.body");o.length||(o=$("div.document")),o.prepend(i)}}var n=t("./rtd-data");e.exports={init:i}},{"./rtd-data":14}],19:[function(t,e,r){var i=t("./doc-embed/sponsorship"),n=t("./doc-embed/footer.js"),o=(t("./doc-embed/rtd-data"),t("./doc-embed/sphinx")),a=t("./doc-embed/search");$(document).ready(function(){n.init(),o.init(),a.init(),i.init()})},{"./doc-embed/footer.js":13,"./doc-embed/rtd-data":14,"./doc-embed/search":15,"./doc-embed/sphinx":16,"./doc-embed/sponsorship":17}]},{},[19]); \ No newline at end of file diff --git a/readthedocs/restapi/urls.py b/readthedocs/restapi/urls.py index 9d6fbd19229..904ba6cef60 100644 --- a/readthedocs/restapi/urls.py +++ b/readthedocs/restapi/urls.py @@ -97,3 +97,12 @@ urlpatterns += api_search_urls except ImportError: pass + +try: + from readthedocsext.donate.restapi.urls import urlpatterns as sustainability_urls + + urlpatterns += [ + url(r'^sustainability/', include(sustainability_urls)), + ] +except ImportError: + pass