Merge pull request #1797 from ebarboni/release110apidoc
[NETBEANS-2612] Apidoc rewamp release 110
diff --git a/nbbuild/antsrc/org/netbeans/nbbuild/Arch.xsl b/nbbuild/antsrc/org/netbeans/nbbuild/Arch.xsl
index e9dfc65..6b3b959 100644
--- a/nbbuild/antsrc/org/netbeans/nbbuild/Arch.xsl
+++ b/nbbuild/antsrc/org/netbeans/nbbuild/Arch.xsl
@@ -35,19 +35,82 @@
<xsl:param name="arch.when"/>
<xsl:template match="/">
- <html>
+ <xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
+ <html lang="en">
<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><xsl:value-of select="api-answers/@module" /> - NetBeans Architecture Questions</title>
<xsl:if test="$arch.stylesheet">
<link rel="stylesheet" type="text/css" href="{$arch.stylesheet}"/>
</xsl:if>
</head>
<body>
-
- <xsl:if test="$arch.overviewlink">
+ <!-- ========= START OF TOP NAVBAR ======= -->
+ <div class="topNav">
+ <a name="navbar.top">
+ <!-- -->
+ </a>
+ <div class="skipNav">
+ <a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a>
+ </div>
+ <a name="navbar.top.firstrow">
+ <!-- -->
+ </a>
+ <ul class="navList noreplace" title="Navigation">
+ <li>
+ <a href="apichanges.html">API Changes</a>
+ </li>
+ <li class="navBarCell1Rev">Architecture Summary</li>
+ <li><a href="overview-summary.html">Overview</a></li>
+ <li>Package</li>
+ <li>Class</li>
+ <li>Use</li>
+ <li>Tree</li>
+ <li>
+ <a href="deprecated-list.html">Deprecated</a>
+ </li>
+ <li>Index</li>
+ <li>
+ <a href="help-doc.html">Help</a>
+ </li>
+ </ul>
+ <div class="aboutLanguage"> </div>
+ </div>
+ <div class="subNav">
+ <ul class="navList">
+ <li>
+ <a href="index.html?overview-summary.html" target="_top">Frames</a>
+ </li>
+ <li>
+ <a href="overview-summary.html" target="_top">No Frames</a>
+ </li>
+ </ul>
+ <ul class="navList" id="allclasses_navbar_top">
+ <li>
+ <a href="allclasses-noframe.html">All Classes</a>
+ </li>
+ </ul>
+ <div>
+ <script type="text/javascript"><!--
+ allClassesLink = document.getElementById("allclasses_navbar_top");
+ if(window==top) {
+ allClassesLink.style.display = "block";
+ }
+ else {
+ allClassesLink.style.display = "none";
+ }
+ //-->
+ </script>
+ </div>
+ <a name="skip.navbar.top">
+ <!-- -->
+ </a>
+ </div>
+ <!-- ========= END OF TOP NAVBAR ========= -->
+ <!--<xsl:if test="$arch.overviewlink">
<p class="overviewlink"><a href="{$arch.overviewlink}">Overview</a></p>
</xsl:if>
-
+ -->
<h1>NetBeans Architecture Answers for <xsl:value-of select="api-answers/@module" /><xsl:text> module</xsl:text></h1>
<xsl:variable name="qver" select="api-answers/api-questions/@version"/>
@@ -329,14 +392,15 @@
<td> <!-- description -->
<!-- Put anchor here, since name is centered, and we want hyperlinks to scroll to top of table row: -->
<a>
- <xsl:attribute name="name">
+ <xsl:attribute name="id">
<xsl:value-of select="$group" /><xsl:text>-</xsl:text><xsl:value-of select="$name"/>
</xsl:attribute>
+ </a>
<xsl:call-template name="describe">
<xsl:with-param name="name" select="$name"/>
<xsl:with-param name="group" select="$group"/>
</xsl:call-template>
- </a>
+
</td>
</tr>
</xsl:template>
diff --git a/nbbuild/antsrc/org/netbeans/nbbuild/GitBranchHash.java b/nbbuild/antsrc/org/netbeans/nbbuild/GitBranchHash.java
new file mode 100644
index 0000000..2d53fe8
--- /dev/null
+++ b/nbbuild/antsrc/org/netbeans/nbbuild/GitBranchHash.java
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.netbeans.nbbuild;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.List;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+
+/**
+ * Forked from HgId to parse branch and git hash as fallback.
+ */
+public class GitBranchHash extends Task {
+
+ private File file;
+ /**
+ * Locates the repository.
+ * May be repository root, or any file or folder inside it.
+ */
+ public void setFile(File file) {
+ this.file = file;
+ }
+
+ private String branchProperty;
+ /**
+ * Declares which property to define with the resulting branch info.
+ */
+ public void setBranchProperty(String branchProperty) {
+ this.branchProperty = branchProperty;
+ }
+
+ private String hashProperty;
+ /**
+ * Declares which property to define with the resulting hash info.
+ */
+ public void setHashProperty(String hashProperty) {
+ this.hashProperty = hashProperty;
+ }
+
+
+ @Override
+ public void execute() throws BuildException {
+ if (file == null || branchProperty == null || hashProperty == null) {
+ throw new BuildException("define file, branch property and hash property");
+ }
+ Path headroot = null;
+ for (Path root = file.toPath(); root != null; root = root.getParent()) {
+ Path headpath = root.resolve(".git/HEAD");
+ if (Files.isRegularFile(headpath)) {
+ headroot = headpath;
+ break;
+ }
+ }
+ String branch = "";
+ String hash = "";
+ try {
+ if (headroot != null && Files.size(headroot) > 0l) {
+ List<String> lines = Files.readAllLines(headroot);
+ String line = lines.get(0);
+ String revLink = line.substring(line.indexOf(':')+1).trim();
+ branch = revLink.substring(revLink.lastIndexOf('/')+1).trim();
+ Path revPath = headroot.getParent().resolve(revLink);
+ if(Files.isRegularFile(revPath) && Files.size(revPath) > 0l) {
+ List<String> revlines = Files.readAllLines(revPath);
+ String revline = revlines.get(0);
+ if(revline.length()>=12){
+ hash = revline.trim();
+ } else {
+ log("no content in " + revPath, Project.MSG_WARN);
+ }
+ } else {
+ log("unable to find revision info for " + revPath, Project.MSG_WARN);
+ }
+ } else {
+ log("No HEAD found starting from " + file, Project.MSG_WARN);
+ }
+ } catch(IOException ex) {
+ log("Could not read " + headroot + ": " + ex, Project.MSG_WARN);
+ }
+ if (!branch.isEmpty() && !hash.isEmpty()) {
+ getProject().setNewProperty(branchProperty, branch);
+ getProject().setNewProperty(hashProperty, hash);
+ }
+
+ }
+
+}
diff --git a/nbbuild/antsrc/org/netbeans/nbbuild/ReleaseJsonProperties.java b/nbbuild/antsrc/org/netbeans/nbbuild/ReleaseJsonProperties.java
new file mode 100644
index 0000000..d144b9a
--- /dev/null
+++ b/nbbuild/antsrc/org/netbeans/nbbuild/ReleaseJsonProperties.java
@@ -0,0 +1,413 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE jsonreleaseinfoFile
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this jsonreleaseinfoFile
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this jsonreleaseinfoFile except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.nbbuild;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ *
+ * @author skygo
+ */
+public class ReleaseJsonProperties extends Task {
+
+ /**
+ * current branch we works with
+ */
+ private String branch;
+ /**
+ * current hash we works with
+ */
+ private String hash;
+ /**
+ * cache of json file
+ */
+ private File jsonreleaseinfoFile;
+ /**
+ * xml file containing release information
+ */
+ private File xmlFile;
+
+ /**
+ * xml file containing release information
+ */
+ private File propertiesFile;
+
+ public void setBranch(String branch) {
+ this.branch = branch;
+ }
+
+ public void setHash(String hash) {
+ this.hash = hash;
+ }
+
+ public void setFile(File file) {
+ this.jsonreleaseinfoFile = file;
+ }
+
+ public void setXmloutput(File file) {
+ this.xmlFile = file;
+ }
+
+ public void setPropertiesoutput(File file) {
+ this.propertiesFile = file;
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ super.execute();
+ JSONParser jsonParser = new JSONParser();
+ ReleaseInfo requiredbranchinfo = null;
+ List<ReleaseInfo> ri = new ArrayList<>();
+ //Prepare a xml document containg all the release information */
+ Document doc = XMLUtil.createDocument("releases");
+ Element releasesxml = doc.getDocumentElement();
+
+ //branch parameter
+ if (branch.equals("master") || branch.startsWith("release")) {
+ log("Taking release info from json");
+ } else {
+ log("Branch '" + branch + "' is not having good pattern defaulting to 'master'");
+ branch = "master";
+ }
+ // read all information and store each release in Rel
+ try (FileReader reader = new FileReader(jsonreleaseinfoFile)) {
+ JSONObject releaseList = (JSONObject) jsonParser.parse(reader);
+ log("Processing release: " + releaseList.keySet().toString());
+ for (Object object : releaseList.keySet()) {
+ ri.add(manageRelease(object.toString(), releaseList.get(object)));
+ }
+ } catch (ParseException | IOException ex) {
+ throw new BuildException(ex);
+ }
+ // sort all information
+ Collections.sort(ri);
+ // build a sorted xml
+
+ for (ReleaseInfo releaseInfo : ri) {
+ log(releaseInfo.toString());
+ for (Object milestone : releaseInfo.milestones) {
+ log(milestone.toString());
+ }
+ Element releasexml = (Element) releasesxml.appendChild(doc.createElement("release"));
+ populatexml(releasexml, releaseInfo);
+ if (releaseInfo.getKey().equals(branch)) {
+ requiredbranchinfo = releaseInfo;
+ releasesxml.setAttribute("position", Integer.toString(releaseInfo.position));
+ // attribute to know position of the requested current branch in the set of release
+ }
+ }
+
+ if (requiredbranchinfo == null) {
+ throw new BuildException("No Release Information found for branch '" + branch + "', update json file section");
+ }
+ List<String> updateValues = new ArrayList<>();
+ for (ReleaseInfo releaseInfo : ri) {
+ if (releaseInfo.position < requiredbranchinfo.position) {
+ updateValues.add(releaseInfo.version);
+ }
+ }
+// populate properties for api changes
+ getProject().setProperty("previous.release.year", Integer.toString(requiredbranchinfo.previousReleaseDate.getYear()));
+ getProject().setProperty("previous.release.month", String.format("%02d", requiredbranchinfo.previousReleaseDate.getMonthValue()));
+ getProject().setProperty("previous.release.day", String.format("%02d", requiredbranchinfo.previousReleaseDate.getDayOfMonth()));
+// version branding + incubating status management for Apache NetBeans 9.0 10 11.0
+ getProject().setProperty("json.maturity", requiredbranchinfo.maturity);
+ getProject().setProperty("json.version", requiredbranchinfo.version);
+ getProject().setProperty("modules-javadoc-date", ReleaseJsonProperties.makeDate(requiredbranchinfo.releaseDate));
+ getProject().setProperty("atom-date", ReleaseJsonProperties.makeAtomDate(requiredbranchinfo.releaseDate));
+ getProject().setProperty("javaapidocurl", requiredbranchinfo.javaapidocurl);
+ log("Writing releasinfo file " + propertiesFile);
+ propertiesFile.getParentFile().mkdirs();
+ try (OutputStream config = new FileOutputStream(propertiesFile)) {
+ String optionalversion = "";
+ boolean found = false;
+ for (MileStone m : requiredbranchinfo.milestones) {
+ if (m.hash.equals(hash)) {
+ found = true;
+ log("found hash" + hash + "-" + m.vote);
+ // found a milestone
+ if (m.vote != -1) {
+ // vote is set we want the full version
+ } else {
+ optionalversion = "-" + m.version;
+ }
+
+ }
+ }
+ if (!found && !branch.equals("master")) {
+ // hash no match we are building a dev version of specific branch
+ optionalversion = "-dev";
+ }
+ config.write(("metabuild.DistributionURL=" + requiredbranchinfo.updateurl + "\n").getBytes());
+ config.write(("metabuild.PluginPortalURL=" + requiredbranchinfo.pluginsurl + "\n").getBytes());
+ // used for cache and user dir
+ config.write(("metabuild.RawVersion=" + requiredbranchinfo.version + optionalversion + "\n").getBytes());
+ config.write(("metabuild.apachepreviousversion=" + String.join(",", updateValues) + "\n").getBytes());
+ if (branch.equals("master")) {
+ config.write(("metabuild.ComputedSplashVersion=DEV (Build {0})\n").getBytes());
+ config.write(("metabuild.ComputedTitleVersion=DEV {0}\n").getBytes());
+ config.write(("metabuild.logcli=-J-Dnetbeans.logger.console=true -J-ea\n").getBytes());
+ } else {
+ config.write(("metabuild.ComputedSplashVersion=" + requiredbranchinfo.version + optionalversion + "\n").getBytes());
+ config.write(("metabuild.ComputedTitleVersion=" + requiredbranchinfo.version + optionalversion + "\n").getBytes());
+ config.write(("metabuild.logcli=\n").getBytes());
+ }
+ } catch (IOException ex) {
+ throw new BuildException("Properties File for release cannot be created");
+ }
+
+ log("Writing releasinfo file " + xmlFile);
+
+ xmlFile.getParentFile().mkdirs();
+ try (OutputStream config = new FileOutputStream(xmlFile)) {
+ XMLUtil.write(doc, config);
+ } catch (IOException ex) {
+ throw new BuildException("XML File for release cannot be created");
+ }
+ String configline;
+ try (FileReader config = new FileReader(propertiesFile); BufferedReader configStream = new BufferedReader(config);) {
+ while ((configline = configStream.readLine()) != null) {
+ log("Branding computed info: " + configline);
+ }
+ } catch (IOException ex) {
+ throw new BuildException("propertiesFile for release cannot be read");
+ }
+ }
+
+// add attribute for xml building apidoc enhancement
+ private void populatexml(Element releasesxml, ReleaseInfo releaseInfo) throws DOMException {
+ releasesxml.setAttribute("year", Integer.toString(releaseInfo.releaseDate.getYear()));
+ releasesxml.setAttribute("month", Integer.toString(releaseInfo.releaseDate.getMonthValue()));
+ releasesxml.setAttribute("day", Integer.toString(releaseInfo.releaseDate.getDayOfMonth()));
+ releasesxml.setAttribute("tlp", releaseInfo.maturity);
+ releasesxml.setAttribute("position", Integer.toString(releaseInfo.position));
+ releasesxml.setAttribute("version", releaseInfo.version);
+ releasesxml.setAttribute("apidocurl", releaseInfo.apidocurl);
+ }
+
+ private ReleaseInfo manageRelease(String key, Object arelease) {
+ ReleaseInfo ri = new ReleaseInfo(key);
+ // mandatory element
+ JSONObject jsonrelease = (JSONObject) arelease;
+ ri.setPosition(Integer.parseInt((String) getJSONInfo(jsonrelease, "position", "Order of release starting")));
+ // previous release date
+ JSONObject previousrelease = (JSONObject) getJSONInfo(jsonrelease, "previousreleasedate", "Apidoc: Date of previous Release");
+ ri.setPreviousRelease(
+ (String) getJSONInfo(previousrelease, "day", "Apidoc: day of previous Release"),
+ (String) getJSONInfo(previousrelease, "month", "Apidoc: month of previous Release"),
+ (String) getJSONInfo(previousrelease, "year", "Apidoc: year of previous Release"));
+ // date of release
+ JSONObject releasedate = (JSONObject) getJSONInfo(jsonrelease, "releasedate", "Apidoc: Date of Release vote");
+ ri.setReleaseDate(
+ (String) getJSONInfo(releasedate, "day", "Apidoc: day of previous Release"),
+ (String) getJSONInfo(releasedate, "month", "Apidoc: month of previous Release"),
+ (String) getJSONInfo(releasedate, "year", "Apidoc: year of previous Release"));
+
+ // tlp or not
+ ri.setMaturity((String) getJSONInfo(jsonrelease, "tlp", "Statut of release - TLP or not"));
+ // version name
+ ri.setVersion((String) getJSONInfo(jsonrelease, "versionName", "Version name"));
+ ri.setApidocurl((String) getJSONInfo(jsonrelease, "apidocurl", "Apidoc: URL"));
+ ri.setJavaApiDocurl((String) getJSONInfo(jsonrelease, "jdk_apidoc", "Apidoc: javadoc for java jdk"));
+ ri.setUpdateUrl((String) getJSONInfo(jsonrelease, "update_url", "Update catalog"));
+ ri.setPluginsUrl((String) getJSONInfo(jsonrelease, "plugin_url", "Plugin URL"));
+ // optional section
+ JSONObject milestone = (JSONObject) jsonrelease.get("milestones");
+ if (milestone != null) {
+ for (Object object : milestone.keySet()) {
+ // ri.add(manageRelease(object.toString(), releaseList.get(object)));
+ JSONObject milestonedata = (JSONObject) milestone.get(object);
+ MileStone m = new MileStone((String) object);
+ // mandatory
+ m.setPosition(Integer.parseInt((String) getJSONInfo(milestonedata, "position", "Order of milestone in release")));
+ // optional
+ Object vote = milestonedata.get("vote");
+ if (vote != null) {
+ m.setVote(Integer.parseInt((String) vote));
+ }
+ m.setVersion((String) milestonedata.get("version"));
+ ri.addMileStone(m);
+ }
+ Collections.sort(ri.milestones);
+ }
+
+ return ri;
+ }
+
+ private static String makeDate(LocalDateTime date) {
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d MMM yyyy", Locale.US);
+ return date.format(formatter);
+ }
+
+ private static String makeAtomDate(LocalDateTime date) {
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
+ return date.format(formatter);
+ }
+
+ private Object getJSONInfo(JSONObject json, String key, String info) {
+ Object result = json.get(key);
+ //log("Retriving " + key);
+ if (result == null) {
+ throw new BuildException("Cannot retrieve key " + key + ", this is for" + info);
+ }
+ return result;
+ }
+
+ private static class MileStone implements Comparable<MileStone> {
+
+ private int position;
+ private int vote = -1;
+ private final String hash;
+ private String version;
+
+ public MileStone(String hash) {
+ this.hash = hash;
+ }
+
+ @Override
+ public int compareTo(MileStone o) {
+ return (this.position - o.position);
+ }
+
+ private void setPosition(int position) {
+ this.position = position;
+ }
+
+ private void setVote(int vote) {
+ this.vote = vote;
+ }
+
+ private void setVersion(String version) {
+ this.version = version;
+ }
+
+ @Override
+ public String toString() {
+ return "(" + hash + "," + position + "," + vote + "," + version + ")";
+ }
+ }
+
+ /**
+ *
+ * Comparable on position. Avoir randomness.
+ */
+ private static class ReleaseInfo implements Comparable<ReleaseInfo> {
+
+ private int position;
+ private final String key;
+ private LocalDateTime releaseDate;
+ private LocalDateTime previousReleaseDate;
+ private String maturity;
+ private String version;
+ private String apidocurl;
+ private String javaapidocurl;
+ private String updateurl;
+ private String pluginsurl;
+ private List<MileStone> milestones;
+
+ public ReleaseInfo(String key) {
+ this.key = key;
+ this.milestones = new ArrayList<>();
+ }
+
+ @Override
+ public int compareTo(ReleaseInfo o) {
+ return (this.position - o.position);
+ }
+
+ private void setPosition(int position) {
+ this.position = position;
+ }
+
+ @Override
+ public String toString() {
+ return "(" + key + "," + position + ")";
+ }
+
+ private String getKey() {
+ return key;
+ }
+
+ private LocalDateTime setDate(String day, String month, String year) {
+ LocalDateTime tmp = LocalDateTime.now();
+ try {
+ tmp = LocalDateTime.of(Integer.parseInt(year), Integer.parseInt(month), Integer.parseInt(day), 12, 0);
+ } catch (NumberFormatException e) {
+ }
+ return tmp;
+ }
+
+ private void setPreviousRelease(String day, String month, String year) {
+ previousReleaseDate = setDate(day, month, year);
+ }
+
+ private void setReleaseDate(String day, String month, String year) {
+ releaseDate = setDate(day, month, year);
+ }
+
+ private void setMaturity(String tlp) {
+ this.maturity = tlp;
+ }
+
+ private void setVersion(String version) {
+ this.version = version;
+ }
+
+ private void setApidocurl(String apidocurl) {
+ this.apidocurl = apidocurl;
+ }
+
+ private void setJavaApiDocurl(String javaapidocurl) {
+ this.javaapidocurl = javaapidocurl;
+ }
+
+ private void setUpdateUrl(String url) {
+ this.updateurl = url;
+ }
+
+ private void setPluginsUrl(String url) {
+ this.pluginsurl = url;
+ }
+
+ private void addMileStone(MileStone milestone) {
+ this.milestones.add(milestone);
+ }
+
+ }
+
+}
diff --git a/nbbuild/antsrc/org/netbeans/nbbuild/SetApidocClustersConfig.java b/nbbuild/antsrc/org/netbeans/nbbuild/SetApidocClustersConfig.java
new file mode 100644
index 0000000..c190d60
--- /dev/null
+++ b/nbbuild/antsrc/org/netbeans/nbbuild/SetApidocClustersConfig.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE jsonreleaseinfoFile
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this jsonreleaseinfoFile
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this jsonreleaseinfoFile except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.nbbuild;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+/**
+ *
+ * @author skygo
+ */
+public class SetApidocClustersConfig extends Task {
+
+ /**
+ * current branch we works with
+ */
+ private String branch;
+
+ public void setBranch(String branch) {
+ this.branch = branch;
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ super.execute();
+ if (branch.equals("master")) {
+// for master branch, more apidoc to generate
+ getProject().setProperty("config.javadoc.all",
+ getProject().getProperty("config.javadoc.stable") + ","
+ + getProject().getProperty("config.javadoc.deprecated") + ","
+ + getProject().getProperty("config.javadoc.devel") + ","
+ + getProject().getProperty("config.javadoc.friend"));
+ } else {
+// for release branch only stable
+ getProject().setProperty("config.javadoc.all", getProject().getProperty("config.javadoc.stable"));
+ }
+ }
+}
diff --git a/nbbuild/build.properties b/nbbuild/build.properties
index 47502ac..059587b 100644
--- a/nbbuild/build.properties
+++ b/nbbuild/build.properties
@@ -26,9 +26,9 @@
# Information about branch of previous release
# needed to help us generate list of changes since then
-previous.release.year=2018
-previous.release.month=12
-previous.release.day=27
+#previous.release.year=2018
+#previous.release.month=12
+#previous.release.day=27
# Useful for "always successful" build, when you don't care of some
# particular (and currently broken) modules
diff --git a/nbbuild/build.xml b/nbbuild/build.xml
index 3cbc361..9fce1e4 100644
--- a/nbbuild/build.xml
+++ b/nbbuild/build.xml
@@ -19,7 +19,7 @@
under the License.
-->
-<project name="nbbuild" default="build-nozip" basedir=".">
+<project name="nbbuild" default="build-nozip" basedir="." xmlns:if="ant:if" xmlns:unless="ant:unless">
<fail message="Please build using Ant 1.8.0 or higher.">
<condition>
@@ -93,6 +93,8 @@
<fileset dir="..">
<!-- For JavaHelp indexing and link checking: -->
<include name="platform/javahelp/external/jhall*.jar"/>
+ <!-- For json parsing -->
+ <include name="nbbuild/external/json-simple*.jar"/>
</fileset>
</path>
<javac srcdir="antsrc" destdir="${build.ant.classes.dir}" deprecation="true" debug="${build.compiler.debug}" source="1.8" target="1.8">
@@ -111,8 +113,90 @@
<zipfileset dir="${nb_all}" includes="DISCLAIMER" fullpath="META-INF/DISCLAIMER"/>
</jar>
<taskdef name="createlicensesummary" classname="org.netbeans.nbbuild.extlibs.CreateLicenseSummary" classpath="${nbantext.jar}"/>
+ <!-- get all json info we have on apache gitbox -->
+ <property name="metabuild.releasejson" value="${nb_all}/nbbuild/build/netbeansrelease.json"/>
+ <condition property="metabuild.jsonurl" value="https://gitbox.apache.org/repos/asf?p=netbeans-jenkins-lib.git;a=blob_plain;f=meta/netbeansrelease.json">
+ <not>
+ <isset property="metabuild.jsonurl"/>
+ </not>
+ </condition>
+ <get dest="${metabuild.releasejson}" skipexisting="false" src="${metabuild.jsonurl}" />
+ <!-- read info from gitinfo.properties , if present in source bundle copy gitinfo-->
+ <copy file="${nb_all}/nbbuild/gitinfo.properties" tofile="${nb_all}/nbbuild/build/gitinfo.properties" failonerror="false"/>
+ <copy file="${nb_all}/nbbuild/netbeansrelease.properties" tofile="${nb_all}/nbbuild/build/netbeansrelease.properties" failonerror="false"/>
+ <!-- get branches and git information as previous not overrided this will take new-->
+ <antcall target="getgitinformation" />
+ <!-- javadoc content filtering -->
+ <taskdef name="setjavadoc" classname="org.netbeans.nbbuild.SetApidocClustersConfig" classpath="${nbantext.jar}"/>
+ <property file="${nb_all}/nbbuild/build/gitinfo.properties"/>
+ <property file="${nb_all}/nbbuild/build/netbeansrelease.properties"/>
+ <setjavadoc branch="${metabuild.branch}"/>
+ <echo message="Building branch: ${metabuild.branch}"/>
+ <property name="releasejson" value="${nb_all}/nbbuild/build/netbeansrelease.json"/>
+ <property name="xmlrelease" value="${nb_all}/nbbuild/build/netbeansrelease.xml"/>
+ <property name="propertiesrelease" value="${nb_all}/nbbuild/build/netbeansrelease.properties"/>
+ <taskdef name="releasejson" classname="org.netbeans.nbbuild.ReleaseJsonProperties" >
+ <classpath>
+ <pathelement location="${nbantext.jar}"/>
+ <fileset dir="${nb_all}/nbbuild/external">
+ <include name="json*.jar"/>
+ </fileset>
+ </classpath>
+ </taskdef>
+ <releasejson file="${releasejson}" xmloutput="${xmlrelease}" propertiesoutput="${propertiesrelease}" branch="${metabuild.branch}" hash="${metabuild.hash}"/>
</target>
-
+ <target name="-gitinfo.ispresent">
+ <available file="${nb_all}/nbbuild/build/gitinfo.properties" property="gitinfo.present" />
+ </target>
+ <target name="-git.down" unless="${gitinfo.present}" depends="-gitinfo.ispresent">
+ <!-- try to get information from jenkins apache multi branch build or travis -->
+ <taskdef name="gitbranchhash" classname="org.netbeans.nbbuild.GitBranchHash" classpath="${nbantext.jar}" />
+ <property environment="env"/>
+ <condition property="metabuild.branch" value="${env.GIT_BRANCH}" >
+ <isset property="env.GIT_BRANCH" />
+ </condition>
+ <condition property="metabuild.branch" value="${env.TRAVIS_BRANCH}" >
+ <isset property="env.TRAVIS_BRANCH" />
+ </condition>
+ <condition property="metabuild.branch" value="${metabuild.branch}" >
+ <isset property="metabuild.branch" />
+ </condition>
+ <condition property="metabuild.hash" value="${env.GIT_COMMIT}" >
+ <isset property="env.GIT_COMMIT" />
+ </condition>
+ <condition property="metabuild.hash" value="${env.TRAVIS_COMMIT}" >
+ <isset property="env.TRAVIS_COMMIT" />
+ </condition>
+ <condition property="metabuild.hash" value="${metabuild.hash}" >
+ <isset property="metabuild.hash" />
+ </condition>
+
+ <gitbranchhash file="." branchproperty="metabuild.branch" hashproperty="metabuild.hash" />
+
+ <condition property="metabuild.branch" value="master" >
+ <not>
+ <isset property="metabuild.branch" />
+ </not>
+ </condition>
+
+ <echo message="Processing build with branch ${metabuild.branch} and hash ${metabuild.hash}" />
+ <!-- if hash not present do not fail -->
+ <fail message="Branch not found use -Dmetabuild.branch=branchName " >
+ <condition>
+ <not>
+ <isset property="metabuild.branch"/>
+ </not>
+ </condition>
+ </fail>
+ <echo unless:set="metabuild.hash" file="${nb_all}/nbbuild/build/gitinfo.properties" >metabuild.branch=${metabuild.branch}</echo>
+ <echo if:set="metabuild.hash" file="${nb_all}/nbbuild/build/gitinfo.properties" >metabuild.branch=${metabuild.branch}
+metabuild.hash=${metabuild.hash}</echo>
+ </target>
+ <target name="-git.up" if="${gitinfo.present}" depends="-gitinfo.ispresent">
+ <property file="${nb_all}/nbbuild/build/gitinfo.properties"/>
+ <echo message="Processing build with branch ${metabuild.branch} and hash ${metabuild.hash}" />
+ </target>
+ <target name="getgitinformation" depends="-git.up,-git.down" />
<target name="download-all-extbins" unless="ext.binaries.downloaded" depends="bootstrap">
<echo>Downloading external binaries (*/external/ directories)...</echo>
<downloadbinaries cache="${binaries.cache}" server="${binaries.server}">
diff --git a/nbbuild/external/binaries-list b/nbbuild/external/binaries-list
index 799a5b1..b18ad41 100644
--- a/nbbuild/external/binaries-list
+++ b/nbbuild/external/binaries-list
@@ -18,3 +18,4 @@
16398550402B27F81CD0D508CEF54B3E47A4A6DA org.apache.rat:apache-rat:0.12
AB396EE119BFAD809CC9F09950CC22E2BCE2FE35 langtools-9.zip
E32B3483FBF362C92088CB79E9F1F161F3F64A21 org.apidesign.javadoc:codesnippet-doclet:0.30
+C9AD4A0850AB676C5C64461A05CA524CDFFF59F1 com.googlecode.json-simple:json-simple:1.1.1
diff --git a/nbbuild/external/json-simple-1.1.1-license.txt b/nbbuild/external/json-simple-1.1.1-license.txt
new file mode 100644
index 0000000..aaede6a
--- /dev/null
+++ b/nbbuild/external/json-simple-1.1.1-license.txt
@@ -0,0 +1,208 @@
+Name: JSON simple
+Description: A simple Java toolkit for JSON.
+Version: 1.1.1
+Origin: GitHub
+License: Apache-2.0
+URL: https://github.com/fangyidong/json-simple
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/nbbuild/javadoctools/apichanges.xsl b/nbbuild/javadoctools/apichanges.xsl
index 709e39d..4c6be16 100644
--- a/nbbuild/javadoctools/apichanges.xsl
+++ b/nbbuild/javadoctools/apichanges.xsl
@@ -65,14 +65,85 @@
<xsl:output method="html"/>
<!-- Overridable parameters: -->
- <xsl:param name="issue-url-base" select="'https://netbeans.org/bugzilla/show_bug.cgi?id='"/>
+ <xsl:param name="issue-url-base" select="'https://bz.apache.org/netbeans/show_bug.cgi?id='"/>
<xsl:param name="apache-issue-url-base" select="'https://issues.apache.org/jira/browse/'"/>
<xsl:param name="javadoc-url-base" select="'???'"/>
<!-- Main document structure: -->
<xsl:template match="/">
- <html>
- <xsl:apply-templates select="apichanges/htmlcontents/node()"/>
+ <xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
+ <html lang="en">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <xsl:apply-templates select="apichanges/htmlcontents/head/title"/>
+ <link rel="stylesheet" type="text/css" href="javadoc.css" title="Style"/>
+ <script type="text/javascript" src="script.js"></script>
+ </head>
+ <body>
+ <!-- ========= START OF TOP NAVBAR ======= -->
+ <div class="topNav">
+ <a name="navbar.top">
+ <!-- -->
+ </a>
+ <div class="skipNav">
+ <a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a>
+ </div>
+ <a name="navbar.top.firstrow">
+ <!-- -->
+ </a>
+ <ul class="navList noreplace" title="Navigation">
+ <li class="navBarCell1Rev">
+ API Changes
+ </li>
+ <li><a href="architecture-summary.html">Architecture Summary</a></li>
+ <li><a href="overview-summary.html">Overview</a></li>
+ <li>Package</li>
+ <li>Class</li>
+ <li>Use</li>
+ <li>Tree</li>
+ <li>
+ <a href="deprecated-list.html">Deprecated</a>
+ </li>
+ <li>Index</li>
+ <li>
+ <a href="help-doc.html">Help</a>
+ </li>
+ </ul>
+ <div class="aboutLanguage"> </div>
+ </div>
+ <div class="subNav">
+ <ul class="navList">
+ <li>
+ <a href="index.html?overview-summary.html" target="_top">Frames</a>
+ </li>
+ <li>
+ <a href="overview-summary.html" target="_top">No Frames</a>
+ </li>
+ </ul>
+ <ul class="navList" id="allclasses_navbar_top">
+ <li>
+ <a href="allclasses-noframe.html">All Classes</a>
+ </li>
+ </ul>
+ <div>
+ <script type="text/javascript"><!--
+ allClassesLink = document.getElementById("allclasses_navbar_top");
+ if(window==top) {
+ allClassesLink.style.display = "block";
+ }
+ else {
+ allClassesLink.style.display = "none";
+ }
+ //-->
+ </script>
+ </div>
+ <a name="skip.navbar.top">
+ <!-- -->
+ </a>
+ </div>
+ <!-- ========= END OF TOP NAVBAR ========= -->
+ <xsl:apply-templates select="apichanges/htmlcontents/body/node()[not(contains(@class, 'overviewlink'))]"/>
+ </body>
</html>
</xsl:template>
diff --git a/nbbuild/javadoctools/build.xml b/nbbuild/javadoctools/build.xml
index 83279d4..e8fd960 100644
--- a/nbbuild/javadoctools/build.xml
+++ b/nbbuild/javadoctools/build.xml
@@ -116,42 +116,67 @@
<include name="**/allclasses-noframe.html"/>
</packageslist>
</javadoc-index>
+
+ <!-- we concat all xml into one big xml file alldatas.xml -->
+ <echo file="${export.interfaces}/header.gen"><?xml version="1.0" encoding="UTF-8"?>
+ <alldata>
+ </echo>
+
+ <echo file="${export.interfaces}/footer.gen">
+ </alldata>
+ </echo>
+ <concat destfile="${netbeans.javadoc.dir}/alldatas.xml">
+ <fileset dir="${export.interfaces}" includes="header.gen"/>
+ <fileset file="${netbeans.javadoc.dir}/allclasses.xml"/>
+ <fileset file="${netbeans.javadoc.dir}/modules.xml"/>
+ <fileset file="${netbeans.javadoc.dir}/apichanges.xml"/>
+ <fileset dir="${export.interfaces}" includes="footer.gen"/>
+ <filterchain>
+ <linecontainsregexp negate="true">
+ <regexp pattern="<\?xml version"/>
+ </linecontainsregexp>
+ </filterchain>
+ </concat>
</target>
<target name="generate-html" depends="init">
- <tstamp>
- <format property="timestamp-modules-javadoc-date" pattern="d MMM yyyy" locale="en"/>
- </tstamp>
- <condition property="modules-javadoc-date" value="${timestamp-modules-javadoc-date}">
- <not>
- <isset property="modules-javadoc-date"/>
- </not>
+ <!-- reformulate dev version from json to more human version -->
+ <condition property="json.uversion" value="${json.version}" else="Development Version">
+ <not>
+ <equals arg1="${json.version}" arg2="dev"/>
+ </not>
</condition>
- <style in="${netbeans.javadoc.dir}/modules.xml" out="${netbeans.javadoc.dir}/usecases.html" style="export2usecases.xsl">
+ <style in="${netbeans.javadoc.dir}/alldatas.xml" out="${netbeans.javadoc.dir}/usecases.html" style="export2usecases.xsl">
<param name="date" expression="${modules-javadoc-date}"/>
+ <param name="maturity" expression="${json.maturity}" />
+ <param name="version" expression="${json.uversion}" />
+ <param name="releaseinfo" expression="${xmlrelease}" />
</style>
- <style in="${netbeans.javadoc.dir}/apichanges.xml" out="${netbeans.javadoc.dir}/apichanges.html" style="export2apichanges.xsl">
+ <style in="${netbeans.javadoc.dir}/alldatas.xml" out="${netbeans.javadoc.dir}/apichanges.html" style="export2apichanges.xsl">
<param name="date" expression="${modules-javadoc-date}"/>
<param name="changes-since-year" expression="${previous.release.year}"/>
<param name="changes-since-day" expression="${previous.release.day}"/>
<param name="changes-since-month" expression="${previous.release.month}"/>
<param name="include-introduction" expression="true"/>
+ <param name="maturity" expression="${json.maturity}" />
+ <param name="version" expression="${json.uversion}" />
+ <param name="releaseinfo" expression="${xmlrelease}" />
+ <param name="allmodule" expression="${netbeans.javadoc.dir}/modules.xml" />
</style>
- <tstamp>
- <format property="timestamp-atom-date" pattern="yyyy-MM-dd'T'HH:mm:ss'Z'" timezone="UTC"/>
- </tstamp>
- <condition property="atom-date" value="${timestamp-atom-date}">
- <not>
- <isset property="atom-date"/>
- </not>
- </condition>
- <style in="${netbeans.javadoc.dir}/apichanges.xml" out="${netbeans.javadoc.dir}/apichanges.atom" style="export2apichanges-atom.xsl">
+ <style in="${netbeans.javadoc.dir}/alldatas.xml" out="${netbeans.javadoc.dir}/apichanges.atom" style="export2apichanges-atom.xsl">
<param name="date" expression="${atom-date}"/>
+ <param name="maturity" expression="${json.maturity}" />
</style>
-
+ <!-- copy some assets to apidoc root -->
<copy file="netbeans.css" tofile="${netbeans.javadoc.dir}/netbeans.css"/>
+ <copy file="siteresource/apache-netbeans.svg" tofile="${netbeans.javadoc.dir}/apache-netbeans.svg" overwrite="true"/>
+ <copy todir="${netbeans.javadoc.dir}" overwrite="true">
+ <fileset dir="siteresource" >
+ <include name="**/*.png"/>
+ </fileset>
+ </copy>
<condition property="javadoc.style.sheet.exists">
<available file="${netbeans.javadoc.dir}/org-openide-util/javadoc.css"/>
</condition>
@@ -161,65 +186,46 @@
it from master module Javadoc pages. If it does not anymore, update
the export*.xsl templates.
</fail>
-
+<!--
<style in="${netbeans.javadoc.dir}/allclasses.xml" out="${netbeans.javadoc.dir}/allclasses-frame.html" style="export2allclasses.xsl"/>
<style in="${netbeans.javadoc.dir}/modules.xml" out="${netbeans.javadoc.dir}/overview-frame.html" style="export2allmodules.xsl">
<param name="date" expression="${modules-javadoc-date}"/>
</style>
-
- <style in="${netbeans.javadoc.dir}/modules.xml" out="${netbeans.javadoc.dir}/layers.html" style="export2layer.xsl">
+-->
+ <style in="${netbeans.javadoc.dir}/alldatas.xml" out="${netbeans.javadoc.dir}/layers.html" style="export2layer.xsl">
<param name="date" expression="${modules-javadoc-date}"/>
+ <param name="maturity" expression="${json.maturity}" />
+ <param name="version" expression="${json.uversion}" />
+ <param name="releaseinfo" expression="${xmlrelease}" />
</style>
- <style in="${netbeans.javadoc.dir}/modules.xml" out="${netbeans.javadoc.dir}/properties.html" style="export2property.xsl">
+ <style in="${netbeans.javadoc.dir}/alldatas.xml" out="${netbeans.javadoc.dir}/properties.html" style="export2property.xsl">
<param name="date" expression="${modules-javadoc-date}"/>
+ <param name="maturity" expression="${json.maturity}" />
+ <param name="version" expression="${json.uversion}" />
+ <param name="releaseinfo" expression="${xmlrelease}" />
</style>
- <style in="${netbeans.javadoc.dir}/modules.xml" out="${netbeans.javadoc.dir}/branding.html" style="export2branding.xsl">
+ <style in="${netbeans.javadoc.dir}/alldatas.xml" out="${netbeans.javadoc.dir}/branding.html" style="export2branding.xsl">
<param name="date" expression="${modules-javadoc-date}"/>
- </style>
-
- <style in="${netbeans.javadoc.dir}/modules.xml" out="${netbeans.javadoc.dir}/overview-summary.html" style="export2html.xsl">
- <param name="date" expression="${modules-javadoc-date}"/>
- <param name="download" expression="true"/>
- </style>
-
- <style in="${netbeans.javadoc.dir}/modules.xml" out="${nb_all}/nbbuild/build/tmp/overview-summary.html" style="export2html.xsl">
- <param name="date" expression="${modules-javadoc-date}"/>
- <param name="download" expression="false"/>
+ <param name="maturity" expression="${json.maturity}" />
+ <param name="version" expression="${json.uversion}" />
+ <param name="releaseinfo" expression="${xmlrelease}" />
</style>
<!-- at the end generate the index.html so people know where to start -->
- <echo file="${netbeans.javadoc.dir}/index.html"><![CDATA[
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
-<html>
- <head>
- <title>NetBeans API Index</title>
- <link type="application/atom+xml" rel="alternate" href="apichanges.atom"></link>
- </head>
- <frameset cols="20%,80%" title="" onLoad="top.loadFrames()">
- <frameset rows="30%,70%" title="" onLoad="top.loadFrames()">
- <frame src="overview-frame.html" name="packageListFrame" title="All Modules"></frame>
- <frame src="allclasses-frame.html" name="packageFrame" title="All classes"></frame>
- </frameset>
- <frame src="overview-summary.html" name="classFrame" title="Module, package, class and interface descriptions" scrolling="yes"></frame>
- <noframes>
- <h2>Frame Alert</h2>
- <p>
- This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
- Link to <a href="overview-summary.html">Non-frame version.</a>
- </p>
- </noframes>
- </frameset>
-</html>
-]]>
- </echo>
+ <style in="${netbeans.javadoc.dir}/alldatas.xml" out="${netbeans.javadoc.dir}/index.html" style="export2index.xsl">
+ <param name="date" expression="${modules-javadoc-date}"/>
+ <param name="maturity" expression="${json.maturity}" />
+ <param name="version" expression="${json.uversion}" />
+ <param name="releaseinfo" expression="${xmlrelease}" />
+ </style>
&properties;
<replace dir="${netbeans.javadoc.dir}">
<include name="*.html"/>
- <replacefilter token="@JDK@" value="http://download.oracle.com/javase/6/docs/api/"/>
+ <replacefilter token="@JDK@" value="${javaapidocurl}"/>
&replaces;
<replacefilter token="http://root/" value="."/>
<replacefilter token="$${javadoc.web.root}" value="."/>
diff --git a/nbbuild/javadoctools/disallowed-links.xml b/nbbuild/javadoctools/disallowed-links.xml
index e5e5c14..3d10d0e 100644
--- a/nbbuild/javadoctools/disallowed-links.xml
+++ b/nbbuild/javadoctools/disallowed-links.xml
@@ -28,6 +28,7 @@
<filter pattern="http://www\.netbeans\.org/download/release41/javadoc/apichanges\.html" accept="true"/>
<filter pattern="http://www\.netbeans\.org/download/[0-9]_[0-9]/javadoc/apichanges\.html" accept="true"/>
<filter pattern="http://bits\.netbeans\.org/[0-9.]+/javadoc/apichanges\.html" accept="true"/>
+ <filter pattern="http://bits\.netbeans\.org/" accept="true"/>
<!-- sources -->
<filter pattern="http://www\.netbeans\.org/(unbranded-)?source/browse/.*" accept="true"/>
<filter pattern="http://hg\.netbeans\.org.*" accept="true"/>
diff --git a/nbbuild/javadoctools/export2allclasses.xsl b/nbbuild/javadoctools/export2allclasses.xsl
index 367d4ff..c83078f 100644
--- a/nbbuild/javadoctools/export2allclasses.xsl
+++ b/nbbuild/javadoctools/export2allclasses.xsl
@@ -20,47 +20,64 @@
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:import href="jsonhelp.xsl" />
<xsl:output method="html"/>
-
+ <xsl:param name="maturity" />
<xsl:template match="/" >
+ <xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
<html>
- <head>
- <!-- projects.netbeans.org -->
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <title>All Apache NetBeans (incubating) Classes</title>
- <link rel="stylesheet" href="org-openide-util/javadoc.css" type="text/css" title="style" />
- </head>
-
- <body>
- <font size="+1" CLASS="FrameHeadingFont">
- <b>Apache NetBeans (incubating) API Classes</b>
- </font>
-
- <TABLE BORDER="0" WIDTH="100%" SUMMARY="">
- <TR>
- <TD NOWRAP=""><FONT CLASS="FrameItemFont">
-
- <xsl:for-each select="//class" >
- <xsl:sort order="ascending" select="@name" />
- <xsl:call-template name="class" />
- </xsl:for-each>
-
- </FONT></TD>
- </TR>
- </TABLE>
-
- </body>
+ <head>
+ <!-- projects.netbeans.org -->
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <xsl:element name="title">
+ <xsl:text>All </xsl:text>
+ <xsl:call-template name="apachenetbeanstext" >
+ <xsl:with-param name="maturity">
+ <xsl:value-of select="$maturity"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>Classes</xsl:text>
+ </xsl:element>
+ <link rel="stylesheet" href="org-openide-util/javadoc.css" type="text/css" title="style" />
+ </head>
+ <body>
+ <font size="+1" CLASS="FrameHeadingFont">
+ <xsl:element name="title">
+ <xsl:text>All </xsl:text>
+ <xsl:call-template name="apachenetbeanstext" >
+ <xsl:with-param name="maturity">
+ <xsl:value-of select="$maturity"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>API Classes</xsl:text>
+ </xsl:element>
+ </font>
+ <TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+ <TR>
+ <TD NOWRAP="">
+ <FONT CLASS="FrameItemFont">
+ <xsl:for-each select="//class" >
+ <xsl:sort order="ascending" select="@name" />
+ <xsl:call-template name="class" />
+ </xsl:for-each>
+ </FONT>
+ </TD>
+ </TR>
+ </TABLE>
+ </body>
</html>
</xsl:template>
-
<xsl:template name="class">
<a>
- <xsl:attribute name="href"><xsl:value-of select="@url" /></xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:value-of select="@url" />
+ </xsl:attribute>
<xsl:attribute name="target">classFrame</xsl:attribute>
-
<xsl:choose>
<xsl:when test="@interface = 'true'" >
- <i><xsl:value-of select="@name" /></i>
+ <i>
+ <xsl:value-of select="@name" />
+ </i>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@name" />
@@ -69,7 +86,6 @@
</a>
<br/>
</xsl:template>
-
</xsl:stylesheet>
diff --git a/nbbuild/javadoctools/export2allmodules.xsl b/nbbuild/javadoctools/export2allmodules.xsl
index f949039..e498a55 100644
--- a/nbbuild/javadoctools/export2allmodules.xsl
+++ b/nbbuild/javadoctools/export2allmodules.xsl
@@ -20,71 +20,54 @@
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:import href="jsonhelp.xsl" />
<xsl:output method="html"/>
-
- <xsl:template match="/" >
- <html>
- <head>
- <!-- projects.netbeans.org -->
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <title>All Apache NetBeans (incubating) Classes</title>
- <link rel="stylesheet" href="org-openide-util/javadoc.css" type="text/css"/>
- </head>
-
- <body>
-
-
- <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
- <TR>
- <TD COLSPAN="2" BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
- <A NAME="navbar_top_firstrow"><!-- --></A>
- <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
- <TR ALIGN="center" VALIGN="top">
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
- <a>
- <xsl:attribute name="href">overview-summary.html</xsl:attribute>
- <xsl:attribute name="target">classFrame</xsl:attribute>
- <FONT CLASS="NavBarFont1"><B>Overview</B></FONT>
- </a>
- </TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
- <a>
- <xsl:attribute name="href">allclasses-frame.html</xsl:attribute>
- <xsl:attribute name="target">packageFrame</xsl:attribute>
- <FONT CLASS="NavBarFont1"><B>AllClasses</B></FONT>
- </a>
- </TD>
- <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
- <a>
- <xsl:attribute name="href">usecases.html</xsl:attribute>
- <xsl:attribute name="target">classFrame</xsl:attribute>
- <FONT CLASS="NavBarFont1"><B>UseCases</B></FONT>
- </a>
- </TD>
- </TR>
- </TABLE>
- </TD>
- <TD ALIGN="right" VALIGN="top" ROWSPAN="3"><EM>
- </EM>
- </TD>
- </TR>
- </TABLE>
-
- <TABLE BORDER="0" WIDTH="100%" SUMMARY="">
- <TR>
- <TD NOWRAP=""><FONT CLASS="FrameItemFont">
+ <xsl:param name="maturity" />
+ <xsl:template name="listallmodules" >
+ <input type="text" id="searchinput" onkeyup="searchFunction()" placeholder="Search for class..."/>
+ <ul class="moduleslist">
<xsl:for-each select="//module[not (@name = '_no module_')]" >
<xsl:sort order="ascending" select="@name" />
- <xsl:call-template name="module" />
+ <li class="module">
+ <xsl:call-template name="modulewithclass" />
+ </li>
</xsl:for-each>
- </FONT></TD>
- </TR>
- </TABLE>
-
- </body>
- </html>
+ </ul>
</xsl:template>
-
+ <xsl:template name="modulewithclass">
+ <xsl:attribute name="style">
+ <xsl:choose>
+ <xsl:when test="descendant::api[@category='stable' and @group='java']">background-color:#ffffff</xsl:when>
+ <xsl:when test="descendant::api[@category='official' and @group='java']">background-color:#ffffff</xsl:when>
+ <xsl:when test="descendant::api[@category='devel' and @group='java']">background-color:#ddcc80</xsl:when>
+ <xsl:when test="descendant::api[@category='deprecated' and @group='java']">text-decoration: line-through</xsl:when>
+ <xsl:otherwise>background-color:#e0c0c0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <span class="modules">
+ <xsl:value-of select="@name" />
+ </span>
+ (<a><xsl:attribute name="href"><xsl:value-of select="substring-before(@target,'/')" />/overview-summary.html</xsl:attribute>javadoc</a>)
+ <ul class="modulesclasslist">
+ <xsl:variable name="modulename" select="substring-before(@target,'/')" />
+ <xsl:for-each select="//class[($modulename = substring-before(@url,'/'))]" >
+ <xsl:sort order="ascending" select="@name" />
+ <xsl:element name="li">
+ <xsl:attribute name="class">
+ <xsl:if test="@interface='false'">class</xsl:if>
+ <xsl:if test="@interface='true'">interface</xsl:if>
+ </xsl:attribute>
+ <xsl:call-template name="class" />
+ </xsl:element>
+ </xsl:for-each>
+ </ul>
+ </xsl:template>
+ <xsl:template name="class">
+ <a>
+ <xsl:attribute name="href"><xsl:value-of select="@url" /></xsl:attribute>
+ <xsl:value-of select="@name" />
+ </a>
+ </xsl:template>
<xsl:template name="module">
<span>
<xsl:attribute name="style">
@@ -97,20 +80,18 @@
</xsl:choose>
</xsl:attribute>
<a>
- <xsl:attribute name="href"><xsl:value-of select="substring-before(@target,'/')" />/allclasses-frame.html</xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:value-of select="substring-before(@target,'/')" />/allclasses-frame.html</xsl:attribute>
<xsl:attribute name="target">packageFrame</xsl:attribute>
-
<xsl:value-of select="@name" />
</a>
(<a>
- <xsl:attribute name="href"><xsl:value-of select="substring-before(@target,'/')" />/overview-summary.html</xsl:attribute>
- <xsl:attribute name="target">classFrame</xsl:attribute>
- javadoc
- </a>)
+ <xsl:attribute name="href">
+ <xsl:value-of select="substring-before(@target,'/')" />/overview-summary.html</xsl:attribute>
+ <xsl:attribute name="target">classFrame</xsl:attribute>javadoc</a>)
</span>
<br/>
</xsl:template>
-
</xsl:stylesheet>
diff --git a/nbbuild/javadoctools/export2apichanges-atom.xsl b/nbbuild/javadoctools/export2apichanges-atom.xsl
index 633b0c0..298959b 100644
--- a/nbbuild/javadoctools/export2apichanges-atom.xsl
+++ b/nbbuild/javadoctools/export2apichanges-atom.xsl
@@ -21,18 +21,30 @@
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xalan="http://xml.apache.org/xslt" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<xsl:import href="apichanges.xsl" />
+ <xsl:import href="jsonhelp.xsl" />
<xsl:output method="xml" indent="yes" xalan:indent-amount="4"/>
<xsl:param name="date"/>
<xsl:param name="url-prefix" select="''"/>
-
+ <xsl:param name="maturity" />
<xsl:template match="/" >
<atom:feed>
<atom:id>urn:netbeans-org:apichanges</atom:id>
- <atom:title>Apache NetBeans (incubating) API Changes</atom:title>
- <atom:author><atom:name>netbeans.org</atom:name></atom:author>
+ <xsl:element name="atom:title">
+ <xsl:call-template name="apachenetbeanstext" >
+ <xsl:with-param name="maturity">
+ <xsl:value-of select="$maturity"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>API Changes</xsl:text>
+ </xsl:element>
+ <atom:author>
+ <atom:name>netbeans.org</atom:name>
+ </atom:author>
<atom:link rel="alternate" type="text/html" href="apichanges.html"/>
<atom:link rel="self" type="application/xml+atom" href="http://deadlock.netbeans.org/job/nbms-and-javadoc/javadoc/apichanges.atom"/>
- <atom:updated><xsl:value-of select="$date"/></atom:updated>
+ <atom:updated>
+ <xsl:value-of select="$date"/>
+ </atom:updated>
<xsl:apply-templates select="//change">
<xsl:sort data-type="number" order="descending" select="date/@year"/>
<xsl:sort data-type="number" order="descending" select="date/@month"/>
@@ -43,25 +55,51 @@
<xsl:template match="change">
<atom:entry>
- <xsl:if test="@id"><atom:id>urn:netbeans-org:apichanges:<xsl:value-of select="@id"/></atom:id></xsl:if>
- <atom:title type="xhtml"><xhtml:div>[<xsl:value-of select="translate(substring-before(@url,'/'), '-', '.')"/>] <xsl:apply-templates select="summary/node()" mode="xhtmlify"/></xhtml:div></atom:title>
+ <xsl:if test="@id">
+ <atom:id>urn:netbeans-org:apichanges:<xsl:value-of select="@id"/></atom:id>
+ </xsl:if>
+ <atom:title type="xhtml">
+ <xhtml:div>[<xsl:value-of select="translate(substring-before(@url,'/'), '-', '.')"/>] <xsl:apply-templates select="summary/node()" mode="xhtmlify"/></xhtml:div>
+ </atom:title>
<!-- XXX is the relative URL legal? -->
- <atom:link rel="alternate" type="text/html"><xsl:attribute name="href"><xsl:value-of select="$url-prefix"/><xsl:value-of select="@url"/>#<xsl:value-of select="@id"/></xsl:attribute></atom:link>
- <xsl:if test="date"><atom:updated><xsl:value-of select="date/@year"/>-<xsl:if test="string-length(date/@month) = 1">0</xsl:if><xsl:value-of select="date/@month"/>-<xsl:if test="string-length(date/@day) = 1">0</xsl:if><xsl:value-of select="date/@day"/>T00:00:00Z</atom:updated></xsl:if>
- <xsl:if test="author"><atom:author><atom:name><xsl:value-of select="author/@login"/></atom:name><atom:email><xsl:value-of select="author/@login"/>@netbeans.org</atom:email></atom:author></xsl:if>
- <atom:summary type="xhtml"><xhtml:div><xsl:apply-templates select="description" mode="xhtmlify"/></xhtml:div></atom:summary>
+ <atom:link rel="alternate" type="text/html">
+ <xsl:attribute name="href">
+ <xsl:value-of select="$url-prefix"/>
+ <xsl:value-of select="@url"/>#<xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </atom:link>
+ <xsl:if test="date">
+ <atom:updated>
+ <xsl:value-of select="date/@year"/>-<xsl:if test="string-length(date/@month) = 1">0</xsl:if>
+ <xsl:value-of select="date/@month"/>-<xsl:if test="string-length(date/@day) = 1">0</xsl:if>
+ <xsl:value-of select="date/@day"/>T00:00:00Z</atom:updated>
+ </xsl:if>
+ <xsl:if test="author">
+ <atom:author>
+ <atom:name>
+ <xsl:value-of select="author/@login"/>
+ </atom:name>
+ <atom:email>
+ <xsl:value-of select="author/@login"/>@netbeans.org</atom:email>
+ </atom:author>
+ </xsl:if>
+ <atom:summary type="xhtml">
+ <xhtml:div>
+ <xsl:apply-templates select="description" mode="xhtmlify"/>
+ </xhtml:div>
+ </atom:summary>
</atom:entry>
</xsl:template>
<xsl:template match="*" mode="xhtmlify" priority="2">
- <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
- <xsl:apply-templates select="@*|node()"/>
- </xsl:element>
+ <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:element>
</xsl:template>
<xsl:template match="@*|node()" mode="xhtmlify" priority="1">
- <xsl:copy>
- <xsl:apply-templates select="@*|node()"/>
- </xsl:copy>
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
</xsl:template>
</xsl:stylesheet>
diff --git a/nbbuild/javadoctools/export2apichanges.xsl b/nbbuild/javadoctools/export2apichanges.xsl
index a0176d9..0bcf4cb 100644
--- a/nbbuild/javadoctools/export2apichanges.xsl
+++ b/nbbuild/javadoctools/export2apichanges.xsl
@@ -21,7 +21,8 @@
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="apichanges.xsl" />
-
+ <xsl:import href="jsonhelp.xsl" />
+ <xsl:import href="export2allmodules.xsl" />
<xsl:output method="html"/>
<xsl:param name="date" />
<xsl:param name="changes-since-year" />
@@ -29,91 +30,131 @@
<xsl:param name="changes-since-day" />
<xsl:param name="include-introduction" select="'true'" />
<xsl:param name="url-prefix" select="''" />
-
+ <xsl:param name="maturity" />
+ <xsl:param name="version" />
+ <xsl:param name="releaseinfo" />
+ <xsl:param name="allmodule" />
+
<xsl:template match="/" >
- <xsl:choose>
- <xsl:when test="$include-introduction='true'" >
- <html>
- <head>
- <!-- projects.netbeans.org -->
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <title>Apache NetBeans (incubating) API Changes since Last Release</title>
- <link rel="stylesheet" href="netbeans.css" type="text/css"/>
-
- <link REL="icon" href="http://www.netbeans.org/favicon.ico" type="image/ico" />
- <link REL="shortcut icon" href="http://www.netbeans.org/favicon.ico" />
- <link type="application/atom+xml" rel="alternate" href="apichanges.atom"/>
-
- </head>
-
- <body>
-
-
- <center>
- <h1>Apache NetBeans (incubating) API Changes since Last Release</h1>
- <h3>Apache NetBeans (incubating) 11.0</h3>
- <xsl:if test="$date" >
- <xsl:value-of select="$date" />
- <p/>
- </xsl:if>
- </center>
-
- This document highlights changes in <a href="index.html">NetBeans APIs</a>
- since previous version (i.e.
- <xsl:value-of select="$changes-since-day" />
- <xsl:text> </xsl:text>
- <xsl:choose>
- <xsl:when test="$changes-since-month=1">Jan</xsl:when>
- <xsl:when test="$changes-since-month=2">Feb</xsl:when>
- <xsl:when test="$changes-since-month=3">Mar</xsl:when>
- <xsl:when test="$changes-since-month=4">Apr</xsl:when>
- <xsl:when test="$changes-since-month=5">May</xsl:when>
- <xsl:when test="$changes-since-month=6">Jun</xsl:when>
- <xsl:when test="$changes-since-month=7">Jul</xsl:when>
- <xsl:when test="$changes-since-month=8">Aug</xsl:when>
- <xsl:when test="$changes-since-month=9">Sep</xsl:when>
- <xsl:when test="$changes-since-month=10">Oct</xsl:when>
- <xsl:when test="$changes-since-month=11">Nov</xsl:when>
- <xsl:when test="$changes-since-month=12">Dec</xsl:when>
- </xsl:choose>
- <xsl:text> </xsl:text>
- <xsl:value-of select="$changes-since-year" />
- <xsl:text>). There are also other documents that list changes
- made for </xsl:text>
- <a href="http://www.netbeans.org/download/5_0/javadoc/apichanges.html">release 5.0</a>,
- <a href="http://www.netbeans.org/download/5_5/javadoc/apichanges.html">release 5.5</a>,
- <a href="http://bits.netbeans.org/6.0/javadoc/apichanges.html">release 6.0</a>,
- <a href="http://bits.netbeans.org/6.1/javadoc/apichanges.html">release 6.1</a>,
- <a href="http://bits.netbeans.org/6.5/javadoc/apichanges.html">release 6.5</a>,
- <a href="http://bits.netbeans.org/6.7/javadoc/apichanges.html">release 6.7</a>,
- <a href="http://bits.netbeans.org/6.8/javadoc/apichanges.html">release 6.8</a>,
- <a href="http://bits.netbeans.org/6.9/javadoc/apichanges.html">release 6.9</a>,
- <a href="http://bits.netbeans.org/6.9.1/javadoc/apichanges.html">release 6.9.1</a>,
- <a href="http://bits.netbeans.org/7.0/javadoc/apichanges.html">release 7.0</a>,
- <a href="http://bits.netbeans.org/7.0.1/javadoc/apichanges.html">release 7.0.1</a>,
- <a href="http://bits.netbeans.org/7.1/javadoc/apichanges.html">release 7.1</a>,
- <a href="http://bits.netbeans.org/7.1.1/javadoc/apichanges.html">release 7.1.1</a>,
- <a href="http://bits.netbeans.org/7.1.2/javadoc/apichanges.html">release 7.1.2</a>,
- <a href="http://bits.netbeans.org/7.2/javadoc/apichanges.html">release 7.2</a>,
- <a href="http://bits.netbeans.org/7.2.1/javadoc/apichanges.html">release 7.2.1</a>,
- <a href="http://bits.netbeans.org/7.3/javadoc/apichanges.html">release 7.3</a>,
- <a href="http://bits.netbeans.org/7.3.1/javadoc/apichanges.html">release 7.3.1</a>,
- <a href="http://bits.netbeans.org/7.4/javadoc/apichanges.html">release 7.4</a>,
- <a href="http://bits.netbeans.org/8.0/javadoc/apichanges.html">release 8.0</a>,
- <a href="http://bits.netbeans.org/8.0.1/javadoc/apichanges.html">release 8.0.1</a>,
- <a href="http://bits.netbeans.org/8.1/javadoc/apichanges.html">release 8.1</a>,
- <a href="http://bits.netbeans.org/8.2/javadoc/apichanges.html">release 8.2</a>,
- <a href="http://bits.netbeans.org/9.0/javadoc/apichanges.html">release 9.0</a>,
- <a href="http://bits.netbeans.org/10.0/javadoc/apichanges.html">release 10.0</a>.
- <xsl:call-template name="do-the-table" />
- </body>
- </html>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="do-the-table" />
- </xsl:otherwise>
- </xsl:choose>
-
+ <xsl:choose>
+ <xsl:when test="$include-introduction='true'" >
+ <xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
+ <html>
+ <xsl:call-template name="htmlheader" >
+ <xsl:with-param name="title" >APIs Changes</xsl:with-param>
+ <xsl:with-param name="maturity" select="$maturity" />
+ <xsl:with-param name="version" select="$version"/>
+ </xsl:call-template>
+ <body>
+ <xsl:call-template name="htmlmainmenu" >
+ <xsl:with-param name="title" >APIs Changes</xsl:with-param>
+ <xsl:with-param name="maturity" select="$maturity" />
+ <xsl:with-param name="version" select="$version"/>
+ <xsl:with-param name="releaseinfo" select="$releaseinfo"/>
+ <xsl:with-param name="menukey" >apichanges</xsl:with-param>
+ </xsl:call-template>
+
+
+ <div class="apidocmaincontent">
+ <xsl:call-template name="build-docmenu" >
+ <xsl:with-param name="menukey" >apichanges</xsl:with-param>
+ <xsl:with-param name="date" select="$date"/>
+ </xsl:call-template>
+
+ <div class="innercontent">
+ <div class="abstract">
+ This document highlights changes in <a href="index.html">NetBeans APIs</a>
+ since previous version (i.e.
+ <xsl:value-of select="$changes-since-day" />
+ <xsl:text> </xsl:text>
+ <xsl:choose>
+ <xsl:when test="$changes-since-month=1">Jan</xsl:when>
+ <xsl:when test="$changes-since-month=2">Feb</xsl:when>
+ <xsl:when test="$changes-since-month=3">Mar</xsl:when>
+ <xsl:when test="$changes-since-month=4">Apr</xsl:when>
+ <xsl:when test="$changes-since-month=5">May</xsl:when>
+ <xsl:when test="$changes-since-month=6">Jun</xsl:when>
+ <xsl:when test="$changes-since-month=7">Jul</xsl:when>
+ <xsl:when test="$changes-since-month=8">Aug</xsl:when>
+ <xsl:when test="$changes-since-month=9">Sep</xsl:when>
+ <xsl:when test="$changes-since-month=10">Oct</xsl:when>
+ <xsl:when test="$changes-since-month=11">Nov</xsl:when>
+ <xsl:when test="$changes-since-month=12">Dec</xsl:when>
+ </xsl:choose>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$changes-since-year" />
+ <xsl:text>). </xsl:text>
+ </div>
+ <hr/>
+ <!--
+ There are also other documents that list changes
+ made for releaso of the Oracle era: </xsl:text>
+ <p>
+ <a href="http://www.netbeans.org/download/5_0/javadoc/apichanges.html">release 5.0</a>,
+ <a href="http://www.netbeans.org/download/5_5/javadoc/apichanges.html">release 5.5</a>,
+ <a href="http://bits.netbeans.org/6.0/javadoc/apichanges.html">release 6.0</a>,
+ <a href="http://bits.netbeans.org/6.1/javadoc/apichanges.html">release 6.1</a>,
+ <a href="http://bits.netbeans.org/6.5/javadoc/apichanges.html">release 6.5</a>,
+ <a href="http://bits.netbeans.org/6.7/javadoc/apichanges.html">release 6.7</a>,
+ <a href="http://bits.netbeans.org/6.8/javadoc/apichanges.html">release 6.8</a>,
+ <a href="http://bits.netbeans.org/6.9/javadoc/apichanges.html">release 6.9</a>,
+ <a href="http://bits.netbeans.org/6.9.1/javadoc/apichanges.html">release 6.9.1</a>,
+ <a href="http://bits.netbeans.org/7.0/javadoc/apichanges.html">release 7.0</a>,
+ <a href="http://bits.netbeans.org/7.0.1/javadoc/apichanges.html">release 7.0.1</a>,
+ <a href="http://bits.netbeans.org/7.1/javadoc/apichanges.html">release 7.1</a>,
+ <a href="http://bits.netbeans.org/7.1.1/javadoc/apichanges.html">release 7.1.1</a>,
+ <a href="http://bits.netbeans.org/7.1.2/javadoc/apichanges.html">release 7.1.2</a>,
+ <a href="http://bits.netbeans.org/7.2/javadoc/apichanges.html">release 7.2</a>,
+ <a href="http://bits.netbeans.org/7.2.1/javadoc/apichanges.html">release 7.2.1</a>,
+ <a href="http://bits.netbeans.org/7.3/javadoc/apichanges.html">release 7.3</a>,
+ <a href="http://bits.netbeans.org/7.3.1/javadoc/apichanges.html">release 7.3.1</a>,
+ <a href="http://bits.netbeans.org/7.4/javadoc/apichanges.html">release 7.4</a>,
+ <a href="http://bits.netbeans.org/8.0/javadoc/apichanges.html">release 8.0</a>,
+ <a href="http://bits.netbeans.org/8.0.1/javadoc/apichanges.html">release 8.0.1</a>,
+ <a href="http://bits.netbeans.org/8.1/javadoc/apichanges.html">release 8.1</a>,
+ <a href="http://bits.netbeans.org/8.2/javadoc/apichanges.html">release 8.2</a>.
+ </p>
+ <p>Apache era:</p>
+ <xsl:variable name="currentversion" select="document($releaseinfo)/*/@position"/>
+ <xsl:for-each select="document($releaseinfo)//release">
+ <xsl:sort data-type="number" select="@position" order="ascending" />
+ <xsl:choose>
+ <xsl:when test="$currentversion = @position">,current release</xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:value-of select="@apidocurl"/>/apichanges.html</xsl:attribute>
+ <xsl:attribute name="target">_top</xsl:attribute>,release <xsl:value-of select="@version"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:for-each>
+ .
+ <a href="http://bits.netbeans.org/9.0/javadoc/apichanges.html">release 9.0</a>,
+ <a href="http://bits.netbeans.org/10.0/javadoc/apichanges.html">release 10.0</a>,
+ <a href="http://bits.netbeans.org/11.0/javadoc/apichanges.html">release 11.0</a>.-->
+ <xsl:call-template name="do-the-table" />
+ </div>
+ </div>
+ <div class="apidocleft">
+ <div class="apidocleft">
+ <xsl:call-template name="listallmodules" />
+ </div>
+ <!--<xsl:call-template name="listallmodules" />-->
+ <!--<xsl:template match="document($allmodule)">-->
+ <!--<xsl:apply-templates select="document($allmodule)" />-->
+ <!--</xsl:template>-->
+ </div>
+ <xsl:call-template name="htmlfooter" />
+ </body>
+ </html>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="do-the-table" />
+ </xsl:otherwise>
+ </xsl:choose>
+
</xsl:template>
<xsl:template name="do-the-table" >
@@ -138,9 +179,13 @@
</xsl:variable>
<xsl:choose>
<xsl:when test="not ($important.change = 'none')">
- <xsl:comment><xsl:value-of select="$important.change"/></xsl:comment>
+ <xsl:comment>
+ <xsl:value-of select="$important.change"/>
+ </xsl:comment>
<xsl:call-template name="change-url">
- <xsl:with-param name="span"><xsl:value-of select="$important.change"/></xsl:with-param>
+ <xsl:with-param name="span">
+ <xsl:value-of select="$important.change"/>
+ </xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
@@ -153,10 +198,17 @@
<xsl:template name="change-url" mode="global-overview">
<xsl:param name="span"></xsl:param>
<xsl:if test="date">(<xsl:apply-templates select="date"/>)<xsl:text> </xsl:text></xsl:if>
- <span><xsl:attribute name="style"><xsl:value-of select="$span"/></xsl:attribute>
- <xsl:value-of select="substring-before(@url,'/')"/></span>:
+ <span>
+ <xsl:attribute name="style">
+ <xsl:value-of select="$span"/>
+ </xsl:attribute>
+ <xsl:value-of select="substring-before(@url,'/')"/>
+ </span>:
<a>
- <xsl:attribute name="href"><xsl:value-of select="$url-prefix"/><xsl:value-of select="@url"/>#<xsl:value-of select="@id"/></xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:value-of select="$url-prefix"/>
+ <xsl:value-of select="@url"/>#<xsl:value-of select="@id"/>
+ </xsl:attribute>
<xsl:apply-templates select="summary/node()"/>
</a>
</xsl:template>
diff --git a/nbbuild/javadoctools/export2branding.xsl b/nbbuild/javadoctools/export2branding.xsl
index 254dc3d..839dd6d 100644
--- a/nbbuild/javadoctools/export2branding.xsl
+++ b/nbbuild/javadoctools/export2branding.xsl
@@ -20,73 +20,94 @@
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:import href="jsonhelp.xsl" />
+ <xsl:import href="export2allmodules.xsl" />
<xsl:output method="html"/>
<xsl:param name="date" />
-
+ <xsl:param name="maturity" />
+ <xsl:param name="version" />
+ <xsl:param name="releaseinfo" />
+
<xsl:template match="/" >
+ <xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
<html>
- <head>
- <!-- projects.netbeans.org -->
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <title>Description Layer Registration in Apache NetBeans (incubating) APIs</title>
- <link rel="stylesheet" href="netbeans.css" type="text/css"/>
-
- <link REL="icon" href="http://www.netbeans.org/favicon.ico" type="image/ico" />
- <link REL="shortcut icon" href="http://www.netbeans.org/favicon.ico" />
-
- </head>
-
- <body>
- <center><h1>Description of Branding APIs for Apache NetBeans (incubating) Platform Applications</h1></center>
-
- <p>
- Applications built on top of NetBeans Platform may change configuration
- of various aspects via branding. E.g. by providing different values
- for certain keys in various <code>Bundle</code>.
- This page summarizes the list of such
- branding APIs defined by <a href="index.html">modules with API</a>.
- </p>
-
- <ul>
- <xsl:for-each select="//api[@type='export' and @group='branding']" >
- <li>
- <b>
- <xsl:choose >
- <xsl:when test="@url" >
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="@url"/>
- </xsl:attribute>
- <xsl:value-of select="@name"></xsl:value-of>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@name"></xsl:value-of>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text> in </xsl:text>
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="ancestor::module/@target"/>
- <xsl:text>#group-branding</xsl:text>
- </xsl:attribute>
- <xsl:value-of select="ancestor::module/@name"/>
- </a>
- </b>
- <p>
- <xsl:apply-templates select="." />
- </p>
- </li>
- </xsl:for-each>
- </ul>
-
- <p>
- To get your API listed here, use
- <code><api type='export' group='branding' ... /></code> in
- your module arch.xml document.
- </p>
- </body>
- </html>
+ <xsl:call-template name="htmlheader" >
+ <xsl:with-param name="title" >APIs Branding</xsl:with-param>
+ <xsl:with-param name="maturity" select="$maturity" />
+ <xsl:with-param name="version" select="$version"/>
+ </xsl:call-template>
+ <body>
+ <xsl:call-template name="htmlmainmenu" >
+ <xsl:with-param name="title" >APIs Branding</xsl:with-param>
+ <xsl:with-param name="maturity" select="$maturity" />
+ <xsl:with-param name="version" select="$version"/>
+ <xsl:with-param name="releaseinfo" select="$releaseinfo"/>
+ <xsl:with-param name="menukey" >branding</xsl:with-param>
+ </xsl:call-template>
+
+ <div class="apidocmaincontent">
+ <xsl:call-template name="build-docmenu" >
+ <xsl:with-param name="menukey" >branding</xsl:with-param>
+ <xsl:with-param name="date" select="$date"/>
+ </xsl:call-template>
+
+ <div class="innercontent">
+ <div class="abstract">
+ <p>
+ Applications built on top of NetBeans Platform may change configuration
+ of various aspects via branding. E.g. by providing different values
+ for certain keys in various <code>Bundle</code>.
+ This page summarizes the list of such
+ branding APIs defined by <a href="index.html">modules with API</a>.
+ </p>
+ <p>
+ To get your API listed here, use
+ <code><api type='export' group='branding' ... /></code> in
+ your module arch.xml document.
+ </p>
+ </div>
+ <hr/>
+
+ <ul>
+ <xsl:for-each select="//api[@type='export' and @group='branding']" >
+ <li>
+ <b>
+ <xsl:choose >
+ <xsl:when test="@url" >
+ <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="@url"/>
+ </xsl:attribute>
+ <xsl:value-of select="@name"></xsl:value-of>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@name"></xsl:value-of>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text> in </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="ancestor::module/@target"/>
+ <xsl:text>#group-branding</xsl:text>
+ </xsl:attribute>
+ <xsl:value-of select="ancestor::module/@name"/>
+ </a>
+ </b>
+ <p>
+ <xsl:apply-templates select="." />
+ </p>
+ </li>
+ </xsl:for-each>
+ </ul>
+ </div>
+ </div>
+ <div class="apidocleft">
+ <xsl:call-template name="listallmodules" />
+ </div>
+ <xsl:call-template name="htmlfooter" />
+ </body>
+ </html>
</xsl:template>
<xsl:template match="api-ref">
@@ -97,7 +118,9 @@
</xsl:template>
<xsl:template match="usecase">
- <h4><xsl:value-of select="@name" /></h4>
+ <h4>
+ <xsl:value-of select="@name" />
+ </h4>
<xsl:apply-templates select="./node()" />
</xsl:template>
@@ -105,11 +128,11 @@
<xsl:variable name="target" select="ancestor::module/@target"/>
<xsl:variable name="top" select="substring-before($target,'/')" />
- <xsl:call-template name="print-url" >
+ <xsl:call-template name="print-url" >
<xsl:with-param name="url" select="@href" />
<xsl:with-param name="base" select="$target" />
<xsl:with-param name="top" select="$top" />
- </xsl:call-template>
+ </xsl:call-template>
</xsl:template>
<xsl:template name="print-url" >
@@ -152,7 +175,7 @@
</xsl:when>
<xsl:otherwise>
<xsl:comment>This must be a reference relative to the arch page, if not see nbbuild/javadoctools/export2usecases.xsl
- </xsl:comment>
+ </xsl:comment>
<a>
<xsl:attribute name="href">
<xsl:value-of select="$base" />
@@ -166,11 +189,11 @@
</xsl:template>
<xsl:template match="@*|node()">
- <xsl:copy >
- <xsl:apply-templates select="@*|node()"/>
- </xsl:copy>
+ <xsl:copy >
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
</xsl:template>
-
+
</xsl:stylesheet>
diff --git a/nbbuild/javadoctools/export2html.xsl b/nbbuild/javadoctools/export2html.xsl
index acc5c72..acc5ea1 100644
--- a/nbbuild/javadoctools/export2html.xsl
+++ b/nbbuild/javadoctools/export2html.xsl
@@ -20,124 +20,234 @@
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:import href="jsonhelp.xsl" />
<xsl:output method="html"/>
<xsl:param name="date" />
<xsl:param name="download" select="'true'"/>
-
+ <xsl:param name="maturity" />
+ <xsl:param name="version" />
+ <xsl:param name="releaseinfo" />
+
<!-- unique key over all groups of apis -->
<xsl:key match="//api[@type='export']" name="apiGroups" use="@group" />
<!-- unique key over all names of apis -->
<xsl:key match="//api" name="apiNames" use="@name" />
-
<xsl:template match="/apis" >
+ <xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
<html>
- <head>
- <!-- projects.netbeans.org -->
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <title>Apache NetBeans (incubating) API List</title>
- <link rel="stylesheet" href="netbeans.css" type="text/css"/>
+ <head>
+ <!-- projects.netbeans.org -->
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <xsl:element name="title">
+ <xsl:call-template name="apachenetbeanstext" >
+ <xsl:with-param name="maturity">
+ <xsl:value-of select="$maturity"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>API List</xsl:text>
+ </xsl:element>
+ <link rel="stylesheet" href="netbeans.css" type="text/css"/>
+ <link rel="icon" type="image/png" sizes="32x32" href="//netbeans.apache.org/favicon-32x32.png" />
+ <link rel="icon" type="image/png" sizes="16x16" href="//netbeans.apache.org/favicon-16x16.png" />
+
- <link REL="icon" href="http://www.netbeans.org/favicon.ico" type="image/ico" />
- <link REL="shortcut icon" href="http://www.netbeans.org/favicon.ico" />
+ </head>
- </head>
+ <body>
- <body>
+ <center>
+ <xsl:element name="h1">
+ <xsl:call-template name="apachenetbeanstext" >
+ <xsl:with-param name="maturity">
+ <xsl:value-of select="$maturity"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>API List</xsl:text>
+ </xsl:element>
+ <xsl:element name="h3">
+ <xsl:call-template name="apachenetbeansversion" >
+ <xsl:with-param name="maturity">
+ <xsl:value-of select="$maturity"/>
+ </xsl:with-param>
+ <xsl:with-param name="version">
+ <xsl:value-of select="$version"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:element>
+ <xsl:if test="$date" >
+ <xsl:value-of select="$date" />
+ <p/>
+ </xsl:if>
+ </center>
- <center>
- <h1>Apache NetBeans (incubating) API List</h1>
- <h3>Apache NetBeans (incubating) 11.0</h3>
- <xsl:if test="$date" >
- <xsl:value-of select="$date" />
+ This document provides a list of <em>NetBeans APIs</em> with a short description
+ of what they are used for, and a table describing different types of interfaces
+ (see <a href="http://wiki.netbeans.org/API_Design">What is
+ an API?</a> to understand why we list DTDs, file formats, etc.) and with
+ a stability category (<span style="background:#ffffff">stable and official</span>,
+ <span style="background:#ddcc80">under development</span>,
+ <span style="background:#afafaf;text-decoration:line-through">deprecated</span>,
+ <span style="background:#e0c0c0">friend or private</span>;
+ see <a href="http://wiki.netbeans.org/API_Stability">API
+ stability</a> for more info).
+ The aim is to provide as detailed a definition of NetBeans module
+ external interfaces as possible and give other developers a chance to decide
+ whether they want to depend on a particular API or not.
<p/>
- </xsl:if>
- </center>
-
- This document provides a list of <em>NetBeans APIs</em> with a short description
- of what they are used for, and a table describing different types of interfaces
- (see <a href="http://wiki.netbeans.org/API_Design">What is
- an API?</a> to understand why we list DTDs, file formats, etc.) and with
- a stability category (<span style="background:#ffffff">stable and official</span>,
- <span style="background:#ddcc80">under development</span>,
- <span style="background:#afafaf;text-decoration:line-through">deprecated</span>,
- <span style="background:#e0c0c0">friend or private</span>;
- see <a
- href="http://wiki.netbeans.org/API_Stability">API
- stability</a> for more info).
- The aim is to provide as detailed a definition of NetBeans module
- external interfaces as possible and give other developers a chance to decide
- whether they want to depend on a particular API or not.
- <p/>
- Some of these APIs are part of the
- <a href="http://platform.netbeans.org/">NetBeans Platform</a>
- (for example lookup,
- loaders, utilities, nodes, explorer, window systems, multiview, etc.), some of them
- are specific to
- <a href="http://www.netbeans.org/products/ide/index.html">NetBeans IDE</a>
- (projects, javacore, diff, etc.) and some
- are not included in the release at all and are just provided for download
- (usually via autoupdate). Basically when building an application based on
- <em>NetBeans</em> one is free to choose the set of modules and their APIs
- to satisfy one's needs.
- <p>
- This is a list of APIs for Apache NetBeans (incubating) 11.0 version, if you want to see
- a list of APIs for a particular version, you may want to go to:
- </p>
- <ul>
- <li><a href="http://bits.netbeans.org/dev/javadoc/" target="_top">Dev</a> - Javadoc as released for development version</li>
- <li><a href="http://bits.netbeans.org/10.0/javadoc/" target="_top">10.0</a> - Javadoc as released for Apache NetBeans (incubating) IDE 10.0</li>
- <li><a href="http://bits.netbeans.org/9.0/javadoc/" target="_top">9.0</a> - Javadoc as released for Apache NetBeans (incubating) IDE 9.0</li>
- <li><a href="http://bits.netbeans.org/8.2/javadoc/" target="_top">8.2</a> - Javadoc as released for NetBeans IDE 8.2</li>
- <li><a href="http://bits.netbeans.org/8.1/javadoc/" target="_top">8.1</a> - Javadoc as released for NetBeans IDE 8.1</li>
- <li><a href="http://bits.netbeans.org/8.0.1/javadoc/" target="_top">8.0.1</a> - Javadoc as released for NetBeans IDE 8.0.1</li>
- <li><a href="http://bits.netbeans.org/8.0/javadoc/" target="_top">8.0</a> - Javadoc as released for NetBeans IDE 8.0</li>
- <li><a href="http://bits.netbeans.org/7.4/javadoc/" target="_top">7.4</a> - Javadoc as released for NetBeans IDE 7.4</li>
- <li><a href="http://bits.netbeans.org/7.3.1/javadoc/" target="_top">7.3.1</a> - Javadoc as released for NetBeans IDE 7.3.1</li>
- <li><a href="http://bits.netbeans.org/7.3/javadoc/" target="_top">7.3</a> - Javadoc as released for NetBeans IDE 7.3</li>
- <li><a href="http://bits.netbeans.org/7.2.1/javadoc/" target="_top">7.2.1</a> - Javadoc as released for NetBeans IDE 7.2.1</li>
- <li><a href="http://bits.netbeans.org/7.2/javadoc/" target="_top">7.2</a> - Javadoc as released for NetBeans IDE 7.2</li>
- <li><a href="http://bits.netbeans.org/7.1.2/javadoc/" target="_top">7.1.2</a> - Javadoc as released for NetBeans IDE 7.1.2</li>
- <li><a href="http://bits.netbeans.org/7.1.1/javadoc/" target="_top">7.1.1</a> - Javadoc as released for NetBeans IDE 7.1.1</li>
- <li><a href="http://bits.netbeans.org/7.1/javadoc/" target="_top">7.1</a> - Javadoc as released for NetBeans IDE 7.1</li>
- <li><a href="http://bits.netbeans.org/7.0.1/javadoc/" target="_top">7.0.1</a> - Javadoc as released for NetBeans IDE 7.0.1</li>
- <li><a href="http://bits.netbeans.org/7.0/javadoc/" target="_top">7.0</a> - Javadoc as released for NetBeans IDE 7.0</li>
- <li><a href="http://bits.netbeans.org/6.9.1/javadoc/" target="_top">6.9.1</a> - Javadoc as released for NetBeans IDE 6.9.1</li>
- <li><a href="http://bits.netbeans.org/6.9/javadoc/" target="_top">6.9</a> - Javadoc as released for NetBeans IDE 6.9</li>
- <li><a href="http://bits.netbeans.org/6.8/javadoc/" target="_top">6.8</a> - Javadoc as released for NetBeans IDE 6.8</li>
- <li><a href="http://bits.netbeans.org/6.7/javadoc/" target="_top">6.7</a> - Javadoc as released for NetBeans IDE 6.7</li>
- <li><a href="http://bits.netbeans.org/6.5/javadoc/" target="_top">6.5</a> - Javadoc as released for NetBeans IDE 6.5</li>
- <li><a href="http://bits.netbeans.org/6.1/javadoc/" target="_top">6.1</a> - Javadoc as released for NetBeans IDE 6.1</li>
- <li><a href="http://bits.netbeans.org/6.0/javadoc/" target="_top">6.0</a> - Javadoc as released for NetBeans IDE 6.0</li>
- <li><a href="http://www.netbeans.org/download/5_5_1/javadoc/" target="_top">5.5.1</a> - Javadoc as released for NetBeans IDE 5.5.1</li>
- <li><a href="http://www.netbeans.org/download/5_5/javadoc/" target="_top">5.5</a> - Javadoc as released for NetBeans IDE 5.5</li>
- <li><a href="http://www.netbeans.org/download/5_0/javadoc/" target="_top">5.0</a> - Javadoc as released for NetBeans IDE 5.0</li>
- </ul>
- <p/>
- To get the API of your module listed here, see the documentation for the
- Javadoc building
- <a href="http://wiki.netbeans.org/APIDevelopment">infrastructure</a>.
+ Some of these APIs are part of the
+ <a href="http://platform.netbeans.org/">NetBeans Platform</a>
+ (for example lookup,
+ loaders, utilities, nodes, explorer, window systems, multiview, etc.), some of them
+ are specific to
+ <a href="http://www.netbeans.org/products/ide/index.html">NetBeans IDE</a>
+ (projects, javacore, diff, etc.) and some
+ are not included in the release at all and are just provided for download
+ (usually via autoupdate). Basically when building an application based on
+ <em>NetBeans</em> one is free to choose the set of modules and their APIs
+ to satisfy one's needs.
+ <p>
+ This is a list of APIs for
+ <xsl:call-template name="apachenetbeansversion" >
+ <xsl:with-param name="maturity">
+ <xsl:value-of select="$maturity"/>
+ </xsl:with-param>
+ <xsl:with-param name="version">
+ <xsl:value-of select="$version"/>
+ </xsl:with-param>
+ </xsl:call-template>, if you want to see
+ a list of APIs at for a particular version, you may want to go to:
+ </p>
+ <ul>
+ <xsl:variable name="currentversion" select="document($releaseinfo)/*/@position"/>
+ <xsl:for-each select="document($releaseinfo)//release">
+ <xsl:sort data-type="number" select="@position" order="descending" />
+ <li>
+ <xsl:choose>
+ <xsl:when test="$currentversion = @position">
+ This is were your are - Javadoc as released for
+ <xsl:call-template name="apachenetbeansversion" >
+ <xsl:with-param name="maturity">
+ <xsl:value-of select="@tlp"/>
+ </xsl:with-param>
+ <xsl:with-param name="version">
+ <xsl:value-of select="@version"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:value-of select="@apidocurl"/>
+ </xsl:attribute>
+ <xsl:attribute name="target">_top</xsl:attribute>
+ <xsl:value-of select="@version"/>
+ </xsl:element>
+ - Javadoc as released for
+ <xsl:call-template name="apachenetbeansversion" >
+ <xsl:with-param name="maturity">
+ <xsl:value-of select="@tlp"/>
+ </xsl:with-param>
+ <xsl:with-param name="version">
+ <xsl:value-of select="@version"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </li>
+ </xsl:for-each>
+ </ul>
+ <p>
+ This is a list of apidocs of NetBeans of Oracle era.
+ </p>
+ <ul>
+ <li>
+ <a href="http://bits.netbeans.org/8.2/javadoc/" target="_top">8.2</a> - Javadoc as released for NetBeans IDE 8.2</li>
+ <li>
+ <a href="http://bits.netbeans.org/8.1/javadoc/" target="_top">8.1</a> - Javadoc as released for NetBeans IDE 8.1</li>
+ <li>
+ <a href="http://bits.netbeans.org/8.0.1/javadoc/" target="_top">8.0.1</a> - Javadoc as released for NetBeans IDE 8.0.1</li>
+ <li>
+ <a href="http://bits.netbeans.org/8.0/javadoc/" target="_top">8.0</a> - Javadoc as released for NetBeans IDE 8.0</li>
+ <li>
+ <a href="http://bits.netbeans.org/7.4/javadoc/" target="_top">7.4</a> - Javadoc as released for NetBeans IDE 7.4</li>
+ <li>
+ <a href="http://bits.netbeans.org/7.3.1/javadoc/" target="_top">7.3.1</a> - Javadoc as released for NetBeans IDE 7.3.1</li>
+ <li>
+ <a href="http://bits.netbeans.org/7.3/javadoc/" target="_top">7.3</a> - Javadoc as released for NetBeans IDE 7.3</li>
+ <li>
+ <a href="http://bits.netbeans.org/7.2.1/javadoc/" target="_top">7.2.1</a> - Javadoc as released for NetBeans IDE 7.2.1</li>
+ <li>
+ <a href="http://bits.netbeans.org/7.2/javadoc/" target="_top">7.2</a> - Javadoc as released for NetBeans IDE 7.2</li>
+ <li>
+ <a href="http://bits.netbeans.org/7.1.2/javadoc/" target="_top">7.1.2</a> - Javadoc as released for NetBeans IDE 7.1.2</li>
+ <li>
+ <a href="http://bits.netbeans.org/7.1.1/javadoc/" target="_top">7.1.1</a> - Javadoc as released for NetBeans IDE 7.1.1</li>
+ <li>
+ <a href="http://bits.netbeans.org/7.1/javadoc/" target="_top">7.1</a> - Javadoc as released for NetBeans IDE 7.1</li>
+ <li>
+ <a href="http://bits.netbeans.org/7.0.1/javadoc/" target="_top">7.0.1</a> - Javadoc as released for NetBeans IDE 7.0.1</li>
+ <li>
+ <a href="http://bits.netbeans.org/7.0/javadoc/" target="_top">7.0</a> - Javadoc as released for NetBeans IDE 7.0</li>
+ <li>
+ <a href="http://bits.netbeans.org/6.9.1/javadoc/" target="_top">6.9.1</a> - Javadoc as released for NetBeans IDE 6.9.1</li>
+ <li>
+ <a href="http://bits.netbeans.org/6.9/javadoc/" target="_top">6.9</a> - Javadoc as released for NetBeans IDE 6.9</li>
+ <li>
+ <a href="http://bits.netbeans.org/6.8/javadoc/" target="_top">6.8</a> - Javadoc as released for NetBeans IDE 6.8</li>
+ <li>
+ <a href="http://bits.netbeans.org/6.7/javadoc/" target="_top">6.7</a> - Javadoc as released for NetBeans IDE 6.7</li>
+ <li>
+ <a href="http://bits.netbeans.org/6.5/javadoc/" target="_top">6.5</a> - Javadoc as released for NetBeans IDE 6.5</li>
+ <li>
+ <a href="http://bits.netbeans.org/6.1/javadoc/" target="_top">6.1</a> - Javadoc as released for NetBeans IDE 6.1</li>
+ <li>
+ <a href="http://bits.netbeans.org/6.0/javadoc/" target="_top">6.0</a> - Javadoc as released for NetBeans IDE 6.0</li>
+ <li>
+ <a href="http://www.netbeans.org/download/5_5_1/javadoc/" target="_top">5.5.1</a> - Javadoc as released for NetBeans IDE 5.5.1</li>
+ <li>
+ <a href="http://www.netbeans.org/download/5_5/javadoc/" target="_top">5.5</a> - Javadoc as released for NetBeans IDE 5.5</li>
+ <li>
+ <a href="http://www.netbeans.org/download/5_0/javadoc/" target="_top">5.0</a> - Javadoc as released for NetBeans IDE 5.0</li>
+ </ul>
+ <p/>
+ To get the API of your module listed here, see the documentation for the
+ Javadoc building
+ <a href="http://wiki.netbeans.org/APIDevelopment">infrastructure</a>.
- <h4>Additional Sources of Information</h4>
+ <h4>Additional Sources of Information</h4>
- <ul>
- <li><a href="apichanges.html">Changes since previous release</a></li>
- <li><a href="usecases.html">How to use certain NetBeans APIs</a></li>
- <li><a href="allclasses-frame.html">Index of all NetBeans API classes</a></li>
- <li><a href="layers.html">Extracted List of Layer APIs</a></li>
- <li><a href="properties.html">Extracted List of Property APIs</a></li>
- <li><a href="branding.html">Extracted List of Branding APIs</a></li>
- </ul>
+ <ul>
+ <li>
+ <a href="apichanges.html">Changes since previous release</a>
+ </li>
+ <li>
+ <a href="usecases.html">How to use certain NetBeans APIs</a>
+ </li>
+ <li>
+ <a href="allclasses-frame.html">Index of all NetBeans API classes</a>
+ </li>
+ <li>
+ <a href="layers.html">Extracted List of Layer APIs</a>
+ </li>
+ <li>
+ <a href="properties.html">Extracted List of Property APIs</a>
+ </li>
+ <li>
+ <a href="branding.html">Extracted List of Branding APIs</a>
+ </li>
+ </ul>
- <h4>FAQ and Mailing List</h4>
+ <h4>FAQ and Mailing List</h4>
- <p>Can't find what you're looking for? Try the <a href="https://netbeans.apache.org" target="_top">Apache NetBeans (incubating) website</a>.</p>
+ <p>Can't find what you're looking for? Try the <a href="https://netbeans.apache.org" target="_top">Apache NetBeans website</a>.</p>
- <hr/>
- <xsl:call-template name="list-modules" />
- <hr/>
- <xsl:apply-templates />
+ <hr/>
+ <xsl:call-template name="list-modules" />
+ <hr/>
+ <xsl:apply-templates />
- </body>
+ </body>
</html>
</xsl:template>
@@ -146,85 +256,94 @@
<h2>Content</h2>
<ul>
<xsl:for-each select="/apis/module" >
- <xsl:sort select="@name" />
+ <xsl:sort select="@name" />
<xsl:choose>
<xsl:when test="api" >
- <li>
- <span>
- <xsl:attribute name="style">
- <xsl:choose>
- <xsl:when test="descendant::api[@category='stable' and @group='java']">background:#ffffff</xsl:when>
- <xsl:when test="descendant::api[@category='official' and @group='java']">background:#ffffff</xsl:when>
- <xsl:when test="descendant::api[@category='devel' and @group='java']">background:#ddcc80</xsl:when>
- <xsl:when test="descendant::api[@category='deprecated' and @group='java']">text-decoration: line-through</xsl:when>
- <xsl:otherwise>background:#e0c0c0</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <a>
- <xsl:attribute name="href"><xsl:value-of select="substring-before(@target,'/')" />/overview-summary.html</xsl:attribute>
- <xsl:attribute name="target">classFrame</xsl:attribute>
- <xsl:value-of select="@name"/>
- </a> -
- <!-- XXX the following is crap; e.g. messes up descs of Dialogs API, I/O API, ... -->
- <!-- Should use e.g.:
- <answer id="arch-what">
- <span class="summary">This API does such-and-such.</span>
- It also does some other less important stuff.
- </answer>
- -->
- <xsl:comment>Begin of first sentenece</xsl:comment>
- <xsl:apply-templates mode="first-sentence" select="description" />
- <xsl:comment>End of first sentenece</xsl:comment>.
- </span>
+ <li>
+ <span>
+ <xsl:attribute name="style">
+ <xsl:choose>
+ <xsl:when test="descendant::api[@category='stable' and @group='java']">background:#ffffff</xsl:when>
+ <xsl:when test="descendant::api[@category='official' and @group='java']">background:#ffffff</xsl:when>
+ <xsl:when test="descendant::api[@category='devel' and @group='java']">background:#ddcc80</xsl:when>
+ <xsl:when test="descendant::api[@category='deprecated' and @group='java']">text-decoration: line-through</xsl:when>
+ <xsl:otherwise>background:#e0c0c0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="substring-before(@target,'/')" />/overview-summary.html</xsl:attribute>
+ <xsl:attribute name="target">classFrame</xsl:attribute>
+ <xsl:value-of select="@name"/>
+ </a> -
+ <!-- XXX the following is crap; e.g. messes up descs of Dialogs API, I/O API, ... -->
+ <!-- Should use e.g.:
+ <answer id="arch-what">
+ <span class="summary">This API does such-and-such.</span>
+ It also does some other less important stuff.
+ </answer>
+ -->
+ <xsl:comment>Begin of first sentenece</xsl:comment>
+ <xsl:apply-templates mode="first-sentence" select="description" />
+ <xsl:comment>End of first sentenece</xsl:comment>.
+ </span>
</li>
</xsl:when>
<xsl:otherwise>
- <!-- will be covered later -->
+ <!-- will be covered later -->
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:for-each select="/apis/module" >
<xsl:sort select="api" order="descending" />
- <xsl:sort select="@name" />
+ <xsl:sort select="@name" />
<xsl:choose>
<xsl:when test="api" >
- <!-- covered before -->
+ <!-- covered before -->
</xsl:when>
<xsl:otherwise>
<li>
<xsl:variable name="where" select="substring-before(@target, '/')"/>
- <b><a href="{$where}/overview-summary.html"><xsl:value-of select="$where"/></a></b>
+ <b>
+ <a href="{$where}/overview-summary.html">
+ <xsl:value-of select="$where"/>
+ </a>
+ </b>
- no API description provided
(see <a href="http://wiki.netbeans.org/APIDevelopment">how to do it</a>)
</li>
</xsl:otherwise>
</xsl:choose>
- </xsl:for-each>
+ </xsl:for-each>
</ul>
</xsl:template>
<xsl:template match="module">
- <xsl:variable name="interfaces" select="descendant::api[@type='export' and generate-id() = generate-id(key('apiNames', @name))]" />
- <xsl:variable name="module.name" select="@name" />
- <xsl:variable name="arch.stylesheet" select="@stylesheet" />
- <xsl:variable name="arch.overviewlink" select="@overviewlink" />
- <xsl:variable name="arch.footer" select="@footer" />
- <xsl:variable name="arch.target" select="@target" />
+ <xsl:variable name="interfaces" select="descendant::api[@type='export' and generate-id() = generate-id(key('apiNames', @name))]" />
+ <xsl:variable name="module.name" select="@name" />
+ <xsl:variable name="arch.stylesheet" select="@stylesheet" />
+ <xsl:variable name="arch.overviewlink" select="@overviewlink" />
+ <xsl:variable name="arch.footer" select="@footer" />
+ <xsl:variable name="arch.target" select="@target" />
- <xsl:if test="$interfaces">
- <h3><a name="def-api-{$module.name}"><xsl:value-of select="$module.name"/></a></h3>
+ <xsl:if test="$interfaces">
+ <h3>
+ <a name="def-api-{$module.name}">
+ <xsl:value-of select="$module.name"/>
+ </a>
+ </h3>
- <a>
- <xsl:attribute name="href">
- <xsl:call-template name="filedirapi" >
- <xsl:with-param name="arch.target" select="$arch.target" />
- </xsl:call-template>
- <xsl:text>/index.html</xsl:text>
- </xsl:attribute>
- <xsl:text>javadoc</xsl:text>
- </a>
- <xsl:if test="$download = 'true'"> | <a>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="filedirapi" >
+ <xsl:with-param name="arch.target" select="$arch.target" />
+ </xsl:call-template>
+ <xsl:text>/index.html</xsl:text>
+ </xsl:attribute>
+ <xsl:text>javadoc</xsl:text>
+ </a>
+ <xsl:if test="$download = 'true'"> | <a>
<xsl:attribute name="href">
<xsl:call-template name="filedirapi" >
<xsl:with-param name="arch.target" select="$arch.target" />
@@ -232,75 +351,91 @@
<xsl:text>.zip</xsl:text>
</xsl:attribute>
<xsl:text>download</xsl:text>
- </a></xsl:if>
+ </a>
+ </xsl:if>
+ | <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="$arch.target" />
+ </xsl:attribute>
+ <xsl:text>architecture</xsl:text>
+ </a>
+ <xsl:if test="//module[@name=$module.name]/arch-usecases" >
| <a>
<xsl:attribute name="href">
- <xsl:value-of select="$arch.target" />
+ <xsl:text>usecases.html#usecase-</xsl:text>
+ <xsl:value-of select="$module.name" />
</xsl:attribute>
- <xsl:text>architecture</xsl:text>
- </a>
- <xsl:if test="//module[@name=$module.name]/arch-usecases" >
- | <a>
- <xsl:attribute name="href">
- <xsl:text>usecases.html#usecase-</xsl:text>
- <xsl:value-of select="$module.name" />
- </xsl:attribute>
- <xsl:text>usecases</xsl:text>
- </a>
- </xsl:if>
- <p/>
+ <xsl:text>usecases</xsl:text>
+ </a>
+ </xsl:if>
+ <p/>
- <div><xsl:apply-templates select="description"/></div>
+ <div>
+ <xsl:apply-templates select="description"/>
+ </div>
- <xsl:if test="deploy-dependencies">
- <div>
- <p><b>Usage:</b></p>
- <xsl:apply-templates select="deploy-dependencies"/>
- </div>
- </xsl:if>
-
- <p/><table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%"><tr><td>
- <table border="0" cellpadding="3" cellspacing="1" width="100%">
-<!-- <tr><td COLSPAN="5" class="tablecbg" ALIGN="CENTER"><font CLASS="titlectable">Do not duplicate any files</font></td></tr> -->
- <tr class="tablersh">
- <td align="CENTER" width="30%"><span class="titlectable">Interface Name</span></td>
- <td align="CENTER" width="15%"><span class="titlectable">Stability Classification</span></td>
- <td align="CENTER" ><span class="titlectable">Specified in What Document?</span></td>
- </tr>
-
- <xsl:for-each select="$interfaces">
- <xsl:if test="@group='java'" >
- <xsl:call-template name="api" >
- <xsl:with-param name="arch.target" select="$arch.target" />
- </xsl:call-template>
- </xsl:if>
- </xsl:for-each>
-
- <xsl:for-each select="//api[generate-id() = generate-id(key('apiGroups', @group))]">
- <xsl:variable name="grp" select="@group" />
- <xsl:if test="$grp!='java'" >
- <xsl:variable name="apis" select="/apis" />
- <xsl:variable name="module" select="$apis/module[@name=$module.name]" />
-
- <xsl:variable name="allOfTheGroup" select="$module/api[@group=$grp]" />
- <xsl:if test="$allOfTheGroup">
- <tr class="tabler">
- <td>Set of <xsl:value-of select="$grp"/> APIs</td>
- <td>Individual</td>
- <td>
- <a href="{$arch.target}#group-{$grp}">table with definitions</a>
- </td>
- </tr>
- </xsl:if>
- </xsl:if>
- </xsl:for-each>
-
- </table>
- </td></tr></table>
+ <xsl:if test="deploy-dependencies">
+ <div>
+ <p>
+ <b>Usage:</b>
+ </p>
+ <xsl:apply-templates select="deploy-dependencies"/>
+ </div>
</xsl:if>
+ <p/>
+ <table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%">
+ <tr>
+ <td>
+ <table border="0" cellpadding="3" cellspacing="1" width="100%">
+ <!-- <tr><td COLSPAN="5" class="tablecbg" ALIGN="CENTER"><font CLASS="titlectable">Do not duplicate any files</font></td></tr> -->
+ <tr class="tablersh">
+ <td align="CENTER" width="30%">
+ <span class="titlectable">Interface Name</span>
+ </td>
+ <td align="CENTER" width="15%">
+ <span class="titlectable">Stability Classification</span>
+ </td>
+ <td align="CENTER" >
+ <span class="titlectable">Specified in What Document?</span>
+ </td>
+ </tr>
- <P/>
+ <xsl:for-each select="$interfaces">
+ <xsl:if test="@group='java'" >
+ <xsl:call-template name="api" >
+ <xsl:with-param name="arch.target" select="$arch.target" />
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:for-each>
+
+ <xsl:for-each select="//api[generate-id() = generate-id(key('apiGroups', @group))]">
+ <xsl:variable name="grp" select="@group" />
+ <xsl:if test="$grp!='java'" >
+ <xsl:variable name="apis" select="/apis" />
+ <xsl:variable name="module" select="$apis/module[@name=$module.name]" />
+
+ <xsl:variable name="allOfTheGroup" select="$module/api[@group=$grp]" />
+ <xsl:if test="$allOfTheGroup">
+ <tr class="tabler">
+ <td>Set of <xsl:value-of select="$grp"/> APIs</td>
+ <td>Individual</td>
+ <td>
+ <a href="{$arch.target}#group-{$grp}">table with definitions</a>
+ </td>
+ </tr>
+ </xsl:if>
+ </xsl:if>
+ </xsl:for-each>
+
+ </table>
+ </td>
+ </tr>
+ </table>
+ </xsl:if>
+
+
+ <P/>
</xsl:template>
@@ -356,7 +491,9 @@
</td>
<td> <!-- url -->
- <a href="{$url}"><xsl:value-of select="$url"/></a>
+ <a href="{$url}">
+ <xsl:value-of select="$url"/>
+ </a>
<xsl:if test="$description" >
<p>
<xsl:apply-templates select="$description" />
@@ -395,7 +532,10 @@
<!-- Gets the first sentence with HTML tags -->
<xsl:template mode="first-sentence" match="api-ref">
- <b><xsl:value-of select="@name" /></b><xsl:text> </xsl:text>
+ <b>
+ <xsl:value-of select="@name" />
+ </b>
+ <xsl:text> </xsl:text>
</xsl:template>
<xsl:template mode="first-sentence" match="node()">
@@ -407,15 +547,15 @@
<xsl:when test="$first-sentence" >
<xsl:value-of select="$first-sentence" />
<!-- this trick starts comment which disables output produces after
- Which means comments out everything after the .
- -->
+ Which means comments out everything after the .
+ -->
<xsl:text disable-output-escaping="yes"><!--</xsl:text>
</xsl:when>
<xsl:when test="$first-dot" >
<xsl:value-of select="$first-dot" />
<!-- this trick starts comment which disables output produces after
- Which means comments out everything after the .
- -->
+ Which means comments out everything after the .
+ -->
<xsl:text disable-output-escaping="yes"><!--</xsl:text>
</xsl:when>
<xsl:otherwise>
@@ -432,5 +572,3 @@
</xsl:template>
</xsl:stylesheet>
-
-
diff --git a/nbbuild/javadoctools/export2index.xsl b/nbbuild/javadoctools/export2index.xsl
new file mode 100644
index 0000000..3633bb3
--- /dev/null
+++ b/nbbuild/javadoctools/export2index.xsl
@@ -0,0 +1,445 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:import href="jsonhelp.xsl" />
+ <xsl:import href="export2allmodules.xsl" />
+ <xsl:output method="html"/>
+ <xsl:param name="date" />
+ <xsl:param name="download" select="'true'"/>
+ <xsl:param name="maturity" />
+ <xsl:param name="version" />
+ <xsl:param name="releaseinfo" />
+ <!-- unique key over all groups of apis -->
+ <xsl:key match="//api[@type='export']" name="apiGroups" use="@group" />
+ <!-- unique key over all names of apis -->
+ <xsl:key match="//api" name="apiNames" use="@name" />
+ <xsl:template match="/" >
+ <!-- <frameset cols="20%,80%" title="" onLoad="top.loadFrames()">
+ <frameset rows="30%,70%" title="" onLoad="top.loadFrames()">
+ <frame src="overview-frame.html" name="packageListFrame" title="All Modules"/>
+ <frame src="allclasses-frame.html" name="packageFrame" title="All classes"/>
+ </frameset>
+ <frame src="overview-summary.html" name="classFrame" title="Module, package, class and interface descriptions" scrolling="yes"/>
+ <noframes>
+ <h2>Frame Alert</h2>
+ <p>
+ This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+ Link to <a href="overview-summary.html">Non-frame version.</a>
+ </p>
+ </noframes>
+ </frameset>-->
+ <xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
+ <html>
+ <xsl:call-template name="htmlheader" >
+ <xsl:with-param name="title" >APIs Overview</xsl:with-param>
+ <xsl:with-param name="maturity" select="$maturity" />
+ <xsl:with-param name="version" select="$version"/>
+ </xsl:call-template>
+
+ <body>
+ <xsl:call-template name="htmlmainmenu" >
+ <xsl:with-param name="title" >APIs Overview</xsl:with-param>
+ <xsl:with-param name="maturity" select="$maturity" />
+ <xsl:with-param name="version" select="$version"/>
+ <xsl:with-param name="releaseinfo" select="$releaseinfo"/>
+ <xsl:with-param name="menukey" >index</xsl:with-param>
+ </xsl:call-template>
+
+ <div class="apidocmaincontent">
+ <xsl:call-template name="build-docmenu" >
+ <xsl:with-param name="menukey" >index</xsl:with-param>
+ <xsl:with-param name="date" select="$date"/>
+ </xsl:call-template>
+
+ <div class="innercontent">
+ <div class="abstract">
+ This document provides a list of <em>NetBeans APIs</em> with a short description
+ of what they are used for, and a table describing different types of interfaces
+ (see <a href="http://wiki.netbeans.org/API_Design">What is
+ an API?</a> to understand why we list DTDs, file formats, etc.) and with
+ a stability category (<span style="background:#ffffff">stable and official</span>,
+ <span style="background:#ddcc80">under development</span>,
+ <span style="background:#afafaf;text-decoration:line-through">deprecated</span>,
+ <span style="background:#e0c0c0">friend or private</span>;
+ see <a href="http://wiki.netbeans.org/API_Stability">API stability</a> for more info).
+ The aim is to provide as detailed a definition of NetBeans module
+ external interfaces as possible and give other developers a chance to decide
+ whether they want to depend on a particular API or not.
+ <p/>
+ Some of these APIs are part of the
+ <a href="http://platform.netbeans.org/">NetBeans Platform</a>
+ (for example lookup,
+ loaders, utilities, nodes, explorer, window systems, multiview, etc.), some of them
+ are specific to
+ <a href="http://www.netbeans.org/products/ide/index.html">NetBeans IDE</a>
+ (projects, javacore, diff, etc.) and some
+ are not included in the release at all and are just provided for download
+ (usually via autoupdate). Basically when building an application based on
+ <em>NetBeans</em> one is free to choose the set of modules and their APIs
+ to satisfy one's needs.
+ <!--<p>
+ This is a list of APIs for
+ <xsl:call-template name="apachenetbeansversion" >
+ <xsl:with-param name="maturity">
+ <xsl:value-of select="$maturity"/>
+ </xsl:with-param>
+ <xsl:with-param name="version">
+ <xsl:value-of select="$version"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </p>-->
+ <p>To get the API of your module listed here, see the documentation for the Javadoc building <a href="http://wiki.netbeans.org/APIDevelopment">infrastructure</a>.</p>
+
+ <p>Can't find what you're looking for? Try the <a href="https://netbeans.apache.org" target="_top">Apache NetBeans website</a>.</p>
+ </div>
+ <hr/>
+ <xsl:call-template name="list-modules" />
+ <hr/>
+ <xsl:apply-templates select="/alldata/apis" />
+ </div>
+ </div>
+ <div class="apidocleft">
+ <xsl:call-template name="listallmodules" />
+ </div>
+
+ <xsl:call-template name="htmlfooter" />
+
+ </body>
+ </html>
+ </xsl:template>
+ <xsl:template name="list-modules">
+ <ul>
+ <xsl:for-each select="/alldata/apis/module" >
+ <xsl:sort select="@name" />
+ <xsl:choose>
+ <xsl:when test="api" >
+ <li>
+ <span>
+ <xsl:attribute name="style">
+ <xsl:choose>
+ <xsl:when test="descendant::api[@category='stable' and @group='java']">background:#ffffff</xsl:when>
+ <xsl:when test="descendant::api[@category='official' and @group='java']">background:#ffffff</xsl:when>
+ <xsl:when test="descendant::api[@category='devel' and @group='java']">background:#ddcc80</xsl:when>
+ <xsl:when test="descendant::api[@category='deprecated' and @group='java']">text-decoration: line-through</xsl:when>
+ <xsl:otherwise>background:#e0c0c0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="substring-before(@target,'/')" />/overview-summary.html</xsl:attribute>
+ <xsl:value-of select="@name"/>
+ </a> -
+ <!-- XXX the following is crap; e.g. messes up descs of Dialogs API, I/O API, ... -->
+ <!-- Should use e.g.:
+ <answer id="arch-what">
+ <span class="summary">This API does such-and-such.</span>
+ It also does some other less important stuff.
+ </answer>
+ -->
+ <xsl:comment>Begin of first sentenece</xsl:comment>
+ <xsl:apply-templates mode="first-sentence" select="description" />
+ <xsl:comment>End of first sentenece</xsl:comment>.
+ </span>
+ </li>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- will be covered later -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:for-each select="/alldata/apis/module" >
+ <xsl:sort select="api" order="descending" />
+ <xsl:sort select="@name" />
+ <xsl:choose>
+ <xsl:when test="api" >
+ <!-- covered before -->
+ </xsl:when>
+ <xsl:otherwise>
+ <li>
+ <xsl:variable name="where" select="substring-before(@target, '/')"/>
+ <b>
+ <a href="{$where}/overview-summary.html">
+ <xsl:value-of select="$where"/>
+ </a>
+ </b>
+ - no API description provided
+ (see <a href="http://wiki.netbeans.org/APIDevelopment">how to do it</a>)
+ </li>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </ul>
+ </xsl:template>
+ <xsl:template match="module">
+ <xsl:variable name="interfaces" select="descendant::api[@type='export' and generate-id() = generate-id(key('apiNames', @name))]" />
+ <xsl:variable name="module.name" select="@name" />
+ <xsl:variable name="arch.stylesheet" select="@stylesheet" />
+ <xsl:variable name="arch.overviewlink" select="@overviewlink" />
+ <xsl:variable name="arch.footer" select="@footer" />
+ <xsl:variable name="arch.target" select="@target" />
+
+ <xsl:if test="$interfaces">
+ <div>
+ <xsl:element name="h3">
+ <xsl:attribute name="id">
+ <xsl:text>def-api-</xsl:text><xsl:value-of select="$module.name"/>
+ </xsl:attribute>
+ <xsl:value-of select="$module.name"/>
+ </xsl:element>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="filedirapi" >
+ <xsl:with-param name="arch.target" select="$arch.target" />
+ </xsl:call-template>
+ <xsl:text>/overview-summary.html</xsl:text>
+ </xsl:attribute>
+ <xsl:text>javadoc</xsl:text>
+ </a>
+ <xsl:if test="$download = 'true'"> | <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="filedirapi" >
+ <xsl:with-param name="arch.target" select="$arch.target" />
+ </xsl:call-template>
+ <xsl:text>.zip</xsl:text>
+ </xsl:attribute>
+ <xsl:text>download</xsl:text>
+ </a>
+ </xsl:if>
+ | <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="$arch.target" />
+ </xsl:attribute>
+ <xsl:text>architecture</xsl:text>
+ </a>
+ <xsl:if test="//module[@name=$module.name]/arch-usecases" >
+ | <a>
+ <xsl:attribute name="href">
+ <xsl:text>usecases.html#usecase-</xsl:text>
+ <xsl:value-of select="$module.name" />
+ </xsl:attribute>
+ <xsl:text>usecases</xsl:text>
+ </a>
+ </xsl:if>
+ <p/>
+
+ <div>
+ <xsl:apply-templates select="description"/>
+ </div>
+
+ <xsl:if test="deploy-dependencies">
+ <div>
+ <p>
+ <b>Usage:</b>
+ </p>
+ <xsl:apply-templates select="deploy-dependencies"/>
+ </div>
+ </xsl:if>
+
+ <p/>
+ <table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%">
+ <tr>
+ <td>
+ <table border="0" cellpadding="3" cellspacing="1" width="100%">
+ <!-- <tr><td COLSPAN="5" class="tablecbg" ALIGN="CENTER"><font CLASS="titlectable">Do not duplicate any files</font></td></tr> -->
+ <tr class="tablersh">
+ <td align="CENTER" width="30%">
+ <span class="titlectable">Interface Name</span>
+ </td>
+ <td align="CENTER" width="15%">
+ <span class="titlectable">Stability Classification</span>
+ </td>
+ <td align="CENTER" >
+ <span class="titlectable">Specified in What Document?</span>
+ </td>
+ </tr>
+
+ <xsl:for-each select="$interfaces">
+ <xsl:if test="@group='java'" >
+ <xsl:call-template name="api" >
+ <xsl:with-param name="arch.target" select="$arch.target" />
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:for-each>
+
+ <xsl:for-each select="//api[generate-id() = generate-id(key('apiGroups', @group))]">
+ <xsl:variable name="grp" select="@group" />
+ <xsl:if test="$grp!='java'" >
+ <xsl:variable name="apis" select="/apis" />
+ <xsl:variable name="module" select="$apis/module[@name=$module.name]" />
+
+ <xsl:variable name="allOfTheGroup" select="$module/api[@group=$grp]" />
+ <xsl:if test="$allOfTheGroup">
+ <tr class="tabler">
+ <td>Set of <xsl:value-of select="$grp"/> APIs</td>
+ <td>Individual</td>
+ <td>
+ <a href="{$arch.target}#group-{$grp}">table with definitions</a>
+ </td>
+ </tr>
+ </xsl:if>
+ </xsl:if>
+ </xsl:for-each>
+
+ </table>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </xsl:if>
+
+
+
+
+ </xsl:template>
+
+ <xsl:template name="api">
+ <xsl:param name="arch.target" />
+ <xsl:variable name="name" select="@name" />
+ <xsl:variable name="type" select="@type" />
+ <xsl:variable name="category" select="@category" />
+ <xsl:variable name="url" select="@url" />
+ <xsl:variable name="description" select="node()" />
+
+ <tr class="tabler">
+ <td>
+ <a>
+ <xsl:attribute name="href" >
+ <xsl:value-of select="$arch.target" />
+ <xsl:text>#java-</xsl:text>
+ <xsl:value-of select="$name"/>
+ </xsl:attribute>
+ <xsl:value-of select="$name" />
+ </a>
+ </td>
+ <!--
+ <td>
+ <xsl:choose>
+ <xsl:when test="$type='import'">Imported</xsl:when>
+ <xsl:when test="$type='export'">Exported</xsl:when>
+ <xsl:otherwise>WARNING: <xsl:value-of select="$type" /></xsl:otherwise>
+ </xsl:choose>
+ </td> -->
+ <td> <!-- stability category -->
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>http://wiki.netbeans.org/API_Stability#</xsl:text>
+ <xsl:value-of select="$category" />
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="$category='official'">Official</xsl:when>
+ <xsl:when test="$category='stable'">Stable</xsl:when>
+ <xsl:when test="$category='devel'">Devel</xsl:when>
+ <xsl:when test="$category='third'">Third_Party</xsl:when>
+ <xsl:when test="$category='standard'">Standard</xsl:when>
+ <xsl:when test="$category='friend'">Friend</xsl:when>
+ <xsl:when test="$category='private'">Private</xsl:when>
+ <xsl:when test="$category='deprecated'">Deprecated</xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ WARNING: <xsl:value-of select="$category"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </td>
+
+ <td> <!-- url -->
+ <a href="{$url}">
+ <xsl:value-of select="$url"/>
+ </a>
+ <xsl:if test="$description" >
+ <p>
+ <xsl:apply-templates select="$description" />
+ </p>
+ </xsl:if>
+ </td>
+ </tr>
+
+ </xsl:template>
+
+ <xsl:template match="api-ref">
+ <!-- simply bold the name, it link will likely be visible bellow -->
+ <b>
+ <xsl:value-of select="@name" />
+ </b>
+ </xsl:template>
+
+ <!-- extracts first part before slash from LoadersAPI/bleble.html -->
+
+ <xsl:template name="filedirapi" >
+ <xsl:param name="arch.target" />
+
+ <xsl:if test="substring-before($arch.target,'/')">
+ <xsl:value-of select="substring-before($arch.target,'/')" />
+ </xsl:if>
+ </xsl:template>
+
+
+ <!-- Format random HTML elements as is: -->
+ <xsl:template match="@*|node()">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <!-- Gets the first sentence with HTML tags -->
+
+ <xsl:template mode="first-sentence" match="api-ref">
+ <b>
+ <xsl:value-of select="@name" />
+ </b>
+ <xsl:text> </xsl:text>
+ </xsl:template>
+
+ <xsl:template mode="first-sentence" match="node()">
+ <xsl:choose>
+ <xsl:when test="count(child::*) = 0" >
+ <xsl:variable name="first-sentence" select="substring-before(normalize-space(), '. ')" />
+ <xsl:variable name="first-dot" select="substring-before(normalize-space(), '.')" />
+ <xsl:choose>
+ <xsl:when test="$first-sentence" >
+ <xsl:value-of select="$first-sentence" />
+ <!-- this trick starts comment which disables output produces after
+ Which means comments out everything after the .
+ -->
+ <xsl:text disable-output-escaping="yes"><!--</xsl:text>
+ </xsl:when>
+ <xsl:when test="$first-dot" >
+ <xsl:value-of select="$first-dot" />
+ <!-- this trick starts comment which disables output produces after
+ Which means comments out everything after the .
+ -->
+ <xsl:text disable-output-escaping="yes"><!--</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="." />
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates mode="first-sentence" select="child::*"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="first-sentence" select="node()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/nbbuild/javadoctools/export2layer.xsl b/nbbuild/javadoctools/export2layer.xsl
index 6ed39e3..fb7fa35 100644
--- a/nbbuild/javadoctools/export2layer.xsl
+++ b/nbbuild/javadoctools/export2layer.xsl
@@ -20,73 +20,94 @@
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:import href="jsonhelp.xsl" />
+ <xsl:import href="export2allmodules.xsl" />
<xsl:output method="html"/>
<xsl:param name="date" />
-
+ <xsl:param name="maturity" />
+ <xsl:param name="version" />
+ <xsl:param name="releaseinfo" />
<xsl:template match="/" >
+ <xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
<html>
- <head>
- <!-- projects.netbeans.org -->
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <title>Description Layer Registration in Apache NetBeans (incubating) APIs</title>
- <link rel="stylesheet" href="netbeans.css" type="text/css"/>
+ <xsl:call-template name="htmlheader" >
+ <xsl:with-param name="title" >APIs Layer list</xsl:with-param>
+ <xsl:with-param name="maturity" select="$maturity" />
+ <xsl:with-param name="version" select="$version"/>
+ </xsl:call-template>
- <link REL="icon" href="http://www.netbeans.org/favicon.ico" type="image/ico" />
- <link REL="shortcut icon" href="http://www.netbeans.org/favicon.ico" />
+ <body>
+ <xsl:call-template name="htmlmainmenu" >
+ <xsl:with-param name="title" >APIs Layer list</xsl:with-param>
+ <xsl:with-param name="maturity" select="$maturity" />
+ <xsl:with-param name="version" select="$version"/>
+ <xsl:with-param name="releaseinfo" select="$releaseinfo"/>
+ <xsl:with-param name="menukey" >layers</xsl:with-param>
+ </xsl:call-template>
+ <div class="apidocmaincontent">
+ <xsl:call-template name="build-docmenu" >
+ <xsl:with-param name="menukey" >layers</xsl:with-param>
+ <xsl:with-param name="date" select="$date"/>
+ </xsl:call-template>
+
+ <div class="innercontent">
+ <div class="abstract">
+ <p>
+ Registration of various objects, files and hints into layer is
+ pretty central to the way NetBeans based applications handle
+ communication between modules. This page summarizes the list of such
+ extension points defined by
+ <a href="index.html">modules with API</a>.
+ </p>
+ <p>
+ To get your API listed here, use
+ <code><api type='export' group='layer' ... /></code> in
+ your module arch.xml document.
+ </p>
+ </div>
+ <hr/>
+
- </head>
-
- <body>
- <center><h1>Description of Layer Registrations in Apache NetBeans (incubating) APIs</h1></center>
-
- <p>
- Registration of various objects, files and hints into layer is
- pretty central to the way NetBeans based applications handle
- communication between modules. This page summarizes the list of such
- extension points defined by
- <a href="index.html">modules with API</a>.
- </p>
-
- <ul>
- <xsl:for-each select="//api[@type='export' and @group='layer']" >
- <li>
- <b>
- <xsl:choose >
- <xsl:when test="@url" >
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="@url"/>
- </xsl:attribute>
- <xsl:value-of select="@name"></xsl:value-of>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@name"></xsl:value-of>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text> in </xsl:text>
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="ancestor::module/@target"/>
- <xsl:text>#group-layer</xsl:text>
- </xsl:attribute>
- <xsl:value-of select="ancestor::module/@name"/>
- </a>
- </b>
- <p>
- <xsl:apply-templates select="." />
- </p>
- </li>
- </xsl:for-each>
- </ul>
-
- <p>
- To get your API listed here, use
- <code><api type='export' group='layer' ... /></code> in
- your module arch.xml document.
- </p>
- </body>
- </html>
+ <ul>
+ <xsl:for-each select="//api[@type='export' and @group='layer']" >
+ <li>
+ <b>
+ <xsl:choose >
+ <xsl:when test="@url" >
+ <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="@url"/>
+ </xsl:attribute>
+ <xsl:value-of select="@name"></xsl:value-of>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@name"></xsl:value-of>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text> in </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="ancestor::module/@target"/>
+ <xsl:text>#group-layer</xsl:text>
+ </xsl:attribute>
+ <xsl:value-of select="ancestor::module/@name"/>
+ </a>
+ </b>
+ <p>
+ <xsl:apply-templates select="." />
+ </p>
+ </li>
+ </xsl:for-each>
+ </ul>
+ </div>
+ </div>
+ <div class="apidocleft">
+ <xsl:call-template name="listallmodules" />
+ </div>
+ <xsl:call-template name="htmlfooter" />
+ </body>
+ </html>
</xsl:template>
<xsl:template match="api-ref">
@@ -97,7 +118,9 @@
</xsl:template>
<xsl:template match="usecase">
- <h4><xsl:value-of select="@name" /></h4>
+ <h4>
+ <xsl:value-of select="@name" />
+ </h4>
<xsl:apply-templates select="./node()" />
</xsl:template>
@@ -105,11 +128,11 @@
<xsl:variable name="target" select="ancestor::module/@target"/>
<xsl:variable name="top" select="substring-before($target,'/')" />
- <xsl:call-template name="print-url" >
+ <xsl:call-template name="print-url" >
<xsl:with-param name="url" select="@href" />
<xsl:with-param name="base" select="$target" />
<xsl:with-param name="top" select="$top" />
- </xsl:call-template>
+ </xsl:call-template>
</xsl:template>
<xsl:template name="print-url" >
@@ -152,7 +175,7 @@
</xsl:when>
<xsl:otherwise>
<xsl:comment>This must be a reference relative to the arch page, if not see nbbuild/javadoctools/export2usecases.xsl
- </xsl:comment>
+ </xsl:comment>
<a>
<xsl:attribute name="href">
<xsl:value-of select="$base" />
@@ -166,9 +189,9 @@
</xsl:template>
<xsl:template match="@*|node()">
- <xsl:copy >
- <xsl:apply-templates select="@*|node()"/>
- </xsl:copy>
+ <xsl:copy >
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
</xsl:template>
</xsl:stylesheet>
diff --git a/nbbuild/javadoctools/export2property.xsl b/nbbuild/javadoctools/export2property.xsl
index 2ffb601..9c4dcc5 100644
--- a/nbbuild/javadoctools/export2property.xsl
+++ b/nbbuild/javadoctools/export2property.xsl
@@ -20,73 +20,99 @@
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:import href="jsonhelp.xsl" />
+ <xsl:import href="export2allmodules.xsl" />
<xsl:output method="html"/>
<xsl:param name="date" />
-
+ <xsl:param name="maturity" />
+ <xsl:param name="version" />
+ <xsl:param name="releaseinfo" />
+
<xsl:template match="/" >
+ <xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
<html>
- <head>
+
<!-- projects.netbeans.org -->
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <title>Description Layer Registration in Apache NetBeans (incubating) APIs</title>
- <link rel="stylesheet" href="netbeans.css" type="text/css"/>
+
+ <xsl:call-template name="htmlheader" >
+ <xsl:with-param name="title" >APIs Properties list</xsl:with-param>
+ <xsl:with-param name="maturity" select="$maturity" />
+ <xsl:with-param name="version" select="$version"/>
+ </xsl:call-template>
+ <body>
+ <xsl:call-template name="htmlmainmenu" >
+ <xsl:with-param name="title" >APIs Properties List</xsl:with-param>
+ <xsl:with-param name="maturity" select="$maturity" />
+ <xsl:with-param name="version" select="$version"/>
+ <xsl:with-param name="releaseinfo" select="$releaseinfo"/>
+ <xsl:with-param name="menukey" >properties</xsl:with-param>
+ </xsl:call-template>
+
+ <div class="apidocmaincontent">
+ <xsl:call-template name="build-docmenu" >
+ <xsl:with-param name="menukey" >properties</xsl:with-param>
+ <xsl:with-param name="date" select="$date"/>
+ </xsl:call-template>
+
+ <div class="innercontent">
+ <div class="abstract">
+ <p>
+ System properties can influence the behaviour of the running IDE in various
+ ways. The most convenient place to specify them is in etc/netbeans.conf file.
+ This page summarizes the list of such
+ extension points defined by
+ <a href="index.html">modules with API</a>.
+ </p>
+ <p>
+ To get your API listed here, use
+ <code><api type='export' group='systemproperty' ... /></code> in
+ your module arch.xml document.
+ </p>
+ </div>
+ <hr/>
- <link REL="icon" href="http://www.netbeans.org/favicon.ico" type="image/ico" />
- <link REL="shortcut icon" href="http://www.netbeans.org/favicon.ico" />
-
- </head>
-
- <body>
- <center><h1>Description of Property APIs in Apache NetBeans (incubating) APIs</h1></center>
-
- <p>
- System properties can influence the behaviour of the running IDE in various
- ways. The most convenient place to specify them is in etc/netbeans.conf file.
- This page summarizes the list of such
- extension points defined by
- <a href="index.html">modules with API</a>.
- </p>
-
- <ul>
- <xsl:for-each select="//api[@type='export' and @group='systemproperty']" >
- <li>
- <b>
- <xsl:choose >
- <xsl:when test="@url" >
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="@url"/>
- </xsl:attribute>
- <xsl:value-of select="@name"></xsl:value-of>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@name"></xsl:value-of>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text> in </xsl:text>
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="ancestor::module/@target"/>
- <xsl:text>#group-systemproperty</xsl:text>
- </xsl:attribute>
- <xsl:value-of select="ancestor::module/@name"/>
- </a>
- </b>
- <p>
- <xsl:apply-templates select="." />
- </p>
- </li>
- </xsl:for-each>
- </ul>
+ <ul>
+ <xsl:for-each select="//api[@type='export' and @group='systemproperty']" >
+ <li>
+ <b>
+ <xsl:choose >
+ <xsl:when test="@url" >
+ <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="@url"/>
+ </xsl:attribute>
+ <xsl:value-of select="@name"></xsl:value-of>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@name"></xsl:value-of>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text> in </xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="ancestor::module/@target"/>
+ <xsl:text>#group-systemproperty</xsl:text>
+ </xsl:attribute>
+ <xsl:value-of select="ancestor::module/@name"/>
+ </a>
+ </b>
+ <p>
+ <xsl:apply-templates select="." />
+ </p>
+ </li>
+ </xsl:for-each>
+ </ul>
- <p>
- To get your API listed here, use
- <code><api type='export' group='systemproperty' ... /></code> in
- your module arch.xml document.
- </p>
- </body>
- </html>
+
+ </div>
+ </div>
+ <div class="apidocleft">
+ <xsl:call-template name="listallmodules" />
+ </div>
+ <xsl:call-template name="htmlfooter" />
+ </body>
+ </html>
</xsl:template>
<xsl:template match="api-ref">
@@ -97,7 +123,9 @@
</xsl:template>
<xsl:template match="usecase">
- <h4><xsl:value-of select="@name" /></h4>
+ <h4>
+ <xsl:value-of select="@name" />
+ </h4>
<xsl:apply-templates select="./node()" />
</xsl:template>
@@ -105,11 +133,11 @@
<xsl:variable name="target" select="ancestor::module/@target"/>
<xsl:variable name="top" select="substring-before($target,'/')" />
- <xsl:call-template name="print-url" >
+ <xsl:call-template name="print-url" >
<xsl:with-param name="url" select="@href" />
<xsl:with-param name="base" select="$target" />
<xsl:with-param name="top" select="$top" />
- </xsl:call-template>
+ </xsl:call-template>
</xsl:template>
<xsl:template name="print-url" >
@@ -152,7 +180,7 @@
</xsl:when>
<xsl:otherwise>
<xsl:comment>This must be a reference relative to the arch page, if not see nbbuild/javadoctools/export2usecases.xsl
- </xsl:comment>
+ </xsl:comment>
<a>
<xsl:attribute name="href">
<xsl:value-of select="$base" />
@@ -166,9 +194,9 @@
</xsl:template>
<xsl:template match="@*|node()">
- <xsl:copy >
- <xsl:apply-templates select="@*|node()"/>
- </xsl:copy>
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
</xsl:template>
</xsl:stylesheet>
diff --git a/nbbuild/javadoctools/export2usecases.xsl b/nbbuild/javadoctools/export2usecases.xsl
index 2a43ee1..67cf2cd 100644
--- a/nbbuild/javadoctools/export2usecases.xsl
+++ b/nbbuild/javadoctools/export2usecases.xsl
@@ -20,52 +20,73 @@
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:import href="jsonhelp.xsl" />
+ <xsl:import href="export2allmodules.xsl" />
<xsl:output method="html"/>
<xsl:param name="date" />
-
+ <xsl:param name="maturity" />
+ <xsl:param name="version" />
+ <xsl:param name="releaseinfo" />
<xsl:template match="/" >
+ <xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
<html>
- <head>
- <!-- projects.netbeans.org -->
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <title>How to use certain Apache NetBeans (incubating) APIs</title>
- <link rel="stylesheet" href="netbeans.css" type="text/css"/>
+ <xsl:call-template name="htmlheader" >
+ <xsl:with-param name="title" >APIs Usecases list</xsl:with-param>
+ <xsl:with-param name="maturity" select="$maturity" />
+ <xsl:with-param name="version" select="$version"/>
+ </xsl:call-template>
- <link REL="icon" href="http://www.netbeans.org/favicon.ico" type="image/ico" />
- <link REL="shortcut icon" href="http://www.netbeans.org/favicon.ico" />
+ <body>
+ <xsl:call-template name="htmlmainmenu" >
+ <xsl:with-param name="title" >APIs Usecases list</xsl:with-param>
+ <xsl:with-param name="maturity" select="$maturity" />
+ <xsl:with-param name="version" select="$version"/>
+ <xsl:with-param name="releaseinfo" select="$releaseinfo"/>
+ <xsl:with-param name="menukey" >usecases</xsl:with-param>
+ </xsl:call-template>
+ <div class="apidocmaincontent">
+ <xsl:call-template name="build-docmenu" >
+ <xsl:with-param name="menukey" >usecases</xsl:with-param>
+ <xsl:with-param name="date" select="$date"/>
+ </xsl:call-template>
+
+ <div class="innercontent">
+ <div class="abstract">
+ This page contains extracted usecases for some of the NetBeans modules
+ that <a href="index.html">offer an API</a>.
+ </div>
- </head>
-
- <body>
- <center><h1>How to use certain Apache NetBeans (incubating) APIs</h1></center>
-
- This page contains extracted usecases for some of the NetBeans modules
- that <a href="overview-summary.html">offer an API</a>.
-
-
- <xsl:for-each select="//module/arch-usecases[not(../@name='_no module_') and not(.='No answer')]" >
- <hr/>
- <h2><a>
- <xsl:attribute name="name">
- <xsl:text>usecase-</xsl:text>
- <xsl:value-of select="../@name"/>
- </xsl:attribute>
- <xsl:text>How to use </xsl:text>
- </a>
- <a>
- <xsl:attribute name="href" >
- <xsl:text>overview-summary.html#def-api-</xsl:text>
- <xsl:value-of select="../@name"/>
- </xsl:attribute>
- <xsl:value-of select="../@name"/>
- </a>?
- </h2>
- <xsl:apply-templates select="../description" />
- <p/>
- <xsl:apply-templates />
- </xsl:for-each>
- </body>
- </html>
+ <xsl:for-each select="//module/arch-usecases[not(../@name='_no module_') and not(.='No answer')]" >
+ <hr/>
+ <h2>
+ <a>
+ <xsl:attribute name="id">
+ <xsl:text>usecase-</xsl:text>
+ <xsl:value-of select="../@name"/>
+ </xsl:attribute>
+ <xsl:text>How to use </xsl:text>
+ </a>
+ <a>
+ <xsl:attribute name="href" >
+ <xsl:text>index.html#def-api-</xsl:text>
+ <xsl:value-of select="../@name"/>
+ </xsl:attribute>
+ <xsl:value-of select="../@name"/>
+ ?</a>
+ </h2>
+ <xsl:apply-templates select="../description" />
+ <p/>
+ <xsl:apply-templates />
+ </xsl:for-each>
+ </div>
+
+ </div>
+ <div class="apidocleft">
+ <xsl:call-template name="listallmodules" />
+ </div>
+ <xsl:call-template name="htmlfooter" />
+ </body>
+ </html>
</xsl:template>
<xsl:template match="api-ref">
@@ -85,13 +106,13 @@
<xsl:variable name="target" select="ancestor::module/@target"/>
<xsl:variable name="top" select="substring-before($target,'/')" />
- <xsl:call-template name="print-url" >
- <xsl:with-param name="url" select="@href" />
- <xsl:with-param name="base" select="$target" />
- <xsl:with-param name="top" select="$top" />
- </xsl:call-template>
- </xsl:template>
--->
+ <xsl:call-template name="print-url" >
+ <xsl:with-param name="url" select="@href" />
+ <xsl:with-param name="base" select="$target" />
+ <xsl:with-param name="top" select="$top" />
+ </xsl:call-template>
+ </xsl:template>
+ -->
<xsl:template name="print-url" >
<xsl:param name="url" />
<xsl:param name="base" />
@@ -139,9 +160,9 @@
</xsl:template>
<xsl:template match="@*|node()">
- <xsl:copy >
- <xsl:apply-templates select="@*|node()"/>
- </xsl:copy>
+ <xsl:copy >
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
</xsl:template>
</xsl:stylesheet>
diff --git a/nbbuild/javadoctools/jsonhelp.xsl b/nbbuild/javadoctools/jsonhelp.xsl
new file mode 100644
index 0000000..3b71e20
--- /dev/null
+++ b/nbbuild/javadoctools/jsonhelp.xsl
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+<!--
+This DOCTYPE assumes that the pseudo-DTD given at the end of the
+XSLT specification is present in the named location. It cannot be
+committed to the repository for legal reasons. You need to download it:
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % result-elements "
+| a | abbr | acronym | address | area
+| b | base | bdo | big | blockquote
+| body | br | button | caption | cite
+| code | col | colgroup | dd | del
+| dfn | div | dl | dt | em
+| fieldset | form | h1 | h2 | h3
+| h4 | h5 | h6 | head | hr
+| html | i | img | input | ins
+| kbd | label | legend | li | link
+| map | meta | noscript | object | ol
+| optgroup | option | p | param | pre
+| q | samp | script | select | small
+| span | strong | style | sub | sup
+| table | tbody | td | textarea | tfoot
+| th | thead | title | tr | tt
+| ul | var
+">
+<!ENTITY % xsl-struct SYSTEM "xsl.dtd">
+%xsl-struct;
+]>
+-->
+
+<!-- TODO:
+- in details of a change, list all branches it applies to
+- create separate lists for all changes between one branch and the next
+- clearly mark incompatible bits in details of a change, besides text contents
+- warn about any changes made after a certain date which incl. additions but
+ have no associated API version
+- ability to display authors in pretty format
+- kill $api-list and select from /apichanges/apidefs/apidef instead to get an
+ API list (but the hack is still needed for index by affected class)
+- whenever <hN> tags are used as part of a changelist template, the proper
+ header level should be computed based on the surrounding context
+-->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ <xsl:template name="apachenetbeanstext">
+ <xsl:param name="maturity" />
+ <xsl:choose>
+ <xsl:when test="$maturity = 'false'">
+ <xsl:text>Apache NetBeans (incubating) </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Apache NetBeans </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template name="apachenetbeansversion">
+ <xsl:param name="maturity" />
+ <xsl:param name="version" />
+
+ <xsl:choose>
+ <xsl:when test="$version = '-'">
+ <xsl:text>Current Development Version</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$maturity = 'false'">
+ <xsl:text>Apache NetBeans (incubating) </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Apache NetBeans </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$version"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <xsl:template name="build-docmenu">
+ <xsl:param name="menukey" />
+ <xsl:param name="date" />
+ <div class="toc">
+ <span class="apidocdate">Apidoc release date: <xsl:value-of select="$date" /></span>
+ <ul class="sectlevel1" data-responsive-menu="drilldown medium-dropdown">
+ <li>
+ <xsl:choose>
+ <xsl:when test="$menukey = 'index'">
+ Documentation Overview
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="index.html">Documentation Overview</a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </li>
+ <li>
+ <xsl:choose>
+ <xsl:when test="$menukey = 'apichanges'">
+ Changes since previous release
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="apichanges.html">Changes since previous release</a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </li>
+ <li>
+ <xsl:choose>
+ <xsl:when test="$menukey = 'usecases'">
+ How to use certain APIs
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="usecases.html">How to use certain APIs</a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </li>
+ <!--
+ <li>
+ <a href="allclasses-frame.html">Index of all classes</a>
+ </li>
+ -->
+ <li>
+ <xsl:choose>
+ <xsl:when test="$menukey = 'layers'">
+ Extracted List of Layer APIs
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="layers.html">Extracted List of Layer APIs</a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </li>
+ <li>
+ <xsl:choose>
+ <xsl:when test="$menukey = 'properties'">
+ Extracted List of Property APIs
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="properties.html">Extracted List of Property APIs</a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </li>
+ <li>
+ <xsl:choose>
+ <xsl:when test="$menukey = 'branding'">
+ Extracted List of Branding APIs
+ </xsl:when>
+ <xsl:otherwise>
+ <a href="branding.html">Extracted List of Branding APIs</a>
+ </xsl:otherwise>
+ </xsl:choose>
+ </li>
+ </ul>
+ </div>
+ </xsl:template>
+ <xsl:template name="htmlfooter">
+ <script>
+ $('.modulesclasslist').hide();
+
+ $('span.modules').click(function (event) {
+ $(this).next().next().toggle();
+ });
+ function searchFunction() {
+ var input;
+ var searched;
+ // get information from seerch input
+ input = document.getElementById('searchinput');
+ searched = input.value.toUpperCase();
+ if (searched!="") {
+ // looking for something
+ $( ".modulesclasslist" ).each(function() {
+ $(this).parent().hide();
+ var found = false;
+ $(this).children().each(function () {
+ $(this).hide();
+ if ($(this).text().toUpperCase().indexOf(searched)>-1) {
+ found=true;
+ $(this).show();
+ }
+ });
+ if (found) {
+ $(this).show();
+ $(this).parent().show();
+ }
+
+ });
+
+
+ }
+ else {
+ // make page show only modules
+ $( ".modulesclasslist" ).children().each(function () {
+ $(this).parent().hide();
+ $(this).parent().parent().show();
+ });
+ }
+ }
+ </script>
+ </xsl:template>
+ <xsl:template name="htmlheader">
+ <xsl:param name="title" />
+ <xsl:param name="maturity" />
+ <xsl:param name="version" />
+ <head>
+ <xsl:element name="title">
+ <xsl:call-template name="apachenetbeansversion" >
+ <xsl:with-param name="maturity">
+ <xsl:value-of select="$maturity"/>
+ </xsl:with-param>
+ <xsl:with-param name="version">
+ <xsl:value-of select="$version"/>
+ </xsl:with-param>
+ </xsl:call-template> Documentation | <xsl:value-of select="$title" />
+ </xsl:element>
+ <link rel="stylesheet" href="netbeans.css" type="text/css"/>
+ <link type="application/atom+xml" rel="alternate" href="apichanges.atom"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name="msapplication-TileColor" content="#ffc40d" />
+ <meta name="theme-color" content="#ffffff"/>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <link rel="icon" type="image/png" sizes="32x32" href="//netbeans.apache.org/favicon-32x32.png" />
+ <link rel="icon" type="image/png" sizes="16x16" href="//netbeans.apache.org/favicon-16x16.png" />
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
+ </head>
+ </xsl:template>
+ <xsl:template name="htmlmainmenu">
+ <xsl:param name="title" />
+ <xsl:param name="maturity" />
+ <xsl:param name="version" />
+ <xsl:param name="releaseinfo" />
+ <xsl:param name="menukey" />
+ <div class="top-bar" id="responsive-menu">
+ <div class='top-bar-left'>
+ <a class='title' href="/">
+ <img src='apache-netbeans.svg' style='padding: 8px; height: 48px;' />
+ <xsl:call-template name="apachenetbeansversion" >
+ <xsl:with-param name="maturity">
+ <xsl:value-of select="$maturity"/>
+ </xsl:with-param>
+ <xsl:with-param name="version">
+ <xsl:value-of select="$version"/>
+ </xsl:with-param>
+ </xsl:call-template> Documentation | <xsl:value-of select="$title" />
+ </a>
+ </div>
+ <div class='top-bar-right scroll'>
+ <xsl:variable name="currentversion" select="document($releaseinfo)/*/@position"/>
+ <xsl:for-each select="document($releaseinfo)//release">
+ <xsl:sort data-type="number" select="@position" order="descending" />
+ <xsl:choose>
+ <xsl:when test="$currentversion = @position">
+ <span>
+ <xsl:value-of select="@version"/>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="a">
+ <xsl:attribute name="class">apacheversion</xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:value-of select="@apidocurl"/><xsl:text>/</xsl:text><xsl:value-of select="$menukey"/><xsl:text>.html</xsl:text></xsl:attribute>
+ <xsl:value-of select="@version"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:for-each>
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:text>http://bits.netbeans.org/</xsl:text>
+ </xsl:attribute>
+ 8.2 and previous
+ </xsl:element>
+ </div>
+ </div>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/nbbuild/javadoctools/netbeans.css b/nbbuild/javadoctools/netbeans.css
index e9028f5..544b325 100644
--- a/nbbuild/javadoctools/netbeans.css
+++ b/nbbuild/javadoctools/netbeans.css
@@ -16,664 +16,98 @@
* specific language governing permissions and limitations
* under the License.
*/
-/*
-==========================================================
-CSS for NetBeans web site
-Reeport problems to marek.vinar@sun.com
-==========================================================
+pre,code{font-family:Consolas,Menlo,Monaco,"IBM Plex Mono","Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif}@media print, screen and (min-width: 40em){.reveal,.reveal.tiny,.reveal.small,.reveal.large{right:auto;left:auto;margin:0 auto}}/*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:0.67em 0}figcaption,figure{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}main{display:block}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}input{overflow:visible}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{box-sizing:border-box;display:table;max-width:100%;padding:0;color:inherit;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}details{display:block}summary{display:list-item}menu{display:block}canvas{display:inline-block}template{display:none}[hidden]{display:none}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{box-sizing:border-box;font-size:16px}*,*::before,*::after{box-sizing:inherit}body{margin:0;padding:0;background:#fefefe;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal;line-height:1.5;color:#0a0a0a;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;vertical-align:middle;max-width:100%;height:auto;-ms-interpolation-mode:bicubic}textarea{height:auto;min-height:50px;border-radius:0}select{box-sizing:border-box;width:100%;border-radius:0}.map_canvas img,.map_canvas embed,.map_canvas object,.mqa-display img,.mqa-display embed,.mqa-display object{max-width:none !important}button{padding:0;appearance:none;border:0;border-radius:0;background:transparent;line-height:1;cursor:auto}[data-whatinput='mouse'] button{outline:0}pre{overflow:auto}button,input,optgroup,select,textarea{font-family:inherit}.is-visible{display:block !important}.is-hidden{display:none !important}.grid-container{padding-right:.625rem;padding-left:.625rem;max-width:62.5rem;margin:0 auto}@media print, screen and (min-width: 40em){.grid-container{padding-right:.938rem;padding-left:.938rem}}.grid-container.fluid{padding-right:.625rem;padding-left:.625rem;max-width:100%;margin:0 auto}@media print, screen and (min-width: 40em){.grid-container.fluid{padding-right:.938rem;padding-left:.938rem}}.grid-container.full{padding-right:0;padding-left:0;max-width:100%;margin:0 auto}.grid-x{display:flex;flex-flow:row wrap}.cell{flex:0 0 auto;min-height:0px;min-width:0px;width:100%}.cell.auto{flex:1 1 0px}.cell.shrink{flex:0 0 auto}.grid-x>.auto{width:auto}.grid-x>.shrink{width:auto}.grid-x>.small-shrink,.grid-x>.small-full,.grid-x>.small-1,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12{flex-basis:auto}@media print, screen and (min-width: 40em){.grid-x>.medium-shrink,.grid-x>.medium-full,.grid-x>.medium-1,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12{flex-basis:auto}}@media print, screen and (min-width: 64em){.grid-x>.large-shrink,.grid-x>.large-full,.grid-x>.large-1,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12{flex-basis:auto}}.grid-x>.small-1{width:8.333%}.grid-x>.small-2{width:16.667%}.grid-x>.small-3{width:25%}.grid-x>.small-4{width:33.333%}.grid-x>.small-5{width:41.667%}.grid-x>.small-6{width:50%}.grid-x>.small-7{width:58.333%}.grid-x>.small-8{width:66.667%}.grid-x>.small-9{width:75%}.grid-x>.small-10{width:83.333%}.grid-x>.small-11{width:91.667%}.grid-x>.small-12{width:100%}@media print, screen and (min-width: 40em){.grid-x>.medium-auto{flex:1 1 0px;width:auto}.grid-x>.medium-shrink{flex:0 0 auto;width:auto}.grid-x>.medium-1{width:8.333%}.grid-x>.medium-2{width:16.667%}.grid-x>.medium-3{width:25%}.grid-x>.medium-4{width:33.333%}.grid-x>.medium-5{width:41.667%}.grid-x>.medium-6{width:50%}.grid-x>.medium-7{width:58.333%}.grid-x>.medium-8{width:66.667%}.grid-x>.medium-9{width:75%}.grid-x>.medium-10{width:83.333%}.grid-x>.medium-11{width:91.667%}.grid-x>.medium-12{width:100%}}@media print, screen and (min-width: 64em){.grid-x>.large-auto{flex:1 1 0px;width:auto}.grid-x>.large-shrink{flex:0 0 auto;width:auto}.grid-x>.large-1{width:8.333%}.grid-x>.large-2{width:16.667%}.grid-x>.large-3{width:25%}.grid-x>.large-4{width:33.333%}.grid-x>.large-5{width:41.667%}.grid-x>.large-6{width:50%}.grid-x>.large-7{width:58.333%}.grid-x>.large-8{width:66.667%}.grid-x>.large-9{width:75%}.grid-x>.large-10{width:83.333%}.grid-x>.large-11{width:91.667%}.grid-x>.large-12{width:100%}}.grid-margin-x:not(.grid-x)>.cell{width:auto}.grid-margin-y:not(.grid-y)>.cell{height:auto}.grid-margin-x{margin-left:-.625rem;margin-right:-.625rem}@media print, screen and (min-width: 40em){.grid-margin-x{margin-left:-.938rem;margin-right:-.938rem}}.grid-margin-x>.cell{width:calc(100% - 1.25rem);margin-left:.625rem;margin-right:.625rem}@media print, screen and (min-width: 40em){.grid-margin-x>.cell{width:calc(100% - 1.875rem);margin-left:.938rem;margin-right:.938rem}}.grid-margin-x>.auto{width:auto}.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.333% - 1.25rem)}.grid-margin-x>.small-2{width:calc(16.667% - 1.25rem)}.grid-margin-x>.small-3{width:calc(25% - 1.25rem)}.grid-margin-x>.small-4{width:calc(33.333% - 1.25rem)}.grid-margin-x>.small-5{width:calc(41.667% - 1.25rem)}.grid-margin-x>.small-6{width:calc(50% - 1.25rem)}.grid-margin-x>.small-7{width:calc(58.333% - 1.25rem)}.grid-margin-x>.small-8{width:calc(66.667% - 1.25rem)}.grid-margin-x>.small-9{width:calc(75% - 1.25rem)}.grid-margin-x>.small-10{width:calc(83.333% - 1.25rem)}.grid-margin-x>.small-11{width:calc(91.667% - 1.25rem)}.grid-margin-x>.small-12{width:calc(100% - 1.25rem)}@media print, screen and (min-width: 40em){.grid-margin-x>.auto{width:auto}.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.333% - 1.875rem)}.grid-margin-x>.small-2{width:calc(16.667% - 1.875rem)}.grid-margin-x>.small-3{width:calc(25% - 1.875rem)}.grid-margin-x>.small-4{width:calc(33.333% - 1.875rem)}.grid-margin-x>.small-5{width:calc(41.667% - 1.875rem)}.grid-margin-x>.small-6{width:calc(50% - 1.875rem)}.grid-margin-x>.small-7{width:calc(58.333% - 1.875rem)}.grid-margin-x>.small-8{width:calc(66.667% - 1.875rem)}.grid-margin-x>.small-9{width:calc(75% - 1.875rem)}.grid-margin-x>.small-10{width:calc(83.333% - 1.875rem)}.grid-margin-x>.small-11{width:calc(91.667% - 1.875rem)}.grid-margin-x>.small-12{width:calc(100% - 1.875rem)}.grid-margin-x>.medium-auto{width:auto}.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.333% - 1.875rem)}.grid-margin-x>.medium-2{width:calc(16.667% - 1.875rem)}.grid-margin-x>.medium-3{width:calc(25% - 1.875rem)}.grid-margin-x>.medium-4{width:calc(33.333% - 1.875rem)}.grid-margin-x>.medium-5{width:calc(41.667% - 1.875rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.875rem)}.grid-margin-x>.medium-7{width:calc(58.333% - 1.875rem)}.grid-margin-x>.medium-8{width:calc(66.667% - 1.875rem)}.grid-margin-x>.medium-9{width:calc(75% - 1.875rem)}.grid-margin-x>.medium-10{width:calc(83.333% - 1.875rem)}.grid-margin-x>.medium-11{width:calc(91.667% - 1.875rem)}.grid-margin-x>.medium-12{width:calc(100% - 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-x>.large-auto{width:auto}.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.333% - 1.875rem)}.grid-margin-x>.large-2{width:calc(16.667% - 1.875rem)}.grid-margin-x>.large-3{width:calc(25% - 1.875rem)}.grid-margin-x>.large-4{width:calc(33.333% - 1.875rem)}.grid-margin-x>.large-5{width:calc(41.667% - 1.875rem)}.grid-margin-x>.large-6{width:calc(50% - 1.875rem)}.grid-margin-x>.large-7{width:calc(58.333% - 1.875rem)}.grid-margin-x>.large-8{width:calc(66.667% - 1.875rem)}.grid-margin-x>.large-9{width:calc(75% - 1.875rem)}.grid-margin-x>.large-10{width:calc(83.333% - 1.875rem)}.grid-margin-x>.large-11{width:calc(91.667% - 1.875rem)}.grid-margin-x>.large-12{width:calc(100% - 1.875rem)}}.grid-padding-x .grid-padding-x{margin-right:-.625rem;margin-left:-.625rem}@media print, screen and (min-width: 40em){.grid-padding-x .grid-padding-x{margin-right:-.938rem;margin-left:-.938rem}}.grid-container:not(.full)>.grid-padding-x{margin-right:-.625rem;margin-left:-.625rem}@media print, screen and (min-width: 40em){.grid-container:not(.full)>.grid-padding-x{margin-right:-.938rem;margin-left:-.938rem}}.grid-padding-x>.cell{padding-right:.625rem;padding-left:.625rem}@media print, screen and (min-width: 40em){.grid-padding-x>.cell{padding-right:.938rem;padding-left:.938rem}}.small-up-1>.cell{width:100%}.small-up-2>.cell{width:50%}.small-up-3>.cell{width:33.333%}.small-up-4>.cell{width:25%}.small-up-5>.cell{width:20%}.small-up-6>.cell{width:16.667%}.small-up-7>.cell{width:14.286%}.small-up-8>.cell{width:12.5%}@media print, screen and (min-width: 40em){.medium-up-1>.cell{width:100%}.medium-up-2>.cell{width:50%}.medium-up-3>.cell{width:33.333%}.medium-up-4>.cell{width:25%}.medium-up-5>.cell{width:20%}.medium-up-6>.cell{width:16.667%}.medium-up-7>.cell{width:14.286%}.medium-up-8>.cell{width:12.5%}}@media print, screen and (min-width: 64em){.large-up-1>.cell{width:100%}.large-up-2>.cell{width:50%}.large-up-3>.cell{width:33.333%}.large-up-4>.cell{width:25%}.large-up-5>.cell{width:20%}.large-up-6>.cell{width:16.667%}.large-up-7>.cell{width:14.286%}.large-up-8>.cell{width:12.5%}}.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.25rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.25rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.333% - 1.25rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.25rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.25rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.667% - 1.25rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.286% - 1.25rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.25rem)}@media print, screen and (min-width: 40em){.grid-margin-x.small-up-1>.cell{width:calc(100% - 1.25rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 1.25rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.333% - 1.25rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 1.25rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 1.25rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.667% - 1.25rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.286% - 1.25rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 1.25rem)}.grid-margin-x.medium-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.medium-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.medium-up-3>.cell{width:calc(33.333% - 1.875rem)}.grid-margin-x.medium-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.medium-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.medium-up-6>.cell{width:calc(16.667% - 1.875rem)}.grid-margin-x.medium-up-7>.cell{width:calc(14.286% - 1.875rem)}.grid-margin-x.medium-up-8>.cell{width:calc(12.5% - 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-x.large-up-1>.cell{width:calc(100% - 1.875rem)}.grid-margin-x.large-up-2>.cell{width:calc(50% - 1.875rem)}.grid-margin-x.large-up-3>.cell{width:calc(33.333% - 1.875rem)}.grid-margin-x.large-up-4>.cell{width:calc(25% - 1.875rem)}.grid-margin-x.large-up-5>.cell{width:calc(20% - 1.875rem)}.grid-margin-x.large-up-6>.cell{width:calc(16.667% - 1.875rem)}.grid-margin-x.large-up-7>.cell{width:calc(14.286% - 1.875rem)}.grid-margin-x.large-up-8>.cell{width:calc(12.5% - 1.875rem)}}.small-margin-collapse{margin-right:0;margin-left:0}.small-margin-collapse>.cell{margin-right:0;margin-left:0}.small-margin-collapse>.small-1{width:8.333%}.small-margin-collapse>.small-2{width:16.667%}.small-margin-collapse>.small-3{width:25%}.small-margin-collapse>.small-4{width:33.333%}.small-margin-collapse>.small-5{width:41.667%}.small-margin-collapse>.small-6{width:50%}.small-margin-collapse>.small-7{width:58.333%}.small-margin-collapse>.small-8{width:66.667%}.small-margin-collapse>.small-9{width:75%}.small-margin-collapse>.small-10{width:83.333%}.small-margin-collapse>.small-11{width:91.667%}.small-margin-collapse>.small-12{width:100%}@media print, screen and (min-width: 40em){.small-margin-collapse>.medium-1{width:8.333%}.small-margin-collapse>.medium-2{width:16.667%}.small-margin-collapse>.medium-3{width:25%}.small-margin-collapse>.medium-4{width:33.333%}.small-margin-collapse>.medium-5{width:41.667%}.small-margin-collapse>.medium-6{width:50%}.small-margin-collapse>.medium-7{width:58.333%}.small-margin-collapse>.medium-8{width:66.667%}.small-margin-collapse>.medium-9{width:75%}.small-margin-collapse>.medium-10{width:83.333%}.small-margin-collapse>.medium-11{width:91.667%}.small-margin-collapse>.medium-12{width:100%}}@media print, screen and (min-width: 64em){.small-margin-collapse>.large-1{width:8.333%}.small-margin-collapse>.large-2{width:16.667%}.small-margin-collapse>.large-3{width:25%}.small-margin-collapse>.large-4{width:33.333%}.small-margin-collapse>.large-5{width:41.667%}.small-margin-collapse>.large-6{width:50%}.small-margin-collapse>.large-7{width:58.333%}.small-margin-collapse>.large-8{width:66.667%}.small-margin-collapse>.large-9{width:75%}.small-margin-collapse>.large-10{width:83.333%}.small-margin-collapse>.large-11{width:91.667%}.small-margin-collapse>.large-12{width:100%}}.small-padding-collapse{margin-right:0;margin-left:0}.small-padding-collapse>.cell{padding-right:0;padding-left:0}@media print, screen and (min-width: 40em){.medium-margin-collapse{margin-right:0;margin-left:0}.medium-margin-collapse>.cell{margin-right:0;margin-left:0}}@media print, screen and (min-width: 40em){.medium-margin-collapse>.small-1{width:8.333%}.medium-margin-collapse>.small-2{width:16.667%}.medium-margin-collapse>.small-3{width:25%}.medium-margin-collapse>.small-4{width:33.333%}.medium-margin-collapse>.small-5{width:41.667%}.medium-margin-collapse>.small-6{width:50%}.medium-margin-collapse>.small-7{width:58.333%}.medium-margin-collapse>.small-8{width:66.667%}.medium-margin-collapse>.small-9{width:75%}.medium-margin-collapse>.small-10{width:83.333%}.medium-margin-collapse>.small-11{width:91.667%}.medium-margin-collapse>.small-12{width:100%}}@media print, screen and (min-width: 40em){.medium-margin-collapse>.medium-1{width:8.333%}.medium-margin-collapse>.medium-2{width:16.667%}.medium-margin-collapse>.medium-3{width:25%}.medium-margin-collapse>.medium-4{width:33.333%}.medium-margin-collapse>.medium-5{width:41.667%}.medium-margin-collapse>.medium-6{width:50%}.medium-margin-collapse>.medium-7{width:58.333%}.medium-margin-collapse>.medium-8{width:66.667%}.medium-margin-collapse>.medium-9{width:75%}.medium-margin-collapse>.medium-10{width:83.333%}.medium-margin-collapse>.medium-11{width:91.667%}.medium-margin-collapse>.medium-12{width:100%}}@media print, screen and (min-width: 64em){.medium-margin-collapse>.large-1{width:8.333%}.medium-margin-collapse>.large-2{width:16.667%}.medium-margin-collapse>.large-3{width:25%}.medium-margin-collapse>.large-4{width:33.333%}.medium-margin-collapse>.large-5{width:41.667%}.medium-margin-collapse>.large-6{width:50%}.medium-margin-collapse>.large-7{width:58.333%}.medium-margin-collapse>.large-8{width:66.667%}.medium-margin-collapse>.large-9{width:75%}.medium-margin-collapse>.large-10{width:83.333%}.medium-margin-collapse>.large-11{width:91.667%}.medium-margin-collapse>.large-12{width:100%}}@media print, screen and (min-width: 40em){.medium-padding-collapse{margin-right:0;margin-left:0}.medium-padding-collapse>.cell{padding-right:0;padding-left:0}}@media print, screen and (min-width: 64em){.large-margin-collapse{margin-right:0;margin-left:0}.large-margin-collapse>.cell{margin-right:0;margin-left:0}}@media print, screen and (min-width: 64em){.large-margin-collapse>.small-1{width:8.333%}.large-margin-collapse>.small-2{width:16.667%}.large-margin-collapse>.small-3{width:25%}.large-margin-collapse>.small-4{width:33.333%}.large-margin-collapse>.small-5{width:41.667%}.large-margin-collapse>.small-6{width:50%}.large-margin-collapse>.small-7{width:58.333%}.large-margin-collapse>.small-8{width:66.667%}.large-margin-collapse>.small-9{width:75%}.large-margin-collapse>.small-10{width:83.333%}.large-margin-collapse>.small-11{width:91.667%}.large-margin-collapse>.small-12{width:100%}}@media print, screen and (min-width: 64em){.large-margin-collapse>.medium-1{width:8.333%}.large-margin-collapse>.medium-2{width:16.667%}.large-margin-collapse>.medium-3{width:25%}.large-margin-collapse>.medium-4{width:33.333%}.large-margin-collapse>.medium-5{width:41.667%}.large-margin-collapse>.medium-6{width:50%}.large-margin-collapse>.medium-7{width:58.333%}.large-margin-collapse>.medium-8{width:66.667%}.large-margin-collapse>.medium-9{width:75%}.large-margin-collapse>.medium-10{width:83.333%}.large-margin-collapse>.medium-11{width:91.667%}.large-margin-collapse>.medium-12{width:100%}}@media print, screen and (min-width: 64em){.large-margin-collapse>.large-1{width:8.333%}.large-margin-collapse>.large-2{width:16.667%}.large-margin-collapse>.large-3{width:25%}.large-margin-collapse>.large-4{width:33.333%}.large-margin-collapse>.large-5{width:41.667%}.large-margin-collapse>.large-6{width:50%}.large-margin-collapse>.large-7{width:58.333%}.large-margin-collapse>.large-8{width:66.667%}.large-margin-collapse>.large-9{width:75%}.large-margin-collapse>.large-10{width:83.333%}.large-margin-collapse>.large-11{width:91.667%}.large-margin-collapse>.large-12{width:100%}}@media print, screen and (min-width: 64em){.large-padding-collapse{margin-right:0;margin-left:0}.large-padding-collapse>.cell{padding-right:0;padding-left:0}}.small-offset-0{margin-left:0%}.grid-margin-x>.small-offset-0{margin-left:calc(0% + .625rem)}.small-offset-1{margin-left:8.333%}.grid-margin-x>.small-offset-1{margin-left:calc(8.333% + .625rem)}.small-offset-2{margin-left:16.667%}.grid-margin-x>.small-offset-2{margin-left:calc(16.667% + .625rem)}.small-offset-3{margin-left:25%}.grid-margin-x>.small-offset-3{margin-left:calc(25% + .625rem)}.small-offset-4{margin-left:33.333%}.grid-margin-x>.small-offset-4{margin-left:calc(33.333% + .625rem)}.small-offset-5{margin-left:41.667%}.grid-margin-x>.small-offset-5{margin-left:calc(41.667% + .625rem)}.small-offset-6{margin-left:50%}.grid-margin-x>.small-offset-6{margin-left:calc(50% + .625rem)}.small-offset-7{margin-left:58.333%}.grid-margin-x>.small-offset-7{margin-left:calc(58.333% + .625rem)}.small-offset-8{margin-left:66.667%}.grid-margin-x>.small-offset-8{margin-left:calc(66.667% + .625rem)}.small-offset-9{margin-left:75%}.grid-margin-x>.small-offset-9{margin-left:calc(75% + .625rem)}.small-offset-10{margin-left:83.333%}.grid-margin-x>.small-offset-10{margin-left:calc(83.333% + .625rem)}.small-offset-11{margin-left:91.667%}.grid-margin-x>.small-offset-11{margin-left:calc(91.667% + .625rem)}@media print, screen and (min-width: 40em){.medium-offset-0{margin-left:0%}.grid-margin-x>.medium-offset-0{margin-left:calc(0% + .938rem)}.medium-offset-1{margin-left:8.333%}.grid-margin-x>.medium-offset-1{margin-left:calc(8.333% + .938rem)}.medium-offset-2{margin-left:16.667%}.grid-margin-x>.medium-offset-2{margin-left:calc(16.667% + .938rem)}.medium-offset-3{margin-left:25%}.grid-margin-x>.medium-offset-3{margin-left:calc(25% + .938rem)}.medium-offset-4{margin-left:33.333%}.grid-margin-x>.medium-offset-4{margin-left:calc(33.333% + .938rem)}.medium-offset-5{margin-left:41.667%}.grid-margin-x>.medium-offset-5{margin-left:calc(41.667% + .938rem)}.medium-offset-6{margin-left:50%}.grid-margin-x>.medium-offset-6{margin-left:calc(50% + .938rem)}.medium-offset-7{margin-left:58.333%}.grid-margin-x>.medium-offset-7{margin-left:calc(58.333% + .938rem)}.medium-offset-8{margin-left:66.667%}.grid-margin-x>.medium-offset-8{margin-left:calc(66.667% + .938rem)}.medium-offset-9{margin-left:75%}.grid-margin-x>.medium-offset-9{margin-left:calc(75% + .938rem)}.medium-offset-10{margin-left:83.333%}.grid-margin-x>.medium-offset-10{margin-left:calc(83.333% + .938rem)}.medium-offset-11{margin-left:91.667%}.grid-margin-x>.medium-offset-11{margin-left:calc(91.667% + .938rem)}}@media print, screen and (min-width: 64em){.large-offset-0{margin-left:0%}.grid-margin-x>.large-offset-0{margin-left:calc(0% + .938rem)}.large-offset-1{margin-left:8.333%}.grid-margin-x>.large-offset-1{margin-left:calc(8.333% + .938rem)}.large-offset-2{margin-left:16.667%}.grid-margin-x>.large-offset-2{margin-left:calc(16.667% + .938rem)}.large-offset-3{margin-left:25%}.grid-margin-x>.large-offset-3{margin-left:calc(25% + .938rem)}.large-offset-4{margin-left:33.333%}.grid-margin-x>.large-offset-4{margin-left:calc(33.333% + .938rem)}.large-offset-5{margin-left:41.667%}.grid-margin-x>.large-offset-5{margin-left:calc(41.667% + .938rem)}.large-offset-6{margin-left:50%}.grid-margin-x>.large-offset-6{margin-left:calc(50% + .938rem)}.large-offset-7{margin-left:58.333%}.grid-margin-x>.large-offset-7{margin-left:calc(58.333% + .938rem)}.large-offset-8{margin-left:66.667%}.grid-margin-x>.large-offset-8{margin-left:calc(66.667% + .938rem)}.large-offset-9{margin-left:75%}.grid-margin-x>.large-offset-9{margin-left:calc(75% + .938rem)}.large-offset-10{margin-left:83.333%}.grid-margin-x>.large-offset-10{margin-left:calc(83.333% + .938rem)}.large-offset-11{margin-left:91.667%}.grid-margin-x>.large-offset-11{margin-left:calc(91.667% + .938rem)}}.grid-y{display:flex;flex-flow:column nowrap}.grid-y>.cell{width:auto}.grid-y>.auto{height:auto}.grid-y>.shrink{height:auto}.grid-y>.small-shrink,.grid-y>.small-full,.grid-y>.small-1,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12{flex-basis:auto}@media print, screen and (min-width: 40em){.grid-y>.medium-shrink,.grid-y>.medium-full,.grid-y>.medium-1,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12{flex-basis:auto}}@media print, screen and (min-width: 64em){.grid-y>.large-shrink,.grid-y>.large-full,.grid-y>.large-1,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12{flex-basis:auto}}.grid-y>.small-1{height:8.333%}.grid-y>.small-2{height:16.667%}.grid-y>.small-3{height:25%}.grid-y>.small-4{height:33.333%}.grid-y>.small-5{height:41.667%}.grid-y>.small-6{height:50%}.grid-y>.small-7{height:58.333%}.grid-y>.small-8{height:66.667%}.grid-y>.small-9{height:75%}.grid-y>.small-10{height:83.333%}.grid-y>.small-11{height:91.667%}.grid-y>.small-12{height:100%}@media print, screen and (min-width: 40em){.grid-y>.medium-auto{flex:1 1 0px;height:auto}.grid-y>.medium-shrink{height:auto}.grid-y>.medium-1{height:8.333%}.grid-y>.medium-2{height:16.667%}.grid-y>.medium-3{height:25%}.grid-y>.medium-4{height:33.333%}.grid-y>.medium-5{height:41.667%}.grid-y>.medium-6{height:50%}.grid-y>.medium-7{height:58.333%}.grid-y>.medium-8{height:66.667%}.grid-y>.medium-9{height:75%}.grid-y>.medium-10{height:83.333%}.grid-y>.medium-11{height:91.667%}.grid-y>.medium-12{height:100%}}@media print, screen and (min-width: 64em){.grid-y>.large-auto{flex:1 1 0px;height:auto}.grid-y>.large-shrink{height:auto}.grid-y>.large-1{height:8.333%}.grid-y>.large-2{height:16.667%}.grid-y>.large-3{height:25%}.grid-y>.large-4{height:33.333%}.grid-y>.large-5{height:41.667%}.grid-y>.large-6{height:50%}.grid-y>.large-7{height:58.333%}.grid-y>.large-8{height:66.667%}.grid-y>.large-9{height:75%}.grid-y>.large-10{height:83.333%}.grid-y>.large-11{height:91.667%}.grid-y>.large-12{height:100%}}.grid-padding-y .grid-padding-y{margin-top:-.625rem;margin-bottom:-.625rem}@media print, screen and (min-width: 40em){.grid-padding-y .grid-padding-y{margin-top:-.938rem;margin-bottom:-.938rem}}.grid-padding-y>.cell{padding-top:.625rem;padding-bottom:.625rem}@media print, screen and (min-width: 40em){.grid-padding-y>.cell{padding-top:.938rem;padding-bottom:.938rem}}.grid-margin-y{margin-top:-.625rem;margin-bottom:-.625rem}@media print, screen and (min-width: 40em){.grid-margin-y{margin-top:-.938rem;margin-bottom:-.938rem}}.grid-margin-y>.cell{height:calc(100% - 1.25rem);margin-top:.625rem;margin-bottom:.625rem}@media print, screen and (min-width: 40em){.grid-margin-y>.cell{height:calc(100% - 1.875rem);margin-top:.938rem;margin-bottom:.938rem}}.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.333% - 1.25rem)}.grid-margin-y>.small-2{height:calc(16.667% - 1.25rem)}.grid-margin-y>.small-3{height:calc(25% - 1.25rem)}.grid-margin-y>.small-4{height:calc(33.333% - 1.25rem)}.grid-margin-y>.small-5{height:calc(41.667% - 1.25rem)}.grid-margin-y>.small-6{height:calc(50% - 1.25rem)}.grid-margin-y>.small-7{height:calc(58.333% - 1.25rem)}.grid-margin-y>.small-8{height:calc(66.667% - 1.25rem)}.grid-margin-y>.small-9{height:calc(75% - 1.25rem)}.grid-margin-y>.small-10{height:calc(83.333% - 1.25rem)}.grid-margin-y>.small-11{height:calc(91.667% - 1.25rem)}.grid-margin-y>.small-12{height:calc(100% - 1.25rem)}@media print, screen and (min-width: 40em){.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.333% - 1.875rem)}.grid-margin-y>.small-2{height:calc(16.667% - 1.875rem)}.grid-margin-y>.small-3{height:calc(25% - 1.875rem)}.grid-margin-y>.small-4{height:calc(33.333% - 1.875rem)}.grid-margin-y>.small-5{height:calc(41.667% - 1.875rem)}.grid-margin-y>.small-6{height:calc(50% - 1.875rem)}.grid-margin-y>.small-7{height:calc(58.333% - 1.875rem)}.grid-margin-y>.small-8{height:calc(66.667% - 1.875rem)}.grid-margin-y>.small-9{height:calc(75% - 1.875rem)}.grid-margin-y>.small-10{height:calc(83.333% - 1.875rem)}.grid-margin-y>.small-11{height:calc(91.667% - 1.875rem)}.grid-margin-y>.small-12{height:calc(100% - 1.875rem)}.grid-margin-y>.medium-auto{height:auto}.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.333% - 1.875rem)}.grid-margin-y>.medium-2{height:calc(16.667% - 1.875rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.875rem)}.grid-margin-y>.medium-4{height:calc(33.333% - 1.875rem)}.grid-margin-y>.medium-5{height:calc(41.667% - 1.875rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.875rem)}.grid-margin-y>.medium-7{height:calc(58.333% - 1.875rem)}.grid-margin-y>.medium-8{height:calc(66.667% - 1.875rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.875rem)}.grid-margin-y>.medium-10{height:calc(83.333% - 1.875rem)}.grid-margin-y>.medium-11{height:calc(91.667% - 1.875rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-y>.large-auto{height:auto}.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.333% - 1.875rem)}.grid-margin-y>.large-2{height:calc(16.667% - 1.875rem)}.grid-margin-y>.large-3{height:calc(25% - 1.875rem)}.grid-margin-y>.large-4{height:calc(33.333% - 1.875rem)}.grid-margin-y>.large-5{height:calc(41.667% - 1.875rem)}.grid-margin-y>.large-6{height:calc(50% - 1.875rem)}.grid-margin-y>.large-7{height:calc(58.333% - 1.875rem)}.grid-margin-y>.large-8{height:calc(66.667% - 1.875rem)}.grid-margin-y>.large-9{height:calc(75% - 1.875rem)}.grid-margin-y>.large-10{height:calc(83.333% - 1.875rem)}.grid-margin-y>.large-11{height:calc(91.667% - 1.875rem)}.grid-margin-y>.large-12{height:calc(100% - 1.875rem)}}.grid-frame{overflow:hidden;position:relative;flex-wrap:nowrap;align-items:stretch;width:100vw}.cell .grid-frame{width:100%}.cell-block{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;-ms-overflow-stype:-ms-autohiding-scrollbar}.cell-block-y{overflow-y:auto;max-height:100%;-webkit-overflow-scrolling:touch;-ms-overflow-stype:-ms-autohiding-scrollbar}.cell-block-container{display:flex;flex-direction:column;max-height:100%}.cell-block-container>.grid-x{max-height:100%;flex-wrap:nowrap}@media print, screen and (min-width: 40em){.medium-grid-frame{overflow:hidden;position:relative;flex-wrap:nowrap;align-items:stretch;width:100vw}.cell .medium-grid-frame{width:100%}.medium-cell-block{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;-ms-overflow-stype:-ms-autohiding-scrollbar}.medium-cell-block-container{display:flex;flex-direction:column;max-height:100%}.medium-cell-block-container>.grid-x{max-height:100%;flex-wrap:nowrap}.medium-cell-block-y{overflow-y:auto;max-height:100%;-webkit-overflow-scrolling:touch;-ms-overflow-stype:-ms-autohiding-scrollbar}}@media print, screen and (min-width: 64em){.large-grid-frame{overflow:hidden;position:relative;flex-wrap:nowrap;align-items:stretch;width:100vw}.cell .large-grid-frame{width:100%}.large-cell-block{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;-ms-overflow-stype:-ms-autohiding-scrollbar}.large-cell-block-container{display:flex;flex-direction:column;max-height:100%}.large-cell-block-container>.grid-x{max-height:100%;flex-wrap:nowrap}.large-cell-block-y{overflow-y:auto;max-height:100%;-webkit-overflow-scrolling:touch;-ms-overflow-stype:-ms-autohiding-scrollbar}}.grid-y.grid-frame{width:auto;overflow:hidden;position:relative;flex-wrap:nowrap;align-items:stretch;height:100vh}@media print, screen and (min-width: 40em){.grid-y.medium-grid-frame{width:auto;overflow:hidden;position:relative;flex-wrap:nowrap;align-items:stretch;height:100vh}}@media print, screen and (min-width: 64em){.grid-y.large-grid-frame{width:auto;overflow:hidden;position:relative;flex-wrap:nowrap;align-items:stretch;height:100vh}}.cell .grid-y.grid-frame{height:100%}@media print, screen and (min-width: 40em){.cell .grid-y.medium-grid-frame{height:100%}}@media print, screen and (min-width: 64em){.cell .grid-y.large-grid-frame{height:100%}}.grid-margin-y{margin-top:-.625rem;margin-bottom:-.625rem}@media print, screen and (min-width: 40em){.grid-margin-y{margin-top:-.938rem;margin-bottom:-.938rem}}.grid-margin-y>.cell{height:calc(100% - 1.25rem);margin-top:.625rem;margin-bottom:.625rem}@media print, screen and (min-width: 40em){.grid-margin-y>.cell{height:calc(100% - 1.875rem);margin-top:.938rem;margin-bottom:.938rem}}.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.333% - 1.25rem)}.grid-margin-y>.small-2{height:calc(16.667% - 1.25rem)}.grid-margin-y>.small-3{height:calc(25% - 1.25rem)}.grid-margin-y>.small-4{height:calc(33.333% - 1.25rem)}.grid-margin-y>.small-5{height:calc(41.667% - 1.25rem)}.grid-margin-y>.small-6{height:calc(50% - 1.25rem)}.grid-margin-y>.small-7{height:calc(58.333% - 1.25rem)}.grid-margin-y>.small-8{height:calc(66.667% - 1.25rem)}.grid-margin-y>.small-9{height:calc(75% - 1.25rem)}.grid-margin-y>.small-10{height:calc(83.333% - 1.25rem)}.grid-margin-y>.small-11{height:calc(91.667% - 1.25rem)}.grid-margin-y>.small-12{height:calc(100% - 1.25rem)}@media print, screen and (min-width: 40em){.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.333% - 1.875rem)}.grid-margin-y>.small-2{height:calc(16.667% - 1.875rem)}.grid-margin-y>.small-3{height:calc(25% - 1.875rem)}.grid-margin-y>.small-4{height:calc(33.333% - 1.875rem)}.grid-margin-y>.small-5{height:calc(41.667% - 1.875rem)}.grid-margin-y>.small-6{height:calc(50% - 1.875rem)}.grid-margin-y>.small-7{height:calc(58.333% - 1.875rem)}.grid-margin-y>.small-8{height:calc(66.667% - 1.875rem)}.grid-margin-y>.small-9{height:calc(75% - 1.875rem)}.grid-margin-y>.small-10{height:calc(83.333% - 1.875rem)}.grid-margin-y>.small-11{height:calc(91.667% - 1.875rem)}.grid-margin-y>.small-12{height:calc(100% - 1.875rem)}.grid-margin-y>.medium-auto{height:auto}.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.333% - 1.875rem)}.grid-margin-y>.medium-2{height:calc(16.667% - 1.875rem)}.grid-margin-y>.medium-3{height:calc(25% - 1.875rem)}.grid-margin-y>.medium-4{height:calc(33.333% - 1.875rem)}.grid-margin-y>.medium-5{height:calc(41.667% - 1.875rem)}.grid-margin-y>.medium-6{height:calc(50% - 1.875rem)}.grid-margin-y>.medium-7{height:calc(58.333% - 1.875rem)}.grid-margin-y>.medium-8{height:calc(66.667% - 1.875rem)}.grid-margin-y>.medium-9{height:calc(75% - 1.875rem)}.grid-margin-y>.medium-10{height:calc(83.333% - 1.875rem)}.grid-margin-y>.medium-11{height:calc(91.667% - 1.875rem)}.grid-margin-y>.medium-12{height:calc(100% - 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-y>.large-auto{height:auto}.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.333% - 1.875rem)}.grid-margin-y>.large-2{height:calc(16.667% - 1.875rem)}.grid-margin-y>.large-3{height:calc(25% - 1.875rem)}.grid-margin-y>.large-4{height:calc(33.333% - 1.875rem)}.grid-margin-y>.large-5{height:calc(41.667% - 1.875rem)}.grid-margin-y>.large-6{height:calc(50% - 1.875rem)}.grid-margin-y>.large-7{height:calc(58.333% - 1.875rem)}.grid-margin-y>.large-8{height:calc(66.667% - 1.875rem)}.grid-margin-y>.large-9{height:calc(75% - 1.875rem)}.grid-margin-y>.large-10{height:calc(83.333% - 1.875rem)}.grid-margin-y>.large-11{height:calc(91.667% - 1.875rem)}.grid-margin-y>.large-12{height:calc(100% - 1.875rem)}}.grid-frame.grid-margin-y{height:calc(100vh + 1.25rem)}@media print, screen and (min-width: 40em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print, screen and (min-width: 64em){.grid-frame.grid-margin-y{height:calc(100vh + 1.875rem)}}@media print, screen and (min-width: 40em){.grid-margin-y.medium-grid-frame{height:calc(100vh + 1.875rem)}}@media print, screen and (min-width: 64em){.grid-margin-y.large-grid-frame{height:calc(100vh + 1.875rem)}}div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}p{margin-bottom:1rem;font-size:inherit;line-height:1.6;text-rendering:optimizeLegibility}em,i{font-style:italic;line-height:inherit}strong,b{font-weight:bold;line-height:inherit}small{font-size:80%;line-height:inherit}h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6{font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:normal;color:inherit;text-rendering:optimizeLegibility}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small{line-height:0;color:#cacaca}h1,.h1{font-size:1.5rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h2,.h2{font-size:1.25rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h3,.h3{font-size:1.188rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h4,.h4{font-size:1.125rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h5,.h5{font-size:1.062rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h6,.h6{font-size:1rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}pre,.pre{font-size:.75rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}code,.code{font-size:.75rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}@media print, screen and (min-width: 40em){h1,.h1{font-size:2.5rem}h2,.h2{font-size:2.062rem}h3,.h3{font-size:1.688rem}h4,.h4{font-size:1.438rem}h5,.h5{font-size:1.188rem}h6,.h6{font-size:1rem}pre,.pre{font-size:.875rem}code,.code{font-size:.875rem}}a{line-height:inherit;color:#1779ba;text-decoration:none;cursor:pointer}a:hover,a:focus{color:#1468a0}a img{border:0}hr{clear:both;max-width:62.5rem;height:0;margin:1.25rem auto;border-top:0;border-right:0;border-bottom:1px solid #cacaca;border-left:0}ul,ol,dl{margin-bottom:1rem;list-style-position:outside;line-height:1.6}li{font-size:inherit}ul{margin-left:1.25rem;list-style-type:disc}ol{margin-left:1.25rem}ul ul,ol ul,ul ol,ol ol{margin-left:1.25rem;margin-bottom:0}dl{margin-bottom:1rem}dl dt{margin-bottom:.3rem;font-weight:bold}blockquote{margin:0 0 1rem;padding:.562rem 1.25rem 0 1.188rem;border-left:1px solid #cacaca}blockquote,blockquote p{line-height:1.6;color:#8a8a8a}cite{display:block;font-size:.812rem;color:#8a8a8a}cite:before{content:"— "}abbr,abbr[title]{border-bottom:1px dotted #0a0a0a;cursor:help;text-decoration:none}figure{margin:0}code{padding:.125rem .312rem .062rem;border:1px solid #cacaca;background-color:#e6e6e6;font-family:Consolas,Menlo,"Liberation Mono",Courier,monospace;font-weight:normal;color:#0a0a0a}kbd{margin:0;padding:.125rem .25rem 0;background-color:#e6e6e6;font-family:Consolas,Menlo,"Liberation Mono",Courier,monospace;color:#0a0a0a}.subheader{margin-top:.2rem;margin-bottom:.5rem;font-weight:normal;line-height:1.4;color:#8a8a8a}.lead{font-size:20px;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}ul.no-bullet,ol.no-bullet{margin-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media print, screen and (min-width: 40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media print, screen and (min-width: 64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none !important}@media print{*{background:transparent !important;box-shadow:none !important;color:black !important;text-shadow:none !important}.show-for-print{display:block !important}.hide-for-print{display:none !important}table.show-for-print{display:table !important}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^='javascript:']:after,a[href^='#']:after{content:''}abbr[title]:after{content:" (" attr(title) ")"}pre,blockquote{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.print-break-inside{page-break-inside:auto}}[type='text'],[type='password'],[type='date'],[type='datetime'],[type='datetime-local'],[type='month'],[type='week'],[type='email'],[type='number'],[type='search'],[type='tel'],[type='time'],[type='url'],[type='color'],textarea{display:block;box-sizing:border-box;width:100%;height:2.438rem;margin:0 0 1rem;padding:.5rem;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1);font-family:inherit;font-size:1rem;font-weight:normal;line-height:1.5;color:#0a0a0a;transition:box-shadow 0.5s,border-color 0.25s ease-in-out;appearance:none}[type='text']:focus,[type='password']:focus,[type='date']:focus,[type='datetime']:focus,[type='datetime-local']:focus,[type='month']:focus,[type='week']:focus,[type='email']:focus,[type='number']:focus,[type='search']:focus,[type='tel']:focus,[type='time']:focus,[type='url']:focus,[type='color']:focus,textarea:focus{outline:none;border:1px solid #8a8a8a;background-color:#fefefe;box-shadow:0 0 5px #cacaca;transition:box-shadow 0.5s,border-color 0.25s ease-in-out}textarea{max-width:100%}textarea[rows]{height:auto}input::placeholder,textarea::placeholder{color:#cacaca}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type='submit'],[type='button']{appearance:none;border-radius:0}input[type='search']{box-sizing:border-box}[type='file'],[type='checkbox'],[type='radio']{margin:0 0 1rem}[type='checkbox']+label,[type='radio']+label{display:inline-block;vertical-align:baseline;margin-left:.5rem;margin-right:1rem;margin-bottom:0}[type='checkbox']+label[for],[type='radio']+label[for]{cursor:pointer}label>[type='checkbox'],label>[type='radio']{margin-right:.5rem}[type='file']{width:100%}label{display:block;margin:0;font-size:.875rem;font-weight:normal;line-height:1.8;color:#0a0a0a}label.middle{margin:0 0 1rem;padding:.562rem 0}.help-text{margin-top:-.5rem;font-size:.812rem;font-style:italic;color:#0a0a0a}.input-group{display:flex;width:100%;margin-bottom:1rem;align-items:stretch}.input-group>:first-child{border-radius:0 0 0 0}.input-group>:last-child>*{border-radius:0 0 0 0}.input-group-label,.input-group-field,.input-group-button,.input-group-button a,.input-group-button input,.input-group-button button,.input-group-button label{margin:0;white-space:nowrap}.input-group-label{padding:0 1rem;border:1px solid #cacaca;background:#e6e6e6;color:#0a0a0a;text-align:center;white-space:nowrap;display:flex;flex:0 0 auto;align-items:center}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;flex:1 1 0px;height:auto;min-width:0}.input-group-button{padding-top:0;padding-bottom:0;text-align:center;display:flex;flex:0 0 auto}.input-group-button a,.input-group-button input,.input-group-button button,.input-group-button label{height:auto;align-self:stretch;padding-top:0;padding-bottom:0;font-size:1rem}fieldset{margin:0;padding:0;border:0}legend{max-width:100%;margin-bottom:.5rem}.fieldset{margin:1.125rem 0;padding:1.25rem;border:1px solid #cacaca}.fieldset legend{margin:0;margin-left:-.188rem;padding:0 .188rem}select{height:2.438rem;margin:0 0 1rem;padding:.5rem;appearance:none;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;font-family:inherit;font-size:1rem;font-weight:normal;line-height:1.5;color:#0a0a0a;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%28138, 138, 138%29'></polygon></svg>");background-origin:content-box;background-position:right -1rem center;background-repeat:no-repeat;background-size:9px 6px;padding-right:1.5rem;transition:box-shadow 0.5s,border-color 0.25s ease-in-out}@media screen and (min-width: 0\0){select{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==")}}select:focus{outline:none;border:1px solid #8a8a8a;background-color:#fefefe;box-shadow:0 0 5px #cacaca;transition:box-shadow 0.5s,border-color 0.25s ease-in-out}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{height:auto;background-image:none}.is-invalid-input:not(:focus){border-color:#cc4b37;background-color:#f9ecea}.is-invalid-input:not(:focus)::placeholder{color:#cc4b37}.is-invalid-label{color:#cc4b37}.form-error{display:none;margin-top:-.5rem;margin-bottom:1rem;font-size:.75rem;font-weight:bold;color:#cc4b37}.form-error.is-visible{display:block}.button{display:inline-block;vertical-align:middle;margin:0 0 1rem 0;font-family:inherit;padding:0.85em 1em;-webkit-appearance:none;border:1px solid transparent;border-radius:0;transition:background-color 0.25s ease-out,color 0.25s ease-out;font-size:0.9rem;line-height:1;text-align:center;cursor:pointer;background-color:#1779ba;color:#fefefe}[data-whatinput='mouse'] .button{outline:0}.button:hover,.button:focus{background-color:#14679e;color:#fefefe}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;width:100%;margin-right:0;margin-left:0}.button.primary{background-color:#1779ba;color:#fefefe}.button.primary:hover,.button.primary:focus{background-color:#126195;color:#fefefe}.button.secondary{background-color:#767676;color:#fefefe}.button.secondary:hover,.button.secondary:focus{background-color:#5e5e5e;color:#fefefe}.button.success{background-color:#3adb76;color:#0a0a0a}.button.success:hover,.button.success:focus{background-color:#22bb5b;color:#0a0a0a}.button.warning{background-color:#ffae00;color:#0a0a0a}.button.warning:hover,.button.warning:focus{background-color:#cc8b00;color:#0a0a0a}.button.alert{background-color:#cc4b37;color:#fefefe}.button.alert:hover,.button.alert:focus{background-color:#a53b2a;color:#fefefe}.button.disabled,.button[disabled]{opacity:.25;cursor:not-allowed}.button.disabled,.button.disabled:hover,.button.disabled:focus,.button[disabled],.button[disabled]:hover,.button[disabled]:focus{background-color:#1779ba;color:#fefefe}.button.disabled.primary,.button[disabled].primary{opacity:.25;cursor:not-allowed}.button.disabled.primary,.button.disabled.primary:hover,.button.disabled.primary:focus,.button[disabled].primary,.button[disabled].primary:hover,.button[disabled].primary:focus{background-color:#1779ba;color:#fefefe}.button.disabled.secondary,.button[disabled].secondary{opacity:.25;cursor:not-allowed}.button.disabled.secondary,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#767676;color:#fefefe}.button.disabled.success,.button[disabled].success{opacity:.25;cursor:not-allowed}.button.disabled.success,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#3adb76;color:#0a0a0a}.button.disabled.warning,.button[disabled].warning{opacity:.25;cursor:not-allowed}.button.disabled.warning,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning,.button[disabled].warning:hover,.button[disabled].warning:focus{background-color:#ffae00;color:#0a0a0a}.button.disabled.alert,.button[disabled].alert{opacity:.25;cursor:not-allowed}.button.disabled.alert,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#cc4b37;color:#fefefe}.button.hollow{border:1px solid #1779ba;color:#1779ba}.button.hollow,.button.hollow:hover,.button.hollow:focus{background-color:transparent}.button.hollow.disabled,.button.hollow.disabled:hover,.button.hollow.disabled:focus,.button.hollow[disabled],.button.hollow[disabled]:hover,.button.hollow[disabled]:focus{background-color:transparent}.button.hollow:hover,.button.hollow:focus{border-color:#0c3d5d;color:#0c3d5d}.button.hollow:hover.disabled,.button.hollow:hover[disabled],.button.hollow:focus.disabled,.button.hollow:focus[disabled]{border:1px solid #1779ba;color:#1779ba}.button.hollow.primary{border:1px solid #1779ba;color:#1779ba}.button.hollow.primary:hover,.button.hollow.primary:focus{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.primary:hover.disabled,.button.hollow.primary:hover[disabled],.button.hollow.primary:focus.disabled,.button.hollow.primary:focus[disabled]{border:1px solid #1779ba;color:#1779ba}.button.hollow.secondary{border:1px solid #767676;color:#767676}.button.hollow.secondary:hover,.button.hollow.secondary:focus{border-color:#3b3b3b;color:#3b3b3b}.button.hollow.secondary:hover.disabled,.button.hollow.secondary:hover[disabled],.button.hollow.secondary:focus.disabled,.button.hollow.secondary:focus[disabled]{border:1px solid #767676;color:#767676}.button.hollow.success{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:hover,.button.hollow.success:focus{border-color:#157539;color:#157539}.button.hollow.success:hover.disabled,.button.hollow.success:hover[disabled],.button.hollow.success:focus.disabled,.button.hollow.success:focus[disabled]{border:1px solid #3adb76;color:#3adb76}.button.hollow.warning{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:hover,.button.hollow.warning:focus{border-color:#805700;color:#805700}.button.hollow.warning:hover.disabled,.button.hollow.warning:hover[disabled],.button.hollow.warning:focus.disabled,.button.hollow.warning:focus[disabled]{border:1px solid #ffae00;color:#ffae00}.button.hollow.alert{border:1px solid #cc4b37;color:#cc4b37}.button.hollow.alert:hover,.button.hollow.alert:focus{border-color:#67251a;color:#67251a}.button.hollow.alert:hover.disabled,.button.hollow.alert:hover[disabled],.button.hollow.alert:focus.disabled,.button.hollow.alert:focus[disabled]{border:1px solid #cc4b37;color:#cc4b37}.button.clear{border:1px solid #1779ba;color:#1779ba}.button.clear,.button.clear:hover,.button.clear:focus{background-color:transparent}.button.clear.disabled,.button.clear.disabled:hover,.button.clear.disabled:focus,.button.clear[disabled],.button.clear[disabled]:hover,.button.clear[disabled]:focus{background-color:transparent}.button.clear:hover,.button.clear:focus{border-color:#0c3d5d;color:#0c3d5d}.button.clear:hover.disabled,.button.clear:hover[disabled],.button.clear:focus.disabled,.button.clear:focus[disabled]{border:1px solid #1779ba;color:#1779ba}.button.clear,.button.clear.disabled,.button.clear[disabled],.button.clear:hover,.button.clear:hover.disabled,.button.clear:hover[disabled],.button.clear:focus,.button.clear:focus.disabled,.button.clear:focus[disabled]{border-color:transparent}.button.clear.primary{border:1px solid #1779ba;color:#1779ba}.button.clear.primary:hover,.button.clear.primary:focus{border-color:#0c3d5d;color:#0c3d5d}.button.clear.primary:hover.disabled,.button.clear.primary:hover[disabled],.button.clear.primary:focus.disabled,.button.clear.primary:focus[disabled]{border:1px solid #1779ba;color:#1779ba}.button.clear.primary,.button.clear.primary.disabled,.button.clear.primary[disabled],.button.clear.primary:hover,.button.clear.primary:hover.disabled,.button.clear.primary:hover[disabled],.button.clear.primary:focus,.button.clear.primary:focus.disabled,.button.clear.primary:focus[disabled]{border-color:transparent}.button.clear.secondary{border:1px solid #767676;color:#767676}.button.clear.secondary:hover,.button.clear.secondary:focus{border-color:#3b3b3b;color:#3b3b3b}.button.clear.secondary:hover.disabled,.button.clear.secondary:hover[disabled],.button.clear.secondary:focus.disabled,.button.clear.secondary:focus[disabled]{border:1px solid #767676;color:#767676}.button.clear.secondary,.button.clear.secondary.disabled,.button.clear.secondary[disabled],.button.clear.secondary:hover,.button.clear.secondary:hover.disabled,.button.clear.secondary:hover[disabled],.button.clear.secondary:focus,.button.clear.secondary:focus.disabled,.button.clear.secondary:focus[disabled]{border-color:transparent}.button.clear.success{border:1px solid #3adb76;color:#3adb76}.button.clear.success:hover,.button.clear.success:focus{border-color:#157539;color:#157539}.button.clear.success:hover.disabled,.button.clear.success:hover[disabled],.button.clear.success:focus.disabled,.button.clear.success:focus[disabled]{border:1px solid #3adb76;color:#3adb76}.button.clear.success,.button.clear.success.disabled,.button.clear.success[disabled],.button.clear.success:hover,.button.clear.success:hover.disabled,.button.clear.success:hover[disabled],.button.clear.success:focus,.button.clear.success:focus.disabled,.button.clear.success:focus[disabled]{border-color:transparent}.button.clear.warning{border:1px solid #ffae00;color:#ffae00}.button.clear.warning:hover,.button.clear.warning:focus{border-color:#805700;color:#805700}.button.clear.warning:hover.disabled,.button.clear.warning:hover[disabled],.button.clear.warning:focus.disabled,.button.clear.warning:focus[disabled]{border:1px solid #ffae00;color:#ffae00}.button.clear.warning,.button.clear.warning.disabled,.button.clear.warning[disabled],.button.clear.warning:hover,.button.clear.warning:hover.disabled,.button.clear.warning:hover[disabled],.button.clear.warning:focus,.button.clear.warning:focus.disabled,.button.clear.warning:focus[disabled]{border-color:transparent}.button.clear.alert{border:1px solid #cc4b37;color:#cc4b37}.button.clear.alert:hover,.button.clear.alert:focus{border-color:#67251a;color:#67251a}.button.clear.alert:hover.disabled,.button.clear.alert:hover[disabled],.button.clear.alert:focus.disabled,.button.clear.alert:focus[disabled]{border:1px solid #cc4b37;color:#cc4b37}.button.clear.alert,.button.clear.alert.disabled,.button.clear.alert[disabled],.button.clear.alert:hover,.button.clear.alert:hover.disabled,.button.clear.alert:hover[disabled],.button.clear.alert:focus,.button.clear.alert:focus.disabled,.button.clear.alert:focus[disabled]{border-color:transparent}.button.dropdown::after{display:block;width:0;height:0;border:inset .4em;content:'';border-bottom-width:0;border-top-style:solid;border-color:#fefefe transparent transparent;position:relative;top:0.4em;display:inline-block;float:right;margin-left:1em}.button.dropdown.hollow::after{border-top-color:#1779ba}.button.dropdown.hollow.primary::after{border-top-color:#1779ba}.button.dropdown.hollow.secondary::after{border-top-color:#767676}.button.dropdown.hollow.success::after{border-top-color:#3adb76}.button.dropdown.hollow.warning::after{border-top-color:#ffae00}.button.dropdown.hollow.alert::after{border-top-color:#cc4b37}.button.arrow-only::after{top:-0.1em;float:none;margin-left:0}a.button:hover,a.button:focus{text-decoration:none}.accordion{margin-left:0;background:#fefefe;list-style-type:none}.accordion[disabled] .accordion-title{cursor:not-allowed}.accordion-item:first-child>:first-child{border-radius:0 0 0 0}.accordion-item:last-child>:last-child{border-radius:0 0 0 0}.accordion-title{position:relative;display:block;padding:1.25rem 1rem;border:1px solid #e6e6e6;border-bottom:0;font-size:.75rem;line-height:1;color:#1779ba}:last-child:not(.is-active)>.accordion-title{border-bottom:1px solid #e6e6e6;border-radius:0 0 0 0}.accordion-title:hover,.accordion-title:focus{background-color:#e6e6e6}.accordion-title::before{position:absolute;top:50%;right:1rem;margin-top:-0.5rem;content:'+'}.is-active>.accordion-title::before{content:'\2013'}.accordion-content{display:none;padding:1rem;border:1px solid #e6e6e6;border-bottom:0;background-color:#fefefe;color:#0a0a0a}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.accordion-menu li{width:100%}.accordion-menu a{padding:0.7rem 1rem}.accordion-menu .is-accordion-submenu a{padding:0.7rem 1rem}.accordion-menu .nested.is-accordion-submenu{margin-right:0;margin-left:1rem}.accordion-menu.align-right .nested.is-accordion-submenu{margin-right:1rem;margin-left:0}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a{position:relative}.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle)>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;position:absolute;top:50%;margin-top:-3px;right:1rem}.accordion-menu.align-left .is-accordion-submenu-parent>a::after{left:auto;right:1rem}.accordion-menu.align-right .is-accordion-submenu-parent>a::after{right:auto;left:1rem}.accordion-menu .is-accordion-submenu-parent[aria-expanded='true']>a::after{transform:rotate(180deg);transform-origin:50% 50%}.is-accordion-submenu-parent{position:relative}.has-submenu-toggle>a{margin-right:40px}.submenu-toggle{position:absolute;top:0;right:0;cursor:pointer;width:40px;height:40px}.submenu-toggle::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;top:0;bottom:0;margin:auto}.submenu-toggle[aria-expanded='true']::after{transform:scaleY(-1);transform-origin:50% 50%}.submenu-toggle-text{position:absolute !important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);border:0}.badge{display:inline-block;min-width:2.1em;padding:.3em;border-radius:50%;font-size:.6rem;text-align:center;background:#1779ba;color:#fefefe}.badge.primary{background:#1779ba;color:#fefefe}.badge.secondary{background:#767676;color:#fefefe}.badge.success{background:#3adb76;color:#0a0a0a}.badge.warning{background:#ffae00;color:#0a0a0a}.badge.alert{background:#cc4b37;color:#fefefe}.breadcrumbs{margin:0 0 1rem 0;list-style:none}.breadcrumbs::before,.breadcrumbs::after{display:table;content:' ';flex-basis:0;order:1}.breadcrumbs::after{clear:both}.breadcrumbs li{float:left;font-size:.688rem;color:#0a0a0a;cursor:default;text-transform:uppercase}.breadcrumbs li:not(:last-child)::after{position:relative;margin:0 .75rem;opacity:1;content:"/";color:#cacaca}.breadcrumbs a{color:#1779ba}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.button-group{margin-bottom:1rem;display:flex;flex-wrap:nowrap;align-items:stretch}.button-group::before,.button-group::after{display:table;content:' ';flex-basis:0;order:1}.button-group::after{clear:both}.button-group .button{margin:0;margin-right:1px;margin-bottom:1px;font-size:0.9rem;flex:0 0 auto}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded .button{flex:1 1 0px}.button-group.primary .button{background-color:#1779ba;color:#fefefe}.button-group.primary .button:hover,.button-group.primary .button:focus{background-color:#126195;color:#fefefe}.button-group.secondary .button{background-color:#767676;color:#fefefe}.button-group.secondary .button:hover,.button-group.secondary .button:focus{background-color:#5e5e5e;color:#fefefe}.button-group.success .button{background-color:#3adb76;color:#0a0a0a}.button-group.success .button:hover,.button-group.success .button:focus{background-color:#22bb5b;color:#0a0a0a}.button-group.warning .button{background-color:#ffae00;color:#0a0a0a}.button-group.warning .button:hover,.button-group.warning .button:focus{background-color:#cc8b00;color:#0a0a0a}.button-group.alert .button{background-color:#cc4b37;color:#fefefe}.button-group.alert .button:hover,.button-group.alert .button:focus{background-color:#a53b2a;color:#fefefe}.button-group.stacked,.button-group.stacked-for-small,.button-group.stacked-for-medium{flex-wrap:wrap}.button-group.stacked .button,.button-group.stacked-for-small .button,.button-group.stacked-for-medium .button{flex:0 0 100%}.button-group.stacked .button:last-child,.button-group.stacked-for-small .button:last-child,.button-group.stacked-for-medium .button:last-child{margin-bottom:0}@media print, screen and (min-width: 40em){.button-group.stacked-for-small .button{flex:1 1 0px;margin-bottom:0}}@media print, screen and (min-width: 64em){.button-group.stacked-for-medium .button{flex:1 1 0px;margin-bottom:0}}@media screen and (max-width: 39.938em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}.callout{position:relative;margin:0 0 1rem 0;padding:1rem;border:1px solid rgba(10,10,10,0.25);border-radius:0;background-color:#fff;color:#0a0a0a}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#d7ecfa;color:#0a0a0a}.callout.secondary{background-color:#eaeaea;color:#0a0a0a}.callout.success{background-color:#e1faea;color:#0a0a0a}.callout.warning{background-color:#fff3d9;color:#0a0a0a}.callout.alert{background-color:#f7e4e1;color:#0a0a0a}.callout.small{padding-top:.5rem;padding-right:.5rem;padding-bottom:.5rem;padding-left:.5rem}.callout.large{padding-top:3rem;padding-right:3rem;padding-bottom:3rem;padding-left:3rem}.card{display:flex;flex-direction:column;flex-grow:1;margin-bottom:1rem;border:1px solid #e6e6e6;border-radius:0;background:#fefefe;box-shadow:none;overflow:hidden;color:#0a0a0a}.card>:last-child{margin-bottom:0}.card-divider{flex:0 1 auto;display:flex;padding:1rem;background:#e6e6e6}.card-divider>:last-child{margin-bottom:0}.card-section{flex:1 0 auto;padding:1rem}.card-section>:last-child{margin-bottom:0}.card-image{min-height:1px}.close-button{position:absolute;color:#8a8a8a;cursor:pointer}[data-whatinput='mouse'] .close-button{outline:0}.close-button:hover,.close-button:focus{color:#0a0a0a}.close-button.small{right:0.66rem;top:0.33em;font-size:1.5em;line-height:1}.close-button,.close-button.medium{right:1rem;top:0.5rem;font-size:2em;line-height:1}.menu{padding:0;margin:0;list-style:none;position:relative;display:flex;flex-wrap:wrap}[data-whatinput='mouse'] .menu li{outline:0}.menu a,.menu .button{line-height:1;text-decoration:none;display:block;padding:0.7rem 1rem}.menu input,.menu select,.menu a,.menu button{margin-bottom:0}.menu input{display:inline-block}.menu,.menu.horizontal{flex-wrap:wrap;flex-direction:row}.menu.vertical{flex-wrap:nowrap;flex-direction:column}.menu.expanded li{flex:1 1 0px}.menu.simple{align-items:center}.menu.simple li+li{margin-left:1rem}.menu.simple a{padding:0}@media print, screen and (min-width: 40em){.menu.medium-horizontal{flex-wrap:wrap;flex-direction:row}.menu.medium-vertical{flex-wrap:nowrap;flex-direction:column}.menu.medium-expanded li{flex:1 1 0px}.menu.medium-simple li{flex:1 1 0px}}@media print, screen and (min-width: 64em){.menu.large-horizontal{flex-wrap:wrap;flex-direction:row}.menu.large-vertical{flex-wrap:nowrap;flex-direction:column}.menu.large-expanded li{flex:1 1 0px}.menu.large-simple li{flex:1 1 0px}}.menu.nested{margin-right:0;margin-left:1rem}.menu.icons a{display:flex}.menu.icon-top a,.menu.icon-right a,.menu.icon-bottom a,.menu.icon-left a{display:flex}.menu.icon-left li a{flex-flow:row nowrap}.menu.icon-left li a img,.menu.icon-left li a i,.menu.icon-left li a svg{margin-right:.25rem}.menu.icon-right li a{flex-flow:row nowrap}.menu.icon-right li a img,.menu.icon-right li a i,.menu.icon-right li a svg{margin-left:.25rem}.menu.icon-top li a{flex-flow:column nowrap}.menu.icon-top li a img,.menu.icon-top li a i,.menu.icon-top li a svg{align-self:stretch;margin-bottom:.25rem;text-align:center}.menu.icon-bottom li a{flex-flow:column nowrap}.menu.icon-bottom li a img,.menu.icon-bottom li a i,.menu.icon-bottom li a svg{align-self:stretch;margin-bottom:.25rem;text-align:center}.menu .is-active>a{background:#1779ba;color:#fefefe}.menu .active>a{background:#1779ba;color:#fefefe}.menu.align-left{justify-content:flex-start}.menu.align-right li{display:flex;justify-content:flex-end}.menu.align-right li .submenu li{justify-content:flex-start}.menu.align-right.vertical li{display:block;text-align:right}.menu.align-right.vertical li .submenu li{text-align:right}.menu.align-right .nested{margin-right:1rem;margin-left:0}.menu.align-center li{display:flex;justify-content:center}.menu.align-center li .submenu li{justify-content:flex-start}.menu .menu-text{padding:0.7rem 1rem;font-weight:bold;line-height:1;color:inherit}.menu-centered>.menu{justify-content:center}.menu-centered>.menu li{display:flex;justify-content:center}.menu-centered>.menu li .submenu li{justify-content:flex-start}.no-js [data-responsive-menu] ul{display:none}.menu-icon{position:relative;display:inline-block;vertical-align:middle;width:20px;height:16px;cursor:pointer}.menu-icon::after{position:absolute;top:0;left:0;display:block;width:100%;height:2px;background:#fefefe;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;content:''}.menu-icon:hover::after{background:#cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.menu-icon.dark{position:relative;display:inline-block;vertical-align:middle;width:20px;height:16px;cursor:pointer}.menu-icon.dark::after{position:absolute;top:0;left:0;display:block;width:100%;height:2px;background:#0a0a0a;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;content:''}.menu-icon.dark:hover::after{background:#8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.is-drilldown{position:relative;overflow:hidden}.is-drilldown li{display:block}.is-drilldown.animate-height{transition:height 0.5s}.drilldown a{padding:0.7rem 1rem;background:#fefefe}.drilldown .is-drilldown-submenu{position:absolute;top:0;left:100%;z-index:-1;width:100%;background:#fefefe;transition:transform 0.15s linear}.drilldown .is-drilldown-submenu.is-active{z-index:1;display:block;transform:translateX(-100%)}.drilldown .is-drilldown-submenu.is-closing{transform:translateX(100%)}.drilldown .is-drilldown-submenu a{padding:0.7rem 1rem}.drilldown .nested.is-drilldown-submenu{margin-right:0;margin-left:0}.drilldown .drilldown-submenu-cover-previous{min-height:100%}.drilldown .is-drilldown-submenu-parent>a{position:relative}.drilldown .is-drilldown-submenu-parent>a::after{position:absolute;top:50%;margin-top:-6px;right:1rem;display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}.drilldown.align-left .is-drilldown-submenu-parent>a::after{left:auto;right:1rem;display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}.drilldown.align-right .is-drilldown-submenu-parent>a::after{right:auto;left:1rem;display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent}.drilldown .js-drilldown-back>a::before{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent;border-left-width:0;display:inline-block;vertical-align:middle;margin-right:0.75rem;border-left-width:0}.dropdown-pane{position:absolute;z-index:10;width:300px;padding:1rem;visibility:hidden;display:none;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;font-size:1rem}.dropdown-pane.is-opening{display:block}.dropdown-pane.is-open{visibility:visible;display:block}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.dropdown.menu>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu>li.is-dropdown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;right:5px;left:auto;margin-top:-3px}.dropdown.menu a{padding:0.7rem 1rem}[data-whatinput='mouse'] .dropdown.menu a{outline:0}.dropdown.menu .is-active>a{background:transparent;color:#1779ba}.no-js .dropdown.menu ul{display:none}.dropdown.menu .nested.is-dropdown-submenu{margin-right:0;margin-left:0}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{right:100%;left:auto;top:0}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.vertical>li>a::after{right:14px}.dropdown.menu.vertical>li.opens-left>a::after{right:auto;left:5px;display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent}.dropdown.menu.vertical>li.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}@media print, screen and (min-width: 40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;right:5px;left:auto;margin-top:-3px}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{right:100%;left:auto;top:0}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.medium-vertical>li>a::after{right:14px}.dropdown.menu.medium-vertical>li.opens-left>a::after{right:auto;left:5px;display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent}.dropdown.menu.medium-vertical>li.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}}@media print, screen and (min-width: 64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;right:5px;left:auto;margin-top:-3px}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{right:100%;left:auto;top:0}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.large-vertical>li>a::after{right:14px}.dropdown.menu.large-vertical>li.opens-left>a::after{right:auto;left:5px;display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent}.dropdown.menu.large-vertical>li.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{top:100%;right:0;left:auto}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a::after{position:absolute;top:50%;right:5px;left:auto;margin-top:-6px}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{top:100%;left:auto}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{right:100%;left:auto}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{right:auto;left:100%}.is-dropdown-submenu{position:absolute;top:0;left:100%;z-index:1;display:none;min-width:200px;border:1px solid #cacaca;background:#fefefe}.dropdown .is-dropdown-submenu a{padding:0.7rem 1rem}.is-dropdown-submenu .is-dropdown-submenu-parent>a::after{right:14px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a::after{right:auto;left:5px;display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.responsive-embed,.flex-video{position:relative;height:0;margin-bottom:1rem;padding-bottom:75%;overflow:hidden}.responsive-embed iframe,.responsive-embed object,.responsive-embed embed,.responsive-embed video,.flex-video iframe,.flex-video object,.flex-video embed,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}.responsive-embed.widescreen,.flex-video.widescreen{padding-bottom:56.25%}.label{display:inline-block;padding:0.333rem 0.5rem;border-radius:0;font-size:.8rem;line-height:1;white-space:nowrap;cursor:default;background:#1779ba;color:#fefefe}.label.primary{background:#1779ba;color:#fefefe}.label.secondary{background:#767676;color:#fefefe}.label.success{background:#3adb76;color:#0a0a0a}.label.warning{background:#ffae00;color:#0a0a0a}.label.alert{background:#cc4b37;color:#fefefe}.media-object{display:flex;margin-bottom:1rem;flex-wrap:nowrap}.media-object img{max-width:none}@media screen and (max-width: 39.938em){.media-object.stack-for-small{flex-wrap:wrap}}@media screen and (max-width: 39.938em){.media-object.stack-for-small .media-object-section{padding:0;padding-bottom:1rem;flex-basis:100%;max-width:100%}.media-object.stack-for-small .media-object-section img{width:100%}}.media-object-section{flex:0 1 auto}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}.media-object-section.main-section{flex:1 1 0px}.is-off-canvas-open{overflow:hidden}.js-off-canvas-overlay{position:absolute;top:0;left:0;z-index:11;width:100%;height:100%;transition:opacity .5s ease,visibility .5s ease;background:rgba(254,254,254,0.25);opacity:0;visibility:hidden;overflow:hidden}.js-off-canvas-overlay.is-visible{opacity:1;visibility:visible}.js-off-canvas-overlay.is-closable{cursor:pointer}.js-off-canvas-overlay.is-overlay-absolute{position:absolute}.js-off-canvas-overlay.is-overlay-fixed{position:fixed}.off-canvas-wrapper{position:relative;overflow:hidden}.off-canvas{position:fixed;z-index:12;transition:transform .5s ease;backface-visibility:hidden;background:#e6e6e6}[data-whatinput='mouse'] .off-canvas{outline:0}.off-canvas.is-transition-push{z-index:12}.off-canvas.is-closed{visibility:hidden}.off-canvas.is-transition-overlap{z-index:13}.off-canvas.is-transition-overlap.is-open{box-shadow:0 0 10px rgba(10,10,10,0.7)}.off-canvas.is-open{transform:translate(0, 0)}.off-canvas-absolute{position:absolute;z-index:12;transition:transform .5s ease;backface-visibility:hidden;background:#e6e6e6}[data-whatinput='mouse'] .off-canvas-absolute{outline:0}.off-canvas-absolute.is-transition-push{z-index:12}.off-canvas-absolute.is-closed{visibility:hidden}.off-canvas-absolute.is-transition-overlap{z-index:13}.off-canvas-absolute.is-transition-overlap.is-open{box-shadow:0 0 10px rgba(10,10,10,0.7)}.off-canvas-absolute.is-open{transform:translate(0, 0)}.position-left{top:0;left:0;height:100%;overflow-y:auto;width:250px;transform:translateX(-250px)}@media print, screen and (min-width: 40em){.position-left{width:250px;transform:translateX(-250px)}}.off-canvas-content .off-canvas.position-left{transform:translateX(-250px)}@media print, screen and (min-width: 40em){.off-canvas-content .off-canvas.position-left{transform:translateX(-250px)}}.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open{transform:translate(0, 0)}.off-canvas-content.is-open-left.has-transition-push{transform:translateX(250px)}@media print, screen and (min-width: 40em){.off-canvas-content.is-open-left.has-transition-push{transform:translateX(250px)}}.position-left.is-transition-push{box-shadow:inset -13px 0 20px -13px rgba(10,10,10,0.25)}.position-right{top:0;right:0;height:100%;overflow-y:auto;width:250px;transform:translateX(250px)}@media print, screen and (min-width: 40em){.position-right{width:250px;transform:translateX(250px)}}.off-canvas-content .off-canvas.position-right{transform:translateX(250px)}@media print, screen and (min-width: 40em){.off-canvas-content .off-canvas.position-right{transform:translateX(250px)}}.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open{transform:translate(0, 0)}.off-canvas-content.is-open-right.has-transition-push{transform:translateX(-250px)}@media print, screen and (min-width: 40em){.off-canvas-content.is-open-right.has-transition-push{transform:translateX(-250px)}}.position-right.is-transition-push{box-shadow:inset 13px 0 20px -13px rgba(10,10,10,0.25)}.position-top{top:0;left:0;width:100%;overflow-x:auto;height:250px;transform:translateY(-250px)}@media print, screen and (min-width: 40em){.position-top{height:250px;transform:translateY(-250px)}}.off-canvas-content .off-canvas.position-top{transform:translateY(-250px)}@media print, screen and (min-width: 40em){.off-canvas-content .off-canvas.position-top{transform:translateY(-250px)}}.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open{transform:translate(0, 0)}.off-canvas-content.is-open-top.has-transition-push{transform:translateY(250px)}@media print, screen and (min-width: 40em){.off-canvas-content.is-open-top.has-transition-push{transform:translateY(250px)}}.position-top.is-transition-push{box-shadow:inset 0 -13px 20px -13px rgba(10,10,10,0.25)}.position-bottom{bottom:0;left:0;width:100%;overflow-x:auto;height:250px;transform:translateY(250px)}@media print, screen and (min-width: 40em){.position-bottom{height:250px;transform:translateY(250px)}}.off-canvas-content .off-canvas.position-bottom{transform:translateY(250px)}@media print, screen and (min-width: 40em){.off-canvas-content .off-canvas.position-bottom{transform:translateY(250px)}}.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open{transform:translate(0, 0)}.off-canvas-content.is-open-bottom.has-transition-push{transform:translateY(-250px)}@media print, screen and (min-width: 40em){.off-canvas-content.is-open-bottom.has-transition-push{transform:translateY(-250px)}}.position-bottom.is-transition-push{box-shadow:inset 0 13px 20px -13px rgba(10,10,10,0.25)}.off-canvas-content{transform:none;transition:transform .5s ease;backface-visibility:hidden}.off-canvas-content.has-transition-push{transform:translate(0, 0)}.off-canvas-content .off-canvas.is-open{transform:translate(0, 0)}@media print, screen and (min-width: 40em){.position-left.reveal-for-medium{transform:none;z-index:12;transition:none;visibility:visible}.position-left.reveal-for-medium .close-button{display:none}.off-canvas-content .position-left.reveal-for-medium{transform:none}.off-canvas-content.has-reveal-left{margin-left:250px}.position-left.reveal-for-medium ~ .off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{transform:none;z-index:12;transition:none;visibility:visible}.position-right.reveal-for-medium .close-button{display:none}.off-canvas-content .position-right.reveal-for-medium{transform:none}.off-canvas-content.has-reveal-right{margin-right:250px}.position-right.reveal-for-medium ~ .off-canvas-content{margin-right:250px}.position-top.reveal-for-medium{transform:none;z-index:12;transition:none;visibility:visible}.position-top.reveal-for-medium .close-button{display:none}.off-canvas-content .position-top.reveal-for-medium{transform:none}.off-canvas-content.has-reveal-top{margin-top:250px}.position-top.reveal-for-medium ~ .off-canvas-content{margin-top:250px}.position-bottom.reveal-for-medium{transform:none;z-index:12;transition:none;visibility:visible}.position-bottom.reveal-for-medium .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-medium{transform:none}.off-canvas-content.has-reveal-bottom{margin-bottom:250px}.position-bottom.reveal-for-medium ~ .off-canvas-content{margin-bottom:250px}}@media print, screen and (min-width: 64em){.position-left.reveal-for-large{transform:none;z-index:12;transition:none;visibility:visible}.position-left.reveal-for-large .close-button{display:none}.off-canvas-content .position-left.reveal-for-large{transform:none}.off-canvas-content.has-reveal-left{margin-left:250px}.position-left.reveal-for-large ~ .off-canvas-content{margin-left:250px}.position-right.reveal-for-large{transform:none;z-index:12;transition:none;visibility:visible}.position-right.reveal-for-large .close-button{display:none}.off-canvas-content .position-right.reveal-for-large{transform:none}.off-canvas-content.has-reveal-right{margin-right:250px}.position-right.reveal-for-large ~ .off-canvas-content{margin-right:250px}.position-top.reveal-for-large{transform:none;z-index:12;transition:none;visibility:visible}.position-top.reveal-for-large .close-button{display:none}.off-canvas-content .position-top.reveal-for-large{transform:none}.off-canvas-content.has-reveal-top{margin-top:250px}.position-top.reveal-for-large ~ .off-canvas-content{margin-top:250px}.position-bottom.reveal-for-large{transform:none;z-index:12;transition:none;visibility:visible}.position-bottom.reveal-for-large .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-large{transform:none}.off-canvas-content.has-reveal-bottom{margin-bottom:250px}.position-bottom.reveal-for-large ~ .off-canvas-content{margin-bottom:250px}}@media print, screen and (min-width: 40em){.off-canvas.in-canvas-for-medium{visibility:visible;height:auto;position:static;background:inherit;width:inherit;overflow:inherit;transition:inherit}.off-canvas.in-canvas-for-medium.position-left,.off-canvas.in-canvas-for-medium.position-right,.off-canvas.in-canvas-for-medium.position-top,.off-canvas.in-canvas-for-medium.position-bottom{box-shadow:none;transform:none}.off-canvas.in-canvas-for-medium .close-button{display:none}}@media print, screen and (min-width: 64em){.off-canvas.in-canvas-for-large{visibility:visible;height:auto;position:static;background:inherit;width:inherit;overflow:inherit;transition:inherit}.off-canvas.in-canvas-for-large.position-left,.off-canvas.in-canvas-for-large.position-right,.off-canvas.in-canvas-for-large.position-top,.off-canvas.in-canvas-for-large.position-bottom{box-shadow:none;transform:none}.off-canvas.in-canvas-for-large .close-button{display:none}}.orbit{position:relative}.orbit-container{position:relative;height:0;margin:0;list-style:none;overflow:hidden}.orbit-slide{width:100%}.orbit-slide.no-motionui.is-active{top:0;left:0}.orbit-figure{margin:0}.orbit-image{width:100%;max-width:100%;margin:0}.orbit-caption{position:absolute;bottom:0;width:100%;margin-bottom:0;padding:1rem;background-color:rgba(10,10,10,0.5);color:#fefefe}.orbit-previous,.orbit-next{position:absolute;top:50%;transform:translateY(-50%);z-index:10;padding:1rem;color:#fefefe}[data-whatinput='mouse'] .orbit-previous,[data-whatinput='mouse'] .orbit-next{outline:0}.orbit-previous:hover,.orbit-next:hover,.orbit-previous:active,.orbit-next:active,.orbit-previous:focus,.orbit-next:focus{background-color:rgba(10,10,10,0.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{position:relative;margin-top:.8rem;margin-bottom:.8rem;text-align:center}[data-whatinput='mouse'] .orbit-bullets{outline:0}.orbit-bullets button{width:1.2rem;height:1.2rem;margin:.1rem;border-radius:50%;background-color:#cacaca}.orbit-bullets button:hover{background-color:#8a8a8a}.orbit-bullets button.is-active{background-color:#8a8a8a}.pagination{margin-left:0;margin-bottom:1rem}.pagination::before,.pagination::after{display:table;content:' ';flex-basis:0;order:1}.pagination::after{clear:both}.pagination li{margin-right:.062rem;border-radius:0;font-size:.875rem;display:none}.pagination li:last-child,.pagination li:first-child{display:inline-block}@media print, screen and (min-width: 40em){.pagination li{display:inline-block}}.pagination a,.pagination button{display:block;padding:.188rem .625rem;border-radius:0;color:#0a0a0a}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{padding:.188rem .625rem;background:#1779ba;color:#fefefe;cursor:default}.pagination .disabled{padding:.188rem .625rem;color:#cacaca;cursor:not-allowed}.pagination .disabled:hover{background:transparent}.pagination .ellipsis::after{padding:.188rem .625rem;content:'\2026';color:#0a0a0a}.pagination-previous a::before,.pagination-previous.disabled::before{display:inline-block;margin-right:0.5rem;content:'\00ab'}.pagination-next a::after,.pagination-next.disabled::after{display:inline-block;margin-left:0.5rem;content:'\00bb'}.progress{height:1rem;margin-bottom:1rem;border-radius:0;background-color:#cacaca}.progress.primary .progress-meter{background-color:#1779ba}.progress.secondary .progress-meter{background-color:#767676}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#cc4b37}.progress-meter{position:relative;display:block;width:0%;height:100%;background-color:#1779ba}.progress-meter-text{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);position:absolute;margin:0;font-size:0.75rem;font-weight:bold;color:#fefefe;white-space:nowrap}.slider{position:relative;height:.5rem;margin-top:1.25rem;margin-bottom:2.25rem;background-color:#e6e6e6;cursor:pointer;user-select:none;touch-action:none}.slider-fill{position:absolute;top:0;left:0;display:inline-block;max-width:100%;height:.5rem;background-color:#cacaca;transition:all 0.2s ease-in-out}.slider-fill.is-dragging{transition:all 0s linear}.slider-handle{position:absolute;top:50%;transform:translateY(-50%);left:0;z-index:1;display:inline-block;width:1.4rem;height:1.4rem;border-radius:0;background-color:#1779ba;transition:all 0.2s ease-in-out;touch-action:manipulation}[data-whatinput='mouse'] .slider-handle{outline:0}.slider-handle:hover{background-color:#14679e}.slider-handle.is-dragging{transition:all 0s linear}.slider.disabled,.slider[disabled]{opacity:.25;cursor:not-allowed}.slider.vertical{display:inline-block;width:.5rem;height:12.5rem;margin:0 1.25rem;transform:scale(1, -1)}.slider.vertical .slider-fill{top:0;width:.5rem;max-height:100%}.slider.vertical .slider-handle{position:absolute;top:0;left:50%;width:1.4rem;height:1.4rem;transform:translateX(-50%)}.sticky-container{position:relative}.sticky{position:relative;z-index:0;transform:translate3d(0, 0, 0)}.sticky.is-stuck{position:fixed;z-index:5;width:100%}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{position:relative;right:auto;left:auto}.sticky.is-anchored.is-at-bottom{bottom:0}body.is-reveal-open{overflow:hidden}html.is-reveal-open,html.is-reveal-open body{min-height:100%;overflow:hidden;position:fixed;user-select:none}.reveal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1005;display:none;background-color:rgba(10,10,10,0.45);overflow-y:scroll}.reveal{z-index:1006;backface-visibility:hidden;display:none;padding:1rem;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;position:relative;top:100px;margin-right:auto;margin-left:auto;overflow-y:auto}[data-whatinput='mouse'] .reveal{outline:0}@media print, screen and (min-width: 40em){.reveal{min-height:0}}.reveal .column{min-width:0}.reveal>:last-child{margin-bottom:0}@media print, screen and (min-width: 40em){.reveal{width:600px;max-width:62.5rem}}.reveal.collapse{padding:0}@media print, screen and (min-width: 40em){.reveal.tiny{width:30%;max-width:62.5rem}}@media print, screen and (min-width: 40em){.reveal.small{width:50%;max-width:62.5rem}}@media print, screen and (min-width: 40em){.reveal.large{width:90%;max-width:62.5rem}}.reveal.full{top:0;left:0;width:100%;max-width:none;height:100%;height:100vh;min-height:100vh;margin-left:0;border:0;border-radius:0}@media screen and (max-width: 39.938em){.reveal{top:0;left:0;width:100%;max-width:none;height:100%;height:100vh;min-height:100vh;margin-left:0;border:0;border-radius:0}}.reveal.without-overlay{position:fixed}.switch{height:2rem;position:relative;margin-bottom:1rem;outline:0;font-size:.875rem;font-weight:bold;color:#fefefe;user-select:none}.switch-input{position:absolute;margin-bottom:0;opacity:0}.switch-paddle{position:relative;display:block;width:4rem;height:2rem;border-radius:0;background:#cacaca;transition:all 0.25s ease-out;font-weight:inherit;color:inherit;cursor:pointer}input+.switch-paddle{margin:0}.switch-paddle::after{position:absolute;top:.25rem;left:.25rem;display:block;width:1.5rem;height:1.5rem;transform:translate3d(0, 0, 0);border-radius:0;background:#fefefe;transition:all 0.25s ease-out;content:''}input:checked ~ .switch-paddle{background:#1779ba}input:checked ~ .switch-paddle::after{left:2.25rem}[data-whatinput='mouse'] input:focus ~ .switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;transform:translateY(-50%)}.switch-active{left:8%;display:none}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny{height:1.5rem}.switch.tiny .switch-paddle{width:3rem;height:1.5rem;font-size:.625rem}.switch.tiny .switch-paddle::after{top:.25rem;left:.25rem;width:1rem;height:1rem}.switch.tiny input:checked ~ .switch-paddle::after{left:1.75rem}.switch.small{height:1.75rem}.switch.small .switch-paddle{width:3.5rem;height:1.75rem;font-size:.75rem}.switch.small .switch-paddle::after{top:.25rem;left:.25rem;width:1.25rem;height:1.25rem}.switch.small input:checked ~ .switch-paddle::after{left:2rem}.switch.large{height:2.5rem}.switch.large .switch-paddle{width:5rem;height:2.5rem;font-size:1rem}.switch.large .switch-paddle::after{top:.25rem;left:.25rem;width:2rem;height:2rem}.switch.large input:checked ~ .switch-paddle::after{left:2.75rem}table{border-collapse:collapse;width:100%;margin-bottom:1rem;border-radius:0}thead,tbody,tfoot{border:1px solid #f1f1f1;background-color:#fefefe}caption{padding:.5rem .625rem .625rem;font-weight:bold}thead{background:#f8f8f8;color:#0a0a0a}tfoot{background:#f1f1f1;color:#0a0a0a}thead tr,tfoot tr{background:transparent}thead th,thead td,tfoot th,tfoot td{padding:.5rem .625rem .625rem;font-weight:bold;text-align:left}tbody th,tbody td{padding:.5rem .625rem .625rem}tbody tr:nth-child(even){border-bottom:0;background-color:#f1f1f1}table.unstriped tbody{background-color:#fefefe}table.unstriped tbody tr{border-bottom:0;border-bottom:1px solid #f1f1f1;background-color:#fefefe}@media screen and (max-width: 63.938em){table.stack thead{display:none}table.stack tfoot{display:none}table.stack tr,table.stack th,table.stack td{display:block}table.stack td{border-top:0}}table.scroll{display:block;width:100%;overflow-x:auto}table.hover thead tr:hover{background-color:#f3f3f3}table.hover tfoot tr:hover{background-color:#ececec}table.hover tbody tr:hover{background-color:#f9f9f9}table.hover:not(.unstriped) tr:nth-of-type(even):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.table-scroll table{width:auto}.tabs{margin:0;border:1px solid #e6e6e6;background:#fefefe;list-style-type:none}.tabs::before,.tabs::after{display:table;content:' ';flex-basis:0;order:1}.tabs::after{clear:both}.tabs.vertical>li{display:block;float:none;width:auto}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:transparent}.tabs.primary{background:#1779ba}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:hover,.tabs.primary>li>a:focus{background:#1673b1}.tabs-title{float:left}.tabs-title>a{display:block;padding:1.25rem 1.5rem;font-size:.75rem;line-height:1;color:#1779ba}.tabs-title>a:hover{background:#fefefe;color:#1468a0}.tabs-title>a:focus,.tabs-title>a[aria-selected='true']{background:#e6e6e6;color:#1779ba}.tabs-content{border:1px solid #e6e6e6;border-top:0;background:#fefefe;color:#0a0a0a;transition:all 0.5s ease}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.thumbnail{display:inline-block;max-width:100%;margin-bottom:1rem;border:solid 4px #fefefe;border-radius:0;box-shadow:0 0 0 1px rgba(10,10,10,0.2);line-height:0}a.thumbnail{transition:box-shadow 200ms ease-out}a.thumbnail:hover,a.thumbnail:focus{box-shadow:0 0 6px 1px rgba(23,121,186,0.5)}a.thumbnail image{box-shadow:none}.title-bar{padding:.5rem;background:#0a0a0a;color:#fefefe;display:flex;justify-content:flex-start;align-items:center}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left,.title-bar-right{flex:1 1 0px}.title-bar-right{text-align:right}.title-bar-title{display:inline-block;vertical-align:middle;font-weight:bold}.has-tip{position:relative;display:inline-block;border-bottom:dotted 1px #8a8a8a;font-weight:bold;cursor:help}.tooltip{position:absolute;top:calc(100% + .649rem);z-index:1200;max-width:10rem;padding:.75rem;border-radius:0;background-color:#0a0a0a;font-size:80%;color:#fefefe}.tooltip::before{position:absolute}.tooltip.bottom::before{display:block;width:0;height:0;border:inset .75rem;content:'';border-top-width:0;border-bottom-style:solid;border-color:transparent transparent #0a0a0a;bottom:100%}.tooltip.bottom.align-center::before{left:50%;transform:translateX(-50%)}.tooltip.top::before{display:block;width:0;height:0;border:inset .75rem;content:'';border-bottom-width:0;border-top-style:solid;border-color:#0a0a0a transparent transparent;top:100%;bottom:auto}.tooltip.top.align-center::before{left:50%;transform:translateX(-50%)}.tooltip.left::before{display:block;width:0;height:0;border:inset .75rem;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #0a0a0a;left:100%}.tooltip.left.align-center::before{bottom:auto;top:50%;transform:translateY(-50%)}.tooltip.right::before{display:block;width:0;height:0;border:inset .75rem;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #0a0a0a transparent transparent;right:100%;left:auto}.tooltip.right.align-center::before{bottom:auto;top:50%;transform:translateY(-50%)}.tooltip.align-top::before{bottom:auto;top:10%}.tooltip.align-bottom::before{bottom:10%;top:auto}.tooltip.align-left::before{left:10%;right:auto}.tooltip.align-right::before{left:auto;right:10%}.top-bar{display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;padding:.5rem;flex-wrap:wrap}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{max-width:200px;margin-right:1rem}.top-bar .input-group-field{width:100%;margin-right:0}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{flex:0 0 100%;max-width:100%}@media print, screen and (min-width: 40em){.top-bar{flex-wrap:nowrap}.top-bar .top-bar-left{flex:1 1 auto;margin-right:auto}.top-bar .top-bar-right{flex:0 1 auto;margin-left:auto}}@media screen and (max-width: 63.938em){.top-bar.stacked-for-medium{flex-wrap:wrap}.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{flex:0 0 100%;max-width:100%}}@media screen and (max-width: 74.938em){.top-bar.stacked-for-large{flex-wrap:wrap}.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{flex:0 0 100%;max-width:100%}}.top-bar-title{flex:0 0 auto;margin:0.5rem 1rem 0.5rem 0}.top-bar-left,.top-bar-right{flex:0 0 auto}.hide{display:none !important}.invisible{visibility:hidden}@media screen and (max-width: 39.938em){.hide-for-small-only{display:none !important}}@media screen and (max-width: 0em), screen and (min-width: 40em){.show-for-small-only{display:none !important}}@media print, screen and (min-width: 40em){.hide-for-medium{display:none !important}}@media screen and (max-width: 39.938em){.show-for-medium{display:none !important}}@media screen and (min-width: 40em) and (max-width: 63.938em){.hide-for-medium-only{display:none !important}}@media screen and (max-width: 39.938em), screen and (min-width: 64em){.show-for-medium-only{display:none !important}}@media print, screen and (min-width: 64em){.hide-for-large{display:none !important}}@media screen and (max-width: 63.938em){.show-for-large{display:none !important}}@media screen and (min-width: 64em) and (max-width: 74.938em){.hide-for-large-only{display:none !important}}@media screen and (max-width: 63.938em), screen and (min-width: 75em){.show-for-large-only{display:none !important}}.show-for-sr,.show-on-focus{position:absolute !important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);border:0}.show-on-focus:active,.show-on-focus:focus{position:static !important;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;clip-path:none}.show-for-landscape,.hide-for-portrait{display:block !important}@media screen and (orientation: landscape){.show-for-landscape,.hide-for-portrait{display:block !important}}@media screen and (orientation: portrait){.show-for-landscape,.hide-for-portrait{display:none !important}}.hide-for-landscape,.show-for-portrait{display:none !important}@media screen and (orientation: landscape){.hide-for-landscape,.show-for-portrait{display:none !important}}@media screen and (orientation: portrait){.hide-for-landscape,.show-for-portrait{display:block !important}}.float-left{float:left !important}.float-right{float:right !important}.float-center{display:block;margin-right:auto;margin-left:auto}.clearfix::before,.clearfix::after{display:table;content:' ';flex-basis:0;order:1}.clearfix::after{clear:both}.align-right{justify-content:flex-end}.align-center{justify-content:center}.align-justify{justify-content:space-between}.align-spaced{justify-content:space-around}.align-right.vertical.menu>li>a{justify-content:flex-end}.align-center.vertical.menu>li>a{justify-content:center}.align-top{align-items:flex-start}.align-self-top{align-self:flex-start}.align-bottom{align-items:flex-end}.align-self-bottom{align-self:flex-end}.align-middle{align-items:center}.align-self-middle{align-self:center}.align-stretch{align-items:stretch}.align-self-stretch{align-self:stretch}.align-center-middle{justify-content:center;align-items:center;align-content:center}.small-order-1{order:1}.small-order-2{order:2}.small-order-3{order:3}.small-order-4{order:4}.small-order-5{order:5}.small-order-6{order:6}@media print, screen and (min-width: 40em){.medium-order-1{order:1}.medium-order-2{order:2}.medium-order-3{order:3}.medium-order-4{order:4}.medium-order-5{order:5}.medium-order-6{order:6}}@media print, screen and (min-width: 64em){.large-order-1{order:1}.large-order-2{order:2}.large-order-3{order:3}.large-order-4{order:4}.large-order-5{order:5}.large-order-6{order:6}}.flex-container{display:flex}.flex-child-auto{flex:1 1 auto}.flex-child-grow{flex:1 0 auto}.flex-child-shrink{flex:0 1 auto}.flex-dir-row{flex-direction:row}.flex-dir-row-reverse{flex-direction:row-reverse}.flex-dir-column{flex-direction:column}.flex-dir-column-reverse{flex-direction:column-reverse}@media print, screen and (min-width: 40em){.medium-flex-container{display:flex}.medium-flex-child-auto{flex:1 1 auto}.medium-flex-child-grow{flex:1 0 auto}.medium-flex-child-shrink{flex:0 1 auto}.medium-flex-dir-row{flex-direction:row}.medium-flex-dir-row-reverse{flex-direction:row-reverse}.medium-flex-dir-column{flex-direction:column}.medium-flex-dir-column-reverse{flex-direction:column-reverse}}@media print, screen and (min-width: 64em){.large-flex-container{display:flex}.large-flex-child-auto{flex:1 1 auto}.large-flex-child-grow{flex:1 0 auto}.large-flex-child-shrink{flex:0 1 auto}.large-flex-dir-row{flex-direction:row}.large-flex-dir-row-reverse{flex-direction:row-reverse}.large-flex-dir-column{flex-direction:column}.large-flex-dir-column-reverse{flex-direction:column-reverse}}.slide-in-down.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:translateY(-100%);transition-property:transform, opacity;backface-visibility:hidden}.slide-in-down.mui-enter.mui-enter-active{transform:translateY(0)}.slide-in-left.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:translateX(-100%);transition-property:transform, opacity;backface-visibility:hidden}.slide-in-left.mui-enter.mui-enter-active{transform:translateX(0)}.slide-in-up.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:translateY(100%);transition-property:transform, opacity;backface-visibility:hidden}.slide-in-up.mui-enter.mui-enter-active{transform:translateY(0)}.slide-in-right.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:translateX(100%);transition-property:transform, opacity;backface-visibility:hidden}.slide-in-right.mui-enter.mui-enter-active{transform:translateX(0)}.slide-out-down.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:translateY(0);transition-property:transform, opacity;backface-visibility:hidden}.slide-out-down.mui-leave.mui-leave-active{transform:translateY(100%)}.slide-out-right.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:translateX(0);transition-property:transform, opacity;backface-visibility:hidden}.slide-out-right.mui-leave.mui-leave-active{transform:translateX(100%)}.slide-out-up.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:translateY(0);transition-property:transform, opacity;backface-visibility:hidden}.slide-out-up.mui-leave.mui-leave-active{transform:translateY(-100%)}.slide-out-left.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:translateX(0);transition-property:transform, opacity;backface-visibility:hidden}.slide-out-left.mui-leave.mui-leave-active{transform:translateX(-100%)}.fade-in.mui-enter{transition-duration:500ms;transition-timing-function:linear;opacity:0;transition-property:opacity}.fade-in.mui-enter.mui-enter-active{opacity:1}.fade-out.mui-leave{transition-duration:500ms;transition-timing-function:linear;opacity:1;transition-property:opacity}.fade-out.mui-leave.mui-leave-active{opacity:0}.hinge-in-from-top.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateX(-90deg);transform-origin:top;transition-property:transform, opacity;opacity:0}.hinge-in-from-top.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-right.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateY(-90deg);transform-origin:right;transition-property:transform, opacity;opacity:0}.hinge-in-from-right.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-bottom.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateX(90deg);transform-origin:bottom;transition-property:transform, opacity;opacity:0}.hinge-in-from-bottom.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-left.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateY(90deg);transform-origin:left;transition-property:transform, opacity;opacity:0}.hinge-in-from-left.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-x.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateX(-90deg);transform-origin:center;transition-property:transform, opacity;opacity:0}.hinge-in-from-middle-x.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-y.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateY(-90deg);transform-origin:center;transition-property:transform, opacity;opacity:0}.hinge-in-from-middle-y.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-out-from-top.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:top;transition-property:transform, opacity;opacity:1}.hinge-out-from-top.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-right.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:right;transition-property:transform, opacity;opacity:1}.hinge-out-from-right.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(-90deg);opacity:0}.hinge-out-from-bottom.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:bottom;transition-property:transform, opacity;opacity:1}.hinge-out-from-bottom.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(90deg);opacity:0}.hinge-out-from-left.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:left;transition-property:transform, opacity;opacity:1}.hinge-out-from-left.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(90deg);opacity:0}.hinge-out-from-middle-x.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:center;transition-property:transform, opacity;opacity:1}.hinge-out-from-middle-x.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-middle-y.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:center;transition-property:transform, opacity;opacity:1}.hinge-out-from-middle-y.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(-90deg);opacity:0}.scale-in-up.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:scale(.5);transition-property:transform, opacity;opacity:0}.scale-in-up.mui-enter.mui-enter-active{transform:scale(1);opacity:1}.scale-in-down.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:scale(1.5);transition-property:transform, opacity;opacity:0}.scale-in-down.mui-enter.mui-enter-active{transform:scale(1);opacity:1}.scale-out-up.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:scale(1);transition-property:transform, opacity;opacity:1}.scale-out-up.mui-leave.mui-leave-active{transform:scale(1.5);opacity:0}.scale-out-down.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:scale(1);transition-property:transform, opacity;opacity:1}.scale-out-down.mui-leave.mui-leave-active{transform:scale(.5);opacity:0}.spin-in.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:rotate(-.75turn);transition-property:transform, opacity;opacity:0}.spin-in.mui-enter.mui-enter-active{transform:rotate(0);opacity:1}.spin-out.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:rotate(0);transition-property:transform, opacity;opacity:1}.spin-out.mui-leave.mui-leave-active{transform:rotate(.75turn);opacity:0}.spin-in-ccw.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:rotate(.75turn);transition-property:transform, opacity;opacity:0}.spin-in-ccw.mui-enter.mui-enter-active{transform:rotate(0);opacity:1}.spin-out-ccw.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:rotate(0);transition-property:transform, opacity;opacity:1}.spin-out-ccw.mui-leave.mui-leave-active{transform:rotate(-.75turn);opacity:0}.slow{transition-duration:750ms !important}.fast{transition-duration:250ms !important}.linear{transition-timing-function:linear !important}.ease{transition-timing-function:ease !important}.ease-in{transition-timing-function:ease-in !important}.ease-out{transition-timing-function:ease-out !important}.ease-in-out{transition-timing-function:ease-in-out !important}.bounce-in{transition-timing-function:cubic-bezier(0.485, 0.155, 0.24, 1.245) !important}.bounce-out{transition-timing-function:cubic-bezier(0.485, 0.155, 0.515, 0.845) !important}.bounce-in-out{transition-timing-function:cubic-bezier(0.76, -0.245, 0.24, 1.245) !important}.short-delay{transition-delay:300ms !important}.long-delay{transition-delay:700ms !important}.shake{animation-name:shake-7}@keyframes shake-7{0%,10%,20%,30%,40%,50%,60%,70%,80%,90%{transform:translateX(7%)}5%,15%,25%,35%,45%,55%,65%,75%,85%,95%{transform:translateX(-7%)}}.spin-cw{animation-name:spin-cw-1turn}@keyframes spin-cw-1turn{0%{transform:rotate(-1turn)}100%{transform:rotate(0)}}.spin-ccw{animation-name:spin-cw-1turn}@keyframes spin-cw-1turn{0%{transform:rotate(0)}100%{transform:rotate(1turn)}}.wiggle{animation-name:wiggle-7deg}@keyframes wiggle-7deg{40%,50%,60%{transform:rotate(7deg)}35%,45%,55%,65%{transform:rotate(-7deg)}0%,30%,70%,100%{transform:rotate(0)}}.shake,.spin-cw,.spin-ccw,.wiggle{animation-duration:500ms}.infinite{animation-iteration-count:infinite}.slow{animation-duration:750ms !important}.fast{animation-duration:250ms !important}.linear{animation-timing-function:linear !important}.ease{animation-timing-function:ease !important}.ease-in{animation-timing-function:ease-in !important}.ease-out{animation-timing-function:ease-out !important}.ease-in-out{animation-timing-function:ease-in-out !important}.bounce-in{animation-timing-function:cubic-bezier(0.485, 0.155, 0.24, 1.245) !important}.bounce-out{animation-timing-function:cubic-bezier(0.485, 0.155, 0.515, 0.845) !important}.bounce-in-out{animation-timing-function:cubic-bezier(0.76, -0.245, 0.24, 1.245) !important}.short-delay{animation-delay:300ms !important}.long-delay{animation-delay:700ms !important}.slide-in-down.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:translateY(-100%);transition-property:transform, opacity;backface-visibility:hidden}.slide-in-down.mui-enter.mui-enter-active{transform:translateY(0)}.slide-in-left.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:translateX(-100%);transition-property:transform, opacity;backface-visibility:hidden}.slide-in-left.mui-enter.mui-enter-active{transform:translateX(0)}.slide-in-up.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:translateY(100%);transition-property:transform, opacity;backface-visibility:hidden}.slide-in-up.mui-enter.mui-enter-active{transform:translateY(0)}.slide-in-right.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:translateX(100%);transition-property:transform, opacity;backface-visibility:hidden}.slide-in-right.mui-enter.mui-enter-active{transform:translateX(0)}.slide-out-down.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:translateY(0);transition-property:transform, opacity;backface-visibility:hidden}.slide-out-down.mui-leave.mui-leave-active{transform:translateY(100%)}.slide-out-right.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:translateX(0);transition-property:transform, opacity;backface-visibility:hidden}.slide-out-right.mui-leave.mui-leave-active{transform:translateX(100%)}.slide-out-up.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:translateY(0);transition-property:transform, opacity;backface-visibility:hidden}.slide-out-up.mui-leave.mui-leave-active{transform:translateY(-100%)}.slide-out-left.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:translateX(0);transition-property:transform, opacity;backface-visibility:hidden}.slide-out-left.mui-leave.mui-leave-active{transform:translateX(-100%)}.fade-in.mui-enter{transition-duration:500ms;transition-timing-function:linear;opacity:0;transition-property:opacity}.fade-in.mui-enter.mui-enter-active{opacity:1}.fade-out.mui-leave{transition-duration:500ms;transition-timing-function:linear;opacity:1;transition-property:opacity}.fade-out.mui-leave.mui-leave-active{opacity:0}.hinge-in-from-top.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateX(-90deg);transform-origin:top;transition-property:transform, opacity;opacity:0}.hinge-in-from-top.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-right.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateY(-90deg);transform-origin:right;transition-property:transform, opacity;opacity:0}.hinge-in-from-right.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-bottom.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateX(90deg);transform-origin:bottom;transition-property:transform, opacity;opacity:0}.hinge-in-from-bottom.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-left.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateY(90deg);transform-origin:left;transition-property:transform, opacity;opacity:0}.hinge-in-from-left.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-x.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateX(-90deg);transform-origin:center;transition-property:transform, opacity;opacity:0}.hinge-in-from-middle-x.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-y.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateY(-90deg);transform-origin:center;transition-property:transform, opacity;opacity:0}.hinge-in-from-middle-y.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-out-from-top.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:top;transition-property:transform, opacity;opacity:1}.hinge-out-from-top.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-right.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:right;transition-property:transform, opacity;opacity:1}.hinge-out-from-right.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(-90deg);opacity:0}.hinge-out-from-bottom.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:bottom;transition-property:transform, opacity;opacity:1}.hinge-out-from-bottom.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(90deg);opacity:0}.hinge-out-from-left.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:left;transition-property:transform, opacity;opacity:1}.hinge-out-from-left.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(90deg);opacity:0}.hinge-out-from-middle-x.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:center;transition-property:transform, opacity;opacity:1}.hinge-out-from-middle-x.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-middle-y.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:center;transition-property:transform, opacity;opacity:1}.hinge-out-from-middle-y.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(-90deg);opacity:0}.scale-in-up.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:scale(.5);transition-property:transform, opacity;opacity:0}.scale-in-up.mui-enter.mui-enter-active{transform:scale(1);opacity:1}.scale-in-down.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:scale(1.5);transition-property:transform, opacity;opacity:0}.scale-in-down.mui-enter.mui-enter-active{transform:scale(1);opacity:1}.scale-out-up.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:scale(1);transition-property:transform, opacity;opacity:1}.scale-out-up.mui-leave.mui-leave-active{transform:scale(1.5);opacity:0}.scale-out-down.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:scale(1);transition-property:transform, opacity;opacity:1}.scale-out-down.mui-leave.mui-leave-active{transform:scale(.5);opacity:0}.spin-in.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:rotate(-.75turn);transition-property:transform, opacity;opacity:0}.spin-in.mui-enter.mui-enter-active{transform:rotate(0);opacity:1}.spin-out.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:rotate(0);transition-property:transform, opacity;opacity:1}.spin-out.mui-leave.mui-leave-active{transform:rotate(.75turn);opacity:0}.spin-in-ccw.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:rotate(.75turn);transition-property:transform, opacity;opacity:0}.spin-in-ccw.mui-enter.mui-enter-active{transform:rotate(0);opacity:1}.spin-out-ccw.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:rotate(0);transition-property:transform, opacity;opacity:1}.spin-out-ccw.mui-leave.mui-leave-active{transform:rotate(-.75turn);opacity:0}.slow{transition-duration:750ms !important}.fast{transition-duration:250ms !important}.linear{transition-timing-function:linear !important}.ease{transition-timing-function:ease !important}.ease-in{transition-timing-function:ease-in !important}.ease-out{transition-timing-function:ease-out !important}.ease-in-out{transition-timing-function:ease-in-out !important}.bounce-in{transition-timing-function:cubic-bezier(0.485, 0.155, 0.24, 1.245) !important}.bounce-out{transition-timing-function:cubic-bezier(0.485, 0.155, 0.515, 0.845) !important}.bounce-in-out{transition-timing-function:cubic-bezier(0.76, -0.245, 0.24, 1.245) !important}.short-delay{transition-delay:300ms !important}.long-delay{transition-delay:700ms !important}.shake{animation-name:shake-7}@keyframes shake-7{0%,10%,20%,30%,40%,50%,60%,70%,80%,90%{transform:translateX(7%)}5%,15%,25%,35%,45%,55%,65%,75%,85%,95%{transform:translateX(-7%)}}.spin-cw{animation-name:spin-cw-1turn}@keyframes spin-cw-1turn{0%{transform:rotate(-1turn)}100%{transform:rotate(0)}}.spin-ccw{animation-name:spin-cw-1turn}@keyframes spin-cw-1turn{0%{transform:rotate(0)}100%{transform:rotate(1turn)}}.wiggle{animation-name:wiggle-7deg}@keyframes wiggle-7deg{40%,50%,60%{transform:rotate(7deg)}35%,45%,55%,65%{transform:rotate(-7deg)}0%,30%,70%,100%{transform:rotate(0)}}.shake,.spin-cw,.spin-ccw,.wiggle{animation-duration:500ms}.infinite{animation-iteration-count:infinite}.slow{animation-duration:750ms !important}.fast{animation-duration:250ms !important}.linear{animation-timing-function:linear !important}.ease{animation-timing-function:ease !important}.ease-in{animation-timing-function:ease-in !important}.ease-out{animation-timing-function:ease-out !important}.ease-in-out{animation-timing-function:ease-in-out !important}.bounce-in{animation-timing-function:cubic-bezier(0.485, 0.155, 0.24, 1.245) !important}.bounce-out{animation-timing-function:cubic-bezier(0.485, 0.155, 0.515, 0.845) !important}.bounce-in-out{animation-timing-function:cubic-bezier(0.76, -0.245, 0.24, 1.245) !important}.short-delay{animation-delay:300ms !important}.long-delay{animation-delay:700ms !important}#colorbox,#cboxOverlay,#cboxWrapper{position:absolute;top:0;left:0;z-index:9999;overflow:hidden;-webkit-transform:translate3d(0, 0, 0)}#cboxWrapper{max-width:none}#cboxOverlay{position:fixed;width:100%;height:100%}#cboxMiddleLeft,#cboxBottomLeft{clear:left}#cboxContent{position:relative}#cboxLoadedContent{overflow:auto;-webkit-overflow-scrolling:touch}#cboxTitle{margin:0}#cboxLoadingOverlay,#cboxLoadingGraphic{position:absolute;top:0;left:0;width:100%;height:100%}#cboxPrevious,#cboxNext,#cboxClose,#cboxSlideshow{cursor:pointer}.cboxPhoto{float:left;margin:auto;border:0;display:block;max-width:none;-ms-interpolation-mode:bicubic}.cboxIframe{width:100%;height:100%;display:block;border:0;padding:0;margin:0}#colorbox,#cboxContent,#cboxLoadedContent{box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}#cboxOverlay{background:#000;opacity:0.9;filter:alpha(opacity=90)}#colorbox{outline:0}#cboxTopLeft{width:14px;height:14px;background:url(/images/colorbox/controls.png) no-repeat 0 0}#cboxTopCenter{height:14px;background:url(/images/colorbox/border.png) repeat-x top left}#cboxTopRight{width:14px;height:14px;background:url(/images/colorbox/controls.png) no-repeat -36px 0}#cboxBottomLeft{width:14px;height:43px;background:url(/images/colorbox/controls.png) no-repeat 0 -32px}#cboxBottomCenter{height:43px;background:url(/images/colorbox/border.png) repeat-x bottom left}#cboxBottomRight{width:14px;height:43px;background:url(/images/colorbox/controls.png) no-repeat -36px -32px}#cboxMiddleLeft{width:14px;background:url(/images/colorbox/controls.png) repeat-y -175px 0}#cboxMiddleRight{width:14px;background:url(/images/colorbox/controls.png) repeat-y -211px 0}#cboxContent{background:#fff;overflow:visible}.cboxIframe{background:#fff}#cboxError{padding:50px;border:1px solid #ccc}#cboxLoadedContent{margin-bottom:5px}#cboxLoadingOverlay{background:url(/images/colorbox/loading_background.png) no-repeat center center}#cboxLoadingGraphic{background:url(/images/colorbox/loading.gif) no-repeat center center}#cboxTitle{position:absolute;bottom:-25px;left:0;text-align:center;width:100%;font-weight:bold;color:#7C7C7C}#cboxCurrent{position:absolute;bottom:-25px;left:58px;font-weight:bold;color:#7C7C7C}#cboxPrevious,#cboxNext,#cboxSlideshow,#cboxClose{border:0;padding:0;margin:0;overflow:visible;position:absolute;bottom:-29px;background:url(/images/colorbox/controls.png) no-repeat 0px 0px;width:23px;height:23px;text-indent:-9999px}#cboxPrevious:active,#cboxNext:active,#cboxSlideshow:active,#cboxClose:active{outline:0}#cboxPrevious{left:0px;background-position:-51px -25px}#cboxPrevious:hover{background-position:-51px 0px}#cboxNext{left:27px;background-position:-75px -25px}#cboxNext:hover{background-position:-75px 0px}#cboxClose{right:0;background-position:-100px -25px}#cboxClose:hover{background-position:-100px 0px}.cboxSlideshow_on #cboxSlideshow{background-position:-125px 0px;right:27px}.cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0px}.cboxSlideshow_off #cboxSlideshow{background-position:-150px -25px;right:27px}.cboxSlideshow_off #cboxSlideshow:hover{background-position:-125px 0px}html{font-family:"Open Sans","IBM Plex Sans",sans-serif}body{font-family:"Open Sans","IBM Plex Sans",sans-serif;background-color:#fff}.drilldown a{background-color:#fafafb}@media screen and (max-width: 39.938em){.no-js .top-bar{display:none}}@media print, screen and (min-width: 40em){.no-js .title-bar{display:none}}.no-js .orbit-container{height:auto}.no-js .orbit-slide{display:none}.no-js .orbit-slide.is-active{display:block}.top-bar{background-color:#fafafb;box-shadow:0 1px 0 rgba(12,13,14,0.1),0 1px 3px rgba(12,13,14,0.1),0 4px 20px rgba(12,13,14,0.035),0 1px 1px rgba(12,13,14,0.025)}.top-bar a.title{color:#333;font-weight:bold;font-size:110%}.top-bar ul{background-color:#fafafb}.top-bar a{color:#777}.top-bar a:hover{color:#777}a,a:hover{color:#a5073e}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:"Open Sans","IBM Plex Sans",sans-serif;color:#1b6ac6}code{border:0}pre{background-color:#fafafb;border:1px solid #CCC;white-space:pre-wrap;padding:8px;box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);margin:16px 0}.hljs{background-color:#fafafb}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a::after{border-top-color:#a5073e}.top-spacer{margin-top:64px}@media print, screen and (min-width: 40em){.top-spacer{margin-top:32px}}p{margin-bottom:0.5rem}li p,.ulist ul li p,.arabic li p,dd p{margin-bottom:0.25em}dl dt{font-size:120%;margin-bottom:0}.nb-orbit{background:#000}.nb-orbit .orbit-container .orbit-slide{color:#fff}.ulist .menu ul{padding:0;margin:0;list-style:none;position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-direction:row;flex-direction:row}section.hero{color:#fff;position:relative;padding:12px 0 0 0}section.hero .grid-container .cell h1,section.hero .grid-container .cell p{color:#eee}section.hero .grid-container .cell h1 a,section.hero .grid-container .cell p a{color:#fff}.hero.news,.orbit-wrapper{background:linear-gradient(rgba(27,106,198,0.88), rgba(46,144,232,0.84)),url("/images/hero-background.jpg") no-repeat;background-size:cover;background-position:center bottom}.hero.news{margin-bottom:1.5em}.toc{max-width:75%;border-top:1px solid #ddd;border-bottom:1px solid #ddd;margin:0 auto}.toc ul.sectlevel2,.toc ul.sectlevel3,.toc ul.sectlevel4{display:none}.toc ul{margin:0;padding:8px;list-style-type:none}.toc ul li{display:block;font-size:10pt;color:#327cc5}.toc ul li a{color:#a5073e}@media print, screen and (min-width: 40em){.toc{border-top:0px;border-bottom:0px;border-left:1px solid #ddd;max-width:15em;margin:0 0 2em 2em;float:right}.toc ul.sectlevel2,.toc ul.sectlevel3,.toc ul.sectlevel4{display:block}.toc ul{margin-left:8px}.toc ul li{display:block;line-height:1.68em;margin-bottom:1em}}.valign-top{vertical-align:top}table{width:auto;margin:1rem auto}table tbody tr{border-bottom:1px solid #f1f1f1}table tbody tr:nth-child(2n){background-color:#fff;border-bottom:1px solid #f1f1f1}.main-content{padding:0 16px}.main-content .aside{background-color:#eff0f1;font-size:90%}.main-content .aside p,.main-content .aside div{font-size:10pt}.thumbnail{border:0;box-shadow:none}.tutorial .imageblock .content .image img{box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);border:1px solid #1b6ac6;padding:8px;margin:8px 0 16px 0}.tutorial .imageblock .content .image img:hover{border:1px solid #2e90e8}.tutorial .imageblock .content img{box-shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);border:1px dotted #327cc5;padding:8px;margin:8px 0 16px 0}.admonitionblock{font-size:90%;color:#333}.admonitionblock table{margin:1rem 0}.reviewed{font-size:80%;margin-bottom:2rem;color:#888}.reviewed i{color:#a1c535}kbd{margin:0 0.25em;padding:0px 8px;background-color:#f6f6f6;color:#000;border-radius:4px;box-shadow:0 1px 3px #000,0 1px 2px rgba(0,0,0,0.24);font-size:95%}span.icon>.fa{cursor:default}a span.icon>.fa{cursor:inherit}.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,0.5);cursor:default}.admonitionblock td.icon .icon-note:before{content:"\f05a";color:#1b6ac6}.admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,0.8);color:#a1c535}.admonitionblock td.icon .icon-warning:before{content:"\f071";color:#a5073e}.admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#a5073e}.admonitionblock td.icon .icon-important:before{content:"\f06a";color:#1b6ac6}.conum[data-value]{display:inline-block;color:#fff !important;background-color:#0a0a0a;border-radius:100px;text-align:center;font-size:0.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans", "DejaVu Sans", sans-serif;font-style:normal;font-weight:bold}.conum[data-value] *{color:#fff !important}.conum[data-value]+b{display:none}.conum[data-value]:after{content:attr(data-value)}pre .conum[data-value]{position:relative;top:-0.125em}b.conum *{color:inherit !important}.conum:not([data-value]):empty{display:none}footer{min-height:256px;background-color:#333;color:#ddd;padding:64px 0;margin-top:64px}footer h1{font-size:120%;font-weight:bold;text-transform:uppercase;color:#ddd}footer ul{list-style-type:none;margin:0}footer ul li{margin-bottom:8px}footer a{color:#ddd}footer a:hover{color:#fff}.footer-disclaimer{background-color:#000}.footer-disclaimer-content{margin:0 auto;padding:64px 0;display:block;max-width:75%;font-size:10pt}.footer-disclaimer-content p{margin:8px 0 0 0;text-align:center;color:#ccc}.footer-disclaimer-content p a{color:#fff}.footer-disclaimer-content pre{color:#fff;font-size:10pt}.footer-disclaimer-content img{width:200px;max-width:100%}.sidebarblock.cards{text-align:center}.paragraph.card{text-align:left;box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.2),0 1px 5px 0 rgba(0,0,0,0.12);border-radius:4px;display:inline-block;vertical-align:top;max-width:16em;min-height:10em;background-color:#1b6ac6;color:#fff;margin:0.5em;padding:1em}.paragraph.card a{color:#fff;text-decoration:underline;font-weight:bold}.paragraph.card .title{font-size:130%;font-weight:bold;margin-bottom:0.5em}.paragraph.card.blue{background-color:#1b6ac6}.paragraph.card.green{background-color:#a1c535}.paragraph.card.magenta{background-color:#a5073e}.openblock.feature{padding:1em 0;margin:0.5em 0;overflow:auto;padding:1em 0 0.5em 0}.openblock.feature .title{font-weight:bold;font-size:140%}.openblock.feature .content .paragraph p span.image{max-width:100%;padding:4px}@media print, screen and (min-width: 40em){.openblock.feature .content .paragraph p span.image{margin:0.5em 1em 0.5em 0;max-width:60%;border:1px solid #a5073e;float:left}.openblock.feature .content .paragraph p span.image.right{float:right;margin:0.5em 0 0.5em 1em}.openblock.feature:after{clear:both}}.videoblock .content{clear:both;float:none;height:0;margin:1em 0 1.5em 0;padding-bottom:56.25%;padding-top:25px;position:relative;width:100%}.videoblock .content iframe{height:100%;left:0;position:absolute;top:0;width:100%}
-==========================================================
-COLORS (bgcolor / font-color)
-- Box header, Table name header,bolder: #ff9742 / #ffffff
-- Box body - dark : #fed78c / #000000
- - light : #ffe8bc / #000000
-- Table name of col. - dark : #ff9742 / #ffffff
- - light : #fed78c / #bf6212
- : #ffe8bc / #000000
-- Table row - dark : #ffe8bc / #000000
- - light : #ffffff / #000000
-- h1,.h1 : #ff9742 / #080c77
-- h2-h4,.h2-.h4,titlec : ? / #bf6212
-- .code : #ffe8bc / ?
-
-FONT supported sizes: 130%, 125%, 110%, 100%, 85%, 10pt, 75%, 60% (default is 10pt)
-SUPPORTED FONTS : Verdana, sans-serif, helvetica, arial
-=============================================================
-*/
-
-body {
- font-family: Verdana, sans-serif, helvetica, arial;
- font-size: 12px;
- background-color: #FFFFFF;
- }
-
-td {
- font-family: Verdana, sans-serif, helvetica, arial;
- font-size: 12px;
- }
-
-.default {
- font-family: Verdana, sans-serif, helvetica, arial;
- }
-
-h1 {font-size: 17px; font-weight : bold; color: #080c77; line-height: 35px; border-right-color: #ffffff; border-left-color: #ffffff; border-bottom-color: #ff9843; border-top-color: #ff9843; border-width: 1px; border-style: solid;}
-h2 {font-size: 15px; font-weight: bold; color: #ee6d06; }
-h3 {font-size: 13px; font-weight: bold; color: #ee6d06; }
-h4 {font-size: 12px; font-weight: normal; color: #ee6d06; }
-h5,h6 {font-size: 11px; font-weight: normal; color: #ee6d06; }
-
-.h1 {font-size: 17px; font-weight : bold; color: #ee6d06;}
-.h2 {font-size: 15px; font-weight: bold; color: #ee6d06; }
-.h3 {font-size: 13px; font-weight: bold; color: #ee6d06; }
-.h4 {font-size: 12px; font-weight: normal; color: #ee6d06; }
-
-.smalltextbase {
- font-family: Verdana, sans-serif, helvetica, arial;
- font-size: 10px;
- line-height: 1.2em;
- }
-
-.smalltext {
- font-size: 10px;
- line-height: 1.2em;
- }
+code{font-size: 1em;}
+.apidocmaincontent{
+ height: 92%;
+ width: 80%;
+ position: fixed;
+ overflow-x: hidden;
+ right:0;
+ font-size: 11px;
+ padding-top:15px;
+ padding-left: 3px;
-.tmtext {
- font-size: 10px;
- line-height: 1.2em;
- }
-a:link, a:visited {
- color: #0E0E76;
- font-weight : bold;
- text-decoration: none;
}
-
-a:link:hover, a:visited:hover {
- color: #080c77;
- font-weight : bold;
- text-decoration : underline;
+.innercontent{
+ width:83%;
+ font-family: Verdana, sans-serif, helvetica, arial
}
-
-/* Interesting Trick : add envelope icon in front of mailto links
-a[href^="mailto:"]:before { content: "\2709 " } */
-
-/* NAVIGATION TOP */
-
-.topmenucur {
- font-family: Verdana, sans-serif, helvetica, arial;
- color: #000000;
- font-size: 12px;
- font-weight : bold;
- text-decoration : none;
- }
-
-.bgtopmenucur {
- background-color: #fbf3e1;
- }
-
-.topmenu {
- font-family: Verdana, sans-serif, helvetica, arial;
- color: #ffffff;
- font-size: 12px;
- font-weight : bold;
- text-decoration : none;
- }
-.bgtopmenu {
- background-color: #000069;
- }
-.tops {
- font-family: Verdana, sans-serif, helvetica, arial;
- color: #000000;
- font-size: 11px;
- text-decoration : none;
- }
-a.tops {
- color: #000000;
- }
-.niceborder {
- background-color: #f8a765;
- }
-
-
-/*LEFT Navigation*/
-
-.leftmenucur {
- font-family: Verdana, sans-serif, helvetica, arial;
- font-size: 10px;
- line-height: 1.8em;
- background-color: #f6dcac;
- }
-
-.leftmenu {
- font-family: Verdana, sans-serif, helvetica, arial;
- font-size: 10px;
- line-height: 1.8em;
- color: #000000;
- background-color: #f6dcac;
- }
-
-a.leftmenu {
- font-family: Verdana, sans-serif, helvetica, arial;
- font-weight: bold;
- color: #000000;
- line-height: 1.8em;
- background-color: #f6dcac;
- }
-
-.bgleftmenuhead {
- background-color: #e9924c;
- }
-
-
-.leftmenusplit {
- background-color: #fff3d6;
- }
-
-.leftmenustin {
- background-color: #a0a0a0;
- }
-/*PLAGIN PAGE*/
-
-.plagin {
- background-image: url(http://testwww2.netbeans.org/images/general/plagin.gif);
- background-repeat: no-repeat;
- font-size: 10px;
- line-height: 1.2em;
- font-weight : bold;
- color: #080c77;
-
- }
-
-.plaginon {
- background-image: url(http://testwww2.netbeans.org/images/general/plagin_on.gif);
- background-repeat: no-repeat;
- font-size: 10px;
- line-height: 1.2em;
- font-weight : bold;
- color: #ffffff;
-
- }
-
-
-pre,samp,code,tt {
- font-family: "Courier New", monospace;
+.tablebg {
+ width:100%;
}
-
-
-/* show some code*/
-.codes {
- background-color: #f0f0f0
- }
-.textbox {
- font-family: Courier New, Monospaced;
- }
-
-dt {font-weight: bold}
-dd {margin-left: 1.5em}
-
-/* --- IMPORT FOR JAVADOC -- */
-/* this part of css is automaticaly exported to file nb_special.css
-if you need make some changes please edit into netbeans.css*/
-
-/* TABLE STYLES */
-
-
-.tablebg {
- background-color: #ff9d42;
- }
-
-.tablehbg {
- background-color: #ff9d42;
- }
-
-.tablecbg {
- background-color: #fed78c;
- }
-
-
-.tablerbg {
- background-color: #ffe8bc;
- }
-
-.tabler {
- background-color: #FFFFFF;
- }
-
-.tablersh {
- background-color: rgb(240,240,240);
- }
-
-.tablecfont {
- font-weight: bold;
- color: #000000;
- }
-
-.tablehfont {
- font-weight: bold;
- color: #000000;
- }
-
-/* END TABLES */
-
-.titlec {
- font-weight: bold;
- color: #ee6d06;
- }
-
-.titlectable {
- font-weight: bold;
- color: #000000;
- line-height: 20px;
- }
-
-
-
-.constant {
- color: #b03060;
- }
-
-.keyword {
- color: #0000ff;
- }
-
-.function-name {
- color: #0000ff;
- }
-
-.comment {
- color: #666666;
- font-style: italic;
- }
-
-.string {
- color: #b03060;
- }
-
-.variable-name {
- color: #006400;
- }
-
-.type {
- color: #00008b;
- }
-
-.extra-java-font-lock-number {
- color: #b03060;
- }
-
-.builtin {
- color: #0000ff;
- }
-
-/* --- END IMPORT FOR JAVADOC -- */
-
-/* Collab css*/
-
-leftnav1, .Footer, .footer1 {
- font-size: 12px;
- }
-
-.ProjectNameHeader, .Warning, .ProjectHeader {
- font-size: 12px;
- }
-.Crumbing, .HeaderText {
- text-transform: uppercase;
- }
-A.Crumbing:hover, A.FooterNav:active, A.FooterNav:hover, A.FooterTextLink {
- text-decoration: underline;
- }
-.PlainText {
- color : #000;
- }
+.apidocleft{
+ height: 92%;
+ width: 20%;
+ position: fixed;
+ overflow-x: hidden;
+ left:0;
+ z-index: -1;
- .PlainTextBold {
- font-weight : bold;
- color : #000;
}
- .Copy {
- font-size : 12px;
- color : #000;
+.toc{
+ right:10px;
+ position:fixed;
}
- .StatText {
- font-weight : bold;
- color : #000;
- font-size : 12px;
+.scroll {
+ overflow:auto;
+ white-space: nowrap;
+ width: 25%;
}
- .StatHeader {
- font-weight : bold;
- color : #fff;
- font-size : 12px;
+
+.scroll a {
+ display: inline-block;
+ padding-left: 15px;
+ color:gainsboro;
}
- .DevHeader {
- font-weight : bold;
- color : #000;
- font-size : 12px;
-}
- .DevName {
- font-weight : bold;
- color : #666;
- font-size : 12px;
-}
- .Header {
- color : #000;
- font-size : 100%;
- font-weight : bold;
-}
- .ProjectNameHeader {
- font-weight : bold;
- color : #000;
- font-size : 12px;
-}
- .TableData {
- color : #aa0000;
- font-size : 12px;
-}
- .NewsDate {
- font-weight : bold;
- color : #550000;
- font-size : 12px;
-}
- .Download {
- font-weight : bold;
- font-size : 12px;
-}
- .StartCopy {
- color : #000;
- font-size : 12px;
-}
- .Welcome {
- font-weight : bold;
- color : #000;
- font-size : 12px;
-}
- .ProjectCategory {
- font-weight : bold;
- color : #aa7700;
- font-size : 12px;
-}
- .ResourcesHeader {
- font-weight : bold;
- color : #000;
- font-size : 12px;
-}
- .ProjectName {
- font-size : 12px;
-}
- .ProjectName2 {
- font-weight : bold;
- color : #ffff00;
- font-size : 12px;
-}
- .ResourceName {
- color : #000;
- font-size : 12px;
-}
- .InputHeader {
- font-weight : bold;
- color : #000;
- font-size : 12px;
-}
- .InputHeaderReversed {
- font-weight : bold;
- color : #fff;
- font-size : 12px;
-}
- .ProjectHeader {
- font-weight : bold;
- color : #000;
- font-size : 12px;
-}
- .NewsHeader {
- font-weight : bold;
- color : #aaaa00;
- font-size : 12px;
-}
- .NewsDateTable {
- color : #000;
- font-size : 12px;
- font-weight : bold;
-}
- .SiteHeader {
- font-weight : bold;
- color : #555500;
- font-size : 12px;
-}
- .ProjectDownloadHeader {
- font-weight : bold;
- color : #000;
- font-size : 12px;
-}
- .Asterisk {
- font-weight : bold;
- color : #000;
- font-size : 12px;
-}
- .HelpText {
- color : #000;
-}
- .LeftNav {
- color : #fff;
-}
- .HelpTextHeader {
- font-weight : bold;
- color : #000;
-}
- .HelpTextBold {
- font-weight : bold;
- color : #000;
-}
- .SmallHeader {
- font-weight : bold;
- color : #00aa00;
-}
- .ProjectNav {
- color : #000;
-}
- .Footer {
- color : #000;
-}
- .StatHeader {
- font-weight : bold;
- color : #fff;
-}
- .Warning {
- font-weight : bold;
- color : #ff0000;
- color : #000;
- font-family : courier, monospace;
-}
- .TypewriterBold {
- font-weight : bold;
- color : #000;
- font-family : courier, monospace;
-}
- .footer1 {
- font-family : verdana;
- color : #fff;
-}
- a.footer1:link {
- font-family : verdana;
- color : #fff;
-}
- a.footer1:active {
- font-family : verdana;
- color : #fff;
-}
- a.footer1:hover {
- font-family : verdana;
- color : #fff;
-}
- a.footer1:visited {
- font-family : verdana;
- color : #fff;
-}
- .leftnav1 {
- font-family : verdana;
- color : #000;
-}
- a.leftnav1:link {
- font-family : verdana;
- color : #000;
-}
- a.leftnav1:active {
- font-family : verdana;
- color : #000;
-}
- a.leftnav1:hover {
- font-family : verdana;
- color : #000;
-}
- a.leftnav1:visited {
- font-family : verdana;
- color : #000;
-}
- .FooterNav {
- font-weight : bold;
- color : #fff;
-}
- A.FooterNav:link {
- font-weight : bold;
- color : #fff;
-}
- A.FooterNav:visited {
- font-weight : bold;
- color : #fff;
-}
- A.FooterNav:active {
- font-weight : bold;
- color : #fff;
- text-decoration : underline;
-}
- A.FooterNav:hover {
- font-weight : bold;
- color : #fff;
- text-decoration : underline;
-}
- .FooterTextLink {
- font-weight : normal;
- color : #fff;
-}
- A.FooterTextLink:link {
- font-weight : bold;
- color : #fff;
-}
- A.FooterTextLink:visited {
- font-weight : bold;
- color : #fff;
-}
- A.FooterTextLink:active {
- font-weight : bold;
- color : #fff;
- text-decoration : underline;
-}
- A.FooterTextLink:hover {
- font-weight : bold;
- color : #fff;
- text-decoration : underline;
-}
- .HeaderText {
- font-weight : bold;
- color : #3399ff;
- text-transform : uppercase;
-}
- .Crumbing {
- font-weight : bold;
- font-style : italic;
- color : #fff;
- text-transform : uppercase;
-}
- A.Crumbing:link {
- font-weight : bold;
- font-style : italic;
- color : #fff;
-}
- A.Crumbing:visited {
- font-weight : bold;
- font-style : italic;
- color : #fff;
-}
- A.FooterNav:active {
- font-weight : bold;
- color : #fff;
- text-decoration : underline;
-}
- A.FooterNav:hover {
- font-weight : bold;
- color : #fff;
- text-decoration : underline;
-}
- .FooterTextLink {
- font-weight : normal;
- color : #fff;
-}
- A.FooterTextLink:link {
- font-weight : bold;
- color : #fff;
-}
- A.FooterTextLink:visited {
- font-weight : bold;
- color : #fff;
-}
- A.FooterTextLink:active {
- font-weight : bold;
- color : #fff;
- text-decoration : underline;
-}
- A.FooterTextLink:hover {
- font-weight : bold;
- color : #fff;
- text-decoration : underline;
-}
- .HeaderText {
- font-weight : bold;
- color : #3399ff;
- text-transform : uppercase;
-}
- .Crumbing {
- font-weight : bold;
- font-style : italic;
- color : #fff;
- text-transform : uppercase;
-}
- A.Crumbing:link {
- font-weight : bold;
- font-style : italic;
- color : #fff;
-}
- A.Crumbing:visited {
- font-weight : bold;
- font-style : italic;
- color : #fff;
+.scroll a.apacheversion{
+ color:grey;
}
- A.Crumbing:active {
- font-weight : bold;
- font-style : italic;
- color : #fff;
+.scroll span {
+ display: inline-block;
+ padding-left: 15px;
+ font-weight: bold;
+ color:black;
}
- A.Crumbing:hover {
- font-weight : bold;
- font-style : italic;
- color : #fff;
- text-decoration : underline;
+
+ul.moduleslist {
+ list-style-type: none;
+ margin-left: 2px;
+ font-size:.9em;
}
- .SideText {
- font-weight : normal;
- color : #fff;
+ul.modulesclasslist {
+ list-style-type: none;
+ margin-left: 2px;
}
- .BodyText {
- font-weight : normal;
- color : #99ccff;
+
+li.module {
+ background: url('module.png') no-repeat ;
+ padding-left: 20px;
+ background-position: left .25em;
}
- .navtablebg {
- background-color : #669;
+li.class {
+ background: url('class.png') no-repeat ;
+ padding-left: 20px;
+ background-position: left .25em;
}
- .navtablecbg {
- background-color : #cc9;
+
+
+li.interface {
+ background: url('interface.png') no-repeat ;
+ padding-left: 20px;
+ background-position: left .25em;
}
- .navtablecfont {
- font-weight : bold;
- color : #000000;
+.abstract {
+ background-color: #fafafb;
+ box-shadow: 0 1px 0 rgba(12,13,14,0.1),0 1px 3px rgba(12,13,14,0.1),0 4px 20px rgba(12,13,14,0.035),0 1px 1px rgba(12,13,14,0.025);
+ padding:10px;
}
-
+.apidocdate {
+ background-color: #fafafb;
+ box-shadow: 0 1px 0 rgba(12,13,14,0.1),0 1px 3px rgba(12,13,14,0.1),0 4px 20px rgba(12,13,14,0.035),0 1px 1px rgba(12,13,14,0.025);
+ padding:0px;
+ font-size: 7pt;
+}
\ No newline at end of file
diff --git a/nbbuild/javadoctools/prose.css b/nbbuild/javadoctools/prose.css
index 99cf039..faad6b9 100644
--- a/nbbuild/javadoctools/prose.css
+++ b/nbbuild/javadoctools/prose.css
@@ -20,7 +20,7 @@
@import "nb-docs.css";
@import "netbeans.css"; /* copied from http://www.netbeans.org/netbeans.css */
-
+@import "javadoc.css";
/* ... with just these changes: */
/* XXX should these things really be overridden?
diff --git a/nbbuild/javadoctools/siteresource/annotation.png b/nbbuild/javadoctools/siteresource/annotation.png
new file mode 100644
index 0000000..e54f46a
--- /dev/null
+++ b/nbbuild/javadoctools/siteresource/annotation.png
Binary files differ
diff --git a/nbbuild/javadoctools/siteresource/apache-netbeans.svg b/nbbuild/javadoctools/siteresource/apache-netbeans.svg
new file mode 100644
index 0000000..d296421
--- /dev/null
+++ b/nbbuild/javadoctools/siteresource/apache-netbeans.svg
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<svg xmlns="http://www.w3.org/2000/svg" width="444px" height="512px" viewBox="0 0 444 512" version="1.1">
+ <title>Apache NetBeans Logo</title>
+ <description>Apache NetBeans Logo</description>
+ <g id="logo" stroke-width="0" fill="none" fill-rule="evenodd">
+ <path d="M222,0 L222,99 L86,178 L0,128 L222,0 Z" fill="#A1C535"/>
+ <path d="M444,128 L358,178 L222,99 L222,0 L444,128 L444,128 Z" fill="#ADD439"/>
+ <path d="M444,384 L358,334 L358,178 L444,128 L444,384 L444,384 Z" fill="#1B6AC6"/>
+ <path d="M222,512 L222,413 L358,334 L444,384 L222,512 L222,512 Z" fill="#2E90E8"/>
+ <path d="M0,384 L86,334 L222,413 L222,512 L0,384 L0,384 Z" fill="#EA205E"/>
+ <path d="M0,128 L86,178 L86,334 L0,384 L0,128 L0,128 Z" fill="#A5073E"/>
+ <path d="M86,178 L222,99 L358,178 L222,256 L86,178 Z" fill="#F1F6E2"/>
+ <path d="M222,256 L358,178 L358,334 L222,413 L222,256 Z" fill="#CEDBE6"/>
+ <path d="M86,178 L222,256 L222,413 L86,334 L86,178 Z" fill="#FFFFFF"/>
+ </g>
+</svg>
diff --git a/nbbuild/javadoctools/siteresource/class.png b/nbbuild/javadoctools/siteresource/class.png
new file mode 100644
index 0000000..2fe485d
--- /dev/null
+++ b/nbbuild/javadoctools/siteresource/class.png
Binary files differ
diff --git a/nbbuild/javadoctools/siteresource/enum.png b/nbbuild/javadoctools/siteresource/enum.png
new file mode 100644
index 0000000..9a08a34
--- /dev/null
+++ b/nbbuild/javadoctools/siteresource/enum.png
Binary files differ
diff --git a/nbbuild/javadoctools/siteresource/interface.png b/nbbuild/javadoctools/siteresource/interface.png
new file mode 100644
index 0000000..05e4bff
--- /dev/null
+++ b/nbbuild/javadoctools/siteresource/interface.png
Binary files differ
diff --git a/nbbuild/javadoctools/siteresource/module.png b/nbbuild/javadoctools/siteresource/module.png
new file mode 100644
index 0000000..3a9cc50
--- /dev/null
+++ b/nbbuild/javadoctools/siteresource/module.png
Binary files differ
diff --git a/nbbuild/javadoctools/template.xml b/nbbuild/javadoctools/template.xml
index 1ec8097..6c9eef7 100644
--- a/nbbuild/javadoctools/template.xml
+++ b/nbbuild/javadoctools/template.xml
@@ -437,6 +437,12 @@
<replace dir="${javadoc.out.dir}" token="@TOP@/" value="@TOP@">
<include name="**/*.html"/>
</replace>
+ <replace dir="${javadoc.out.dir}">
+ <replacetoken><![CDATA[<ul class="navList" title="Navigation">]]></replacetoken>
+ <replacevalue><![CDATA[<ul class="navList" title="Navigation"><li><a href="@TOP@apichanges.html">API Changes</a></li><li><a href="@TOP@architecture-summary.html">Architecture Summary</a></li>]]></replacevalue>
+ <include name="**/*.html"/>
+ <exclude name="**/**/architecture-summary.html,**/**/apichanges.html"/>
+ </replace>
<replace dir="${javadoc.out.dir}" token="@TOP@" value="">
<include name="*.html"/>
</replace>