[openssl] master update

Dr. Paul Dale pauli at openssl.org
Thu May 30 00:58:17 UTC 2019


The branch master has been updated
       via  cec3901aa2ad09d504cb076100cf6e4b37d01775 (commit)
      from  878dc8dd9572a719d3b481e7f68af8bf17f4c68e (commit)


- Log -----------------------------------------------------------------
commit cec3901aa2ad09d504cb076100cf6e4b37d01775
Author: Pauli <paul.dale at oracle.com>
Date:   Thu May 30 10:57:53 2019 +1000

    Add man 7 page about properties.
    
    Add a page about properties in the man7 section of the public documentation.
    
    Reviewed-by: Richard Levitte <levitte at openssl.org>
    Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre at ncp-e.com>
    (Merged from https://github.com/openssl/openssl/pull/9011)

-----------------------------------------------------------------------

Summary of changes:
 crypto/property/properties.ebnf  |   2 +-
 crypto/property/properties.xhtml | 382 +++++++++++++++++----------------------
 doc/man7/property.pod            | 122 +++++++++++++
 3 files changed, 290 insertions(+), 216 deletions(-)
 create mode 100644 doc/man7/property.pod

diff --git a/crypto/property/properties.ebnf b/crypto/property/properties.ebnf
index 0051c7e..62e4f77 100644
--- a/crypto/property/properties.ebnf
+++ b/crypto/property/properties.ebnf
@@ -4,7 +4,7 @@ Definition
       ::= PropertyName ( '=' Value )? ( ',' PropertyName ( '=' Value )? )*
 Query ::= PropertyQuery ( ',' PropertyQuery )*
 PropertyQuery ::= '-'? PropertyName
-        | '?' ( PropertyName (( '=' | '!=' ) Value)?)
+        | '?'? ( PropertyName (( '=' | '!=' ) Value)?)
 Value    ::= NumberLiteral
         | StringLiteral
 StringLiteral ::= QuotedString | UnquotedString
diff --git a/crypto/property/properties.xhtml b/crypto/property/properties.xhtml
index 766d885..0a613ef 100755
--- a/crypto/property/properties.xhtml
+++ b/crypto/property/properties.xhtml
@@ -6,13 +6,13 @@
       <style type="text/css">
     ::-moz-selection
     {
-      color: #FFFCF0;
-      background: #0F0C00;
+      color: #FFFFFF;
+      background: #141414;
     }
     ::selection
     {
-      color: #FFFCF0;
-      background: #0F0C00;
+      color: #FFFFFF;
+      background: #141414;
     }      
     .ebnf a, .grammar a
     {
@@ -20,50 +20,50 @@
     }
     .ebnf a:hover, .grammar a:hover
     {
-      color: #050400;
+      color: #0F0F0F;
       text-decoration: underline;
     }    
     .signature
     {
-      color: #806600;
+      color: #4D4D4D;
       font-size: 11px;
       text-align: right;
     }
     body
     {
       font: normal 12px Verdana, sans-serif;
-      color: #0F0C00;
-      background: #FFFCF0;
+      color: #141414;
+      background: #FFFFFF;
     }
     a:link, a:visited
     {
-      color: #0F0C00;
+      color: #141414;
     }
     a:link.signature, a:visited.signature
     {
-      color: #806600;
+      color: #4D4D4D;
     }
     a.button, #tabs li a
     {
       padding: 0.25em 0.5em;
-      border: 1px solid #806600;
-      background: #F1E8C6;
-      color: #806600;
+      border: 1px solid #4D4D4D;
+      background: #E3E3E3;
+      color: #4D4D4D;
       text-decoration: none;
       font-weight: bold;
     }
     a.button:hover, #tabs li a:hover
     {
-      color: #050400;
-      background: #FFF6D1;
-      border-color: #050400;       
+      color: #0F0F0F;
+      background: #F0F0F0;
+      border-color: #0F0F0F;       
     }     
     #tabs
     {
       padding: 3px 10px;
       margin-left: 0;
       margin-top: 58px;
-      border-bottom: 1px solid #0F0C00;
+      border-bottom: 1px solid #141414;
     }  
     #tabs li
     {
@@ -73,14 +73,14 @@
     }
     #tabs li a
     {     
-      border-bottom: 1px solid #0F0C00;
+      border-bottom: 1px solid #141414;
     }
     #tabs li a.active
     {
-      color: #0F0C00;
-      background: #FFFCF0;
-      border-color: #0F0C00;
-      border-bottom: 1px solid #FFFCF0;
+      color: #141414;
+      background: #FFFFFF;
+      border-color: #141414;
+      border-bottom: 1px solid #FFFFFF;
       outline: none;
     }
     #divs div
@@ -94,9 +94,9 @@
     }
     #text
     {
-      border-color: #806600;
-      background: #FFFEFA;
-      color: #050400;
+      border-color: #4D4D4D;
+      background: #FFFFFF;
+      color: #0F0F0F;
     }
     .small
     {
@@ -121,18 +121,18 @@
     div.download
     {
       display: none;
-      background: #FFFCF0;
+      background: #FFFFFF;
       position: absolute;
       right: 34px;
       top: 94px;
       padding: 10px;
-      border: 1px dotted #0F0C00;
+      border: 1px dotted #141414;
     }
     #divs div.ebnf, .ebnf code
     {
       display: block;
       padding: 10px;
-      background: #FFF6D1;
+      background: #F0F0F0;
       width: 992px;
     }
     #divs div.grammar
@@ -141,7 +141,7 @@
       padding-left: 16px;
       padding-top: 2px;
       padding-bottom: 2px;
-      background: #FFF6D1;
+      background: #F0F0F0;
     }
     pre
     {
@@ -166,14 +166,14 @@
     }
     table.palette
     {
-      border-top: 1px solid #050400;
-      border-right: 1px solid #050400;
+      border-top: 1px solid #0F0F0F;
+      border-right: 1px solid #0F0F0F;
       margin-bottom: 4px
     }
     td.palette
     {
-      border-bottom: 1px solid #050400;
-      border-left: 1px solid #050400;
+      border-bottom: 1px solid #0F0F0F;
+      border-left: 1px solid #0F0F0F;
     }
     a.palette
     {
@@ -192,30 +192,30 @@
          <defs>
             <style type="text/css">
     @namespace "http://www.w3.org/2000/svg";
-    .line                 {fill: none; stroke: #332900;}
-    .bold-line            {stroke: #141000; shape-rendering: crispEdges; stroke-width: 2; }
-    .thin-line            {stroke: #1F1800; shape-rendering: crispEdges}
-    .filled               {fill: #332900; stroke: none;}
+    .line                 {fill: none; stroke: #262626;}
+    .bold-line            {stroke: #0A0A0A; shape-rendering: crispEdges; stroke-width: 2; }
+    .thin-line            {stroke: #0F0F0F; shape-rendering: crispEdges}
+    .filled               {fill: #262626; stroke: none;}
     text.terminal         {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #141000;
+                            fill: #0A0A0A;
                             font-weight: bold;
                           }
     text.nonterminal      {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1A1400;
+                            fill: #0D0D0D;
                             font-weight: normal;
                           }
     text.regexp           {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1F1800;
+                            fill: #0F0F0F;
                             font-weight: normal;
                           }
-    rect, circle, polygon {fill: #332900; stroke: #332900;}
-    rect.terminal         {fill: #FFDB4D; stroke: #332900;}
-    rect.nonterminal      {fill: #FFEC9E; stroke: #332900;}
+    rect, circle, polygon {fill: #262626; stroke: #262626;}
+    rect.terminal         {fill: #FFffff; stroke: #262626;}
+    rect.nonterminal      {fill: #FFFFFF; stroke: #262626;}
     rect.text             {fill: none; stroke: none;}    
-    polygon.regexp        {fill: #FFF4C7; stroke: #332900;}
+    polygon.regexp        {fill: #FFFFFF; stroke: #262626;}
   </style>
          </defs></svg></head>
    <body>
@@ -223,30 +223,30 @@
          <defs>
             <style type="text/css">
     @namespace "http://www.w3.org/2000/svg";
-    .line                 {fill: none; stroke: #332900;}
-    .bold-line            {stroke: #141000; shape-rendering: crispEdges; stroke-width: 2; }
-    .thin-line            {stroke: #1F1800; shape-rendering: crispEdges}
-    .filled               {fill: #332900; stroke: none;}
+    .line                 {fill: none; stroke: #262626;}
+    .bold-line            {stroke: #0A0A0A; shape-rendering: crispEdges; stroke-width: 2; }
+    .thin-line            {stroke: #0A0A0A; shape-rendering: crispEdges}
+    .filled               {fill: #262626; stroke: none;}
     text.terminal         {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #141000;
+                            fill: #0A0A0A;
                             font-weight: bold;
                           }
     text.nonterminal      {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1A1400;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
     text.regexp           {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1F1800;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
-    rect, circle, polygon {fill: #332900; stroke: #332900;}
-    rect.terminal         {fill: #FFDB4D; stroke: #332900;}
-    rect.nonterminal      {fill: #FFEC9E; stroke: #332900;}
+    rect, circle, polygon {fill: #262626; stroke: #262626;}
+    rect.terminal         {fill: #FFffff; stroke: #262626;}
+    rect.nonterminal      {fill: #FFFFFF; stroke: #262626;}
     rect.text             {fill: none; stroke: none;}    
-    polygon.regexp        {fill: #FFF4C7; stroke: #332900;}
+    polygon.regexp        {fill: #FFFFFF; stroke: #262626;}
   </style>
          </defs>
          <polygon points="9 61 1 57 1 65"/>
@@ -263,39 +263,34 @@
          <text class="terminal" x="59" y="21">,</text>
          <svg:path xmlns:svg="http://www.w3.org/2000/svg" class="line" d="m17 61 h2 m20 0 h10 m110 0 h10 m20 0 h10 m0 0 h116 m-146 0 h20 m126 0 h20 m-166 0 q10 0 10 10 m146 0 q0 -10 10 -10 m-156 10 v12 m146 0 v-12 m-146 12 q0 10 10 10 m126 0 q10 0 10 -10 m-136 10 h10 m30 0 h10 m0 0 h10 m56 0 h10 m-296 -32 l20 0 m-1 0 q-9 0 -9 -10 l0 -24 q0 -10 10 -10 m296 44 l20 0 m-20 0 q10 0 10 -10 l0 -24 q0 -10 -10 -10 m-296 0 h10 m24 0 h10 m0 0 h252 m23 44 h-3"/>
          <polygon points="365 61 373 57 373 65"/>
-         <polygon points="365 61 357 57 357 65"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">
-         <xhtml:div class="ebnf"><xhtml:code>
-               <div><a href="#Definition" title="Definition">Definition</a></div>
-               <div>         ::= <a href="#PropertyName" title="PropertyName">PropertyName</a> ( '=' <a href="#Value" title="Value">Value</a> )? ( ',' <a href="#PropertyName" title="PropertyName">PropertyName</a> ( '=' <a href="#Value" title="Value">Value</a> )? )*</div></xhtml:code></xhtml:div>
-      </xhtml:p>
-      <xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">no references</xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml" /><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="Query">Query:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" width="211" height="81">
+         <polygon points="365 61 357 57 357 65"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">no references</xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml" /><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="Query">Query:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" width="211" height="81">
          <defs>
             <style type="text/css">
     @namespace "http://www.w3.org/2000/svg";
-    .line                 {fill: none; stroke: #332900;}
-    .bold-line            {stroke: #141000; shape-rendering: crispEdges; stroke-width: 2; }
-    .thin-line            {stroke: #1F1800; shape-rendering: crispEdges}
-    .filled               {fill: #332900; stroke: none;}
+    .line                 {fill: none; stroke: #262626;}
+    .bold-line            {stroke: #0A0A0A; shape-rendering: crispEdges; stroke-width: 2; }
+    .thin-line            {stroke: #0A0A0A; shape-rendering: crispEdges}
+    .filled               {fill: #262626; stroke: none;}
     text.terminal         {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #141000;
+                            fill: #0A0A0A;
                             font-weight: bold;
                           }
     text.nonterminal      {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1A1400;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
     text.regexp           {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1F1800;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
-    rect, circle, polygon {fill: #332900; stroke: #332900;}
-    rect.terminal         {fill: #FFDB4D; stroke: #332900;}
-    rect.nonterminal      {fill: #FFEC9E; stroke: #332900;}
+    rect, circle, polygon {fill: #262626; stroke: #262626;}
+    rect.terminal         {fill: #FFffff; stroke: #262626;}
+    rect.nonterminal      {fill: #FFFFFF; stroke: #262626;}
     rect.text             {fill: none; stroke: none;}    
-    polygon.regexp        {fill: #FFF4C7; stroke: #332900;}
+    polygon.regexp        {fill: #FFFFFF; stroke: #262626;}
   </style>
          </defs>
          <polygon points="9 61 1 57 1 65"/>
@@ -307,38 +302,34 @@
          <text class="terminal" x="59" y="21">,</text>
          <svg:path xmlns:svg="http://www.w3.org/2000/svg" class="line" d="m17 61 h2 m20 0 h10 m112 0 h10 m-152 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -24 q0 -10 10 -10 m132 44 l20 0 m-20 0 q10 0 10 -10 l0 -24 q0 -10 -10 -10 m-132 0 h10 m24 0 h10 m0 0 h88 m23 44 h-3"/>
          <polygon points="201 61 209 57 209 65"/>
-         <polygon points="201 61 193 57 193 65"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">
-         <xhtml:div class="ebnf"><xhtml:code>
-               <div><a href="#Query" title="Query">Query</a>    ::= <a href="#PropertyQuery" title="PropertyQuery">PropertyQuery</a> ( ',' <a href="#PropertyQuery" title="PropertyQuery">PropertyQuery</a> )*</div></xhtml:code></xhtml:div>
-      </xhtml:p>
-      <xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">no references</xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml" /><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="PropertyQuery">PropertyQuery:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" width="465" height="189">
+         <polygon points="201 61 193 57 193 65"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">no references</xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml" /><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="PropertyQuery">PropertyQuery:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" width="505" height="189">
          <defs>
             <style type="text/css">
     @namespace "http://www.w3.org/2000/svg";
-    .line                 {fill: none; stroke: #332900;}
-    .bold-line            {stroke: #141000; shape-rendering: crispEdges; stroke-width: 2; }
-    .thin-line            {stroke: #1F1800; shape-rendering: crispEdges}
-    .filled               {fill: #332900; stroke: none;}
+    .line                 {fill: none; stroke: #262626;}
+    .bold-line            {stroke: #0A0A0A; shape-rendering: crispEdges; stroke-width: 2; }
+    .thin-line            {stroke: #0A0A0A; shape-rendering: crispEdges}
+    .filled               {fill: #262626; stroke: none;}
     text.terminal         {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #141000;
+                            fill: #0A0A0A;
                             font-weight: bold;
                           }
     text.nonterminal      {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1A1400;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
     text.regexp           {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1F1800;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
-    rect, circle, polygon {fill: #332900; stroke: #332900;}
-    rect.terminal         {fill: #FFDB4D; stroke: #332900;}
-    rect.nonterminal      {fill: #FFEC9E; stroke: #332900;}
+    rect, circle, polygon {fill: #262626; stroke: #262626;}
+    rect.terminal         {fill: #FFffff; stroke: #262626;}
+    rect.nonterminal      {fill: #FFFFFF; stroke: #262626;}
     rect.text             {fill: none; stroke: none;}    
-    polygon.regexp        {fill: #FFF4C7; stroke: #332900;}
+    polygon.regexp        {fill: #FFFFFF; stroke: #262626;}
   </style>
          </defs>
          <polygon points="9 17 1 13 1 21"/>
@@ -348,28 +339,22 @@
          <text class="terminal" x="79" y="53">-</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#PropertyName" xlink:title="PropertyName">
             <rect x="137" y="3" width="110" height="32"/>
             <rect x="135" y="1" width="110" height="32" class="nonterminal"/>
-            <text class="nonterminal" x="145" y="21">PropertyName</text></a><rect x="51" y="79" width="26" height="32" rx="10"/>
-         <rect x="49" y="77" width="26" height="32" class="terminal" rx="10"/>
-         <text class="terminal" x="59" y="97">?</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#PropertyName" xlink:title="PropertyName">
-            <rect x="97" y="79" width="110" height="32"/>
-            <rect x="95" y="77" width="110" height="32" class="nonterminal"/>
-            <text class="nonterminal" x="105" y="97">PropertyName</text></a><rect x="267" y="111" width="30" height="32" rx="10"/>
-         <rect x="265" y="109" width="30" height="32" class="terminal" rx="10"/>
-         <text class="terminal" x="275" y="129">=</text>
-         <rect x="267" y="155" width="34" height="32" rx="10"/>
-         <rect x="265" y="153" width="34" height="32" class="terminal" rx="10"/>
-         <text class="terminal" x="275" y="173">!=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#Value" xlink:title="Value">
-            <rect x="341" y="111" width="56" height="32"/>
-            <rect x="339" y="109" width="56" height="32" class="nonterminal"/>
-            <text class="nonterminal" x="349" y="129">Value</text></a><svg:path xmlns:svg="http://www.w3.org/2000/svg" class="line" d="m17 17 h2 m40 0 h10 m0 0 h36 m-66 0 h20 m46 0 h20 m-86 0 q10 0 10 10 m66 0 q0 -10 10 -10 m-76 10 v12 m66 0 v-12 m-66 12 q0 10 10 10 m46 0 q10 0 10 -10 m-56 10 h10 m26 0 h10 m20 -32 h10 m110 0 h10 m0 0 h170 m-406 0 h20 m386 0 h20 m-426 0 q10 0 10 10 m406 0 q0 -10 10 -10 m-416 10 v56 m406 0 v-56 m-406 56 q0 10 10 10 m386 0 q10 0 10 -10 m-396 10 h10 m26 0 h10 m0 0 h10 m110 0 h10 m20 0 h10 m0 0 h160 m-190 0 h20 m170 0 h20 m-210 0 q10 0 10 10 m190 0 q0 -10 10 -10 m-200 10 v12 m190 0 v-12 m-190 12 q0 10 10 10 m170 0 q10 0 10 -10 m-160 10 h10 m30 0 h10 m0 0 h4 m-74 0 h20 m54 0 h20 m-94 0 q10 0 10 10 m74 0 q0 -10 10 -10 m-84 10 v24 m74 0 v-24 m-74 24 q0 10 10 10 m54 0 q10 0 10 -10 m-64 10 h10 m34 0 h10 m20 -44 h10 m56 0 h10 m43 -108 h-3"/>
-         <polygon points="455 17 463 13 463 21"/>
-         <polygon points="455 17 447 13 447 21"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">
-         <xhtml:div class="ebnf"><xhtml:code>
-               <div><a href="#PropertyQuery" title="PropertyQuery">PropertyQuery</a></div>
-               <div>         ::= '-'? <a href="#PropertyName" title="PropertyName">PropertyName</a></div>
-               <div>           | '?' <a href="#PropertyName" title="PropertyName">PropertyName</a> ( ( '=' | '!=' ) <a href="#Value" title="Value">Value</a> )?</div></xhtml:code></xhtml:div>
-      </xhtml:p>
-      <xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:
+            <text class="nonterminal" x="145" y="21">PropertyName</text></a><rect x="71" y="111" width="26" height="32" rx="10"/>
+         <rect x="69" y="109" width="26" height="32" class="terminal" rx="10"/>
+         <text class="terminal" x="79" y="129">?</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#PropertyName" xlink:title="PropertyName">
+            <rect x="137" y="79" width="110" height="32"/>
+            <rect x="135" y="77" width="110" height="32" class="nonterminal"/>
+            <text class="nonterminal" x="145" y="97">PropertyName</text></a><rect x="307" y="111" width="30" height="32" rx="10"/>
+         <rect x="305" y="109" width="30" height="32" class="terminal" rx="10"/>
+         <text class="terminal" x="315" y="129">=</text>
+         <rect x="307" y="155" width="34" height="32" rx="10"/>
+         <rect x="305" y="153" width="34" height="32" class="terminal" rx="10"/>
+         <text class="terminal" x="315" y="173">!=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#Value" xlink:title="Value">
+            <rect x="381" y="111" width="56" height="32"/>
+            <rect x="379" y="109" width="56" height="32" class="nonterminal"/>
+            <text class="nonterminal" x="389" y="129">Value</text></a><svg:path xmlns:svg="http://www.w3.org/2000/svg" class="line" d="m17 17 h2 m40 0 h10 m0 0 h36 m-66 0 h20 m46 0 h20 m-86 0 q10 0 10 10 m66 0 q0 -10 10 -10 m-76 10 v12 m66 0 v-12 m-66 12 q0 10 10 10 m46 0 q10 0 10 -10 m-56 10 h10 m26 0 h10 m20 -32 h10 m110 0 h10 m0 0 h210 m-446 0 h20 m426 0 h20 m-466 0 q10 0 10 10 m446 0 q0 -10 10 -10 m-456 10 v56 m446 0 v-56 m-446 56 q0 10 10 10 m426 0 q10 0 10 -10 m-416 10 h10 m0 0 h36 m-66 0 h20 m46 0 h20 m-86 0 q10 0 10 10 m66 0 q0 -10 10 -10 m-76 10 v12 m66 0 v-12 m-66 12 q0 10 10 10 m46 0 q10 0 10 -10 m-56 10 h10 m26 0 h10 m20 -32 h10 m110 0 h10 m20 0 h10 m0 0 h160 m-190 0 h20 m170 0 h20 m-210 0 q10 0 10 10 m190 0 q0 -10 10 -10 m-200 10 v12 m190 0 v-12 m-190 12 q0 10 10 10 m170 0 q10 0 10 -10 m-160 10 h10 m30 0 h10 m0 0 h4 m-74 0 h20 m54 0 h20 m-94 0 q10 0 10 10 m74 0 q0 -10 10 -10 m-84 10 v24 m74 0 v-24 m-74 24 q0 10 10 10 m54 0 q10 0 10 -10 m-64 10 h10 m34 0 h10 m20 -44 h10 m56 0 h10 m43 -108 h-3"/>
+         <polygon points="495 17 503 13 503 21"/>
+         <polygon points="495 17 487 13 487 21"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:
          <xhtml:ul>
             <xhtml:li><xhtml:a href="#Query" title="Query">Query</xhtml:a></xhtml:li>
          </xhtml:ul>
@@ -377,30 +362,30 @@
          <defs>
             <style type="text/css">
     @namespace "http://www.w3.org/2000/svg";
-    .line                 {fill: none; stroke: #332900;}
-    .bold-line            {stroke: #141000; shape-rendering: crispEdges; stroke-width: 2; }
-    .thin-line            {stroke: #1F1800; shape-rendering: crispEdges}
-    .filled               {fill: #332900; stroke: none;}
+    .line                 {fill: none; stroke: #262626;}
+    .bold-line            {stroke: #0A0A0A; shape-rendering: crispEdges; stroke-width: 2; }
+    .thin-line            {stroke: #0A0A0A; shape-rendering: crispEdges}
+    .filled               {fill: #262626; stroke: none;}
     text.terminal         {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #141000;
+                            fill: #0A0A0A;
                             font-weight: bold;
                           }
     text.nonterminal      {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1A1400;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
     text.regexp           {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1F1800;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
-    rect, circle, polygon {fill: #332900; stroke: #332900;}
-    rect.terminal         {fill: #FFDB4D; stroke: #332900;}
-    rect.nonterminal      {fill: #FFEC9E; stroke: #332900;}
+    rect, circle, polygon {fill: #262626; stroke: #262626;}
+    rect.terminal         {fill: #FFffff; stroke: #262626;}
+    rect.nonterminal      {fill: #FFFFFF; stroke: #262626;}
     rect.text             {fill: none; stroke: none;}    
-    polygon.regexp        {fill: #FFF4C7; stroke: #332900;}
+    polygon.regexp        {fill: #FFFFFF; stroke: #262626;}
   </style>
          </defs>
          <polygon points="9 17 1 13 1 21"/>
@@ -412,12 +397,7 @@
             <rect x="49" y="45" width="96" height="32" class="nonterminal"/>
             <text class="nonterminal" x="59" y="65">StringLiteral</text></a><svg:path xmlns:svg="http://www.w3.org/2000/svg" class="line" d="m17 17 h2 m20 0 h10 m108 0 h10 m-148 0 h20 m128 0 h20 m-168 0 q10 0 10 10 m148 0 q0 -10 10 -10 m-158 10 v24 m148 0 v-24 m-148 24 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h10 m96 0 h10 m0 0 h12 m23 -44 h-3"/>
          <polygon points="197 17 205 13 205 21"/>
-         <polygon points="197 17 189 13 189 21"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">
-         <xhtml:div class="ebnf"><xhtml:code>
-               <div><a href="#Value" title="Value">Value</a>    ::= <a href="#NumberLiteral" title="NumberLiteral">NumberLiteral</a></div>
-               <div>           | <a href="#StringLiteral" title="StringLiteral">StringLiteral</a></div></xhtml:code></xhtml:div>
-      </xhtml:p>
-      <xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:
+         <polygon points="197 17 189 13 189 21"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:
          <xhtml:ul>
             <xhtml:li><xhtml:a href="#Definition" title="Definition">Definition</xhtml:a></xhtml:li>
             <xhtml:li><xhtml:a href="#PropertyQuery" title="PropertyQuery">PropertyQuery</xhtml:a></xhtml:li>
@@ -426,30 +406,30 @@
          <defs>
             <style type="text/css">
     @namespace "http://www.w3.org/2000/svg";
-    .line                 {fill: none; stroke: #332900;}
-    .bold-line            {stroke: #141000; shape-rendering: crispEdges; stroke-width: 2; }
-    .thin-line            {stroke: #1F1800; shape-rendering: crispEdges}
-    .filled               {fill: #332900; stroke: none;}
+    .line                 {fill: none; stroke: #262626;}
+    .bold-line            {stroke: #0A0A0A; shape-rendering: crispEdges; stroke-width: 2; }
+    .thin-line            {stroke: #0A0A0A; shape-rendering: crispEdges}
+    .filled               {fill: #262626; stroke: none;}
     text.terminal         {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #141000;
+                            fill: #0A0A0A;
                             font-weight: bold;
                           }
     text.nonterminal      {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1A1400;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
     text.regexp           {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1F1800;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
-    rect, circle, polygon {fill: #332900; stroke: #332900;}
-    rect.terminal         {fill: #FFDB4D; stroke: #332900;}
-    rect.nonterminal      {fill: #FFEC9E; stroke: #332900;}
+    rect, circle, polygon {fill: #262626; stroke: #262626;}
+    rect.terminal         {fill: #FFffff; stroke: #262626;}
+    rect.nonterminal      {fill: #FFFFFF; stroke: #262626;}
     rect.text             {fill: none; stroke: none;}    
-    polygon.regexp        {fill: #FFF4C7; stroke: #332900;}
+    polygon.regexp        {fill: #FFFFFF; stroke: #262626;}
   </style>
          </defs>
          <polygon points="9 17 1 13 1 21"/>
@@ -461,13 +441,7 @@
             <rect x="49" y="45" width="120" height="32" class="nonterminal"/>
             <text class="nonterminal" x="59" y="65">UnquotedString</text></a><svg:path xmlns:svg="http://www.w3.org/2000/svg" class="line" d="m17 17 h2 m20 0 h10 m104 0 h10 m0 0 h16 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v24 m160 0 v-24 m-160 24 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h10 m120 0 h10 m23 -44 h-3"/>
          <polygon points="209 17 217 13 217 21"/>
-         <polygon points="209 17 201 13 201 21"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">
-         <xhtml:div class="ebnf"><xhtml:code>
-               <div><a href="#StringLiteral" title="StringLiteral">StringLiteral</a></div>
-               <div>         ::= <a href="#QuotedString" title="QuotedString">QuotedString</a></div>
-               <div>           | <a href="#UnquotedString" title="UnquotedString">UnquotedString</a></div></xhtml:code></xhtml:div>
-      </xhtml:p>
-      <xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:
+         <polygon points="209 17 201 13 201 21"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:
          <xhtml:ul>
             <xhtml:li><xhtml:a href="#Value" title="Value">Value</xhtml:a></xhtml:li>
          </xhtml:ul>
@@ -475,30 +449,30 @@
          <defs>
             <style type="text/css">
     @namespace "http://www.w3.org/2000/svg";
-    .line                 {fill: none; stroke: #332900;}
-    .bold-line            {stroke: #141000; shape-rendering: crispEdges; stroke-width: 2; }
-    .thin-line            {stroke: #1F1800; shape-rendering: crispEdges}
-    .filled               {fill: #332900; stroke: none;}
+    .line                 {fill: none; stroke: #262626;}
+    .bold-line            {stroke: #0A0A0A; shape-rendering: crispEdges; stroke-width: 2; }
+    .thin-line            {stroke: #0A0A0A; shape-rendering: crispEdges}
+    .filled               {fill: #262626; stroke: none;}
     text.terminal         {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #141000;
+                            fill: #0A0A0A;
                             font-weight: bold;
                           }
     text.nonterminal      {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1A1400;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
     text.regexp           {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1F1800;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
-    rect, circle, polygon {fill: #332900; stroke: #332900;}
-    rect.terminal         {fill: #FFDB4D; stroke: #332900;}
-    rect.nonterminal      {fill: #FFEC9E; stroke: #332900;}
+    rect, circle, polygon {fill: #262626; stroke: #262626;}
+    rect.terminal         {fill: #FFffff; stroke: #262626;}
+    rect.nonterminal      {fill: #FFFFFF; stroke: #262626;}
     rect.text             {fill: none; stroke: none;}    
-    polygon.regexp        {fill: #FFF4C7; stroke: #332900;}
+    polygon.regexp        {fill: #FFFFFF; stroke: #262626;}
   </style>
          </defs>
          <polygon points="9 33 1 29 1 37"/>
@@ -523,13 +497,7 @@
          <text class="terminal" x="257" y="119">'</text>
          <svg:path xmlns:svg="http://www.w3.org/2000/svg" class="line" d="m17 33 h2 m20 0 h10 m26 0 h10 m40 0 h10 m56 0 h10 m-96 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -12 q0 -10 10 -10 m76 32 l20 0 m-20 0 q10 0 10 -10 l0 -12 q0 -10 -10 -10 m-76 0 h10 m0 0 h66 m-116 32 h20 m116 0 h20 m-156 0 q10 0 10 10 m136 0 q0 -10 10 -10 m-146 10 v14 m136 0 v-14 m-136 14 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h10 m0 0 h106 m20 -34 h10 m26 0 h10 m-268 0 h20 m248 0 h20 m-288 0 q10 0 10 10 m268 0 q0 -10 10 -10 m-278 10 v62 m268 0 v-62 m-268 62 q0 10 10 10 m248 0 q10 0 10 -10 m-258 10 h10 m24 0 h10 m40 0 h10 m54 0 h10 m-94 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -12 q0 -10 10 -10 m74 32 l20 0 m-20 0 q10 0 10 -10 l0 -12 q0 -10 -10 -10 m-74 0 h10 m0 0 h64 m-114 32 h20 m114 0 h20 m-154 0 q10 0 10 10 m134 0 q0 -10 10 -10 m-144 10 v14 m134 0 v-14 m-134 14 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h10 m0 0 h104 m20 -34 h10 m24 0 h10 m0 0 h6 m23 -82 h-3"/>
          <polygon points="317 33 325 29 325 37"/>
-         <polygon points="317 33 309 29 309 37"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">
-         <xhtml:div class="ebnf"><xhtml:code>
-               <div><a href="#QuotedString" title="QuotedString">QuotedString</a></div>
-               <div>         ::= '"' [^"]* '"'</div>
-               <div>           | "'" [^']* "'"</div></xhtml:code></xhtml:div>
-      </xhtml:p>
-      <xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:
+         <polygon points="317 33 309 29 309 37"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:
          <xhtml:ul>
             <xhtml:li><xhtml:a href="#StringLiteral" title="StringLiteral">StringLiteral</xhtml:a></xhtml:li>
          </xhtml:ul>
@@ -537,30 +505,30 @@
          <defs>
             <style type="text/css">
     @namespace "http://www.w3.org/2000/svg";
-    .line                 {fill: none; stroke: #332900;}
-    .bold-line            {stroke: #141000; shape-rendering: crispEdges; stroke-width: 2; }
-    .thin-line            {stroke: #1F1800; shape-rendering: crispEdges}
-    .filled               {fill: #332900; stroke: none;}
+    .line                 {fill: none; stroke: #262626;}
+    .bold-line            {stroke: #0A0A0A; shape-rendering: crispEdges; stroke-width: 2; }
+    .thin-line            {stroke: #0A0A0A; shape-rendering: crispEdges}
+    .filled               {fill: #262626; stroke: none;}
     text.terminal         {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #141000;
+                            fill: #0A0A0A;
                             font-weight: bold;
                           }
     text.nonterminal      {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1A1400;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
     text.regexp           {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1F1800;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
-    rect, circle, polygon {fill: #332900; stroke: #332900;}
-    rect.terminal         {fill: #FFDB4D; stroke: #332900;}
-    rect.nonterminal      {fill: #FFEC9E; stroke: #332900;}
+    rect, circle, polygon {fill: #262626; stroke: #262626;}
+    rect.terminal         {fill: #FFffff; stroke: #262626;}
+    rect.nonterminal      {fill: #FFFFFF; stroke: #262626;}
     rect.text             {fill: none; stroke: none;}    
-    polygon.regexp        {fill: #FFF4C7; stroke: #332900;}
+    polygon.regexp        {fill: #FFFFFF; stroke: #262626;}
   </style>
          </defs>
          <polygon points="9 33 1 29 1 37"/>
@@ -570,12 +538,7 @@
          <text class="regexp" x="64" y="37">[^{space},]</text>
          <svg:path xmlns:svg="http://www.w3.org/2000/svg" class="line" d="m17 33 h2 m20 0 h10 m108 0 h10 m-148 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -12 q0 -10 10 -10 m128 32 l20 0 m-20 0 q10 0 10 -10 l0 -12 q0 -10 -10 -10 m-128 0 h10 m0 0 h118 m23 32 h-3"/>
          <polygon points="197 33 205 29 205 37"/>
-         <polygon points="197 33 189 29 189 37"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">
-         <xhtml:div class="ebnf"><xhtml:code>
-               <div><a href="#UnquotedString" title="UnquotedString">UnquotedString</a></div>
-               <div>         ::= [^{space},]+</div></xhtml:code></xhtml:div>
-      </xhtml:p>
-      <xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:
+         <polygon points="197 33 189 29 189 37"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:
          <xhtml:ul>
             <xhtml:li><xhtml:a href="#StringLiteral" title="StringLiteral">StringLiteral</xhtml:a></xhtml:li>
          </xhtml:ul>
@@ -583,30 +546,30 @@
          <defs>
             <style type="text/css">
     @namespace "http://www.w3.org/2000/svg";
-    .line                 {fill: none; stroke: #332900;}
-    .bold-line            {stroke: #141000; shape-rendering: crispEdges; stroke-width: 2; }
-    .thin-line            {stroke: #1F1800; shape-rendering: crispEdges}
-    .filled               {fill: #332900; stroke: none;}
+    .line                 {fill: none; stroke: #262626;}
+    .bold-line            {stroke: #0A0A0A; shape-rendering: crispEdges; stroke-width: 2; }
+    .thin-line            {stroke: #0A0A0A; shape-rendering: crispEdges}
+    .filled               {fill: #262626; stroke: none;}
     text.terminal         {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #141000;
+                            fill: #0A0A0A;
                             font-weight: bold;
                           }
     text.nonterminal      {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1A1400;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
     text.regexp           {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1F1800;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
-    rect, circle, polygon {fill: #332900; stroke: #332900;}
-    rect.terminal         {fill: #FFDB4D; stroke: #332900;}
-    rect.nonterminal      {fill: #FFEC9E; stroke: #332900;}
+    rect, circle, polygon {fill: #262626; stroke: #262626;}
+    rect.terminal         {fill: #FFffff; stroke: #262626;}
+    rect.nonterminal      {fill: #FFFFFF; stroke: #262626;}
     rect.text             {fill: none; stroke: none;}    
-    polygon.regexp        {fill: #FFF4C7; stroke: #332900;}
+    polygon.regexp        {fill: #FFFFFF; stroke: #262626;}
   </style>
          </defs>
          <polygon points="9 51 1 47 1 55"/>
@@ -640,13 +603,7 @@
          <text class="regexp" x="252" y="257">[0-9]</text>
          <svg:path xmlns:svg="http://www.w3.org/2000/svg" class="line" d="m17 51 h2 m20 0 h10 m28 0 h10 m40 0 h10 m0 0 h72 m-102 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -14 q0 -10 10 -10 m82 34 l20 0 m-20 0 q10 0 10 -10 l0 -14 q0 -10 -10 -10 m-82 0 h10 m62 0 h10 m20 34 h88 m-230 0 h20 m210 0 h20 m-250 0 q10 0 10 10 m230 0 q0 -10 10 -10 m-240 10 v28 m230 0 v-28 m-230 28 q0 10 10 10 m210 0 q10 0 10 -10 m-220 10 h10 m28 0 h10 m40 0 h10 m62 0 h10 m-102 0 h20 m82 0 h20 m-122 0 q10 0 10 10 m102 0 q0 -10 10 -10 m-112 10 v24 m102 0 v-24 m-102 24 q0 10 10 10 m82 0 q10 0 10 -10 m-92 10 h10 m60 0 h10 m0 0 h2 m-92 -10 v20 m102 0 v-20 m-102 20 v24 m102 0 v-24 m-102 24 q0 10 10 10 m82 0 q10 0 10 -10 m-92 10 h10 m58 0 h10 m0 0 h4 m-122 -88 l20 0 m-1 0 q-9 0 -9 -10 l0 -12 q0 -10 10 -10 m122 32 l20 0 m-20 0 q10 0 10 -10 l0 -12 q0 -10 -10 -10 m-122 0 h10 m0 0 h112 m-278 -16 h20 m298 0 h20 m-338 0 q10 0 10 10 m318 0 q0 -10 10 -10 m-328 10 v182 m318 0 v-182 m-318 182 q0 10 10 10 m298 0 q10 0 10 -10 m-288 10 h10 m0 0 h36 m-66 0 h20 m46 0 h20 m-86 0 q10 0 10 10 m66 0 q0 -10 10 -10 m-76 10 v12 m66 0 v-12 m-66 12 q0 10 10 10 m46 0 q10 0 10 -10 m-56 10 h10 m26 0 h10 m20 -32 h10 m62 0 h10 m20 0 h10 m62 0 h10 m-102 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -12 q0 -10 10 -10 m82 32 l20 0 m-20 0 q10 0 10 -10 l0 -12 q0 -10 -10 -10 m-82 0 h10 m0 0 h72 m20 32 h8 m23 -202 h-3"/>
          <polygon points="367 51 375 47 375 55"/>
-         <polygon points="367 51 359 47 359 55"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">
-         <xhtml:div class="ebnf"><xhtml:code>
-               <div><a href="#NumberLiteral" title="NumberLiteral">NumberLiteral</a></div>
-               <div>         ::= '0' ( [0-7]* | 'x' [0-9A-Fa-f]+ )</div>
-               <div>           | '-'? [1-9] [0-9]+</div></xhtml:code></xhtml:div>
-      </xhtml:p>
-      <xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:
+         <polygon points="367 51 359 47 359 55"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:
          <xhtml:ul>
             <xhtml:li><xhtml:a href="#Value" title="Value">Value</xhtml:a></xhtml:li>
          </xhtml:ul>
@@ -654,30 +611,30 @@
          <defs>
             <style type="text/css">
     @namespace "http://www.w3.org/2000/svg";
-    .line                 {fill: none; stroke: #332900;}
-    .bold-line            {stroke: #141000; shape-rendering: crispEdges; stroke-width: 2; }
-    .thin-line            {stroke: #1F1800; shape-rendering: crispEdges}
-    .filled               {fill: #332900; stroke: none;}
+    .line                 {fill: none; stroke: #262626;}
+    .bold-line            {stroke: #0A0A0A; shape-rendering: crispEdges; stroke-width: 2; }
+    .thin-line            {stroke: #0A0A0A; shape-rendering: crispEdges}
+    .filled               {fill: #262626; stroke: none;}
     text.terminal         {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #141000;
+                            fill: #0A0A0A;
                             font-weight: bold;
                           }
     text.nonterminal      {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1A1400;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
     text.regexp           {font-family: Verdana, Sans-serif;
                             font-size: 12px;
-                            fill: #1F1800;
+                            fill: #0A0A0A;
                             font-weight: normal;
                           }
-    rect, circle, polygon {fill: #332900; stroke: #332900;}
-    rect.terminal         {fill: #FFDB4D; stroke: #332900;}
-    rect.nonterminal      {fill: #FFEC9E; stroke: #332900;}
+    rect, circle, polygon {fill: #262626; stroke: #262626;}
+    rect.terminal         {fill: #FFffff; stroke: #262626;}
+    rect.nonterminal      {fill: #FFFFFF; stroke: #262626;}
     rect.text             {fill: none; stroke: none;}    
-    polygon.regexp        {fill: #FFF4C7; stroke: #332900;}
+    polygon.regexp        {fill: #FFFFFF; stroke: #262626;}
   </style>
          </defs>
          <polygon points="9 183 1 179 1 187"/>
@@ -699,12 +656,7 @@
          <text class="terminal" x="59" y="21">.</text>
          <svg:path xmlns:svg="http://www.w3.org/2000/svg" class="line" d="m17 183 h2 m20 0 h10 m62 0 h10 m20 0 h10 m0 0 h72 m-102 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -14 q0 -10 10 -10 m82 34 l20 0 m-20 0 q10 0 10 -10 l0 -14 q0 -10 -10 -10 m-82 0 h10 m62 0 h10 m-92 10 l0 -44 q0 -10 10 -10 m92 54 l0 -44 q0 -10 -10 -10 m-82 0 h10 m62 0 h10 m-92 10 l0 -44 q0 -10 10 -10 m92 54 l0 -44 q0 -10 -10 -10 m-82 0 h10 m28 0 h10 m0 0 h34 m-204 122 l20 0 m-1 0 q-9 0 -9 -10 l0 -146 q0 -10 10 -10 m204 166 l20 0 m-20 0 q10 0 10 -10 l0 -146 q0 -10 -10 -10 m-204 0 h10 m24 0 h10 m0 0 h160 m23 166 h-3"/>
          <polygon points="273 183 281 179 281 187"/>
-         <polygon points="273 183 265 179 265 187"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">
-         <xhtml:div class="ebnf"><xhtml:code>
-               <div><a href="#PropertyName" title="PropertyName">PropertyName</a></div>
-               <div>         ::= [A-Z] [A-Z0-9_]* ( '.' [A-Z] [A-Z0-9_]* )*</div></xhtml:code></xhtml:div>
-      </xhtml:p>
-      <xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:
+         <polygon points="273 183 265 179 265 187"/></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:
          <xhtml:ul>
             <xhtml:li><xhtml:a href="#Definition" title="Definition">Definition</xhtml:a></xhtml:li>
             <xhtml:li><xhtml:a href="#PropertyQuery" title="PropertyQuery">PropertyQuery</xhtml:a></xhtml:li>
diff --git a/doc/man7/property.pod b/doc/man7/property.pod
new file mode 100644
index 0000000..1f8ee54
--- /dev/null
+++ b/doc/man7/property.pod
@@ -0,0 +1,122 @@
+=pod
+
+=head1 NAME
+
+property - Properties, a selection mechanism for algorithm implementations
+
+=head1 DESCRIPTION
+
+As of OpenSSL 3.0, a new method has been introduced to decide which of
+multiple implementations of an algorithm will be used.
+The method is centered around the concept of properties.
+Each implementation defines a number of properties and when an algorithm
+is being selected, filters based on these properties can be used to
+choose the most appropriate implementation of the algorithm.
+
+Properties are like variables, they are referenced by name and have a value
+assigned.
+
+=head2 Property Names
+
+Property names fall into two categories: those reserved by the OpenSSL
+project and user defined names.
+A I<reserved> property name consists of a single C-style identifier
+(except for leading underscores not being permitted), which begins
+with a letter and can be followed by any number of letters, numbers
+and underscores.
+Property names are case-insensitive, but OpenSSL will only use lowercase
+letters.
+
+A I<user defined> property name is similar, but it B<must> consist of
+two or more C-style identifiers, separated by periods.
+The last identifier in the name can be considered the 'true' property
+name, which is prefixed by some sort of 'namespace'.
+Providers for example could include their name in the prefix and use
+property names like
+
+  <provider_name>.<property_name>
+  <provider_name>.<algorithm_name>.<property_name>
+
+=head2 Properties
+
+A I<property> is a I<name=value> pair.
+A I<property definition> is a sequence of comma separated properties.
+There can be any number of properties in a definition.
+For example: "" defines a null property definition; "my.foo=bar"
+defines a property named I<my.foo> which has a string value I<bar> and
+"iteration.count=3" defines a property named I<iteration.count> which
+has a numeric value of I<3>.
+The full syntax for property definitions appears below.
+
+=head2 Implementations
+
+Each implementation of an algorithm can define any number of
+properties.
+For example, the default provider defines the property I<default=yes>
+for all of its algorithms.
+Likewise, the FIPS provider defines I<fips=yes> and the legacy provider
+defines I<legacy=yes> for all of their algorithms.
+
+=head2 Queries
+
+A I<property query clause> is a single conditional test.
+For example, "fips=yes", "default!=yes" or "?iteration.count!=3".
+The first two represent mandatory clauses, such clauses B<must> match
+for any algorithm to even be under consideration.
+The third clause represents an optional clause.
+Matching such clauses is not a requirement, but any additional optional
+match counts in favor of the algorithm.
+More details about that in the B<Lookups> section.
+A I<property query> is a sequence of comma separated property query clauses.
+The full syntax for property queries appears below.
+
+=head2 Lookups
+
+When an algorithm is looked up, a property query is used to determine
+the best matching algorithm.
+All mandatory query clauses B<must> be present and the implementation
+that additionally has the largest number of matching optional query
+clauses will be used.
+If there is more than one such optimal candidate, the result will be
+chosen from amongst those in an indeterminate way.
+Ordering of optional clauses is not significant.
+
+=head2 Shortcut
+
+In order to permit a more concise expression of boolean properties, there
+is one short cut: a property name alone (e.g. "default") is
+exactly equivalent to "default=yes" in both definitions and queries.
+
+=head1 Syntax
+
+The lexical syntax in EBNF is given by:
+
+ Definition     ::= PropertyName ( '=' Value )? 
+                        ( ',' PropertyName ( '=' Value )? )*
+ Query          ::= PropertyQuery ( ',' PropertyQuery )*
+ PropertyQuery  ::= '-'? PropertyName
+                  | '?'? ( PropertyName (( '=' | '!=' ) Value)?)
+ Value          ::= NumberLiteral | StringLiteral
+ StringLiteral  ::= QuotedString | UnquotedString
+ QuotedString   ::= '"' [^"]* '"' | "'" [^']* "'"
+ UnquotedString ::= [^{space},]+
+ NumberLiteral  ::= '0' ( [0-7]* | 'x' [0-9A-Fa-f]+ ) | '-'? [1-9] [0-9]+
+ PropertyName   ::= [A-Z] [A-Z0-9_]* ( '.' [A-Z] [A-Z0-9_]* )*
+
+Railroad diagrams for this grammar can be found in the
+F<crypto/property/properties.xhtml> file.
+
+=head1 HISTORY
+
+Properties were added in OpenSSL 3.0
+
+=head1 COPYRIGHT
+
+Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
+
+Licensed under the Apache License 2.0 (the "License").  You may not use
+this file except in compliance with the License.  You can obtain a copy
+in the file LICENSE in the source distribution or at
+L<https://www.openssl.org/source/license.html>.
+
+=cut


More information about the openssl-commits mailing list