summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2017-08-23 15:07:40 +0200
committerLoïc Hoguin <[email protected]>2017-08-23 15:07:40 +0200
commit1f8d51dd2692fc3978080419987bbe4d49a41a90 (patch)
treea037e30b31c19b27929ac2fafc029914a9291966
parentd344725cfd7169605ddecca46b9901af9f43ff1f (diff)
downloadninenines.eu-1f8d51dd2692fc3978080419987bbe4d49a41a90.tar.gz
ninenines.eu-1f8d51dd2692fc3978080419987bbe4d49a41a90.tar.bz2
ninenines.eu-1f8d51dd2692fc3978080419987bbe4d49a41a90.zip
Cowboy 2.0.0-rc.2
-rw-r--r--_build/content/articles/cowboy-2.0.0-rc.2.asciidoc34
-rw-r--r--articles/cowboy-2.0.0-pre.4/index.html2
-rw-r--r--articles/cowboy-2.0.0-rc.1/index.html2
-rw-r--r--articles/cowboy-2.0.0-rc.2/index.html205
-rw-r--r--articles/cowboy2-qs/index.html2
-rw-r--r--articles/dont-let-it-crash/index.html2
-rw-r--r--articles/erlang-scalability/index.html2
-rw-r--r--articles/erlang-validate-utf8/index.html2
-rw-r--r--articles/erlang.mk-and-relx/index.html2
-rw-r--r--articles/erlanger-playbook-september-2015-update/index.html2
-rw-r--r--articles/erlanger-playbook/index.html2
-rw-r--r--articles/farwest-funded/index.html2
-rw-r--r--articles/index.html37
-rw-r--r--articles/index.xml76
-rw-r--r--articles/january-2014-status/index.html2
-rw-r--r--articles/ml-archives/index.html2
-rw-r--r--articles/on-open-source/index.html2
-rw-r--r--articles/page/2/index.html18
-rw-r--r--articles/ranch-1.3/index.html2
-rw-r--r--articles/ranch-ftp/index.html2
-rw-r--r--articles/the-elephant-in-the-room/index.html2
-rw-r--r--articles/the-story-so-far/index.html2
-rw-r--r--articles/tictactoe/index.html2
-rw-r--r--articles/website-update/index.html2
-rw-r--r--articles/xerl-0.1-empty-modules/index.html2
-rw-r--r--articles/xerl-0.2-two-modules/index.html2
-rw-r--r--articles/xerl-0.3-atomic-expressions/index.html2
-rw-r--r--articles/xerl-0.4-expression-separator/index.html2
-rw-r--r--articles/xerl-0.5-intermediate-module/index.html2
-rw-r--r--docs/en/cowboy/2.0/guide/loop_handlers.asciidoc2
-rw-r--r--docs/en/cowboy/2.0/guide/loop_handlers/index.html8
-rw-r--r--docs/en/gun/1.0/guide/connect.asciidoc8
-rw-r--r--docs/en/gun/1.0/guide/connect/index.html8
-rw-r--r--docs/en/gun/1.0/guide/http.asciidoc8
-rw-r--r--docs/en/gun/1.0/guide/http/index.html8
-rw-r--r--docs/en/gun/1.0/guide/introduction.asciidoc4
-rw-r--r--docs/en/gun/1.0/guide/introduction/index.html4
-rw-r--r--docs/en/gun/1.0/guide/protocols.asciidoc60
-rw-r--r--docs/en/gun/1.0/guide/protocols/index.html16
-rw-r--r--docs/en/gun/1.0/manual/gun/index.html56
-rw-r--r--docs/en/gun/1.0/manual/gun_app/index.html4
-rw-r--r--donate/index.html2
-rw-r--r--index.html2
-rw-r--r--index.xml240
-rw-r--r--services/index.html2
-rw-r--r--sitemap.xml7
46 files changed, 520 insertions, 337 deletions
diff --git a/_build/content/articles/cowboy-2.0.0-rc.2.asciidoc b/_build/content/articles/cowboy-2.0.0-rc.2.asciidoc
new file mode 100644
index 00000000..fc60e203
--- /dev/null
+++ b/_build/content/articles/cowboy-2.0.0-rc.2.asciidoc
@@ -0,0 +1,34 @@
++++
+date = "2017-08-23T18:00:00+01:00"
+title = "Cowboy 2.0 release candidate 2"
+
++++
+
+Cowboy `2.0.0-rc.2` has been released!
+
+This is the new recommended version of Cowboy.
+Its API should not change before release. While
+you probably should not use it in production yet,
+many do successfully. Use at your own risk.
+
+This new version contains fixes for the following
+issues:
+
+* HTTP/2 server push was using the wrong header
+ compression context.
+
+* HTTP/2 flow control could end up queueing data
+ in the wrong order when resuming the sending of
+ data.
+
+* The `shutdown` timeout was not implemented
+ and request processes could be killed too quickly.
+
+What else is new in Cowboy 2.0? Check the
+link:/articles/cowboy-2.0.0-rc.1[rc.1 announcement].
+
+Please test this new release candidate and provide
+feedback! The best place to provide feedback is via
+tickets. Do not hesitate to open a ticket or bring
+an existing ticket to my attention to get it resolved
+before 2.0.
diff --git a/articles/cowboy-2.0.0-pre.4/index.html b/articles/cowboy-2.0.0-pre.4/index.html
index 09aade06..2158aa7a 100644
--- a/articles/cowboy-2.0.0-pre.4/index.html
+++ b/articles/cowboy-2.0.0-pre.4/index.html
@@ -192,6 +192,8 @@ added back.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/cowboy-2.0.0-rc.1/index.html b/articles/cowboy-2.0.0-rc.1/index.html
index a6bf77f6..4c06a670 100644
--- a/articles/cowboy-2.0.0-rc.1/index.html
+++ b/articles/cowboy-2.0.0-rc.1/index.html
@@ -138,6 +138,8 @@ purposes of testing.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/cowboy-2.0.0-rc.2/index.html b/articles/cowboy-2.0.0-rc.2/index.html
new file mode 100644
index 00000000..51401e0f
--- /dev/null
+++ b/articles/cowboy-2.0.0-rc.2/index.html
@@ -0,0 +1,205 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara">
+
+ <meta name="generator" content="Hugo 0.17" />
+
+ <title>Nine Nines: Cowboy 2.0 release candidate 2</title>
+
+ <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
+ <link href="/css/99s.css?r=1" rel="stylesheet">
+
+ <link rel="shortcut icon" href="/img/ico/favicon.ico">
+ <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
+ <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png">
+ <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png">
+
+
+</head>
+
+
+<body class="">
+ <header id="page-head">
+ <div id="topbar" class="container">
+ <div class="row">
+ <div class="span2">
+ <h1 id="logo"><a href="/" title="99s">99s</a></h1>
+ </div>
+ <div class="span10">
+
+ <div id="side-header">
+ <nav>
+ <ul>
+ <li class="active"><a title="Hear my thoughts" href="/articles">Articles</a></li>
+ <li><a title="Watch my talks" href="/talks">Talks</a></li>
+ <li><a title="Read the docs" href="/docs">Documentation</a></li>
+ <li><a title="Request my services" href="/services">Consulting & Training</a></li>
+ </ul>
+ </nav>
+ <ul id="social">
+ <li>
+ <a href="https://github.com/ninenines" title="Check my Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a>
+ </li>
+ <li>
+ <a title="Keep in touch!" href="http://twitter.com/lhoguin"><img src="/img/ico_microblog.png" data-hover="/img/ico_microblog_alt.png"></a>
+ </li>
+ <li>
+ <a title="Contact me" href="mailto:[email protected]"><img src="/img/ico_mail.png" data-hover="/img/ico_mail_alt.png"></a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+</header>
+
+<div id="contents">
+<div class="container">
+<div class="row">
+<div class="span9 maincol">
+
+<article class="blog_item">
+<header>
+ <h1 class="lined-header"><span>Cowboy 2.0 release candidate 2</span></h1>
+ <p class="date">
+ <span class="day">23</span>
+ <span class="month">Aug</span>
+ </p>
+</header>
+
+<div class="paragraph"><p>Cowboy <code>2.0.0-rc.2</code> has been released!</p></div>
+<div class="paragraph"><p>This is the new recommended version of Cowboy.
+Its API should not change before release. While
+you probably should not use it in production yet,
+many do successfully. Use at your own risk.</p></div>
+<div class="paragraph"><p>This new version contains fixes for the following
+issues:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+HTTP/2 server push was using the wrong header
+ compression context.
+</p>
+</li>
+<li>
+<p>
+HTTP/2 flow control could end up queueing data
+ in the wrong order when resuming the sending of
+ data.
+</p>
+</li>
+<li>
+<p>
+The <code>shutdown</code> timeout was not implemented
+ and request processes could be killed too quickly.
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>What else is new in Cowboy 2.0? Check the
+<a href="/articles/cowboy-2.0.0-rc.1">rc.1 announcement</a>.</p></div>
+<div class="paragraph"><p>Please test this new release candidate and provide
+feedback! The best place to provide feedback is via
+tickets. Do not hesitate to open a ticket or bring
+an existing ticket to my attention to get it resolved
+before 2.0.</p></div>
+
+</article>
+</div>
+
+<div class="span3 sidecol">
+<h3>More articles</h3>
+<ul id="articles-nav" class="extra_margin">
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
+ <li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
+
+ <li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-pre.4/">Cowboy 2.0 pre-release 4</a></li>
+
+ <li><a href="https://ninenines.eu/articles/ranch-1.3/">Ranch 1.3</a></li>
+
+ <li><a href="https://ninenines.eu/articles/ml-archives/">Mailing list archived</a></li>
+
+ <li><a href="https://ninenines.eu/articles/website-update/">Website update</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlanger-playbook-september-2015-update/">The Erlanger Playbook September 2015 Update</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlanger-playbook/">The Erlanger Playbook</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlang-validate-utf8/">Validating UTF-8 binaries with Erlang</a></li>
+
+ <li><a href="https://ninenines.eu/articles/on-open-source/">On open source</a></li>
+
+ <li><a href="https://ninenines.eu/articles/the-story-so-far/">The story so far</a></li>
+
+ <li><a href="https://ninenines.eu/articles/cowboy2-qs/">Cowboy 2.0 and query strings</a></li>
+
+ <li><a href="https://ninenines.eu/articles/january-2014-status/">January 2014 status</a></li>
+
+ <li><a href="https://ninenines.eu/articles/farwest-funded/">Farwest got funded!</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlang.mk-and-relx/">Build Erlang releases with Erlang.mk and Relx</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.5-intermediate-module/">Xerl: intermediate module</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.4-expression-separator/">Xerl: expression separator</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlang-scalability/">Erlang Scalability</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Xerl: atomic expressions</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Xerl: empty modules</a></li>
+
+ <li><a href="https://ninenines.eu/articles/ranch-ftp/">Build an FTP Server with Ranch in 30 Minutes</a></li>
+
+ <li><a href="https://ninenines.eu/articles/tictactoe/">Erlang Tic Tac Toe</a></li>
+
+</ul>
+
+<h3>Feedback</h3>
+<p>Feel free to <a href="mailto:[email protected]">email us</a>
+if you found any mistake or need clarification on any of the
+articles.</p>
+
+</div>
+</div>
+</div>
+</div>
+
+ <footer>
+ <div class="container">
+ <div class="row">
+ <div class="span6">
+ <p id="scroll-top"><a href="#">↑ Scroll to top</a></p>
+ <nav>
+ <ul>
+ <li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="span6 credits">
+ <p><img src="/img/footer_logo.png"></p>
+ <p>Copyright &copy; Loïc Hoguin 2012-2016</p>
+ </div>
+ </div>
+ </div>
+ </footer>
+
+
+ <script src="/js/custom.js"></script>
+ </body>
+</html>
+
diff --git a/articles/cowboy2-qs/index.html b/articles/cowboy2-qs/index.html
index a868a51f..5d26a2ee 100644
--- a/articles/cowboy2-qs/index.html
+++ b/articles/cowboy2-qs/index.html
@@ -231,6 +231,8 @@ thoughts that went into this rather than just the conclusion.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/dont-let-it-crash/index.html b/articles/dont-let-it-crash/index.html
index 10c82774..239e479a 100644
--- a/articles/dont-let-it-crash/index.html
+++ b/articles/dont-let-it-crash/index.html
@@ -194,6 +194,8 @@ make more.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/erlang-scalability/index.html b/articles/erlang-scalability/index.html
index baf92592..213881da 100644
--- a/articles/erlang-scalability/index.html
+++ b/articles/erlang-scalability/index.html
@@ -216,6 +216,8 @@ concurrently.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/erlang-validate-utf8/index.html b/articles/erlang-validate-utf8/index.html
index 07540f6b..a96aba26 100644
--- a/articles/erlang-validate-utf8/index.html
+++ b/articles/erlang-validate-utf8/index.html
@@ -267,6 +267,8 @@ http://www.gnu.org/software/src-highlite -->
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/erlang.mk-and-relx/index.html b/articles/erlang.mk-and-relx/index.html
index 88585f33..359a30e6 100644
--- a/articles/erlang.mk-and-relx/index.html
+++ b/articles/erlang.mk-and-relx/index.html
@@ -170,6 +170,8 @@ containing all the flags to pass to the Erlang VM, for example
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/erlanger-playbook-september-2015-update/index.html b/articles/erlanger-playbook-september-2015-update/index.html
index 1922e42e..355e1d4f 100644
--- a/articles/erlanger-playbook-september-2015-update/index.html
+++ b/articles/erlanger-playbook-september-2015-update/index.html
@@ -95,6 +95,8 @@ will be used to allow me to work on open source full time.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/erlanger-playbook/index.html b/articles/erlanger-playbook/index.html
index 7c872d7c..cc6bd1fa 100644
--- a/articles/erlanger-playbook/index.html
+++ b/articles/erlanger-playbook/index.html
@@ -163,6 +163,8 @@ You will receive updates to the book for free as soon as they are available.</p>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/farwest-funded/index.html b/articles/farwest-funded/index.html
index a257edb4..a3280216 100644
--- a/articles/farwest-funded/index.html
+++ b/articles/farwest-funded/index.html
@@ -103,6 +103,8 @@ can help!</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/index.html b/articles/index.html
index a8427b2c..dc52f5d1 100644
--- a/articles/index.html
+++ b/articles/index.html
@@ -72,6 +72,25 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></h2>
+ <p class="date">
+ <span class="day">23</span>
+ <span class="month">Aug</span>
+ </p>
+ </header>
+
+ <p>Cowboy 2.0.0-rc.2 has been released!
+ This is the new recommended version of Cowboy. Its API should not change before release. While you probably should not use it in production yet, many do successfully. Use at your own risk.
+ This new version contains fixes for the following issues:
+ HTTP/2 server push was using the wrong header compression context. HTTP/2 flow control could end up queueing data in the wrong order when resuming the sending of data.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></h2>
<p class="date">
<span class="day">24</span>
@@ -409,24 +428,6 @@
</p>
</article>
- <article class="blog_item">
- <header>
- <h2><a href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Xerl: atomic expressions</a></h2>
- <p class="date">
- <span class="day">18</span>
- <span class="month">Feb</span>
- </p>
- </header>
-
- <p>We will be adding atomic integer expressions to our language. These look as follow in Erlang:
- 42. And the result of this expression is of course 42.
- We will be running this expression at compile time, since we don&#8217;t have the means to run code at runtime yet. This will of course result in no module being compiled, but that&#8217;s OK, it will allow us to discuss a few important things we&#8217;ll have to plan for later on.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Read More</a>
- </p>
- </article>
-
<nav class="pagination" role="pagination">
diff --git a/articles/index.xml b/articles/index.xml
index 4eccd018..57beccf0 100644
--- a/articles/index.xml
+++ b/articles/index.xml
@@ -6,10 +6,54 @@
<description>Recent content in Articles-rsses on Nine Nines</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Mon, 24 Jul 2017 18:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Wed, 23 Aug 2017 18:00:00 +0100</lastBuildDate>
<atom:link href="https://ninenines.eu/articles/index.xml" rel="self" type="application/rss+xml" />
<item>
+ <title>Cowboy 2.0 release candidate 2</title>
+ <link>https://ninenines.eu/articles/cowboy-2.0.0-rc.2/</link>
+ <pubDate>Wed, 23 Aug 2017 18:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/cowboy-2.0.0-rc.2/</guid>
+ <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Cowboy &lt;code&gt;2.0.0-rc.2&lt;/code&gt; has been released!&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This is the new recommended version of Cowboy.
+Its API should not change before release. While
+you probably should not use it in production yet,
+many do successfully. Use at your own risk.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This new version contains fixes for the following
+issues:&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;ulist&#34;&gt;&lt;ul&gt;
+&lt;li&gt;
+&lt;p&gt;
+HTTP/2 server push was using the wrong header
+ compression context.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+HTTP/2 flow control could end up queueing data
+ in the wrong order when resuming the sending of
+ data.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+The &lt;code&gt;shutdown&lt;/code&gt; timeout was not implemented
+ and request processes could be killed too quickly.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;What else is new in Cowboy 2.0? Check the
+&lt;a href=&#34;https://ninenines.eu/articles/cowboy-2.0.0-rc.1&#34;&gt;rc.1 announcement&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Please test this new release candidate and provide
+feedback! The best place to provide feedback is via
+tickets. Do not hesitate to open a ticket or bring
+an existing ticket to my attention to get it resolved
+before 2.0.&lt;/p&gt;&lt;/div&gt;
+</description>
+ </item>
+
+ <item>
<title>Cowboy 2.0 release candidate 1</title>
<link>https://ninenines.eu/articles/cowboy-2.0.0-rc.1/</link>
<pubDate>Mon, 24 Jul 2017 18:00:00 +0100</pubDate>
@@ -1604,35 +1648,5 @@ the sponsoring idea, anything really! Thanks.&lt;/p&gt;&lt;/div&gt;
</description>
</item>
- <item>
- <title>Farwest got funded!</title>
- <link>https://ninenines.eu/articles/farwest-funded/</link>
- <pubDate>Thu, 27 Jun 2013 00:00:00 +0100</pubDate>
-
- <guid>https://ninenines.eu/articles/farwest-funded/</guid>
- <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This was a triumph! I&amp;#8217;m making a note here: HUGE SUCCESS!!&lt;/p&gt;&lt;/div&gt;
-&lt;iframe frameborder=&#34;0&#34; scrolling=&#34;no&#34; height=&#34;400px&#34; width&#34;236px&#34; seamless=&#34;seamless&#34; src=&#34;https://api.bountysource.com/user/fundraisers/83/embed&#34;&gt;&lt;/iframe&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;It&amp;#8217;s hard to overstate my satisfaction. Thanks to everyone who
-made this possible.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;If you have backed this fundraiser, and haven&amp;#8217;t provided your
-personal details yet, please do so quickly so that your rewards
-can be sent!&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I am hoping that we will be able to make good use of all that
-money. The details of the expenses will be published regularly
-on the &lt;a href=&#34;https://github.com/extend/farwest/wiki/2013-Fundraiser&#34;&gt;2013 Fundraiser wiki page&lt;/a&gt;,
-giving you full disclosure as to how your money is used.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;It will take a little time to get things started, we are in
-summer after all! We will however act quickly to make the
-prototype easy enough to use so that the paid UI work can
-begin. This is also when user contributions will be welcome.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;You can see the &lt;a href=&#34;https://github.com/extend/farwest/wiki/Roadmap&#34;&gt;Roadmap&lt;/a&gt;
-to get more information on the current plans. This document will
-get updated as time goes on so check again later to see if you
-can help!&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Look at me: still talking when there&amp;#8217;s open source to do!&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Thanks again for all your support. I really appreciate it.&lt;/p&gt;&lt;/div&gt;
-</description>
- </item>
-
</channel>
</rss> \ No newline at end of file
diff --git a/articles/january-2014-status/index.html b/articles/january-2014-status/index.html
index 2661b80e..aaaa0845 100644
--- a/articles/january-2014-status/index.html
+++ b/articles/january-2014-status/index.html
@@ -222,6 +222,8 @@ the sponsoring idea, anything really! Thanks.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/ml-archives/index.html b/articles/ml-archives/index.html
index 62071a6b..34fa9ff1 100644
--- a/articles/ml-archives/index.html
+++ b/articles/ml-archives/index.html
@@ -92,6 +92,8 @@ underlying problem in the project or its documentation.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/on-open-source/index.html b/articles/on-open-source/index.html
index b954b3b7..bc587fdd 100644
--- a/articles/on-open-source/index.html
+++ b/articles/on-open-source/index.html
@@ -199,6 +199,8 @@ of your company&#8217;s money.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/page/2/index.html b/articles/page/2/index.html
index 7b4cd275..6cb50477 100644
--- a/articles/page/2/index.html
+++ b/articles/page/2/index.html
@@ -72,6 +72,24 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Xerl: atomic expressions</a></h2>
+ <p class="date">
+ <span class="day">18</span>
+ <span class="month">Feb</span>
+ </p>
+ </header>
+
+ <p>We will be adding atomic integer expressions to our language. These look as follow in Erlang:
+ 42. And the result of this expression is of course 42.
+ We will be running this expression at compile time, since we don&#8217;t have the means to run code at runtime yet. This will of course result in no module being compiled, but that&#8217;s OK, it will allow us to discuss a few important things we&#8217;ll have to plan for later on.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></h2>
<p class="date">
<span class="day">03</span>
diff --git a/articles/ranch-1.3/index.html b/articles/ranch-1.3/index.html
index 544d7bce..3364c077 100644
--- a/articles/ranch-1.3/index.html
+++ b/articles/ranch-1.3/index.html
@@ -164,6 +164,8 @@ that need fixing sooner rather than later.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/ranch-ftp/index.html b/articles/ranch-ftp/index.html
index 5d26fd61..727d4b1a 100644
--- a/articles/ranch-ftp/index.html
+++ b/articles/ranch-ftp/index.html
@@ -292,6 +292,8 @@ binary protocol implementations in just a few lines of code.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/the-elephant-in-the-room/index.html b/articles/the-elephant-in-the-room/index.html
index ed38c6b5..c9def49a 100644
--- a/articles/the-elephant-in-the-room/index.html
+++ b/articles/the-elephant-in-the-room/index.html
@@ -215,6 +215,8 @@ the flaws or the weirdness before they see them.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/the-story-so-far/index.html b/articles/the-story-so-far/index.html
index 1809e5ff..72936401 100644
--- a/articles/the-story-so-far/index.html
+++ b/articles/the-story-so-far/index.html
@@ -306,6 +306,8 @@ project and make sure it doesn&#8217;t happen again.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/tictactoe/index.html b/articles/tictactoe/index.html
index 6f2baae2..e466f27d 100644
--- a/articles/tictactoe/index.html
+++ b/articles/tictactoe/index.html
@@ -165,6 +165,8 @@ of writing algorithms to do things.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/website-update/index.html b/articles/website-update/index.html
index 491f19c0..8df1c432 100644
--- a/articles/website-update/index.html
+++ b/articles/website-update/index.html
@@ -139,6 +139,8 @@ upgrading JS libraries.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/xerl-0.1-empty-modules/index.html b/articles/xerl-0.1-empty-modules/index.html
index bed9785d..0a113770 100644
--- a/articles/xerl-0.1-empty-modules/index.html
+++ b/articles/xerl-0.1-empty-modules/index.html
@@ -220,6 +220,8 @@ the next few articles.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/xerl-0.2-two-modules/index.html b/articles/xerl-0.2-two-modules/index.html
index 05dc90c6..632248a0 100644
--- a/articles/xerl-0.2-two-modules/index.html
+++ b/articles/xerl-0.2-two-modules/index.html
@@ -225,6 +225,8 @@ though, so let&#8217;s get back to it after we add more.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/xerl-0.3-atomic-expressions/index.html b/articles/xerl-0.3-atomic-expressions/index.html
index 0cedb143..f3042180 100644
--- a/articles/xerl-0.3-atomic-expressions/index.html
+++ b/articles/xerl-0.3-atomic-expressions/index.html
@@ -229,6 +229,8 @@ do that.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/xerl-0.4-expression-separator/index.html b/articles/xerl-0.4-expression-separator/index.html
index ed757594..4bf4a3e8 100644
--- a/articles/xerl-0.4-expression-separator/index.html
+++ b/articles/xerl-0.4-expression-separator/index.html
@@ -134,6 +134,8 @@ expressions so I thought it was a good idea to anticipate.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/articles/xerl-0.5-intermediate-module/index.html b/articles/xerl-0.5-intermediate-module/index.html
index 4cf017d8..dc9f2a2a 100644
--- a/articles/xerl-0.5-intermediate-module/index.html
+++ b/articles/xerl-0.5-intermediate-module/index.html
@@ -212,6 +212,8 @@ http://www.gnu.org/software/src-highlite -->
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
<li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
diff --git a/docs/en/cowboy/2.0/guide/loop_handlers.asciidoc b/docs/en/cowboy/2.0/guide/loop_handlers.asciidoc
index dbee9271..80bc484d 100644
--- a/docs/en/cowboy/2.0/guide/loop_handlers.asciidoc
+++ b/docs/en/cowboy/2.0/guide/loop_handlers.asciidoc
@@ -112,7 +112,7 @@ info(_Msg, Req, State) ->
{ok, Req, State}.
----
-==== Cleaning up
+=== Cleaning up
It is recommended that you set the connection header to
`close` when replying, as this process may be reused for
diff --git a/docs/en/cowboy/2.0/guide/loop_handlers/index.html b/docs/en/cowboy/2.0/guide/loop_handlers/index.html
index 70bf5637..442bc7e0 100644
--- a/docs/en/cowboy/2.0/guide/loop_handlers/index.html
+++ b/docs/en/cowboy/2.0/guide/loop_handlers/index.html
@@ -170,8 +170,11 @@ http://www.gnu.org/software/src-highlite -->
{<span style="color: #FF6600">ok</span>, <span style="color: #009900">Req</span>, <span style="color: #009900">State</span>};
<span style="font-weight: bold"><span style="color: #000000">info</span></span>(<span style="color: #009900">_Msg</span>, <span style="color: #009900">Req</span>, <span style="color: #009900">State</span>) <span style="color: #990000">-&gt;</span>
{<span style="color: #FF6600">ok</span>, <span style="color: #009900">Req</span>, <span style="color: #009900">State</span>}<span style="color: #990000">.</span></tt></pre></div></div>
-<div class="sect3">
-<h4 id="_cleaning_up">Cleaning up</h4>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_cleaning_up">Cleaning up</h2>
+<div class="sectionbody">
<div class="paragraph"><p>It is recommended that you set the connection header to
<code>close</code> when replying, as this process may be reused for
a subsequent request.</p></div>
@@ -179,7 +182,6 @@ a subsequent request.</p></div>
for general instructions about cleaning up.</p></div>
</div>
</div>
-</div>
<div class="sect1">
<h2 id="_hibernate">Hibernate</h2>
<div class="sectionbody">
diff --git a/docs/en/gun/1.0/guide/connect.asciidoc b/docs/en/gun/1.0/guide/connect.asciidoc
index c2e887c1..e0b09d6c 100644
--- a/docs/en/gun/1.0/guide/connect.asciidoc
+++ b/docs/en/gun/1.0/guide/connect.asciidoc
@@ -5,10 +5,10 @@ a connection using the Gun client.
=== Gun connections
-Gun is designed with the SPDY and Websocket protocols in mind.
+Gun is designed with the HTTP/2 and Websocket protocols in mind.
They are built for long-running connections that allow concurrent
exchange of data, either in the form of request/responses for
-SPDY or in the form of messages for Websocket.
+HTTP/2 or in the form of messages for Websocket.
A Gun connection is an Erlang process that manages a socket to
a remote endpoint. This Gun connection is owned by a user
@@ -35,8 +35,8 @@ The `gun:open/{2,3}` function must be used to open a connection.
If the port given is 443, Gun will attempt to connect using
SSL. The protocol will be selected automatically using the
-NPN extension for TLS. By default Gun supports SPDY/3.1,
-SPDY/3 and HTTP/1.1 when connecting using SSL.
+ALPN extension for TLS. By default Gun supports HTTP/2
+and HTTP/1.1 when connecting using SSL.
For any other port, Gun will attempt to connect using TCP
and will use the HTTP/1.1 protocol.
diff --git a/docs/en/gun/1.0/guide/connect/index.html b/docs/en/gun/1.0/guide/connect/index.html
index e91bb7c8..50035be4 100644
--- a/docs/en/gun/1.0/guide/connect/index.html
+++ b/docs/en/gun/1.0/guide/connect/index.html
@@ -72,10 +72,10 @@ a connection using the Gun client.</p></div>
<div class="sect1">
<h2 id="_gun_connections">Gun connections</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Gun is designed with the SPDY and Websocket protocols in mind.
+<div class="paragraph"><p>Gun is designed with the HTTP/2 and Websocket protocols in mind.
They are built for long-running connections that allow concurrent
exchange of data, either in the form of request/responses for
-SPDY or in the form of messages for Websocket.</p></div>
+HTTP/2 or in the form of messages for Websocket.</p></div>
<div class="paragraph"><p>A Gun connection is an Erlang process that manages a socket to
a remote endpoint. This Gun connection is owned by a user
process that is called the <em>owner</em> of the connection, and is
@@ -102,8 +102,8 @@ http://www.gnu.org/software/src-highlite -->
<pre><tt>{<span style="color: #FF6600">ok</span>, <span style="color: #009900">ConnPid</span>} <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">gun:open</span></span>(<span style="color: #FF0000">"example.org"</span>, <span style="color: #993399">443</span>)<span style="color: #990000">.</span></tt></pre></div></div>
<div class="paragraph"><p>If the port given is 443, Gun will attempt to connect using
SSL. The protocol will be selected automatically using the
-NPN extension for TLS. By default Gun supports SPDY/3.1,
-SPDY/3 and HTTP/1.1 when connecting using SSL.</p></div>
+ALPN extension for TLS. By default Gun supports HTTP/2
+and HTTP/1.1 when connecting using SSL.</p></div>
<div class="paragraph"><p>For any other port, Gun will attempt to connect using TCP
and will use the HTTP/1.1 protocol.</p></div>
<div class="paragraph"><p>The transport and protocol used can be overriden using
diff --git a/docs/en/gun/1.0/guide/http.asciidoc b/docs/en/gun/1.0/guide/http.asciidoc
index e856fb18..ff4aa0aa 100644
--- a/docs/en/gun/1.0/guide/http.asciidoc
+++ b/docs/en/gun/1.0/guide/http.asciidoc
@@ -1,7 +1,7 @@
== HTTP
This chapter describes how to use the Gun client for
-communicating with an HTTP/1.1 or SPDY server.
+communicating with an HTTP/1.1 or HTTP/2 server.
=== Streams
@@ -130,7 +130,7 @@ the request has no body.
It is recommended to send the content-length header if you
know it in advance, although this is not required. If it
is not set, HTTP/1.1 will use the chunked transfer-encoding,
-and SPDY will continue normally as it is chunked by design.
+and HTTP/2 will continue normally as it is chunked by design.
.POST "/organizations/ninenines" with delayed body
@@ -234,7 +234,7 @@ data messages following. If it contains `fin` there will be
no data messages. If it contains `nofin` then one or more data
messages will follow.
-When using SPDY this value is sent with the frame and simply
+When using HTTP/2 this value is sent with the frame and simply
passed on in the message. When using HTTP/1.1 however Gun must
guess whether data will follow by looking at the response headers.
@@ -309,7 +309,7 @@ end.
=== Handling streams pushed by the server
-The SPDY protocol allows the server to push more than one
+The HTTP/2 protocol allows the server to push more than one
resource for every request. It will start sending those
extra resources before it starts sending the response itself,
so Gun will send you `gun_push` messages before `gun_response`
diff --git a/docs/en/gun/1.0/guide/http/index.html b/docs/en/gun/1.0/guide/http/index.html
index 983d3e91..668d3ff6 100644
--- a/docs/en/gun/1.0/guide/http/index.html
+++ b/docs/en/gun/1.0/guide/http/index.html
@@ -68,7 +68,7 @@
<h1 class="lined-header"><span>HTTP</span></h1>
<div class="paragraph"><p>This chapter describes how to use the Gun client for
-communicating with an HTTP/1.1 or SPDY server.</p></div>
+communicating with an HTTP/1.1 or HTTP/2 server.</p></div>
<div class="sect1">
<h2 id="_streams">Streams</h2>
<div class="sectionbody">
@@ -194,7 +194,7 @@ the request has no body.</p></div>
<div class="paragraph"><p>It is recommended to send the content-length header if you
know it in advance, although this is not required. If it
is not set, HTTP/1.1 will use the chunked transfer-encoding,
-and SPDY will continue normally as it is chunked by design.</p></div>
+and HTTP/2 will continue normally as it is chunked by design.</p></div>
<div class="listingblock">
<div class="title">POST "/organizations/ninenines" with delayed body</div>
<div class="content"><!-- Generator: GNU source-highlight 3.1.8
@@ -310,7 +310,7 @@ a <code>gun_error</code> message is sent instead.</p></div>
data messages following. If it contains <code>fin</code> there will be
no data messages. If it contains <code>nofin</code> then one or more data
messages will follow.</p></div>
-<div class="paragraph"><p>When using SPDY this value is sent with the frame and simply
+<div class="paragraph"><p>When using HTTP/2 this value is sent with the frame and simply
passed on in the message. When using HTTP/1.1 however Gun must
guess whether data will follow by looking at the response headers.</p></div>
<div class="paragraph"><p>You can receive messages directly, or you can use the <em>await</em>
@@ -383,7 +383,7 @@ http://www.gnu.org/software/src-highlite -->
<div class="sect1">
<h2 id="_handling_streams_pushed_by_the_server">Handling streams pushed by the server</h2>
<div class="sectionbody">
-<div class="paragraph"><p>The SPDY protocol allows the server to push more than one
+<div class="paragraph"><p>The HTTP/2 protocol allows the server to push more than one
resource for every request. It will start sending those
extra resources before it starts sending the response itself,
so Gun will send you <code>gun_push</code> messages before <code>gun_response</code>
diff --git a/docs/en/gun/1.0/guide/introduction.asciidoc b/docs/en/gun/1.0/guide/introduction.asciidoc
index 2914ef62..89f2ae71 100644
--- a/docs/en/gun/1.0/guide/introduction.asciidoc
+++ b/docs/en/gun/1.0/guide/introduction.asciidoc
@@ -1,10 +1,10 @@
== Introduction
-Gun is an Erlang HTTP client with support for HTTP/1.1, SPDY and Websocket.
+Gun is an Erlang HTTP client with support for HTTP/1.1, HTTP/2 and Websocket.
=== Prerequisites
-Knowledge of Erlang, but also of the HTTP/1.1, SPDY and Websocket
+Knowledge of Erlang, but also of the HTTP/1.1, HTTP/2 and Websocket
protocols is required in order to read this guide.
=== Supported platforms
diff --git a/docs/en/gun/1.0/guide/introduction/index.html b/docs/en/gun/1.0/guide/introduction/index.html
index b159b1db..46d1fc33 100644
--- a/docs/en/gun/1.0/guide/introduction/index.html
+++ b/docs/en/gun/1.0/guide/introduction/index.html
@@ -67,11 +67,11 @@
<h1 class="lined-header"><span>Introduction</span></h1>
-<div class="paragraph"><p>Gun is an Erlang HTTP client with support for HTTP/1.1, SPDY and Websocket.</p></div>
+<div class="paragraph"><p>Gun is an Erlang HTTP client with support for HTTP/1.1, HTTP/2 and Websocket.</p></div>
<div class="sect1">
<h2 id="_prerequisites">Prerequisites</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Knowledge of Erlang, but also of the HTTP/1.1, SPDY and Websocket
+<div class="paragraph"><p>Knowledge of Erlang, but also of the HTTP/1.1, HTTP/2 and Websocket
protocols is required in order to read this guide.</p></div>
</div>
</div>
diff --git a/docs/en/gun/1.0/guide/protocols.asciidoc b/docs/en/gun/1.0/guide/protocols.asciidoc
index 5e3b273e..ae7705ff 100644
--- a/docs/en/gun/1.0/guide/protocols.asciidoc
+++ b/docs/en/gun/1.0/guide/protocols.asciidoc
@@ -37,29 +37,29 @@ It provides the `gun:ws_upgrade/{2,3,4}` function for that
purpose. A `gun_ws_upgrade` message will be sent on success;
a `gun_response` message otherwise.
-=== SPDY
+=== HTTP/2
-SPDY is a binary protocol based on HTTP, compatible with
+HTTP/2 is a binary protocol based on HTTP, compatible with
the HTTP semantics, that reduces the complexity of parsing
requests and responses, compresses the HTTP headers and
allows the server to push multiple responses to a single
request.
-The SPDY interface is very similar to HTTP/1.1, so this
+The HTTP/2 interface is very similar to HTTP/1.1, so this
section instead focuses on the differences in the interface
for the two protocols.
-Because a SPDY server can push multiple responses to a
+Because a HTTP/2 server can push multiple responses to a
single request, Gun might send `gun_push` messages for
every push received. They can be ignored safely if they
are not needed.
-The `gun:cancel/2` function will use the SPDY stream
+The `gun:cancel/2` function will use the HTTP/2 stream
cancellation mechanism which allows Gun to inform the
server to stop sending a response for this particular
request, saving resources.
-It is not possible to upgrade a SPDY connection to Websocket
+It is not possible to upgrade an HTTP/2 connection to Websocket
due to protocol limitations.
=== Websocket
@@ -87,33 +87,33 @@ current protocol.
.Supported operations per protocol
[cols="<,3*^",options="header"]
|===
-| Operation | HTTP/1.1 | SPDY | Websocket
-| delete | yes | yes | no
-| get | yes | yes | no
-| head | yes | yes | no
-| options | yes | yes | no
-| patch | yes | yes | no
-| post | yes | yes | no
-| put | yes | yes | no
-| request | yes | yes | no
-| data | yes | yes | no
-| await | yes | yes | no
-| await_body | yes | yes | no
-| flush | yes | yes | no
-| cancel | yes | yes | no
-| ws_upgrade | yes | no | no
-| ws_send | no | no | yes
+| Operation | HTTP/1.1 | HTTP/2 | Websocket
+| delete | yes | yes | no
+| get | yes | yes | no
+| head | yes | yes | no
+| options | yes | yes | no
+| patch | yes | yes | no
+| post | yes | yes | no
+| put | yes | yes | no
+| request | yes | yes | no
+| data | yes | yes | no
+| await | yes | yes | no
+| await_body | yes | yes | no
+| flush | yes | yes | no
+| cancel | yes | yes | no
+| ws_upgrade | yes | no | no
+| ws_send | no | no | yes
|===
.Messages sent per protocol
[cols="<,3*^",options="header"]
|===
-| Message | HTTP/1.1 | SPDY | Websocket
-| gun_push | no | yes | no
-| gun_response | yes | yes | no
-| gun_data | yes | yes | no
-| gun_error (StreamRef) | yes | yes | no
-| gun_error | yes | yes | yes
-| gun_ws_upgrade | yes | no | no
-| gun_ws | no | no | yes
+| Message | HTTP/1.1 | HTTP/2 | Websocket
+| gun_push | no | yes | no
+| gun_response | yes | yes | no
+| gun_data | yes | yes | no
+| gun_error (StreamRef) | yes | yes | no
+| gun_error | yes | yes | yes
+| gun_ws_upgrade | yes | no | no
+| gun_ws | no | no | yes
|===
diff --git a/docs/en/gun/1.0/guide/protocols/index.html b/docs/en/gun/1.0/guide/protocols/index.html
index d14c87fa..38b05bfd 100644
--- a/docs/en/gun/1.0/guide/protocols/index.html
+++ b/docs/en/gun/1.0/guide/protocols/index.html
@@ -101,25 +101,25 @@ a <code>gun_response</code> message otherwise.</p></div>
</div>
</div>
<div class="sect1">
-<h2 id="_spdy">SPDY</h2>
+<h2 id="_http_2">HTTP/2</h2>
<div class="sectionbody">
-<div class="paragraph"><p>SPDY is a binary protocol based on HTTP, compatible with
+<div class="paragraph"><p>HTTP/2 is a binary protocol based on HTTP, compatible with
the HTTP semantics, that reduces the complexity of parsing
requests and responses, compresses the HTTP headers and
allows the server to push multiple responses to a single
request.</p></div>
-<div class="paragraph"><p>The SPDY interface is very similar to HTTP/1.1, so this
+<div class="paragraph"><p>The HTTP/2 interface is very similar to HTTP/1.1, so this
section instead focuses on the differences in the interface
for the two protocols.</p></div>
-<div class="paragraph"><p>Because a SPDY server can push multiple responses to a
+<div class="paragraph"><p>Because a HTTP/2 server can push multiple responses to a
single request, Gun might send <code>gun_push</code> messages for
every push received. They can be ignored safely if they
are not needed.</p></div>
-<div class="paragraph"><p>The <code>gun:cancel/2</code> function will use the SPDY stream
+<div class="paragraph"><p>The <code>gun:cancel/2</code> function will use the HTTP/2 stream
cancellation mechanism which allows Gun to inform the
server to stop sending a response for this particular
request, saving resources.</p></div>
-<div class="paragraph"><p>It is not possible to upgrade a SPDY connection to Websocket
+<div class="paragraph"><p>It is not possible to upgrade an HTTP/2 connection to Websocket
due to protocol limitations.</p></div>
</div>
</div>
@@ -157,7 +157,7 @@ cellspacing="0" cellpadding="4">
<tr>
<th align="left" valign="top"> Operation </th>
<th align="center" valign="top"> HTTP/1.1 </th>
-<th align="center" valign="top"> SPDY </th>
+<th align="center" valign="top"> HTTP/2 </th>
<th align="center" valign="top"> Websocket</th>
</tr>
</thead>
@@ -268,7 +268,7 @@ cellspacing="0" cellpadding="4">
<tr>
<th align="left" valign="top"> Message </th>
<th align="center" valign="top"> HTTP/1.1 </th>
-<th align="center" valign="top"> SPDY </th>
+<th align="center" valign="top"> HTTP/2 </th>
<th align="center" valign="top"> Websocket</th>
</tr>
</thead>
diff --git a/docs/en/gun/1.0/manual/gun/index.html b/docs/en/gun/1.0/manual/gun/index.html
index 4016ea73..9fedee7e 100644
--- a/docs/en/gun/1.0/manual/gun/index.html
+++ b/docs/en/gun/1.0/manual/gun/index.html
@@ -77,8 +77,8 @@
<h2 id="_description">Description</h2>
<div class="sectionbody">
<div class="paragraph"><p>The <code>gun</code> module provides an asynchronous interface for
-connecting and communicating with Web servers over SPDY,
-HTTP or Websocket.</p></div>
+connecting and communicating with Web servers over HTTP,
+HTTP/2 or Websocket.</p></div>
</div>
</div>
<div class="sect1">
@@ -106,16 +106,24 @@ http_opts &#8658; http_opts()
</p>
</dd>
<dt class="hdlist1">
-protocols &#8658; [http | spdy]
+http2_opts &#8658; http2_opts()
+</dt>
+<dd>
+<p>
+ Options specific to the HTTP/2 protocol. See below.
+</p>
+</dd>
+<dt class="hdlist1">
+protocols &#8658; [http | http2]
</dt>
<dd>
<p>
Ordered list of preferred protocols. When the transport is tcp,
this list must contain exactly one protocol. When the transport
is ssl, this list must contain at least one protocol and will be
- used using the NPN protocol negotiation method. When the server
- does not support NPN then http will always be used. Defaults to
- [http] when the transport is tcp, and [spdy, http] when the
+ used using the ALPN protocol negotiation method. When the server
+ does not support ALPN then http will always be used. Defaults to
+ [http] when the transport is tcp, and [http2, http] when the
transport is ssl.
</p>
</dd>
@@ -137,14 +145,6 @@ retry_timeout &#8658; pos_integer()
</p>
</dd>
<dt class="hdlist1">
-spdy_opts &#8658; spdy_opts()
-</dt>
-<dd>
-<p>
- Options specific to the SPDY protocol. See below.
-</p>
-</dd>
-<dt class="hdlist1">
trace &#8658; boolean()
</dt>
<dd>
@@ -187,7 +187,7 @@ ws_opts &#8658; ws_opts()
<div class="paragraph"><p>The following keys are defined:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-keepalive &#8658; pos_integer()
+keepalive &#8658; timeout()
</dt>
<dd>
<p>
@@ -195,7 +195,7 @@ keepalive &#8658; pos_integer()
no standardized way to ping the server, Gun will simply send an
empty line when the connection is idle. Gun only makes a best
effort here as servers usually have configurable limits to drop
- idle connections. Defaults to 5000.
+ idle connections. Use <code>infinity</code> to disable. Defaults to 5000.
</p>
</dd>
<dt class="hdlist1">
@@ -221,31 +221,31 @@ version &#8658; <em>HTTP/1.1</em> | <em>HTTP/1.0</em>
</dl></div>
</div>
<div class="sect2">
-<h3 id="_req_opts_map">req_opts() = map()</h3>
-<div class="paragraph"><p>Configuration for a particular request.</p></div>
+<h3 id="_http2_opts_map">http2_opts() = map()</h3>
+<div class="paragraph"><p>Configuration for the HTTP/2 protocol.</p></div>
<div class="paragraph"><p>The following keys are defined:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-reply_to &#8658; pid()
+keepalive &#8658; pos_integer()
</dt>
<dd>
<p>
- The pid of a process that is responsible for the response handling.
+ Time between pings in milliseconds. Defaults to 5000.
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
-<h3 id="_spdy_opts_map">spdy_opts() = map()</h3>
-<div class="paragraph"><p>Configuration for the SPDY protocol.</p></div>
+<h3 id="_req_opts_map">req_opts() = map()</h3>
+<div class="paragraph"><p>Configuration for a particular request.</p></div>
<div class="paragraph"><p>The following keys are defined:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-keepalive &#8658; pos_integer()
+reply_to &#8658; pid()
</dt>
<dd>
<p>
- Time between pings in milliseconds. Defaults to 5000.
+ The pid of a process that is responsible for the response handling.
</p>
</dd>
</dl></div>
@@ -286,7 +286,7 @@ The pid of the Gun connection process.
</p>
</dd>
<dt class="hdlist1">
-Protocol = http | spdy
+Protocol = http | http2
</dt>
<dd>
<p>
@@ -318,7 +318,7 @@ The pid of the Gun connection process.
</p>
</dd>
<dt class="hdlist1">
-Protocol = http | spdy | ws
+Protocol = http | http2 | ws
</dt>
<dd>
<p>
@@ -413,7 +413,7 @@ Headers @todo
</dd>
</dl></div>
<div class="paragraph"><p>A resource pushed alongside an HTTP response.</p></div>
-<div class="paragraph"><p>This message can only be sent when the protocol is SPDY.</p></div>
+<div class="paragraph"><p>This message can only be sent when the protocol is HTTP/2.</p></div>
<div class="paragraph"><p>@todo I fear we also need the scheme; resource is identified by URI
@todo Perhaps we really should send the URI entirely, because cache
@todo relies on URI to work and this feature is for caching&#8230;
@@ -1716,7 +1716,7 @@ the stream and stop relaying messages.</p></div>
<div class="paragraph"><p>@todo Depending on the length
@todo of a response Gun may also attempt to reconnect rather than
@todo receive the entire response body.</p></div>
-<div class="paragraph"><p>SPDY streams can however be cancelled at any time.</p></div>
+<div class="paragraph"><p>HTTP/2 streams can however be cancelled at any time.</p></div>
</div>
<div class="sect2">
<h3 id="_ws_upgrade_connpid_path_8594_ws_upgrade_connpid_path">ws_upgrade(ConnPid, Path) &#8594; ws_upgrade(ConnPid, Path, [], #{})</h3>
diff --git a/docs/en/gun/1.0/manual/gun_app/index.html b/docs/en/gun/1.0/manual/gun_app/index.html
index f116490a..be525d51 100644
--- a/docs/en/gun/1.0/manual/gun_app/index.html
+++ b/docs/en/gun/1.0/manual/gun_app/index.html
@@ -70,7 +70,7 @@
<div class="sect1">
<h2 id="_name">Name</h2>
<div class="sectionbody">
-<div class="paragraph"><p>gun - Erlang HTTP client with support for HTTP/1.1, SPDY and Websocket.</p></div>
+<div class="paragraph"><p>gun - Erlang HTTP client with support for HTTP/1.1, HTTP/2 and Websocket.</p></div>
</div>
</div>
<div class="sect1">
@@ -79,7 +79,7 @@
<div class="paragraph"><p>The <code>gun</code> application uses the Erlang applications <code>ranch</code>
for abstracting TCP and TLS over a common interface, and
the <code>ssl</code> application for TLS support, required for HTTPS
-and SPDY support. In addition, Gun requires the <code>crypto</code>
+and secure HTTP/2 support. In addition, Gun requires the <code>crypto</code>
application (a dependency of <code>ssl</code>) for Websocket.</p></div>
<div class="paragraph"><p>These dependencies must be started for the <code>gun</code>
application to work. In an embedded environment
diff --git a/donate/index.html b/donate/index.html
index 388fa049..4a427be0 100644
--- a/donate/index.html
+++ b/donate/index.html
@@ -109,6 +109,8 @@ and Erlang.mk is fantastic:</p></div>
+
+
<div class="sect2">
<h3 id="_like_my_work_donate">Like my work? Donate!</h3>
<div class="paragraph"><p>Donate to Loïc Hoguin because his work on Cowboy
diff --git a/index.html b/index.html
index 321476f8..2272ba2a 100644
--- a/index.html
+++ b/index.html
@@ -268,6 +268,8 @@
+
+
<div class="paragraph"><p>Feeling generous? Love reading?<br />
<a href="https://salt.bountysource.com/teams/ninenines">Crowdfund my salary</a>
or buy <a href="/articles/erlanger-playbook">The Erlanger Playbook</a></p></div>
diff --git a/index.xml b/index.xml
index d40f9451..7776c0e5 100644
--- a/index.xml
+++ b/index.xml
@@ -6,10 +6,54 @@
<description>Recent content on Nine Nines</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Mon, 24 Jul 2017 18:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Wed, 23 Aug 2017 18:00:00 +0100</lastBuildDate>
<atom:link href="https://ninenines.eu/index.xml" rel="self" type="application/rss+xml" />
<item>
+ <title>Cowboy 2.0 release candidate 2</title>
+ <link>https://ninenines.eu/articles/cowboy-2.0.0-rc.2/</link>
+ <pubDate>Wed, 23 Aug 2017 18:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/cowboy-2.0.0-rc.2/</guid>
+ <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Cowboy &lt;code&gt;2.0.0-rc.2&lt;/code&gt; has been released!&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This is the new recommended version of Cowboy.
+Its API should not change before release. While
+you probably should not use it in production yet,
+many do successfully. Use at your own risk.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This new version contains fixes for the following
+issues:&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;ulist&#34;&gt;&lt;ul&gt;
+&lt;li&gt;
+&lt;p&gt;
+HTTP/2 server push was using the wrong header
+ compression context.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+HTTP/2 flow control could end up queueing data
+ in the wrong order when resuming the sending of
+ data.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+The &lt;code&gt;shutdown&lt;/code&gt; timeout was not implemented
+ and request processes could be killed too quickly.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;What else is new in Cowboy 2.0? Check the
+&lt;a href=&#34;https://ninenines.eu/articles/cowboy-2.0.0-rc.1&#34;&gt;rc.1 announcement&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Please test this new release candidate and provide
+feedback! The best place to provide feedback is via
+tickets. Do not hesitate to open a ticket or bring
+an existing ticket to my attention to get it resolved
+before 2.0.&lt;/p&gt;&lt;/div&gt;
+</description>
+ </item>
+
+ <item>
<title>Cowboy 2.0 release candidate 1</title>
<link>https://ninenines.eu/articles/cowboy-2.0.0-rc.1/</link>
<pubDate>Mon, 24 Jul 2017 18:00:00 +0100</pubDate>
@@ -923,199 +967,5 @@ You will receive updates to the book for free as soon as they are available.&lt;
</description>
</item>
- <item>
- <title>Validating UTF-8 binaries with Erlang</title>
- <link>https://ninenines.eu/articles/erlang-validate-utf8/</link>
- <pubDate>Fri, 06 Mar 2015 00:00:00 +0100</pubDate>
-
- <guid>https://ninenines.eu/articles/erlang-validate-utf8/</guid>
- <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Yesterday I pushed Websocket permessage-deflate to
-Cowboy master. I also pushed
-&lt;a href=&#34;https://github.com/ninenines/cowlib/commit/7e4983b70ddf8cedb967e36fba6a600731bdad5d&#34;&gt;a
-change in the way the code validates UTF-8 data&lt;/a&gt;
-(required for text and close frames as per the spec).&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;When looking into why the permessage-deflate tests
-in autobahntestsuite were taking such a long time, I
-found that autobahn is using an adaptation of the
-algorithm named &lt;a href=&#34;http://bjoern.hoehrmann.de/utf-8/decoder/dfa/&#34;&gt;Flexible
-and Economical UTF-8 Decoder&lt;/a&gt;. This is the C99
-implementation:&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;&lt;!-- Generator: GNU source-highlight 3.1.8
-by Lorenzo Bettini
-http://www.lorenzobettini.it
-http://www.gnu.org/software/src-highlite --&gt;
-&lt;pre&gt;&lt;tt&gt;&lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// Copyright (c) 2008-2009 Bjoern Hoehrmann &amp;lt;[email protected]&amp;gt;&lt;/span&gt;&lt;/span&gt;
-&lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details.&lt;/span&gt;&lt;/span&gt;
-
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;#define&lt;/span&gt;&lt;/span&gt; UTF8_ACCEPT &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;#define&lt;/span&gt;&lt;/span&gt; UTF8_REJECT &lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;
-
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;static&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;const&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #008080&#34;&gt;uint8_t&lt;/span&gt; utf8d&lt;span style=&#34;color: #990000&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color: #FF0000&#34;&gt;{&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// 00..1f&lt;/span&gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// 20..3f&lt;/span&gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// 40..5f&lt;/span&gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// 60..7f&lt;/span&gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// 80..9f&lt;/span&gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// a0..bf&lt;/span&gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// c0..df&lt;/span&gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;0xa&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x4&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// e0..ef&lt;/span&gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;0xb&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x6&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x6&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x6&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x5&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x8&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x8&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x8&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x8&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x8&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x8&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x8&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x8&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x8&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x8&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x8&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// f0..ff&lt;/span&gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;0x0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x5&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x8&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x7&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x4&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x6&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0x1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// s0..s0&lt;/span&gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// s1..s2&lt;/span&gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// s3..s4&lt;/span&gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// s5..s6&lt;/span&gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;// s7..s8&lt;/span&gt;&lt;/span&gt;
-&lt;span style=&#34;color: #FF0000&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;;&lt;/span&gt;
-
-uint32_t inline
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;decode&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;(&lt;/span&gt;uint32_t&lt;span style=&#34;color: #990000&#34;&gt;*&lt;/span&gt; state&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; uint32_t&lt;span style=&#34;color: #990000&#34;&gt;*&lt;/span&gt; codep&lt;span style=&#34;color: #990000&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color: #008080&#34;&gt;uint32_t&lt;/span&gt; byte&lt;span style=&#34;color: #990000&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color: #FF0000&#34;&gt;{&lt;/span&gt;
- &lt;span style=&#34;color: #008080&#34;&gt;uint32_t&lt;/span&gt; type &lt;span style=&#34;color: #990000&#34;&gt;=&lt;/span&gt; utf8d&lt;span style=&#34;color: #990000&#34;&gt;[&lt;/span&gt;byte&lt;span style=&#34;color: #990000&#34;&gt;];&lt;/span&gt;
-
- &lt;span style=&#34;color: #990000&#34;&gt;*&lt;/span&gt;codep &lt;span style=&#34;color: #990000&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;(*&lt;/span&gt;state &lt;span style=&#34;color: #990000&#34;&gt;!=&lt;/span&gt; UTF8_ACCEPT&lt;span style=&#34;color: #990000&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;?&lt;/span&gt;
- &lt;span style=&#34;color: #990000&#34;&gt;(&lt;/span&gt;byte &lt;span style=&#34;color: #990000&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;0x3fu&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;(*&lt;/span&gt;codep &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;:&lt;/span&gt;
- &lt;span style=&#34;color: #990000&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0xff&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; type&lt;span style=&#34;color: #990000&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;(&lt;/span&gt;byte&lt;span style=&#34;color: #990000&#34;&gt;);&lt;/span&gt;
-
- &lt;span style=&#34;color: #990000&#34;&gt;*&lt;/span&gt;state &lt;span style=&#34;color: #990000&#34;&gt;=&lt;/span&gt; utf8d&lt;span style=&#34;color: #990000&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;256&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;*&lt;/span&gt;state&lt;span style=&#34;color: #990000&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;16&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;+&lt;/span&gt; type&lt;span style=&#34;color: #990000&#34;&gt;];&lt;/span&gt;
- &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;return&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;*&lt;/span&gt;state&lt;span style=&#34;color: #990000&#34;&gt;;&lt;/span&gt;
-&lt;span style=&#34;color: #FF0000&#34;&gt;}&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;And this is the Erlang implementation I came up with:&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;&lt;!-- Generator: GNU source-highlight 3.1.8
-by Lorenzo Bettini
-http://www.lorenzobettini.it
-http://www.gnu.org/software/src-highlite --&gt;
-&lt;pre&gt;&lt;tt&gt;&lt;span style=&#34;font-style: italic&#34;&gt;&lt;span style=&#34;color: #9A1900&#34;&gt;%% This function returns 0 on success, 1 on error, and 2..8 on incomplete data.&lt;/span&gt;&lt;/span&gt;
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;State&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;State&lt;/span&gt;;
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;128&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;128&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;128&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;5&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;128&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;128&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;8&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;128&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;5&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;6&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;192&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;192&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;4&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;192&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;6&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;192&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;192&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;194&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;224&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;224&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;4&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;225&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;237&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;237&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;5&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;=:=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;238&lt;/span&gt;; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;=:=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;239&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;240&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;6&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;=:=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;241&lt;/span&gt;; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;=:=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;242&lt;/span&gt;; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;=:=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;243&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;244&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;8&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;_&lt;/span&gt;, &lt;span style=&#34;color: #990000&#34;&gt;_&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Does it look similar to you? So how did we get there?&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I started with a naive implementation of the original. First, we
-don&amp;#8217;t need the codepoint calculated and extracted for our validation
-function. We just want to know the data is valid, so we only need to
-calculate the next state. Then, the only thing we needed to be careful
-about was that tuples are 1-based, and that we need to stop processing
-the binary when we get the state 1 or when the binary is empty.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;&lt;!-- Generator: GNU source-highlight 3.1.8
-by Lorenzo Bettini
-http://www.lorenzobettini.it
-http://www.gnu.org/software/src-highlite --&gt;
-&lt;pre&gt;&lt;tt&gt;&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;State&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;State&lt;/span&gt;;
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;_&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;;
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;State&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt;
- &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;element&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #993399&#34;&gt;257&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;State&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;16&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;element&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;?UTF8D&lt;/span&gt;&lt;/span&gt;), &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;?UTF8D&lt;/span&gt;&lt;/span&gt;))&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The macro &lt;code&gt;?UTF8D&lt;/code&gt; is the tuple equivalent of the C array
-in the original code.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Compared to our previous algorithm, this performed about the same.
-In some situations a little faster, in some a little slower. In other words,
-not good enough. But because this new algorithm allows us to avoid a binary
-concatenation this warranted looking further.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;It was time to step into crazy land.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Erlang is very good at pattern matching, even more so than doing some
-arithmetic coupled by fetching elements from a tuple. So I decided I was
-going to write all possible clauses for all combinations of &lt;code&gt;C&lt;/code&gt;
-and &lt;code&gt;State&lt;/code&gt;. And by write I mean generate.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;So I opened my Erlang shell, defined the variable &lt;code&gt;D&lt;/code&gt; to be
-the tuple &lt;code&gt;?UTF8D&lt;/code&gt; with its 400 elements, and then ran the
-following expression (after a bit of trial and error):&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;&lt;!-- Generator: GNU source-highlight 3.1.8
-by Lorenzo Bettini
-http://www.lorenzobettini.it
-http://www.gnu.org/software/src-highlite --&gt;
-&lt;pre&gt;&lt;tt&gt;&lt;span style=&#34;color: #993399&#34;&gt;16&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;file:write_file&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #FF0000&#34;&gt;&#34;out.txt&#34;&lt;/span&gt;,
- [&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;io_lib:format&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #FF0000&#34;&gt;&#34;validate_utf8(&amp;lt;&amp;lt; ~p, Rest/bits &amp;gt;&amp;gt;, ~p) -&amp;gt; ~p;~n&#34;&lt;/span&gt;,
- [&lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;S&lt;/span&gt;, &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;element&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #993399&#34;&gt;257&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;S&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;16&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;element&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;D&lt;/span&gt;), &lt;span style=&#34;color: #009900&#34;&gt;D&lt;/span&gt;)])
- || &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;lists:seq&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color: #993399&#34;&gt;255&lt;/span&gt;), &lt;span style=&#34;color: #009900&#34;&gt;S&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;lists:seq&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color: #993399&#34;&gt;8&lt;/span&gt;)])&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;
-&lt;span style=&#34;color: #FF6600&#34;&gt;ok&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The result is a 2304 lines long file, containing 2304 clauses.
-People who pay attention to what I say on Twitter will remember
-I said something around 3000 clauses, but that was just me not
-using the right number of states in my estimate.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;There was a little more work to be done on this generated
-code that I did using regular expressions. We need to recurse
-when the resulting state is not 1. We also need to stop when
-the binary is empty, making it the 2305th clause.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Still, 2305 is a lot. But hey, the code did work, and faster
-than the previous implementation too! But hey, perhaps I could
-find a way to reduce its size.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Removing all the clauses that return 1 and putting a catch-all
-clause at the end instead reduced the number to about 500, and
-showed that many clauses were similar:&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;&lt;!-- Generator: GNU source-highlight 3.1.8
-by Lorenzo Bettini
-http://www.lorenzobettini.it
-http://www.gnu.org/software/src-highlite --&gt;
-&lt;pre&gt;&lt;tt&gt;&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;5&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;6&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);&lt;/tt&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;But also:&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;&lt;!-- Generator: GNU source-highlight 3.1.8
-by Lorenzo Bettini
-http://www.lorenzobettini.it
-http://www.gnu.org/software/src-highlite --&gt;
-&lt;pre&gt;&lt;tt&gt;&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;157&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;157&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;157&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;5&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;157&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;6&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;157&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;158&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;158&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;158&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;5&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;158&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;6&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;158&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;);&lt;/tt&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Patterns, my favorites!&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;A little more time was spent to edit the 500 or so clauses into
-smaller equivalents, testing that performance was not impacted, and
-comitting the result.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The patterns above can be found here in the resulting function:&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;&lt;!-- Generator: GNU source-highlight 3.1.8
-by Lorenzo Bettini
-http://www.lorenzobettini.it
-http://www.gnu.org/software/src-highlite --&gt;
-&lt;pre&gt;&lt;tt&gt;&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;128&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;color: #990000&#34;&gt;...&lt;/span&gt;
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;5&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;6&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;bits&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;7&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;when&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;144&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;C&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;160&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;validate_utf8&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Rest&lt;/span&gt;, &lt;span style=&#34;color: #993399&#34;&gt;3&lt;/span&gt;);
-&lt;span style=&#34;color: #990000&#34;&gt;...&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I hope you enjoyed this post.&lt;/p&gt;&lt;/div&gt;
-</description>
- </item>
-
</channel>
</rss> \ No newline at end of file
diff --git a/services/index.html b/services/index.html
index 73a1bc76..8b39d01a 100644
--- a/services/index.html
+++ b/services/index.html
@@ -194,6 +194,8 @@ the same restrictions apply.</p></div>
+
+
<div class="sect2">
<h3 id="_like_my_work_donate">Like my work? Donate!</h3>
<div class="paragraph"><p>Donate to Loïc Hoguin because his work on Cowboy
diff --git a/sitemap.xml b/sitemap.xml
index 35769605..7bb840da 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -3,7 +3,12 @@
<url>
<loc>https://ninenines.eu/</loc>
- <lastmod>2017-07-24T18:00:00+01:00</lastmod>
+ <lastmod>2017-08-23T18:00:00+01:00</lastmod>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/articles/cowboy-2.0.0-rc.2/</loc>
+ <lastmod>2017-08-23T18:00:00+01:00</lastmod>
</url>
<url>